Skip to content
Newer
Older
100644 648 lines (422 sloc) 24.9 KB
0219c22 @groue v1.0.0
authored Nov 12, 2010
1 GRMustache Release Notes
2 ========================
3
af03738 @groue Typo
authored Mar 14, 2012
4 You can compare the performances of GRMustache versions at https://github.com/groue/GRMustacheBenchmark.
9b3ce86 @groue Link to benchmarks
authored Feb 19, 2012
5
b775400 @groue v4.1.1 release notes
authored Jul 1, 2012
6 ## v4.1.1
7
8 **Total inline documentation**
9
10 Headers contain documentation for every exposed API.
11
12 An online reference, automatically generated from inline documentation by appledoc can be read at http://groue.github.com/GRMustache/Reference/.
13
459f57b @groue v4.1.0
authored Jun 30, 2012
14 ## v4.1.0
15
16 ### GRMustacheDelegate protocol
17
18 A template's delegate is now able to know how a value will be interpreted by GRMustache.
19
20 New APIs:
21
22 ```objc
23 typedef enum {
24 GRMustacheInterpretationSection,
25 GRMustacheInterpretationVariable,
26 } GRMustacheInterpretation;
27
28 @protocol GRMustacheTemplateDelegate<NSObject>
29 - (void)template:(GRMustacheTemplate *)template willInterpretReturnValueOfInvocation:(GRMustacheInvocation *)invocation as:(GRMustacheInterpretation)interpretation;
30 - (void)template:(GRMustacheTemplate *)template didInterpretReturnValueOfInvocation:(GRMustacheInvocation *)invocation as:(GRMustacheInterpretation)interpretation;
31 @end
32 ```
33
34 Deprecated APIs:
35
36 ```objc
37 @protocol GRMustacheTemplateDelegate<NSObject>
38 - (void)template:(GRMustacheTemplate *)template willRenderReturnValueOfInvocation:(GRMustacheInvocation *)invocation;
39 - (void)template:(GRMustacheTemplate *)template didRenderReturnValueOfInvocation:(GRMustacheInvocation *)invocation;
40 @end
41 ```
42
fdcf398 @groue RELEASE_NOTES provides links to documentation of classes changed in v…
authored Jun 30, 2012
43 GRMustacheDelegate is documented in [Guides/delegate.md](Guides/delegate.md).
459f57b @groue v4.1.0
authored Jun 30, 2012
44
45 ### GRMustacheTemplateRepositoryDataSource protocol
46
47 The return type of `-[GRMustacheTemplateRepositoryDataSource templateRepository:templateIDForName:relativeToTemplateID:]` as changed from `id` to `id<NSCopying>`.
48
fdcf398 @groue RELEASE_NOTES provides links to documentation of classes changed in v…
authored Jun 30, 2012
49 GRMustacheTemplateRepositoryDataSource is documented in [Guides/template_repositories.md](Guides/template_repositories.md).
50
459f57b @groue v4.1.0
authored Jun 30, 2012
51 ### Errors
52
53 GRMustache used to output badly formatted errors. They are now easier to read.
54
6337526 @groue v4.0.0
authored May 26, 2012
55 ## v4.0.0
56
7413ded @groue RELEASE_NOTES.md: mention performance improvements of v4.0.0
authored May 27, 2012
57 **Performance improvements**
58
6337526 @groue v4.0.0
authored May 26, 2012
59 **Zero numbers are false**
60
61 GRMustache now considers all `NSNumber` instances whose `boolValue` is `NO` as false, when considering whether a section should render or not.
62
63 Previously, GRMustache used to consider only `[NSNumber numberWithBool:NO]` as false.
64
579209c @groue RELEASE_NOTES.md wording
authored May 26, 2012
65 This change lets you extend the mustache language with proxy objects (objects that implement language extensions, and forward other keys to some other object) in GRMustache rendering.
6337526 @groue v4.0.0
authored May 26, 2012
66
813e689 @groue Fix RELEASE_NOTES.md link
authored May 26, 2012
67 See [Guides/sample_code/indexes.md](Guides/sample_code/indexes.md) for a discussion on proxy objects.
6337526 @groue v4.0.0
authored May 26, 2012
68
69 **Total NSUndefinedException swallowing**
70
71 Whenever GRMustache performs some key lookup and `valueForKey:` raises a NSUndefinedException, GRMustache swallows it and keep on looking for the key up the context stack.
72
73 Previously, GRMustache used to swallow only exceptions that explicitely came from the inquired object, and for the inquired key.
74
579209c @groue RELEASE_NOTES.md wording
authored May 26, 2012
75 This change lets you extend the mustache language with proxy objects (objects that implement language extensions, and forward other keys to some other object) in GRMustache rendering.
6337526 @groue v4.0.0
authored May 26, 2012
76
813e689 @groue Fix RELEASE_NOTES.md link
authored May 26, 2012
77 See [Guides/sample_code/indexes.md](Guides/sample_code/indexes.md) for a discussion on proxy objects.
6337526 @groue v4.0.0
authored May 26, 2012
78
79 **Support for `.name` keys**
80
65e9823 @groue Document the "context stack" expression
authored Jun 16, 2012
81 Keys prefixed by a dot prevent GRMustache to look up the [context stack](Guides/runtime/context_stack.md).
6337526 @groue v4.0.0
authored May 26, 2012
82
83 Beware this feature is not in the mustache specification. If your goal is to design templates that remain compatible with [other Mustache implementations](https://github.com/defunkt/mustache/wiki/Other-Mustache-implementations), don't use this syntax.
84
579209c @groue RELEASE_NOTES.md wording
authored May 26, 2012
85 See [issue #19](https://github.com/groue/GRMustache/issues/19) and https://github.com/mustache/spec/issues/10.
6337526 @groue v4.0.0
authored May 26, 2012
86
6c31018 @groue v3.0.1
authored Apr 27, 2012
87 ## v3.0.1
88
89 Restored intended architectures: armv6+armv7+i386 for libGRMustache3-iOS, i386+x86_64 for libGRMustache3-MacOS.
90
eb5cff8 @groue v3.0.0
authored Apr 3, 2012
91 ## v3.0.0
92
93 **There is no option**
94
95 Removed APIs:
96
97 ```objc
98 enum {
99 GRMustacheTemplateOptionNone,
100 GRMustacheTemplateOptionStrictBoolean
101 };
102
103 typedef NSUInteger GRMustacheTemplateOptions;
104
105 @interface GRMustacheTemplate: NSObject {
106 + (id)templateFromString:(NSString *)templateString options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
107 + (id)templateFromContentsOfFile:(NSString *)path options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
108 + (id)templateFromContentsOfURL:(NSURL *)url options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
109 + (id)templateFromResource:(NSString *)name bundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
110 + (id)templateFromResource:(NSString *)name withExtension:(NSString *)ext bundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
111 + (NSString *)renderObject:(id)object fromString:(NSString *)templateString options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
112 + (NSString *)renderObject:(id)object fromContentsOfFile:(NSString *)path options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
113 + (NSString *)renderObject:(id)object fromContentsOfURL:(NSURL *)url options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
114 + (NSString *)renderObject:(id)object fromResource:(NSString *)name bundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
115 + (NSString *)renderObject:(id)object fromResource:(NSString *)name withExtension:(NSString *)ext bundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
116 @end
117
118 @protocol GRMustacheTemplateRepositoryDataSource <NSObject>
119 + (id)templateRepositoryWithBaseURL:(NSURL *)URL options:(GRMustacheTemplateOptions)options;
120 + (id)templateRepositoryWithBaseURL:(NSURL *)URL templateExtension:(NSString *)ext options:(GRMustacheTemplateOptions)options;
121 + (id)templateRepositoryWithBaseURL:(NSURL *)URL templateExtension:(NSString *)ext encoding:(NSStringEncoding)encoding options:(GRMustacheTemplateOptions)options;
122 + (id)templateRepositoryWithDirectory:(NSString *)path options:(GRMustacheTemplateOptions)options;
123 + (id)templateRepositoryWithDirectory:(NSString *)path templateExtension:(NSString *)ext options:(GRMustacheTemplateOptions)options;
124 + (id)templateRepositoryWithDirectory:(NSString *)path templateExtension:(NSString *)ext encoding:(NSStringEncoding)encoding options:(GRMustacheTemplateOptions)options;
125 + (id)templateRepositoryWithBundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options;
126 + (id)templateRepositoryWithBundle:(NSBundle *)bundle templateExtension:(NSString *)ext options:(GRMustacheTemplateOptions)options;
127 + (id)templateRepositoryWithBundle:(NSBundle *)bundle templateExtension:(NSString *)ext encoding:(NSStringEncoding)encoding options:(GRMustacheTemplateOptions)options;
128 + (id)templateRepositoryWithPartialsDictionary:(NSDictionary *)partialsDictionary options:(GRMustacheTemplateOptions)options;
129 + (id)templateRepositoryWithOptions:(GRMustacheTemplateOptions)options;
130 @end
131 ```
132
ed879f3 @groue v2.0.0
authored Apr 1, 2012
133 ## v2.0.0
134
135 **Performance improvements and API simplification**
136
1f91c52 @groue v2.0.0 RELEASE_NOTES
authored Apr 2, 2012
137 ### New APIs:
138
139 ```objc
140 enum {
3e006cc @groue wording
authored Apr 2, 2012
141 // New option for processing `BOOL` and `char` properties as numbers
1f91c52 @groue v2.0.0 RELEASE_NOTES
authored Apr 2, 2012
142 GRMustacheTemplateOptionStrictBoolean = 1
143 }
144
145 @protocol GRMustacheHelper<NSObject>
146 @required
147 // New required method
148 - (NSString *)renderSection:(GRMustacheSection *)section;
149 @end
150
151 // New GRMustacheHelper class
152 @interface GRMustacheHelper: NSObject<GRMustacheHelper>
153 + (id)helperWithBlock:(NSString *(^)(GRMustacheSection* section))block;
154 @end
155
156 // New GRMustacheSection properties and methods
157 @interface GRMustacheSection: NSObject
158 @property (nonatomic, readonly) NSString *innerTemplateString;
159 @property (nonatomic, readonly) id renderingContext;
160 - (NSString *)render;
161 @end
162 ```
163
164 ### Removed APIs and behaviors
165
166 ```objc
167 enum {
168 // GRMustache is now compliant by default to the Mustache specification:
169 GRMustacheTemplateOptionMustacheSpecCompatibility = 1
170 }
171
172 // NSErrors with GRMustacheErrorDomain now store the line number in localizedDescription.
173 extern NSString* const GRMustacheErrorLine;
174
175 @interface GRMustache: NSObject
176 // This global state has been replaced by the GRMustacheTemplateOptionStrictBoolean option:
177 + (BOOL)strictBooleanMode:
178 + (void)setStrictBooleanMode:(BOOL)strictBooleanMode;
179 @end
180
181 @protocol GRMustacheHelper<NSObject>
182 @required
183 // Replaced by renderSection: method
184 - (NSString *)renderSection:(GRMustacheSection *)section withContext:(id)context;
185 @end
186
187 // Replaced by the GRMustacheHelper class:
188 @interface GRMustacheBlockHelper: NSObject<GRMustacheHelper> {
189 + (id)helperWithBlock:(NSString *(^)(GRMustacheSection* section, id context))block;
190 @end
191
192 @interface GRMustacheSection: NSObject
193 // Replaced by the innerTemplateString property
194 @property (nonatomic, readonly) NSString *templateString;
195 // See the new render method
196 - (NSString *)renderObject:(id)object;
197 - (NSString *)renderObjects:(id)object, ...;
198 @end
199 ```
200
8506da0 @groue Link to http://handlebarsjs.com/
authored Apr 2, 2012
201 GRMustache1 used to parse and interpret [Handlebars](http://handlebarsjs.com/) tags such as `{{../foo/bar}}`. GRMustache2 does no longer parse those tags.
1f91c52 @groue v2.0.0 RELEASE_NOTES
authored Apr 2, 2012
202
203 GRMustache1 used to parse and interpret `this` identifier is tags such as `{{this.foo}}`. GRMustache2 does no longer parse the `this` identifier.
204
5672e6d @groue wording
authored Apr 2, 2012
205 GRMustache1 used to look for implementations of the `localizeSection:inContext:` selector when rendering a `{{#localize}}...{{/localize}}` section. GRMustache2 relies on the GRMustacheHelper protocol only when rendering Mustache lambda sections.
1f91c52 @groue v2.0.0 RELEASE_NOTES
authored Apr 2, 2012
206
207
7298c29 @groue v1.13.1
authored Mar 25, 2012
208 ## v1.13.1
209
210 The deprecated class GRMustacheTemplateLoader was broken by 1.13.0. Deprecated does not mean unavailable: it is restored.
211
5e5ea55 @groue v1.13.0
authored Mar 24, 2012
212 ## v1.13.0
213
214 Deprecated class (use [GRMustacheTemplateRepository templateRepositoryWithPartialsDictionary:], or the new GRMustacheTemplateRepositoryDataSource protocol instead):
215
216 - `GRMustacheTemplateLoader`
217
218 New class:
219
220 - `GRMustacheTemplateRepository`
221
222 ```objc
223 @interface GRMustacheTemplateRepository : NSObject
224 @property (nonatomic, assign) id<GRMustacheTemplateRepositoryDataSource> dataSource;
225
226 + (id)templateRepository;
227 + (id)templateRepositoryWithOptions:(GRMustacheTemplateOptions)options;
228
229 + (id)templateRepositoryWithBaseURL:(NSURL *)URL;
230 + (id)templateRepositoryWithBaseURL:(NSURL *)URL options:(GRMustacheTemplateOptions)options;
231 + (id)templateRepositoryWithBaseURL:(NSURL *)URL templateExtension:(NSString *)ext;
232 + (id)templateRepositoryWithBaseURL:(NSURL *)URL templateExtension:(NSString *)ext options:(GRMustacheTemplateOptions)options;
233 + (id)templateRepositoryWithBaseURL:(NSURL *)URL templateExtension:(NSString *)ext;
234 + (id)templateRepositoryWithBaseURL:(NSURL *)URL templateExtension:(NSString *)ext encoding:(NSStringEncoding)encoding;
235 + (id)templateRepositoryWithBaseURL:(NSURL *)URL templateExtension:(NSString *)ext encoding:(NSStringEncoding)encoding options:(GRMustacheTemplateOptions)options;
236
237 + (id)templateRepositoryWithDirectory:(NSString *)path;
238 + (id)templateRepositoryWithDirectory:(NSString *)path options:(GRMustacheTemplateOptions)options;
239 + (id)templateRepositoryWithDirectory:(NSString *)path templateExtension:(NSString *)ext;
240 + (id)templateRepositoryWithDirectory:(NSString *)path templateExtension:(NSString *)ext options:(GRMustacheTemplateOptions)options;
241 + (id)templateRepositoryWithDirectory:(NSString *)path templateExtension:(NSString *)ext encoding:(NSStringEncoding)encoding;
242 + (id)templateRepositoryWithDirectory:(NSString *)path templateExtension:(NSString *)ext encoding:(NSStringEncoding)encoding options:(GRMustacheTemplateOptions)options;
243
244 + (id)templateRepositoryWithBundle:(NSBundle *)bundle;
245 + (id)templateRepositoryWithBundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options;
246 + (id)templateRepositoryWithBundle:(NSBundle *)bundle templateExtension:(NSString *)ext;
247 + (id)templateRepositoryWithBundle:(NSBundle *)bundle templateExtension:(NSString *)ext options:(GRMustacheTemplateOptions)options;
248 + (id)templateRepositoryWithBundle:(NSBundle *)bundle templateExtension:(NSString *)ext encoding:(NSStringEncoding)encoding;
249 + (id)templateRepositoryWithBundle:(NSBundle *)bundle templateExtension:(NSString *)ext encoding:(NSStringEncoding)encoding options:(GRMustacheTemplateOptions)options;
250
251 + (id)templateRepositoryWithPartialsDictionary:(NSDictionary *)partialsDictionary;
252 + (id)templateRepositoryWithPartialsDictionary:(NSDictionary *)partialsDictionary options:(GRMustacheTemplateOptions)options;
253
254 - (GRMustacheTemplate *)templateForName:(NSString *)name error:(NSError **)outError;
255 - (GRMustacheTemplate *)templateFromString:(NSString *)templateString error:(NSError **)outError;
256 ```
257
258 New protocol:
259
260 - `GRMustacheTemplateRepositoryDataSource`
261
262 ```objc
263 @protocol GRMustacheTemplateRepositoryDataSource <NSObject>
264 @required
265 - (id)templateRepository:(GRMustacheTemplateRepository *)templateRepository templateIDForName:(NSString *)name relativeToTemplateID:(id)templateID;
266 - (NSString *)templateRepository:(GRMustacheTemplateRepository *)templateRepository templateStringForTemplateID:(id)templateID error:(NSError **)outError;
267 @end
268 ```
269
6e1642d @groue v1.12.2
authored Mar 8, 2012
270 ## v1.12.2
271
272 Restore performances of v1.12.0
273
71638db @groue v1.12.1
authored Mar 8, 2012
274 ## v1.12.1
275
276 Easier template debugging with `[GRMustacheInvocation description]`
277
299d3b1 @groue v1.12.0
authored Mar 4, 2012
278 ## v1.12
279
280 - **GRMustacheTemplateDelegate protocol**
281
282 Deprecated classes:
283
284 - `GRMustacheNumberFormatterHelper`
285 - `GRMustacheDateFormatterHelper`
286
d3b5626 @groue v1.11.2
authored Feb 25, 2012
287 ## v1.11.2
288
2cfb609 @groue wording
authored Feb 25, 2012
289 BOOL property custom getters can be used to control boolean sections.
d3b5626 @groue v1.11.2
authored Feb 25, 2012
290
5d95cad @groue v1.11.1
authored Feb 23, 2012
291 ## v1.11.1
292
293 Avoid deprecation warning in GRMustache headers.
294
92c07e2 @groue v1.11.0
authored Feb 23, 2012
295 ## v1.11
296
297 **API cleanup**
298
299 New GRMustacheTemplateLoader methods:
300
5e5ea55 @groue v1.13.0
authored Mar 24, 2012
301 ```objc
302 - (GRMustacheTemplate *)templateWithName:(NSString *)name error:(NSError **)outError;
303 - (GRMustacheTemplate *)templateFromString:(NSString *)templateString error:(NSError **)outError;
304 ```
92c07e2 @groue v1.11.0
authored Feb 23, 2012
305
306 New GRMustacheTemplate methods:
307
5e5ea55 @groue v1.13.0
authored Mar 24, 2012
308 ```objc
309 + (id)templateFromString:(NSString *)templateString error:(NSError **)outError;
310 + (id)templateFromString:(NSString *)templateString options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
311 + (id)templateFromContentsOfFile:(NSString *)path error:(NSError **)outError;
312 + (id)templateFromContentsOfFile:(NSString *)path options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
313 + (id)templateFromResource:(NSString *)name bundle:(NSBundle *)bundle error:(NSError **)outError;
314 + (id)templateFromResource:(NSString *)name bundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
315 + (id)templateFromResource:(NSString *)name withExtension:(NSString *)ext bundle:(NSBundle *)bundle error:(NSError **)outError;
316 + (id)templateFromResource:(NSString *)name withExtension:(NSString *)ext bundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
317 + (id)templateFromContentsOfURL:(NSURL *)url error:(NSError **)outError;
318 + (id)templateFromContentsOfURL:(NSURL *)url options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
319 ```
92c07e2 @groue v1.11.0
authored Feb 23, 2012
320
321 Deprecated GRMustacheTemplateLoader methods (use `templateWithName:error:` and `templateFromString:error:` instead):
322
5e5ea55 @groue v1.13.0
authored Mar 24, 2012
323 ```objc
324 - (GRMustacheTemplate *)parseTemplateNamed:(NSString *)name error:(NSError **)outError;
325 - (GRMustacheTemplate *)parseString:(NSString *)templateString error:(NSError **)outError;
326 ```
92c07e2 @groue v1.11.0
authored Feb 23, 2012
327
328 Deprecated GRMustacheTemplate methods (replace `parse` with `templateFrom`):
329
5e5ea55 @groue v1.13.0
authored Mar 24, 2012
330 ```objc
331 + (id)parseString:(NSString *)templateString error:(NSError **)outError;
332 + (id)parseString:(NSString *)templateString options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
333 + (id)parseContentsOfFile:(NSString *)path error:(NSError **)outError;
334 + (id)parseContentsOfFile:(NSString *)path options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
335 + (id)parseResource:(NSString *)name bundle:(NSBundle *)bundle error:(NSError **)outError;
336 + (id)parseResource:(NSString *)name bundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
337 + (id)parseResource:(NSString *)name withExtension:(NSString *)ext bundle:(NSBundle *)bundle error:(NSError **)outError;
338 + (id)parseResource:(NSString *)name withExtension:(NSString *)ext bundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
339 + (id)parseContentsOfURL:(NSURL *)url error:(NSError **)outError;
340 + (id)parseContentsOfURL:(NSURL *)url options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
341 ```
92c07e2 @groue v1.11.0
authored Feb 23, 2012
342
d5730e5 @groue v1.10.3
authored Feb 22, 2012
343 ## v1.10.3
344
345 Upgrade GRMustache, and get deprecation warnings when you use deprecated APIs. Your code will keep on running fine, though.
346
75eae3b @groue v1.10.2
authored Feb 17, 2012
347 ## v1.10.2
348
349 Performance improvements
350
745be05 @groue v1.10.1
authored Feb 17, 2012
351 ## v1.10.1
352
353 Performance improvements
354
31100d3 @groue v1.10.0
authored Feb 15, 2012
355 ## v1.10
356
745be05 @groue v1.10.1
authored Feb 17, 2012
357 **Improved Handlebars.js support and performance improvements**
31100d3 @groue v1.10.0
authored Feb 15, 2012
358
745be05 @groue v1.10.1
authored Feb 17, 2012
359 Now `{{foo/bar}}` and `{{foo.bar}}` syntaxes are both supported.
31100d3 @groue v1.10.0
authored Feb 15, 2012
360
8020800 @groue v1.9.0
authored Jan 23, 2012
361 ## v1.9
362
3293103 @groue Introduce GRMustacheNumberFormatterHelper
authored Jan 24, 2012
363 - **Better lambda encapsulation with classes conforming to the GRMustacheHelper protocol.**
364 - **Format all numbers in a section with GRMustacheNumberFormatterHelper**
f52da9d @groue README+RELEASE_NOTES for GRMustacheNumberFormatterHelper and GRMustac…
authored Jan 24, 2012
365 - **Format all dates in a section with GRMustacheDateFormatterHelper**
8020800 @groue v1.9.0
authored Jan 23, 2012
366
367 New protocol:
368
3293103 @groue Introduce GRMustacheNumberFormatterHelper
authored Jan 24, 2012
369 - `GRMustacheHelper`
370
5e5ea55 @groue v1.13.0
authored Mar 24, 2012
371 ```objc
372 @protocol GRMustacheHelper<NSObject>
373 @required
374 - (NSString *)renderSection:(GRMustacheSection *)section withContext:(id)context AVAILABLE_GRMUSTACHE_VERSION_1_9_AND_LATER;
375 @end
376 ```
377
f52da9d @groue README+RELEASE_NOTES for GRMustacheNumberFormatterHelper and GRMustac…
authored Jan 24, 2012
378 New classes:
3293103 @groue Introduce GRMustacheNumberFormatterHelper
authored Jan 24, 2012
379
380 - `GRMustacheNumberFormatterHelper`
f52da9d @groue README+RELEASE_NOTES for GRMustacheNumberFormatterHelper and GRMustac…
authored Jan 24, 2012
381 - `GRMustacheDateFormatterHelper`
8020800 @groue v1.9.0
authored Jan 23, 2012
382
5e5ea55 @groue v1.13.0
authored Mar 24, 2012
383 ```objc
384 @interface GRMustacheNumberFormatterHelper : NSObject<GRMustacheHelper>
385 @property (nonatomic, readonly, retain) NSNumberFormatter *numberFormatter;
386 + (id)helperWithNumberFormatter:(NSNumberFormatter *)numberFormatter;
387 @end
388
389 @interface GRMustacheDateFormatterHelper : NSObject<GRMustacheHelper>
390 @property (nonatomic, readonly, retain) NSDateFormatter *dateFormatter;
391 + (id)helperWithDateFormatter:(NSDateFormatter *)dateFormatter;
392 @end
393 ```
394
8704042 @groue v1.8.6
authored Oct 16, 2011
395 ## v1.8.6
396
397 Fixed bug in [GRMustacheTemplate renderObjects:...]
398
d209bef @groue v1.8.5
authored Oct 14, 2011
399 ## v1.8.5
400
401 Added missing symbols from lib/libGRMustache1-ios3.a
402
edf6200 @groue v1.8.4
authored Oct 14, 2011
403 ## v1.8.4
404
d209bef @groue v1.8.5
authored Oct 14, 2011
405 Added missing symbols from lib/libGRMustache1-ios3.a and lib/libGRMustache1-ios4.a
edf6200 @groue v1.8.4
authored Oct 14, 2011
406
6a23fe6 @groue v1.8.3
authored Oct 9, 2011
407 ## v1.8.3
408
409 Availability fixes.
410
8abbac9 @groue v1.8.2
authored Oct 9, 2011
411 ## v1.8.2
412
413 Better testing of public API thanks to availability macros.
414
b643aa1 @groue v1.8.1
authored Oct 8, 2011
415 ## v1.8.1
416
417 Bug fixes
418
18dc85c @groue v1.8.0
authored Oct 8, 2011
419 ## v1.8
420
8abbac9 @groue v1.8.2
authored Oct 9, 2011
421 **GRMustache now supports the [Mustache specification v1.1.2](https://github.com/mustache/spec).**
422
423 New type and enum:
424
5e5ea55 @groue v1.13.0
authored Mar 24, 2012
425 ```objc
426 enum {
427 GRMustacheTemplateOptionNone = 0,
428 GRMustacheTemplateOptionMustacheSpecCompatibility = 0x01,
429 };
8abbac9 @groue v1.8.2
authored Oct 9, 2011
430
5e5ea55 @groue v1.13.0
authored Mar 24, 2012
431 typedef NSUInteger GRMustacheTemplateOptions;
432 ```
8abbac9 @groue v1.8.2
authored Oct 9, 2011
433
434 New GRMustache methods:
435
5e5ea55 @groue v1.13.0
authored Mar 24, 2012
436 ```objc
437 + (GRMustacheTemplateOptions)defaultTemplateOptions;
438 + (void)setDefaultTemplateOptions:(GRMustacheTemplateOptions)templateOptions;
439 ```
8abbac9 @groue v1.8.2
authored Oct 9, 2011
440
441 New GRMustacheTemplate methods:
442
5e5ea55 @groue v1.13.0
authored Mar 24, 2012
443 ```objc
444 + (id)parseString:(NSString *)templateString options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
445 + (id)parseContentsOfURL:(NSURL *)url options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
446 + (id)parseContentsOfFile:(NSString *)path options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
447 + (id)parseResource:(NSString *)name bundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
448 + (id)parseResource:(NSString *)name withExtension:(NSString *)ext bundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
449 + (NSString *)renderObject:(id)object fromString:(NSString *)templateString options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
450 + (NSString *)renderObject:(id)object fromContentsOfURL:(NSURL *)url options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
451 + (NSString *)renderObject:(id)object fromContentsOfFile:(NSString *)path options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
452 + (NSString *)renderObject:(id)object fromResource:(NSString *)name bundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
453 + (NSString *)renderObject:(id)object fromResource:(NSString *)name withExtension:(NSString *)ext bundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
454 ```
8abbac9 @groue v1.8.2
authored Oct 9, 2011
455
456 New GRMustacheTemplateLoader methods:
457
5e5ea55 @groue v1.13.0
authored Mar 24, 2012
458 ```objc
459 + (id)templateLoaderWithBaseURL:(NSURL *)url options:(GRMustacheTemplateOptions)options;
460 + (id)templateLoaderWithBaseURL:(NSURL *)url extension:(NSString *)ext options:(GRMustacheTemplateOptions)options;
461 + (id)templateLoaderWithBaseURL:(NSURL *)url extension:(NSString *)ext encoding:(NSStringEncoding)encoding options:(GRMustacheTemplateOptions)options;
462 + (id)templateLoaderWithDirectory:(NSString *)path options:(GRMustacheTemplateOptions)options;
463 + (id)templateLoaderWithDirectory:(NSString *)path extension:(NSString *)ext options:(GRMustacheTemplateOptions)options;
464 + (id)templateLoaderWithDirectory:(NSString *)path extension:(NSString *)ext encoding:(NSStringEncoding)encoding options:(GRMustacheTemplateOptions)options;
465 + (id)templateLoaderWithBundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options;
466 + (id)templateLoaderWithBundle:(NSBundle *)bundle extension:(NSString *)ext options:(GRMustacheTemplateOptions)options;
467 + (id)templateLoaderWithBundle:(NSBundle *)bundle extension:(NSString *)ext encoding:(NSStringEncoding)encoding options:(GRMustacheTemplateOptions)options;
468 ```
8abbac9 @groue v1.8.2
authored Oct 9, 2011
469
18dc85c @groue v1.8.0
authored Oct 8, 2011
470
d08841f @groue v1.7.4
authored Sep 22, 2011
471 ## v1.7.4
472
473 Bug fix: avoid crashing when one provides uninitialized NSError* to GRMustache.
474
8059b38 @groue v1.7.3
authored Sep 17, 2011
475 ## v1.7.3
476
477 One no longer needs to add `-all_load` to the "Other Linker Flags" target option tu use GRMustache static libraries.
478
6d6e020 @groue v1.7.2
authored Jul 27, 2011
479 ## v1.7.2
480
481 - Fixed [issue #6](https://github.com/groue/GRMustache/issues/6)
482 - `[GRMustache preventNSUndefinedKeyExceptionAttack]` no longer prevents the rendering of `nil`.
483
cd4de9d @groue v1.7.1
authored Jun 25, 2011
484 ## v1.7.1
485
486 Added missing header file
487
e5d100a @groue v1.7.0
authored Jun 9, 2011
488 ## v1.7.0
489
490 **GRMustache now ships as a static library.**
491
492 See the [Embedding](https://github.com/groue/GRMustache/wiki/Embedding) wiki page in order to see how to embed GRMustache in your project.
493
494 Besides, the NSUndefinedKeyException silencing is no longer activated by the DEBUG macro. You now have to explicitely call the `[GRMustache preventNSUndefinedKeyExceptionAttack]` method. For more details, see the [Avoid the NSUndefinedKeyException attack](https://github.com/groue/GRMustache/wiki/Avoid-the-NSUndefinedKeyException-attack) wiki page.
495
4373916 @groue v1.6.2
authored Jun 8, 2011
496 ## v1.6.2
497
498 **LLVM3 compatibility**
499
f19ba84 @groue v1.6.1
authored Apr 9, 2011
500 ## v1.6.1
501
502 The NSUndefinedKeyException silencing activated by the DEBUG macro applies to NSManagedObject instances (see the [Avoid the NSUndefinedKeyException attack](https://github.com/groue/GRMustache/wiki/Avoid-the-NSUndefinedKeyException-attack) wiki page).
503
6b1dbf7 @groue v1.6.0
authored Mar 17, 2011
504 ## v1.6.0
505
506 **Reduced memory footprint**
507
8abbac9 @groue v1.8.2
authored Oct 9, 2011
508 New GRMustacheTemplateLoader methods:
6b1dbf7 @groue v1.6.0
authored Mar 17, 2011
509
5e5ea55 @groue v1.13.0
authored Mar 24, 2012
510 ```objc
511 + (id)templateLoaderWithDirectory:(NSString *)path;
512 + (id)templateLoaderWithDirectory:(NSString *)path extension:(NSString *)ext;
513 + (id)templateLoaderWithDirectory:(NSString *)path extension:(NSString *)ext encoding:(NSStringEncoding)encoding;
514 ```
6b1dbf7 @groue v1.6.0
authored Mar 17, 2011
515
8abbac9 @groue v1.8.2
authored Oct 9, 2011
516 Deprecated GRMustacheTemplateLoader methods (replace `BasePath` with `Directory`):
6b1dbf7 @groue v1.6.0
authored Mar 17, 2011
517
5e5ea55 @groue v1.13.0
authored Mar 24, 2012
518 ```objc
519 + (id)templateLoaderWithBasePath:(NSString *)path;
520 + (id)templateLoaderWithBasePath:(NSString *)path extension:(NSString *)ext;
521 + (id)templateLoaderWithBasePath:(NSString *)path extension:(NSString *)ext encoding:(NSStringEncoding)encoding;
522 ```
6b1dbf7 @groue v1.6.0
authored Mar 17, 2011
523
524 Bug fixes around the NSUndefinedKeyException handling when the `DEBUG` macro is set (thanks to [Mike Ash](http://www.mikeash.com/)).
525
499face @groue v1.5.2
authored Mar 8, 2011
526 ## v1.5.2
527
f19ba84 @groue v1.6.1
authored Apr 9, 2011
528 The `DEBUG` macro makes GRMustache raise much less NSUndefinedKeyException (see the [Avoid the NSUndefinedKeyException attack](https://github.com/groue/GRMustache/wiki/Avoid-the-NSUndefinedKeyException-attack) wiki page).
499face @groue v1.5.2
authored Mar 8, 2011
529
e0a103f @groue v1.5.1
authored Mar 3, 2011
530 ## v1.5.1
531
4031037 @groue RELEASE_NOTES wording
authored Mar 10, 2011
532 Bug fixes
e0a103f @groue v1.5.1
authored Mar 3, 2011
533
3de3613 @groue v1.5.0
authored Feb 27, 2011
534 ## v1.5.0
0915e91 @groue v1.4.1
authored Feb 26, 2011
535
4031037 @groue RELEASE_NOTES wording
authored Mar 10, 2011
536 **API simplification**
537
c5761e8 @groue RELEASE_NOTES wording
authored Mar 10, 2011
538 New GRMustacheTemplate method:
539
540 - `- (NSString *)renderObjects:(id)object, ...;`
541
542 New GRMustacheSection method:
543
544 - `- (NSString *)renderObjects:(id)object, ...;`
545
546 New class:
547
548 - `GRMustacheBlockHelper`
549
550 Deprecated class (use `id` instead when refering to a context, and use `renderObjects:` methods instead of instanciating one):
551
552 - `GRMustacheContext`
553
554 Deprecated function (use GRMustacheBlockHelper instead):
555
556 - `id GRMustacheLambdaBlockMake(NSString *(^block)(GRMustacheSection*, GRMustacheContext*));`
0915e91 @groue v1.4.1
authored Feb 26, 2011
557
a1f2cf1 @groue v1.4.0
authored Feb 26, 2011
558 ## v1.4.0
559
4031037 @groue RELEASE_NOTES wording
authored Mar 10, 2011
560 **iOS 3.0 support**
c5761e8 @groue RELEASE_NOTES wording
authored Mar 10, 2011
561
562 New `GRMustacheTemplate` methods:
563
564 - `+ (NSString *)renderObject:(id)object fromContentsOfFile:(NSString *)path error:(NSError **)outError;`
565 - `+ (id)parseContentsOfFile:(NSString *)path error:(NSError **)outError;`
566
8abbac9 @groue v1.8.2
authored Oct 9, 2011
567 New `GRMustacheTemplateLoader` methods:
c5761e8 @groue RELEASE_NOTES wording
authored Mar 10, 2011
568
569 - `+ (id)templateLoaderWithBasePath:(NSString *)path;`
570 - `+ (id)templateLoaderWithBasePath:(NSString *)path extension:(NSString *)ext;`
571 - `+ (id)templateLoaderWithBasePath:(NSString *)path extension:(NSString *)ext encoding:(NSStringEncoding)encoding;`
a1f2cf1 @groue v1.4.0
authored Feb 26, 2011
572
de489d5 @groue v1.3.3
authored Feb 5, 2011
573 ## v1.3.3
574
4031037 @groue RELEASE_NOTES wording
authored Mar 10, 2011
575 Bug fixes
de489d5 @groue v1.3.3
authored Feb 5, 2011
576
be39647 @groue v1.3.2
authored Dec 14, 2010
577 ## v1.3.2
578
4031037 @groue RELEASE_NOTES wording
authored Mar 10, 2011
579 Bug fixes
be39647 @groue v1.3.2
authored Dec 14, 2010
580
7f1e927 @groue v1.3.1
authored Dec 9, 2010
581 ## v1.3.1
582
4031037 @groue RELEASE_NOTES wording
authored Mar 10, 2011
583 Bug fixes
7f1e927 @groue v1.3.1
authored Dec 9, 2010
584
b03eb3c @groue v1.3.0
authored Dec 7, 2010
585 ## v1.3.0
586
4031037 @groue RELEASE_NOTES wording
authored Mar 10, 2011
587 **Block-less API for helpers.**
b03eb3c @groue v1.3.0
authored Dec 7, 2010
588
c5761e8 @groue RELEASE_NOTES wording
authored Mar 10, 2011
589 New classes:
590
591 - `GRMustacheContext`
592 - `GRMustacheSection`
b03eb3c @groue v1.3.0
authored Dec 7, 2010
593
c5761e8 @groue RELEASE_NOTES wording
authored Mar 10, 2011
594 New functions:
a368aaf @groue v1.2.1
authored Dec 5, 2010
595
c5761e8 @groue RELEASE_NOTES wording
authored Mar 10, 2011
596 - `id GRMustacheLambdaBlockMake(NSString *(^block)(GRMustacheSection*, GRMustacheContext*));`
597
598 Deprecated functions (use GRMustacheLambdaBlockMake instead):
599
600 - `GRMustacheLambda GRMustacheLambdaMake(NSString *(^block)(NSString *(^)(id object), id, NSString *));`
a368aaf @groue v1.2.1
authored Dec 5, 2010
601
c88c5c6 @groue v1.2.0
authored Dec 4, 2010
602 ## v1.2.0
603
4031037 @groue RELEASE_NOTES wording
authored Mar 10, 2011
604 **iOS 4.0 support**
c5761e8 @groue RELEASE_NOTES wording
authored Mar 10, 2011
605
606 Deprecated class (use `[NSNumber numberWithBool:YES]` instead of `[GRYes yes]`):
607
608 - `GRYes`
609
610 Deprecated class (use `[NSNumber numberWithBool:NO]` instead of `[GRNo no]`):
611
612 - `GRNo`
c88c5c6 @groue v1.2.0
authored Dec 4, 2010
613
16c756d @groue v1.1.6
authored Dec 1, 2010
614 ## v1.1.6
615
c5761e8 @groue RELEASE_NOTES wording
authored Mar 10, 2011
616 GRMustacheTemplateLoader subclasses can now rely on an immutable `extension` property.
16c756d @groue v1.1.6
authored Dec 1, 2010
617
0805e50 @groue v1.1.5
authored Nov 27, 2010
618 ## v1.1.5
619
4031037 @groue RELEASE_NOTES wording
authored Mar 10, 2011
620 Bug fixes
0805e50 @groue v1.1.5
authored Nov 27, 2010
621
8e257be @groue v1.1.4
authored Nov 22, 2010
622 ## v1.1.4
623
4031037 @groue RELEASE_NOTES wording
authored Mar 10, 2011
624 Bug fixes
8e257be @groue v1.1.4
authored Nov 22, 2010
625
3f89a0b @groue v1.1.3
authored Nov 21, 2010
626 ## v1.1.3
627
4031037 @groue RELEASE_NOTES wording
authored Mar 10, 2011
628 **Rendering performance improvement**
3f89a0b @groue v1.1.3
authored Nov 21, 2010
629
8dbe23f @groue v1.1.2
authored Nov 21, 2010
630 ## v1.1.2
631
4031037 @groue RELEASE_NOTES wording
authored Mar 10, 2011
632 **Template compiling performance improvement**
8dbe23f @groue v1.1.2
authored Nov 21, 2010
633
161c96c @groue v1.1.1
authored Nov 20, 2010
634 ## v1.1.1
635
4031037 @groue RELEASE_NOTES wording
authored Mar 10, 2011
636 Bug fixes
161c96c @groue v1.1.1
authored Nov 20, 2010
637
6ede60b @groue v1.1.0
authored Nov 12, 2010
638 ## v1.1.0
0219c22 @groue v1.0.0
authored Nov 12, 2010
639
c5761e8 @groue RELEASE_NOTES wording
authored Mar 10, 2011
640 New methods:
641
642 - `[GRYes yes]` responds to `boolValue`
643 - `[GRNo no]` responds to `boolValue`
6ede60b @groue v1.1.0
authored Nov 12, 2010
644
645 ## v1.0.0
646
4031037 @groue RELEASE_NOTES wording
authored Mar 10, 2011
647 **First versioned release**
Something went wrong with that request. Please try again.