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