Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

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