Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Newer
Older
100644 942 lines (610 sloc) 37.715 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
1a7b646 @groue v5.4.4
authored
7 ## v5.4.4
8
9 - Fix a memory leak in [overridable partials](Guides/partials.md).
10 - Until this version, GRMustache would not trigger delegate methods for objects conforming to both GRMustacheVariableHelper and GRMustacheTemplateDelegate protocols.
11
e27f2c5 @groue v5.4.3
authored
12 ## v5.4.3
13
26f510c @groue Make clear in guide that variable tag helpers can also be delegates.
authored
14 Until this version, GRMustache would not trigger section tag helpers, variable tag helpers and tag delegates in a few corner cases.
e27f2c5 @groue v5.4.3
authored
15
cc63d53 @groue v5.4.2
authored
16 ## v5.4.2
17
18 Until this version, filters could not return filters. This useless inconsistency is considered a bug, and has been fixed. Check [Guides/filters.md](Guides/filters.md).
19
41da038 @groue v5.4.1
authored
20 ## v5.4.1
21
22 Fix some corner cases in the handling of [overridable partials](Guides/partials.md), should your templates include conflicting overriding sections. Basically, the last one wins:
23
24 `{{<layout}} {{$content}}Not rendered{{/content}} {{$content}}Rendered{{/content}} {{/layout}}`.
25
26
7ac295f @groue v5.4.0
authored
27 ## v5.4.0
28
29 ### Support for templates and partials stored in a hierarchy of directories
30
31 When your templates are stored in a hierarchy of directories, you need to refer to [partial templates](Guides/partials.md) in both relative and absolute ways, depending on the context.
32
33 Your [variable tag helpers](Guides/variable_tag_helpers.md) and your [section tag helpers](Guides/section_tag_helpers.md) will typically use absolute paths, in order to always include the same partial template, regardless of the hierarchical position of the templates that use them.
34
35 Relative partial paths look like regular Mustache partial tags: `{{> header }}`, `{{> partials/header }}`.
36
bdf877a @groue Wording
authored
37 GRMustache v5.4.0 brings absolute paths, that start with a slash: `{{> /partials/header }}`.
7ac295f @groue v5.4.0
authored
38
576a121 @groue RELEASE_NOTES.md links to partials.md in order to introduce relative …
authored
39 The full story starts at [Guides/partials.md](Guides/partials.md#partials-in-the-file-system).
7ac295f @groue v5.4.0
authored
40
ed26c85 @groue v5.3.0
authored
41 ## v5.3.0
42
7ac295f @groue v5.4.0
authored
43 ### API cleanup
ed26c85 @groue v5.3.0
authored
44
45 The introduction of variable tag helpers in v5.1.0 introduced many confusing APIs. Those are still there, but deprecated.
46
47 No new feature has been added, but semantics have been much improved. Many thanks to [@pierlo](https://github.com/pierlo) for his help.
48
7ac295f @groue v5.4.0
authored
49 **Helpers API changes**
ed26c85 @groue v5.3.0
authored
50
51 `GRMustacheVariableTagHelper` replaces `GRMustacheVariableHelper`. See [Guides/variable_tag_helpers.md](Guides/variable_tag_helpers.md).
52
53 ```objc
54 @protocol GRMustacheVariableTagHelper<NSObject>
55 @required
56 - (NSString *)renderForVariableTagInContext:(GRMustacheVariableTagRenderingContext *)context;
57 @end
58
59 @interface GRMustacheVariableTagRenderingContext : NSObject
018381f @groue Remove availability macro from RELEASE_NOTES.md
authored
60 - (NSString *)renderTemplateString:(NSString *)string error:(NSError **)outError;
61 - (NSString *)renderTemplateNamed:(NSString *)name error:(NSError **)outError;
ed26c85 @groue v5.3.0
authored
62 @end
63 ```
64
65 `GRMustacheSectionTagHelper` replaces `GRMustacheSectionHelper`. See [Guides/section_tag_helpers.md](Guides/section_tag_helpers.md).
66
67 ```objc
68 @protocol GRMustacheSectionTagHelper<NSObject>
69 @required
018381f @groue Remove availability macro from RELEASE_NOTES.md
authored
70 - (NSString *)renderForSectionTagInContext:(GRMustacheSectionTagRenderingContext *)context;
ed26c85 @groue v5.3.0
authored
71 @end
72
73 @interface GRMustacheSectionTagRenderingContext: NSObject
018381f @groue Remove availability macro from RELEASE_NOTES.md
authored
74 @property (nonatomic, readonly) NSString *innerTemplateString;
75 - (NSString *)render;
76 - (NSString *)renderTemplateString:(NSString *)string error:(NSError **)outError;
ed26c85 @groue v5.3.0
authored
77 @end
78 ```
79
7ac295f @groue v5.4.0
authored
80 **GRMustacheTemplateDelegate API changes**
ed26c85 @groue v5.3.0
authored
81
82 In the `GRMustacheInterpretation` enumeration, `GRMustacheSectionTagInterpretation` replaces `GRMustacheInterpretationSection`, and `GRMustacheVariableTagInterpretation` replaces `GRMustacheInterpretationVariable`.
83
7ac295f @groue v5.4.0
authored
84 **GRMustacheTemplate API changes**
ed26c85 @groue v5.3.0
authored
85
86 `[GRMustacheTemplate renderObjectsFromArray:]` and `[GRMustacheTemplate renderObjectsFromArray:withFilters:]` replace `[GRMustacheTemplate renderObjectsInArray:]` and `[GRMustacheTemplate renderObjectsInArray:withFilters:]`.
87
70b6029 @groue Prepare v5.2.0
authored
88 ## v5.2.0
89
90 **Overridable partials**
91
92 Inspired by [hogan.js](http://twitter.github.com/hogan.js/) and [spullara/mustache.java](https://github.com/spullara/mustache.java), GRMustache now supports "template inheritance". Precisely, your templates can embed as many partials as before, but now you can override portions of those partials.
93
ed26c85 @groue v5.3.0
authored
94 Overridable partials are documented as [Guides/partials.md](Guides/partials.md).
70b6029 @groue Prepare v5.2.0
authored
95
f6a5a44 @groue v5.2.0
authored
96 The [layout](../../tree/master/Guides/sample_code/layout) sample code has been updated to take profit of overridable partials. There is not much left of it :-).
70b6029 @groue Prepare v5.2.0
authored
97
98
84779a5 @groue v5.1.0 documentation
authored
99 ## v5.1.0
100
85cbb69 @groue more v5.1.0 release notes
authored
101 ### Dropped support for armv6
102
103 libGRMustache5-iOS.a is now compiled with Xcode 4.5, and does not longer embed the armv6 slice.
104
105 For armv6 support, use [GRMustache 5.0.1](https://github.com/groue/GRMustache/tree/v5.0.1).
106
84779a5 @groue v5.1.0 documentation
authored
107 ### Array rendering
108
85cbb69 @groue more v5.1.0 release notes
authored
109 The Mustache specification does not specify how a collection of objects should be rendered. For instance, the rendering of `{{items}}` is unspecified if items is an array.
84779a5 @groue v5.1.0 documentation
authored
110
111 GRMustache 5.1 renders an array as the concatenation of the rendering of its individual items.
112
85cbb69 @groue more v5.1.0 release notes
authored
113 This makes GRMustache able to render `{{items}}` just as Ruby on Rails renders `<%= render @items %>`. Keep on reading.
84779a5 @groue v5.1.0 documentation
authored
114
115 ### Variable helpers and dynamic partials
116
117 The library was missing support for "Mustache variable lambdas", that let you execute code when rendering a plain `{{variable}}` tag.
118
119 Support for variable lambdas is there now, through the `GRMustacheVariableHelper` protocol.
120
121 Variable helpers are the base for "dynamic partials", that is to say the ability to defer the choice of a template partial until the actual rendering. Now your context objects can choose which partial should be rendered.
122
85cbb69 @groue more v5.1.0 release notes
authored
123 Variable helpers can also help objects being able to "render themselves", and have `{{item}}` and `{{items}}` rendering controlled by these items themselves.
84779a5 @groue v5.1.0 documentation
authored
124
9221f32 @groue Split section and variable helpers documentations
authored
125 All of those new features are documented at [Guides/variable_helpers.md](Guides/variable_helpers.md).
84779a5 @groue v5.1.0 documentation
authored
126
127 New APIs:
128
129 ```objc
130 // The name of exceptions raised whenever the rendering could not be completed.
131 extern NSString * const GRMustacheRenderingException;
132
133 // Base protocol for "variable lambdas".
134 @protocol GRMustacheVariableHelper<NSObject>
135 @required
018381f @groue Remove availability macro from RELEASE_NOTES.md
authored
136 - (NSString *)renderVariable:(GRMustacheVariable *)variable;
84779a5 @groue v5.1.0 documentation
authored
137 @end
138
139 // Convenience class in order to avoid implementing a full class that conforms
140 // to the GRMustacheVariableHelper protocol
141 @interface GRMustacheVariableHelper: NSObject<GRMustacheVariableHelper>
142 + (id)helperWithBlock:(NSString *(^)(GRMustacheVariable* variable))block;
143 @end
144
145 // Convenience class for building variable helpers that render the content of a
146 // template partial.
147 @interface GRMustacheDynamicPartial: NSObject<GRMustacheVariableHelper>
148 + (id)dynamicPartialWithName:(NSString *)name;
149 @end
150
151 // Allows you to implement variable helpers through the GRMustacheVariableHelper
152 // protocol.
153 @interface GRMustacheVariable : NSObject
154 - (NSString *)renderTemplateString:(NSString *)string error:(NSError **)outError;
155 - (NSString *)renderTemplateNamed:(NSString *)name error:(NSError **)outError;
156 @end
157
158 // This protocol is identical to the deprecated GRMustacheHelper protocol.
159 @protocol GRMustacheSectionHelper<NSObject>
160 @required
161 - (NSString *)renderSection:(GRMustacheSection *)section;
162 @end
163
164 // This class is identical to the deprecated GRMustacheHelper class.
165 @interface GRMustacheSectionHelper: NSObject<GRMustacheSectionHelper>
166 + (id)helperWithBlock:(NSString *(^)(GRMustacheSection* section))block;
167 @end
168 ```
169
170 Deprecated APIs:
171
172 ```objc
173 // Use GRMustacheRenderingException instead
174 extern NSString * GRMustacheFilterException;
175
176 // Use GRMustacheSectionHelper protocol instead
177 @protocol GRMustacheHelper
178 @end
179
180 // Use GRMustacheSectionHelper class instead
181 @interface GRMustacheHelper
182 @end
183 ```
184
185
b4dfe0d @groue v5.0.1
authored
186 ## v5.0.1
187
188 Bug fixes:
189
190 - [Section delegates](Guides/delegate.md) used not to be given the rendered template as expected.
191 - [Helpers](Guides/helpers.md) used not to be able to render partial templates when rendering alternate template strings.
192
193
7924382 @groue v5.0.0
authored
194 ## v5.0.0
195
196 **[Performance improvements](https://github.com/groue/GRMustacheBenchmark), and fix for flaws in the GRMustacheDelegate API.**
197
198 Besides the removal of already deprecated methods, the changes introduced in this version are very unlikely to introduce incompatibilities in your code:
199
200 - Dropped support for iOS3.
201 - Before v5.0.0, [template delegates](Guides/delegate.md) could know that the value `Arthur` was provided by the key `name` when the tag `{{name}}` is rendered. Delegates are now only provided with the value.
202 - Before v5.0.0, a tag containing a filter expression like `{{uppercase(name)}}` would have a template delegate invoked with the raw `Arthur` value, not the filter result: `ARTHUR`. In v5.0.0, delegate callbacks are given always given the value GRMustache is about to render.
203
204 Removed APIs:
205
206 ```objc
207 @interface GRMustacheInvocation : NSObject
208 // Removed without deprecation warning
209 @property (nonatomic, readonly) NSString *key;
210 @end
211
212 @interface GRMustacheSection: NSObject
213 // Deprecated in v4.3.0
214 @property (nonatomic, retain, readonly) id renderingContext;
215 @end
216
217 @interface GRMustacheTemplate: NSObject
218 // Deprecated in v4.3.0
219 - (NSString *)renderObjects:(id)object, ...;
220 @end
221
222 // Removed without deprecation warning
223 GRMustacheInterpretationFilterArgument // was part of the GRMustacheInterpretation enum.
224
225 @protocol GRMustacheTemplateDelegate<NSObject>
226 // Deprecated in v4.1.0
227 - (void)template:(GRMustacheTemplate *)template willRenderReturnValueOfInvocation:(GRMustacheInvocation *)invocation;
228 - (void)template:(GRMustacheTemplate *)template didRenderReturnValueOfInvocation:(GRMustacheInvocation *)invocation;
229 @end
230 ```
231
232
2dd7d26 @groue v4.3.4
authored
233 ## v4.3.4
234
235 Restored compatibility with iOS3 and OSX6 (thanks [@Bertrand](https://github.com/Bertrand)).
236
237
1978e57 @groue v4.3.3
authored
238 ## v4.3.3
239
240 Fix a memory leak.
241
242
c3a28fb @groue v4.3.2
authored
243 ## v4.3.2
244
245 Bugfix: Avoid the default `valueForKey:` implementation of Fundation collection classes like NSArray, NSSet and NSOrderedSet, which would return another collection. Fixes [issue #21](https://github.com/groue/GRMustache/issues/21).
246
247
c4e98e6 @groue v4.3.1
authored
248 ## v4.3.1
249
250 Bugfix: this release restores the delegate callbacks while rendering alternate template strings in [helpers](Guides/helpers.md).
251
252
253 ## v4.3.0
a3a88b4 @groue v4.3.0
authored
254
c4e98e6 @groue v4.3.1
authored
255 ### Filters
a3a88b4 @groue v4.3.0
authored
256
c4e98e6 @groue v4.3.1
authored
257 [Filters](Guides/filters.md) 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.
a3a88b4 @groue v4.3.0
authored
258
259 **New APIs**:
260
3c86134 @groue Typo
authored
261 ```objc
a3a88b4 @groue v4.3.0
authored
262 @interface GRMustacheSection: NSObject
263 - (NSString *)renderTemplateString:(NSString *)string error:(NSError **)outError;
264 @end
265
266 @interface GRMustacheTemplate: NSObject
267 + (NSString *)renderObject:(id)object withFilters:(id)filters fromString:(NSString *)templateString error:(NSError **)outError;
268 + (NSString *)renderObject:(id)object withFilters:(id)filters fromContentsOfFile:(NSString *)path error:(NSError **)outError;
269 + (NSString *)renderObject:(id)object withFilters:(id)filters fromContentsOfURL:(NSURL *)url error:(NSError **)outError;
270 + (NSString *)renderObject:(id)object withFilters:(id)filters fromResource:(NSString *)name bundle:(NSBundle *)bundle error:(NSError **)outError;
271 + (NSString *)renderObject:(id)object withFilters:(id)filters fromResource:(NSString *)name withExtension:(NSString *)ext bundle:(NSBundle *)bundle error:(NSError **)outError;
272 - (NSString *)renderObject:(id)object withFilters:(id)filters;
273 - (NSString *)renderObjectsInArray:(NSArray *)objects;
274 - (NSString *)renderObjectsInArray:(NSArray *)objects withFilters:(id)filters;
275 @end
276 ```
277
278 **Deprecated APIs**:
279
3c86134 @groue Typo
authored
280 ```objc
a3a88b4 @groue v4.3.0
authored
281 @interface GRMustacheSection: NSObject
282 // Use renderTemplateString:error: instead.
283 @property (nonatomic, retain, readonly) id renderingContext;
284 @end
285
286 @interface GRMustacheTemplate: NSObject
287 // Use renderObjectsInArray: instead.
288 - (NSString *)renderObjects:(id)object, ...;
289 @end
290 ```
291
6e51540 @groue 4.2.0
authored
292 ## v4.2.0
293
c4e98e6 @groue v4.3.1
authored
294 ### Section delegates
6e51540 @groue 4.2.0
authored
295
296 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.
297
298 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.
299
cd7ec36 @groue Fix internal documentation link
authored
300 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
301
b775400 @groue v4.1.1 release notes
authored
302 ## v4.1.1
303
c4e98e6 @groue v4.3.1
authored
304 ### Total inline documentation
b775400 @groue v4.1.1 release notes
authored
305
306 Headers contain documentation for every exposed API.
307
308 An online reference, automatically generated from inline documentation by appledoc can be read at http://groue.github.com/GRMustache/Reference/.
309
459f57b @groue v4.1.0
authored
310 ## v4.1.0
311
312 ### GRMustacheDelegate protocol
313
314 A template's delegate is now able to know how a value will be interpreted by GRMustache.
315
316 New APIs:
317
318 ```objc
319 typedef enum {
320 GRMustacheInterpretationSection,
321 GRMustacheInterpretationVariable,
322 } GRMustacheInterpretation;
323
324 @protocol GRMustacheTemplateDelegate<NSObject>
325 - (void)template:(GRMustacheTemplate *)template willInterpretReturnValueOfInvocation:(GRMustacheInvocation *)invocation as:(GRMustacheInterpretation)interpretation;
326 - (void)template:(GRMustacheTemplate *)template didInterpretReturnValueOfInvocation:(GRMustacheInvocation *)invocation as:(GRMustacheInterpretation)interpretation;
327 @end
328 ```
329
330 Deprecated APIs:
331
332 ```objc
333 @protocol GRMustacheTemplateDelegate<NSObject>
334 - (void)template:(GRMustacheTemplate *)template willRenderReturnValueOfInvocation:(GRMustacheInvocation *)invocation;
335 - (void)template:(GRMustacheTemplate *)template didRenderReturnValueOfInvocation:(GRMustacheInvocation *)invocation;
336 @end
337 ```
338
fdcf398 @groue RELEASE_NOTES provides links to documentation of classes changed in v…
authored
339 GRMustacheDelegate is documented in [Guides/delegate.md](Guides/delegate.md).
459f57b @groue v4.1.0
authored
340
341 ### GRMustacheTemplateRepositoryDataSource protocol
342
343 The return type of `-[GRMustacheTemplateRepositoryDataSource templateRepository:templateIDForName:relativeToTemplateID:]` as changed from `id` to `id<NSCopying>`.
344
fdcf398 @groue RELEASE_NOTES provides links to documentation of classes changed in v…
authored
345 GRMustacheTemplateRepositoryDataSource is documented in [Guides/template_repositories.md](Guides/template_repositories.md).
346
459f57b @groue v4.1.0
authored
347 ### Errors
348
349 GRMustache used to output badly formatted errors. They are now easier to read.
350
6337526 @groue v4.0.0
authored
351 ## v4.0.0
352
c4e98e6 @groue v4.3.1
authored
353 ### Zero numbers are false
6337526 @groue v4.0.0
authored
354
355 GRMustache now considers all `NSNumber` instances whose `boolValue` is `NO` as false, when considering whether a section should render or not.
356
357 Previously, GRMustache used to consider only `[NSNumber numberWithBool:NO]` as false.
358
579209c @groue RELEASE_NOTES.md wording
authored
359 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
360
813e689 @groue Fix RELEASE_NOTES.md link
authored
361 See [Guides/sample_code/indexes.md](Guides/sample_code/indexes.md) for a discussion on proxy objects.
6337526 @groue v4.0.0
authored
362
c4e98e6 @groue v4.3.1
authored
363 ### Total NSUndefinedException swallowing
6337526 @groue v4.0.0
authored
364
365 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.
366
367 Previously, GRMustache used to swallow only exceptions that explicitely came from the inquired object, and for the inquired key.
368
579209c @groue RELEASE_NOTES.md wording
authored
369 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
370
813e689 @groue Fix RELEASE_NOTES.md link
authored
371 See [Guides/sample_code/indexes.md](Guides/sample_code/indexes.md) for a discussion on proxy objects.
6337526 @groue v4.0.0
authored
372
c4e98e6 @groue v4.3.1
authored
373 ### Support for `.name` keys
6337526 @groue v4.0.0
authored
374
65e9823 @groue Document the "context stack" expression
authored
375 Keys prefixed by a dot prevent GRMustache to look up the [context stack](Guides/runtime/context_stack.md).
6337526 @groue v4.0.0
authored
376
377 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.
378
579209c @groue RELEASE_NOTES.md wording
authored
379 See [issue #19](https://github.com/groue/GRMustache/issues/19) and https://github.com/mustache/spec/issues/10.
6337526 @groue v4.0.0
authored
380
6c31018 @groue v3.0.1
authored
381 ## v3.0.1
382
383 Restored intended architectures: armv6+armv7+i386 for libGRMustache3-iOS, i386+x86_64 for libGRMustache3-MacOS.
384
eb5cff8 @groue v3.0.0
authored
385 ## v3.0.0
386
c4e98e6 @groue v4.3.1
authored
387 ### There is no option
eb5cff8 @groue v3.0.0
authored
388
389 Removed APIs:
390
391 ```objc
392 enum {
393 GRMustacheTemplateOptionNone,
394 GRMustacheTemplateOptionStrictBoolean
395 };
396
397 typedef NSUInteger GRMustacheTemplateOptions;
398
399 @interface GRMustacheTemplate: NSObject {
400 + (id)templateFromString:(NSString *)templateString options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
401 + (id)templateFromContentsOfFile:(NSString *)path options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
402 + (id)templateFromContentsOfURL:(NSURL *)url options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
403 + (id)templateFromResource:(NSString *)name bundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
404 + (id)templateFromResource:(NSString *)name withExtension:(NSString *)ext bundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
405 + (NSString *)renderObject:(id)object fromString:(NSString *)templateString options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
406 + (NSString *)renderObject:(id)object fromContentsOfFile:(NSString *)path options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
407 + (NSString *)renderObject:(id)object fromContentsOfURL:(NSURL *)url options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
408 + (NSString *)renderObject:(id)object fromResource:(NSString *)name bundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
409 + (NSString *)renderObject:(id)object fromResource:(NSString *)name withExtension:(NSString *)ext bundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
410 @end
411
412 @protocol GRMustacheTemplateRepositoryDataSource <NSObject>
413 + (id)templateRepositoryWithBaseURL:(NSURL *)URL options:(GRMustacheTemplateOptions)options;
414 + (id)templateRepositoryWithBaseURL:(NSURL *)URL templateExtension:(NSString *)ext options:(GRMustacheTemplateOptions)options;
415 + (id)templateRepositoryWithBaseURL:(NSURL *)URL templateExtension:(NSString *)ext encoding:(NSStringEncoding)encoding options:(GRMustacheTemplateOptions)options;
416 + (id)templateRepositoryWithDirectory:(NSString *)path options:(GRMustacheTemplateOptions)options;
417 + (id)templateRepositoryWithDirectory:(NSString *)path templateExtension:(NSString *)ext options:(GRMustacheTemplateOptions)options;
418 + (id)templateRepositoryWithDirectory:(NSString *)path templateExtension:(NSString *)ext encoding:(NSStringEncoding)encoding options:(GRMustacheTemplateOptions)options;
419 + (id)templateRepositoryWithBundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options;
420 + (id)templateRepositoryWithBundle:(NSBundle *)bundle templateExtension:(NSString *)ext options:(GRMustacheTemplateOptions)options;
421 + (id)templateRepositoryWithBundle:(NSBundle *)bundle templateExtension:(NSString *)ext encoding:(NSStringEncoding)encoding options:(GRMustacheTemplateOptions)options;
422 + (id)templateRepositoryWithPartialsDictionary:(NSDictionary *)partialsDictionary options:(GRMustacheTemplateOptions)options;
423 + (id)templateRepositoryWithOptions:(GRMustacheTemplateOptions)options;
424 @end
425 ```
426
ed879f3 @groue v2.0.0
authored
427 ## v2.0.0
428
c4e98e6 @groue v4.3.1
authored
429 ### API simplification
ed879f3 @groue v2.0.0
authored
430
c4e98e6 @groue v4.3.1
authored
431 **New APIs**
1f91c52 @groue v2.0.0 RELEASE_NOTES
authored
432
433 ```objc
434 enum {
3e006cc @groue wording
authored
435 // New option for processing `BOOL` and `char` properties as numbers
1f91c52 @groue v2.0.0 RELEASE_NOTES
authored
436 GRMustacheTemplateOptionStrictBoolean = 1
437 }
438
439 @protocol GRMustacheHelper<NSObject>
440 @required
441 // New required method
442 - (NSString *)renderSection:(GRMustacheSection *)section;
443 @end
444
445 // New GRMustacheHelper class
446 @interface GRMustacheHelper: NSObject<GRMustacheHelper>
447 + (id)helperWithBlock:(NSString *(^)(GRMustacheSection* section))block;
448 @end
449
450 // New GRMustacheSection properties and methods
451 @interface GRMustacheSection: NSObject
452 @property (nonatomic, readonly) NSString *innerTemplateString;
453 @property (nonatomic, readonly) id renderingContext;
454 - (NSString *)render;
455 @end
456 ```
457
c4e98e6 @groue v4.3.1
authored
458 **Removed APIs and behaviors**
1f91c52 @groue v2.0.0 RELEASE_NOTES
authored
459
460 ```objc
461 enum {
462 // GRMustache is now compliant by default to the Mustache specification:
463 GRMustacheTemplateOptionMustacheSpecCompatibility = 1
464 }
465
466 // NSErrors with GRMustacheErrorDomain now store the line number in localizedDescription.
467 extern NSString* const GRMustacheErrorLine;
468
469 @interface GRMustache: NSObject
470 // This global state has been replaced by the GRMustacheTemplateOptionStrictBoolean option:
471 + (BOOL)strictBooleanMode:
472 + (void)setStrictBooleanMode:(BOOL)strictBooleanMode;
473 @end
474
475 @protocol GRMustacheHelper<NSObject>
476 @required
477 // Replaced by renderSection: method
478 - (NSString *)renderSection:(GRMustacheSection *)section withContext:(id)context;
479 @end
480
481 // Replaced by the GRMustacheHelper class:
482 @interface GRMustacheBlockHelper: NSObject<GRMustacheHelper> {
483 + (id)helperWithBlock:(NSString *(^)(GRMustacheSection* section, id context))block;
484 @end
485
486 @interface GRMustacheSection: NSObject
487 // Replaced by the innerTemplateString property
488 @property (nonatomic, readonly) NSString *templateString;
489 // See the new render method
490 - (NSString *)renderObject:(id)object;
491 - (NSString *)renderObjects:(id)object, ...;
492 @end
493 ```
494
8506da0 @groue Link to http://handlebarsjs.com/
authored
495 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
496
497 GRMustache1 used to parse and interpret `this` identifier is tags such as `{{this.foo}}`. GRMustache2 does no longer parse the `this` identifier.
498
5672e6d @groue wording
authored
499 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
500
501
7298c29 @groue v1.13.1
authored
502 ## v1.13.1
503
504 The deprecated class GRMustacheTemplateLoader was broken by 1.13.0. Deprecated does not mean unavailable: it is restored.
505
5e5ea55 @groue v1.13.0
authored
506 ## v1.13.0
507
508 Deprecated class (use [GRMustacheTemplateRepository templateRepositoryWithPartialsDictionary:], or the new GRMustacheTemplateRepositoryDataSource protocol instead):
509
510 - `GRMustacheTemplateLoader`
511
512 New class:
513
514 - `GRMustacheTemplateRepository`
515
516 ```objc
517 @interface GRMustacheTemplateRepository : NSObject
518 @property (nonatomic, assign) id<GRMustacheTemplateRepositoryDataSource> dataSource;
519
520 + (id)templateRepository;
521 + (id)templateRepositoryWithOptions:(GRMustacheTemplateOptions)options;
522
523 + (id)templateRepositoryWithBaseURL:(NSURL *)URL;
524 + (id)templateRepositoryWithBaseURL:(NSURL *)URL options:(GRMustacheTemplateOptions)options;
525 + (id)templateRepositoryWithBaseURL:(NSURL *)URL templateExtension:(NSString *)ext;
526 + (id)templateRepositoryWithBaseURL:(NSURL *)URL templateExtension:(NSString *)ext options:(GRMustacheTemplateOptions)options;
527 + (id)templateRepositoryWithBaseURL:(NSURL *)URL templateExtension:(NSString *)ext;
528 + (id)templateRepositoryWithBaseURL:(NSURL *)URL templateExtension:(NSString *)ext encoding:(NSStringEncoding)encoding;
529 + (id)templateRepositoryWithBaseURL:(NSURL *)URL templateExtension:(NSString *)ext encoding:(NSStringEncoding)encoding options:(GRMustacheTemplateOptions)options;
530
531 + (id)templateRepositoryWithDirectory:(NSString *)path;
532 + (id)templateRepositoryWithDirectory:(NSString *)path options:(GRMustacheTemplateOptions)options;
533 + (id)templateRepositoryWithDirectory:(NSString *)path templateExtension:(NSString *)ext;
534 + (id)templateRepositoryWithDirectory:(NSString *)path templateExtension:(NSString *)ext options:(GRMustacheTemplateOptions)options;
535 + (id)templateRepositoryWithDirectory:(NSString *)path templateExtension:(NSString *)ext encoding:(NSStringEncoding)encoding;
536 + (id)templateRepositoryWithDirectory:(NSString *)path templateExtension:(NSString *)ext encoding:(NSStringEncoding)encoding options:(GRMustacheTemplateOptions)options;
537
538 + (id)templateRepositoryWithBundle:(NSBundle *)bundle;
539 + (id)templateRepositoryWithBundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options;
540 + (id)templateRepositoryWithBundle:(NSBundle *)bundle templateExtension:(NSString *)ext;
541 + (id)templateRepositoryWithBundle:(NSBundle *)bundle templateExtension:(NSString *)ext options:(GRMustacheTemplateOptions)options;
542 + (id)templateRepositoryWithBundle:(NSBundle *)bundle templateExtension:(NSString *)ext encoding:(NSStringEncoding)encoding;
543 + (id)templateRepositoryWithBundle:(NSBundle *)bundle templateExtension:(NSString *)ext encoding:(NSStringEncoding)encoding options:(GRMustacheTemplateOptions)options;
544
545 + (id)templateRepositoryWithPartialsDictionary:(NSDictionary *)partialsDictionary;
546 + (id)templateRepositoryWithPartialsDictionary:(NSDictionary *)partialsDictionary options:(GRMustacheTemplateOptions)options;
547
548 - (GRMustacheTemplate *)templateForName:(NSString *)name error:(NSError **)outError;
549 - (GRMustacheTemplate *)templateFromString:(NSString *)templateString error:(NSError **)outError;
550 ```
551
552 New protocol:
553
554 - `GRMustacheTemplateRepositoryDataSource`
555
556 ```objc
557 @protocol GRMustacheTemplateRepositoryDataSource <NSObject>
558 @required
559 - (id)templateRepository:(GRMustacheTemplateRepository *)templateRepository templateIDForName:(NSString *)name relativeToTemplateID:(id)templateID;
560 - (NSString *)templateRepository:(GRMustacheTemplateRepository *)templateRepository templateStringForTemplateID:(id)templateID error:(NSError **)outError;
561 @end
562 ```
563
6e1642d @groue v1.12.2
authored
564 ## v1.12.2
565
887bcdb @groue RELEASE_NOTES: remove undue notifications of performance improvements
authored
566 Restore parsing performances of v1.12.0
6e1642d @groue v1.12.2
authored
567
71638db @groue v1.12.1
authored
568 ## v1.12.1
569
570 Easier template debugging with `[GRMustacheInvocation description]`
571
299d3b1 @groue v1.12.0
authored
572 ## v1.12
573
574 - **GRMustacheTemplateDelegate protocol**
575
576 Deprecated classes:
577
578 - `GRMustacheNumberFormatterHelper`
579 - `GRMustacheDateFormatterHelper`
580
d3b5626 @groue v1.11.2
authored
581 ## v1.11.2
582
2cfb609 @groue wording
authored
583 BOOL property custom getters can be used to control boolean sections.
d3b5626 @groue v1.11.2
authored
584
5d95cad @groue v1.11.1
authored
585 ## v1.11.1
586
587 Avoid deprecation warning in GRMustache headers.
588
92c07e2 @groue v1.11.0
authored
589 ## v1.11
590
591 **API cleanup**
592
593 New GRMustacheTemplateLoader methods:
594
5e5ea55 @groue v1.13.0
authored
595 ```objc
596 - (GRMustacheTemplate *)templateWithName:(NSString *)name error:(NSError **)outError;
597 - (GRMustacheTemplate *)templateFromString:(NSString *)templateString error:(NSError **)outError;
598 ```
92c07e2 @groue v1.11.0
authored
599
600 New GRMustacheTemplate methods:
601
5e5ea55 @groue v1.13.0
authored
602 ```objc
603 + (id)templateFromString:(NSString *)templateString error:(NSError **)outError;
604 + (id)templateFromString:(NSString *)templateString options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
605 + (id)templateFromContentsOfFile:(NSString *)path error:(NSError **)outError;
606 + (id)templateFromContentsOfFile:(NSString *)path options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
607 + (id)templateFromResource:(NSString *)name bundle:(NSBundle *)bundle error:(NSError **)outError;
608 + (id)templateFromResource:(NSString *)name bundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
609 + (id)templateFromResource:(NSString *)name withExtension:(NSString *)ext bundle:(NSBundle *)bundle error:(NSError **)outError;
610 + (id)templateFromResource:(NSString *)name withExtension:(NSString *)ext bundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
611 + (id)templateFromContentsOfURL:(NSURL *)url error:(NSError **)outError;
612 + (id)templateFromContentsOfURL:(NSURL *)url options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
613 ```
92c07e2 @groue v1.11.0
authored
614
615 Deprecated GRMustacheTemplateLoader methods (use `templateWithName:error:` and `templateFromString:error:` instead):
616
5e5ea55 @groue v1.13.0
authored
617 ```objc
618 - (GRMustacheTemplate *)parseTemplateNamed:(NSString *)name error:(NSError **)outError;
619 - (GRMustacheTemplate *)parseString:(NSString *)templateString error:(NSError **)outError;
620 ```
92c07e2 @groue v1.11.0
authored
621
622 Deprecated GRMustacheTemplate methods (replace `parse` with `templateFrom`):
623
5e5ea55 @groue v1.13.0
authored
624 ```objc
625 + (id)parseString:(NSString *)templateString error:(NSError **)outError;
626 + (id)parseString:(NSString *)templateString options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
627 + (id)parseContentsOfFile:(NSString *)path error:(NSError **)outError;
628 + (id)parseContentsOfFile:(NSString *)path options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
629 + (id)parseResource:(NSString *)name bundle:(NSBundle *)bundle error:(NSError **)outError;
630 + (id)parseResource:(NSString *)name bundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
631 + (id)parseResource:(NSString *)name withExtension:(NSString *)ext bundle:(NSBundle *)bundle error:(NSError **)outError;
632 + (id)parseResource:(NSString *)name withExtension:(NSString *)ext bundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
633 + (id)parseContentsOfURL:(NSURL *)url error:(NSError **)outError;
634 + (id)parseContentsOfURL:(NSURL *)url options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
635 ```
92c07e2 @groue v1.11.0
authored
636
d5730e5 @groue v1.10.3
authored
637 ## v1.10.3
638
639 Upgrade GRMustache, and get deprecation warnings when you use deprecated APIs. Your code will keep on running fine, though.
640
75eae3b @groue v1.10.2
authored
641 ## v1.10.2
642
7924382 @groue v5.0.0
authored
643 **[Performance improvements](https://github.com/groue/GRMustacheBenchmark)**
75eae3b @groue v1.10.2
authored
644
745be05 @groue v1.10.1
authored
645 ## v1.10.1
646
7924382 @groue v5.0.0
authored
647 **[Performance improvements](https://github.com/groue/GRMustacheBenchmark)**
745be05 @groue v1.10.1
authored
648
31100d3 @groue v1.10.0
authored
649 ## v1.10
650
887bcdb @groue RELEASE_NOTES: remove undue notifications of performance improvements
authored
651 **Improved Handlebars.js support**
31100d3 @groue v1.10.0
authored
652
745be05 @groue v1.10.1
authored
653 Now `{{foo/bar}}` and `{{foo.bar}}` syntaxes are both supported.
31100d3 @groue v1.10.0
authored
654
8020800 @groue v1.9.0
authored
655 ## v1.9
656
3293103 @groue Introduce GRMustacheNumberFormatterHelper
authored
657 - **Better lambda encapsulation with classes conforming to the GRMustacheHelper protocol.**
658 - **Format all numbers in a section with GRMustacheNumberFormatterHelper**
f52da9d @groue README+RELEASE_NOTES for GRMustacheNumberFormatterHelper and GRMustac…
authored
659 - **Format all dates in a section with GRMustacheDateFormatterHelper**
8020800 @groue v1.9.0
authored
660
661 New protocol:
662
3293103 @groue Introduce GRMustacheNumberFormatterHelper
authored
663 - `GRMustacheHelper`
664
5e5ea55 @groue v1.13.0
authored
665 ```objc
666 @protocol GRMustacheHelper<NSObject>
667 @required
018381f @groue Remove availability macro from RELEASE_NOTES.md
authored
668 - (NSString *)renderSection:(GRMustacheSection *)section withContext:(id)context;
5e5ea55 @groue v1.13.0
authored
669 @end
670 ```
671
f52da9d @groue README+RELEASE_NOTES for GRMustacheNumberFormatterHelper and GRMustac…
authored
672 New classes:
3293103 @groue Introduce GRMustacheNumberFormatterHelper
authored
673
674 - `GRMustacheNumberFormatterHelper`
f52da9d @groue README+RELEASE_NOTES for GRMustacheNumberFormatterHelper and GRMustac…
authored
675 - `GRMustacheDateFormatterHelper`
8020800 @groue v1.9.0
authored
676
5e5ea55 @groue v1.13.0
authored
677 ```objc
678 @interface GRMustacheNumberFormatterHelper : NSObject<GRMustacheHelper>
679 @property (nonatomic, readonly, retain) NSNumberFormatter *numberFormatter;
680 + (id)helperWithNumberFormatter:(NSNumberFormatter *)numberFormatter;
681 @end
682
683 @interface GRMustacheDateFormatterHelper : NSObject<GRMustacheHelper>
684 @property (nonatomic, readonly, retain) NSDateFormatter *dateFormatter;
685 + (id)helperWithDateFormatter:(NSDateFormatter *)dateFormatter;
686 @end
687 ```
688
8704042 @groue v1.8.6
authored
689 ## v1.8.6
690
691 Fixed bug in [GRMustacheTemplate renderObjects:...]
692
d209bef @groue v1.8.5
authored
693 ## v1.8.5
694
695 Added missing symbols from lib/libGRMustache1-ios3.a
696
edf6200 @groue v1.8.4
authored
697 ## v1.8.4
698
d209bef @groue v1.8.5
authored
699 Added missing symbols from lib/libGRMustache1-ios3.a and lib/libGRMustache1-ios4.a
edf6200 @groue v1.8.4
authored
700
6a23fe6 @groue v1.8.3
authored
701 ## v1.8.3
702
703 Availability fixes.
704
8abbac9 @groue v1.8.2
authored
705 ## v1.8.2
706
707 Better testing of public API thanks to availability macros.
708
b643aa1 @groue v1.8.1
authored
709 ## v1.8.1
710
711 Bug fixes
712
18dc85c @groue v1.8.0
authored
713 ## v1.8
714
8abbac9 @groue v1.8.2
authored
715 **GRMustache now supports the [Mustache specification v1.1.2](https://github.com/mustache/spec).**
716
717 New type and enum:
718
5e5ea55 @groue v1.13.0
authored
719 ```objc
720 enum {
721 GRMustacheTemplateOptionNone = 0,
722 GRMustacheTemplateOptionMustacheSpecCompatibility = 0x01,
723 };
8abbac9 @groue v1.8.2
authored
724
5e5ea55 @groue v1.13.0
authored
725 typedef NSUInteger GRMustacheTemplateOptions;
726 ```
8abbac9 @groue v1.8.2
authored
727
728 New GRMustache methods:
729
5e5ea55 @groue v1.13.0
authored
730 ```objc
731 + (GRMustacheTemplateOptions)defaultTemplateOptions;
732 + (void)setDefaultTemplateOptions:(GRMustacheTemplateOptions)templateOptions;
733 ```
8abbac9 @groue v1.8.2
authored
734
735 New GRMustacheTemplate methods:
736
5e5ea55 @groue v1.13.0
authored
737 ```objc
738 + (id)parseString:(NSString *)templateString options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
739 + (id)parseContentsOfURL:(NSURL *)url options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
740 + (id)parseContentsOfFile:(NSString *)path options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
741 + (id)parseResource:(NSString *)name bundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
742 + (id)parseResource:(NSString *)name withExtension:(NSString *)ext bundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
743 + (NSString *)renderObject:(id)object fromString:(NSString *)templateString options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
744 + (NSString *)renderObject:(id)object fromContentsOfURL:(NSURL *)url options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
745 + (NSString *)renderObject:(id)object fromContentsOfFile:(NSString *)path options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
746 + (NSString *)renderObject:(id)object fromResource:(NSString *)name bundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
747 + (NSString *)renderObject:(id)object fromResource:(NSString *)name withExtension:(NSString *)ext bundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
748 ```
8abbac9 @groue v1.8.2
authored
749
750 New GRMustacheTemplateLoader methods:
751
5e5ea55 @groue v1.13.0
authored
752 ```objc
753 + (id)templateLoaderWithBaseURL:(NSURL *)url options:(GRMustacheTemplateOptions)options;
754 + (id)templateLoaderWithBaseURL:(NSURL *)url extension:(NSString *)ext options:(GRMustacheTemplateOptions)options;
755 + (id)templateLoaderWithBaseURL:(NSURL *)url extension:(NSString *)ext encoding:(NSStringEncoding)encoding options:(GRMustacheTemplateOptions)options;
756 + (id)templateLoaderWithDirectory:(NSString *)path options:(GRMustacheTemplateOptions)options;
757 + (id)templateLoaderWithDirectory:(NSString *)path extension:(NSString *)ext options:(GRMustacheTemplateOptions)options;
758 + (id)templateLoaderWithDirectory:(NSString *)path extension:(NSString *)ext encoding:(NSStringEncoding)encoding options:(GRMustacheTemplateOptions)options;
759 + (id)templateLoaderWithBundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options;
760 + (id)templateLoaderWithBundle:(NSBundle *)bundle extension:(NSString *)ext options:(GRMustacheTemplateOptions)options;
761 + (id)templateLoaderWithBundle:(NSBundle *)bundle extension:(NSString *)ext encoding:(NSStringEncoding)encoding options:(GRMustacheTemplateOptions)options;
762 ```
8abbac9 @groue v1.8.2
authored
763
18dc85c @groue v1.8.0
authored
764
d08841f @groue v1.7.4
authored
765 ## v1.7.4
766
767 Bug fix: avoid crashing when one provides uninitialized NSError* to GRMustache.
768
8059b38 @groue v1.7.3
authored
769 ## v1.7.3
770
771 One no longer needs to add `-all_load` to the "Other Linker Flags" target option tu use GRMustache static libraries.
772
6d6e020 @groue v1.7.2
authored
773 ## v1.7.2
774
775 - Fixed [issue #6](https://github.com/groue/GRMustache/issues/6)
776 - `[GRMustache preventNSUndefinedKeyExceptionAttack]` no longer prevents the rendering of `nil`.
777
cd4de9d @groue v1.7.1
authored
778 ## v1.7.1
779
780 Added missing header file
781
e5d100a @groue v1.7.0
authored
782 ## v1.7.0
783
784 **GRMustache now ships as a static library.**
785
786 See the [Embedding](https://github.com/groue/GRMustache/wiki/Embedding) wiki page in order to see how to embed GRMustache in your project.
787
788 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.
789
4373916 @groue v1.6.2
authored
790 ## v1.6.2
791
792 **LLVM3 compatibility**
793
f19ba84 @groue v1.6.1
authored
794 ## v1.6.1
795
796 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).
797
6b1dbf7 @groue v1.6.0
authored
798 ## v1.6.0
799
800 **Reduced memory footprint**
801
8abbac9 @groue v1.8.2
authored
802 New GRMustacheTemplateLoader methods:
6b1dbf7 @groue v1.6.0
authored
803
5e5ea55 @groue v1.13.0
authored
804 ```objc
805 + (id)templateLoaderWithDirectory:(NSString *)path;
806 + (id)templateLoaderWithDirectory:(NSString *)path extension:(NSString *)ext;
807 + (id)templateLoaderWithDirectory:(NSString *)path extension:(NSString *)ext encoding:(NSStringEncoding)encoding;
808 ```
6b1dbf7 @groue v1.6.0
authored
809
8abbac9 @groue v1.8.2
authored
810 Deprecated GRMustacheTemplateLoader methods (replace `BasePath` with `Directory`):
6b1dbf7 @groue v1.6.0
authored
811
5e5ea55 @groue v1.13.0
authored
812 ```objc
813 + (id)templateLoaderWithBasePath:(NSString *)path;
814 + (id)templateLoaderWithBasePath:(NSString *)path extension:(NSString *)ext;
815 + (id)templateLoaderWithBasePath:(NSString *)path extension:(NSString *)ext encoding:(NSStringEncoding)encoding;
816 ```
6b1dbf7 @groue v1.6.0
authored
817
818 Bug fixes around the NSUndefinedKeyException handling when the `DEBUG` macro is set (thanks to [Mike Ash](http://www.mikeash.com/)).
819
499face @groue v1.5.2
authored
820 ## v1.5.2
821
f19ba84 @groue v1.6.1
authored
822 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
823
e0a103f @groue v1.5.1
authored
824 ## v1.5.1
825
4031037 @groue RELEASE_NOTES wording
authored
826 Bug fixes
e0a103f @groue v1.5.1
authored
827
3de3613 @groue v1.5.0
authored
828 ## v1.5.0
0915e91 @groue v1.4.1
authored
829
4031037 @groue RELEASE_NOTES wording
authored
830 **API simplification**
831
c5761e8 @groue RELEASE_NOTES wording
authored
832 New GRMustacheTemplate method:
833
834 - `- (NSString *)renderObjects:(id)object, ...;`
835
836 New GRMustacheSection method:
837
838 - `- (NSString *)renderObjects:(id)object, ...;`
839
840 New class:
841
842 - `GRMustacheBlockHelper`
843
844 Deprecated class (use `id` instead when refering to a context, and use `renderObjects:` methods instead of instanciating one):
845
846 - `GRMustacheContext`
847
848 Deprecated function (use GRMustacheBlockHelper instead):
849
850 - `id GRMustacheLambdaBlockMake(NSString *(^block)(GRMustacheSection*, GRMustacheContext*));`
0915e91 @groue v1.4.1
authored
851
a1f2cf1 @groue v1.4.0
authored
852 ## v1.4.0
853
4031037 @groue RELEASE_NOTES wording
authored
854 **iOS 3.0 support**
c5761e8 @groue RELEASE_NOTES wording
authored
855
856 New `GRMustacheTemplate` methods:
857
858 - `+ (NSString *)renderObject:(id)object fromContentsOfFile:(NSString *)path error:(NSError **)outError;`
859 - `+ (id)parseContentsOfFile:(NSString *)path error:(NSError **)outError;`
860
8abbac9 @groue v1.8.2
authored
861 New `GRMustacheTemplateLoader` methods:
c5761e8 @groue RELEASE_NOTES wording
authored
862
863 - `+ (id)templateLoaderWithBasePath:(NSString *)path;`
864 - `+ (id)templateLoaderWithBasePath:(NSString *)path extension:(NSString *)ext;`
865 - `+ (id)templateLoaderWithBasePath:(NSString *)path extension:(NSString *)ext encoding:(NSStringEncoding)encoding;`
a1f2cf1 @groue v1.4.0
authored
866
de489d5 @groue v1.3.3
authored
867 ## v1.3.3
868
4031037 @groue RELEASE_NOTES wording
authored
869 Bug fixes
de489d5 @groue v1.3.3
authored
870
be39647 @groue v1.3.2
authored
871 ## v1.3.2
872
4031037 @groue RELEASE_NOTES wording
authored
873 Bug fixes
be39647 @groue v1.3.2
authored
874
7f1e927 @groue v1.3.1
authored
875 ## v1.3.1
876
4031037 @groue RELEASE_NOTES wording
authored
877 Bug fixes
7f1e927 @groue v1.3.1
authored
878
b03eb3c @groue v1.3.0
authored
879 ## v1.3.0
880
4031037 @groue RELEASE_NOTES wording
authored
881 **Block-less API for helpers.**
b03eb3c @groue v1.3.0
authored
882
c5761e8 @groue RELEASE_NOTES wording
authored
883 New classes:
884
885 - `GRMustacheContext`
886 - `GRMustacheSection`
b03eb3c @groue v1.3.0
authored
887
c5761e8 @groue RELEASE_NOTES wording
authored
888 New functions:
a368aaf @groue v1.2.1
authored
889
c5761e8 @groue RELEASE_NOTES wording
authored
890 - `id GRMustacheLambdaBlockMake(NSString *(^block)(GRMustacheSection*, GRMustacheContext*));`
891
892 Deprecated functions (use GRMustacheLambdaBlockMake instead):
893
894 - `GRMustacheLambda GRMustacheLambdaMake(NSString *(^block)(NSString *(^)(id object), id, NSString *));`
a368aaf @groue v1.2.1
authored
895
c88c5c6 @groue v1.2.0
authored
896 ## v1.2.0
897
4031037 @groue RELEASE_NOTES wording
authored
898 **iOS 4.0 support**
c5761e8 @groue RELEASE_NOTES wording
authored
899
900 Deprecated class (use `[NSNumber numberWithBool:YES]` instead of `[GRYes yes]`):
901
902 - `GRYes`
903
904 Deprecated class (use `[NSNumber numberWithBool:NO]` instead of `[GRNo no]`):
905
906 - `GRNo`
c88c5c6 @groue v1.2.0
authored
907
16c756d @groue v1.1.6
authored
908 ## v1.1.6
909
c5761e8 @groue RELEASE_NOTES wording
authored
910 GRMustacheTemplateLoader subclasses can now rely on an immutable `extension` property.
16c756d @groue v1.1.6
authored
911
0805e50 @groue v1.1.5
authored
912 ## v1.1.5
913
4031037 @groue RELEASE_NOTES wording
authored
914 Bug fixes
0805e50 @groue v1.1.5
authored
915
8e257be @groue v1.1.4
authored
916 ## v1.1.4
917
4031037 @groue RELEASE_NOTES wording
authored
918 Bug fixes
8e257be @groue v1.1.4
authored
919
3f89a0b @groue v1.1.3
authored
920 ## v1.1.3
921
4031037 @groue RELEASE_NOTES wording
authored
922 **Rendering performance improvement**
3f89a0b @groue v1.1.3
authored
923
8dbe23f @groue v1.1.2
authored
924 ## v1.1.2
925
887bcdb @groue RELEASE_NOTES: remove undue notifications of performance improvements
authored
926 **Parsing performance improvement**
8dbe23f @groue v1.1.2
authored
927
161c96c @groue v1.1.1
authored
928 ## v1.1.1
929
4031037 @groue RELEASE_NOTES wording
authored
930 Bug fixes
161c96c @groue v1.1.1
authored
931
6ede60b @groue v1.1.0
authored
932 ## v1.1.0
0219c22 @groue v1.0.0
authored
933
c5761e8 @groue RELEASE_NOTES wording
authored
934 New methods:
935
936 - `[GRYes yes]` responds to `boolValue`
937 - `[GRNo no]` responds to `boolValue`
6ede60b @groue v1.1.0
authored
938
939 ## v1.0.0
940
4031037 @groue RELEASE_NOTES wording
authored
941 **First versioned release**
Something went wrong with that request. Please try again.