Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 941 lines (610 sloc) 37.719 kb
0219c223 »
2010-11-12 v1.0.0
1 GRMustache Release Notes
2 ========================
3
af037389 »
2012-03-14 Typo
4 You can compare the performances of GRMustache versions at https://github.com/groue/GRMustacheBenchmark.
9b3ce865 »
2012-02-19 Link to benchmarks
5
a3a88b4b »
2012-08-04 v4.3.0
6
1a7b6468 »
2012-10-11 v5.4.4
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
e27f2c5b »
2012-10-02 v5.4.3
12 ## v5.4.3
13
14 Until this version, GRMustache would not trigger section tag helpers, variable tag helpers and section delegates in a few corner cases.
15
cc63d535 »
2012-09-29 v5.4.2
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
41da038d »
2012-09-29 v5.4.1
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
7ac295fa »
2012-09-28 v5.4.0
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
bdf877a8 »
2012-09-29 Wording
37 GRMustache v5.4.0 brings absolute paths, that start with a slash: `{{> /partials/header }}`.
7ac295fa »
2012-09-28 v5.4.0
38
576a1212 »
2012-09-28 RELEASE_NOTES.md links to partials.md in order to introduce relative …
39 The full story starts at [Guides/partials.md](Guides/partials.md#partials-in-the-file-system).
7ac295fa »
2012-09-28 v5.4.0
40
ed26c851 »
2012-09-26 v5.3.0
41 ## v5.3.0
42
7ac295fa »
2012-09-28 v5.4.0
43 ### API cleanup
ed26c851 »
2012-09-26 v5.3.0
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
7ac295fa »
2012-09-28 v5.4.0
49 **Helpers API changes**
ed26c851 »
2012-09-26 v5.3.0
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
018381fe »
2012-09-26 Remove availability macro from RELEASE_NOTES.md
60 - (NSString *)renderTemplateString:(NSString *)string error:(NSError **)outError;
61 - (NSString *)renderTemplateNamed:(NSString *)name error:(NSError **)outError;
ed26c851 »
2012-09-26 v5.3.0
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
018381fe »
2012-09-26 Remove availability macro from RELEASE_NOTES.md
70 - (NSString *)renderForSectionTagInContext:(GRMustacheSectionTagRenderingContext *)context;
ed26c851 »
2012-09-26 v5.3.0
71 @end
72
73 @interface GRMustacheSectionTagRenderingContext: NSObject
018381fe »
2012-09-26 Remove availability macro from RELEASE_NOTES.md
74 @property (nonatomic, readonly) NSString *innerTemplateString;
75 - (NSString *)render;
76 - (NSString *)renderTemplateString:(NSString *)string error:(NSError **)outError;
ed26c851 »
2012-09-26 v5.3.0
77 @end
78 ```
79
7ac295fa »
2012-09-28 v5.4.0
80 **GRMustacheTemplateDelegate API changes**
ed26c851 »
2012-09-26 v5.3.0
81
82 In the `GRMustacheInterpretation` enumeration, `GRMustacheSectionTagInterpretation` replaces `GRMustacheInterpretationSection`, and `GRMustacheVariableTagInterpretation` replaces `GRMustacheInterpretationVariable`.
83
7ac295fa »
2012-09-28 v5.4.0
84 **GRMustacheTemplate API changes**
ed26c851 »
2012-09-26 v5.3.0
85
86 `[GRMustacheTemplate renderObjectsFromArray:]` and `[GRMustacheTemplate renderObjectsFromArray:withFilters:]` replace `[GRMustacheTemplate renderObjectsInArray:]` and `[GRMustacheTemplate renderObjectsInArray:withFilters:]`.
87
70b6029f »
2012-09-23 Prepare v5.2.0
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
ed26c851 »
2012-09-26 v5.3.0
94 Overridable partials are documented as [Guides/partials.md](Guides/partials.md).
70b6029f »
2012-09-23 Prepare v5.2.0
95
f6a5a446 »
2012-09-23 v5.2.0
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 :-).
70b6029f »
2012-09-23 Prepare v5.2.0
97
98
84779a51 »
2012-09-22 v5.1.0 documentation
99 ## v5.1.0
100
85cbb69d »
2012-09-22 more v5.1.0 release notes
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
84779a51 »
2012-09-22 v5.1.0 documentation
107 ### Array rendering
108
85cbb69d »
2012-09-22 more v5.1.0 release notes
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.
84779a51 »
2012-09-22 v5.1.0 documentation
110
111 GRMustache 5.1 renders an array as the concatenation of the rendering of its individual items.
112
85cbb69d »
2012-09-22 more v5.1.0 release notes
113 This makes GRMustache able to render `{{items}}` just as Ruby on Rails renders `<%= render @items %>`. Keep on reading.
84779a51 »
2012-09-22 v5.1.0 documentation
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
85cbb69d »
2012-09-22 more v5.1.0 release notes
123 Variable helpers can also help objects being able to "render themselves", and have `{{item}}` and `{{items}}` rendering controlled by these items themselves.
84779a51 »
2012-09-22 v5.1.0 documentation
124
9221f324 »
2012-09-25 Split section and variable helpers documentations
125 All of those new features are documented at [Guides/variable_helpers.md](Guides/variable_helpers.md).
84779a51 »
2012-09-22 v5.1.0 documentation
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
018381fe »
2012-09-26 Remove availability macro from RELEASE_NOTES.md
136 - (NSString *)renderVariable:(GRMustacheVariable *)variable;
84779a51 »
2012-09-22 v5.1.0 documentation
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
b4dfe0d7 »
2012-09-15 v5.0.1
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
79243825 »
2012-09-12 v5.0.0
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
2dd7d26f »
2012-09-06 v4.3.4
233 ## v4.3.4
234
235 Restored compatibility with iOS3 and OSX6 (thanks [@Bertrand](https://github.com/Bertrand)).
236
237
1978e573 »
2012-08-30 v4.3.3
238 ## v4.3.3
239
240 Fix a memory leak.
241
242
c3a28fb9 »
2012-08-06 v4.3.2
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
c4e98e64 »
2012-08-05 v4.3.1
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
a3a88b4b »
2012-08-04 v4.3.0
254
c4e98e64 »
2012-08-05 v4.3.1
255 ### Filters
a3a88b4b »
2012-08-04 v4.3.0
256
c4e98e64 »
2012-08-05 v4.3.1
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.
a3a88b4b »
2012-08-04 v4.3.0
258
259 **New APIs**:
260
3c861345 »
2012-08-04 Typo
261 ```objc
a3a88b4b »
2012-08-04 v4.3.0
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
3c861345 »
2012-08-04 Typo
280 ```objc
a3a88b4b »
2012-08-04 v4.3.0
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
6e51540c »
2012-07-27 4.2.0
292 ## v4.2.0
293
c4e98e64 »
2012-08-05 v4.3.1
294 ### Section delegates
6e51540c »
2012-07-27 4.2.0
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
cd7ec367 »
2012-07-28 Fix internal documentation link
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.
6e51540c »
2012-07-27 4.2.0
301
b7754000 »
2012-07-01 v4.1.1 release notes
302 ## v4.1.1
303
c4e98e64 »
2012-08-05 v4.3.1
304 ### Total inline documentation
b7754000 »
2012-07-01 v4.1.1 release notes
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
459f57b3 »
2012-06-30 v4.1.0
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
fdcf3983 »
2012-06-30 RELEASE_NOTES provides links to documentation of classes changed in v…
339 GRMustacheDelegate is documented in [Guides/delegate.md](Guides/delegate.md).
459f57b3 »
2012-06-30 v4.1.0
340
341 ### GRMustacheTemplateRepositoryDataSource protocol
342
343 The return type of `-[GRMustacheTemplateRepositoryDataSource templateRepository:templateIDForName:relativeToTemplateID:]` as changed from `id` to `id<NSCopying>`.
344
fdcf3983 »
2012-06-30 RELEASE_NOTES provides links to documentation of classes changed in v…
345 GRMustacheTemplateRepositoryDataSource is documented in [Guides/template_repositories.md](Guides/template_repositories.md).
346
459f57b3 »
2012-06-30 v4.1.0
347 ### Errors
348
349 GRMustache used to output badly formatted errors. They are now easier to read.
350
63375261 »
2012-05-26 v4.0.0
351 ## v4.0.0
352
c4e98e64 »
2012-08-05 v4.3.1
353 ### Zero numbers are false
63375261 »
2012-05-26 v4.0.0
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
579209cb »
2012-05-26 RELEASE_NOTES.md wording
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.
63375261 »
2012-05-26 v4.0.0
360
813e6893 »
2012-05-26 Fix RELEASE_NOTES.md link
361 See [Guides/sample_code/indexes.md](Guides/sample_code/indexes.md) for a discussion on proxy objects.
63375261 »
2012-05-26 v4.0.0
362
c4e98e64 »
2012-08-05 v4.3.1
363 ### Total NSUndefinedException swallowing
63375261 »
2012-05-26 v4.0.0
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
579209cb »
2012-05-26 RELEASE_NOTES.md wording
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.
63375261 »
2012-05-26 v4.0.0
370
813e6893 »
2012-05-26 Fix RELEASE_NOTES.md link
371 See [Guides/sample_code/indexes.md](Guides/sample_code/indexes.md) for a discussion on proxy objects.
63375261 »
2012-05-26 v4.0.0
372
c4e98e64 »
2012-08-05 v4.3.1
373 ### Support for `.name` keys
63375261 »
2012-05-26 v4.0.0
374
65e9823d »
2012-06-16 Document the "context stack" expression
375 Keys prefixed by a dot prevent GRMustache to look up the [context stack](Guides/runtime/context_stack.md).
63375261 »
2012-05-26 v4.0.0
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
579209cb »
2012-05-26 RELEASE_NOTES.md wording
379 See [issue #19](https://github.com/groue/GRMustache/issues/19) and https://github.com/mustache/spec/issues/10.
63375261 »
2012-05-26 v4.0.0
380
6c310186 »
2012-04-27 v3.0.1
381 ## v3.0.1
382
383 Restored intended architectures: armv6+armv7+i386 for libGRMustache3-iOS, i386+x86_64 for libGRMustache3-MacOS.
384
eb5cff83 »
2012-04-03 v3.0.0
385 ## v3.0.0
386
c4e98e64 »
2012-08-05 v4.3.1
387 ### There is no option
eb5cff83 »
2012-04-03 v3.0.0
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
ed879f31 »
2012-04-01 v2.0.0
427 ## v2.0.0
428
c4e98e64 »
2012-08-05 v4.3.1
429 ### API simplification
ed879f31 »
2012-04-01 v2.0.0
430
c4e98e64 »
2012-08-05 v4.3.1
431 **New APIs**
1f91c525 »
2012-04-02 v2.0.0 RELEASE_NOTES
432
433 ```objc
434 enum {
3e006ccd »
2012-04-02 wording
435 // New option for processing `BOOL` and `char` properties as numbers
1f91c525 »
2012-04-02 v2.0.0 RELEASE_NOTES
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
c4e98e64 »
2012-08-05 v4.3.1
458 **Removed APIs and behaviors**
1f91c525 »
2012-04-02 v2.0.0 RELEASE_NOTES
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
8506da0d »
2012-04-02 Link to http://handlebarsjs.com/
495 GRMustache1 used to parse and interpret [Handlebars](http://handlebarsjs.com/) tags such as `{{../foo/bar}}`. GRMustache2 does no longer parse those tags.
1f91c525 »
2012-04-02 v2.0.0 RELEASE_NOTES
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
5672e6db »
2012-04-02 wording
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.
1f91c525 »
2012-04-02 v2.0.0 RELEASE_NOTES
500
501
7298c294 »
2012-03-25 v1.13.1
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
5e5ea55e »
2012-03-24 v1.13.0
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
6e1642d6 »
2012-03-08 v1.12.2
564 ## v1.12.2
565
887bcdb4 »
2012-07-23 RELEASE_NOTES: remove undue notifications of performance improvements
566 Restore parsing performances of v1.12.0
6e1642d6 »
2012-03-08 v1.12.2
567
71638db4 »
2012-03-08 v1.12.1
568 ## v1.12.1
569
570 Easier template debugging with `[GRMustacheInvocation description]`
571
299d3b15 »
2012-03-04 v1.12.0
572 ## v1.12
573
574 - **GRMustacheTemplateDelegate protocol**
575
576 Deprecated classes:
577
578 - `GRMustacheNumberFormatterHelper`
579 - `GRMustacheDateFormatterHelper`
580
d3b56266 »
2012-02-25 v1.11.2
581 ## v1.11.2
582
2cfb609f »
2012-02-25 wording
583 BOOL property custom getters can be used to control boolean sections.
d3b56266 »
2012-02-25 v1.11.2
584
5d95cad6 »
2012-02-23 v1.11.1
585 ## v1.11.1
586
587 Avoid deprecation warning in GRMustache headers.
588
92c07e2e »
2012-02-23 v1.11.0
589 ## v1.11
590
591 **API cleanup**
592
593 New GRMustacheTemplateLoader methods:
594
5e5ea55e »
2012-03-24 v1.13.0
595 ```objc
596 - (GRMustacheTemplate *)templateWithName:(NSString *)name error:(NSError **)outError;
597 - (GRMustacheTemplate *)templateFromString:(NSString *)templateString error:(NSError **)outError;
598 ```
92c07e2e »
2012-02-23 v1.11.0
599
600 New GRMustacheTemplate methods:
601
5e5ea55e »
2012-03-24 v1.13.0
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 ```
92c07e2e »
2012-02-23 v1.11.0
614
615 Deprecated GRMustacheTemplateLoader methods (use `templateWithName:error:` and `templateFromString:error:` instead):
616
5e5ea55e »
2012-03-24 v1.13.0
617 ```objc
618 - (GRMustacheTemplate *)parseTemplateNamed:(NSString *)name error:(NSError **)outError;
619 - (GRMustacheTemplate *)parseString:(NSString *)templateString error:(NSError **)outError;
620 ```
92c07e2e »
2012-02-23 v1.11.0
621
622 Deprecated GRMustacheTemplate methods (replace `parse` with `templateFrom`):
623
5e5ea55e »
2012-03-24 v1.13.0
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 ```
92c07e2e »
2012-02-23 v1.11.0
636
d5730e58 »
2012-02-22 v1.10.3
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
75eae3b2 »
2012-02-17 v1.10.2
641 ## v1.10.2
642
79243825 »
2012-09-12 v5.0.0
643 **[Performance improvements](https://github.com/groue/GRMustacheBenchmark)**
75eae3b2 »
2012-02-17 v1.10.2
644
745be05e »
2012-02-17 v1.10.1
645 ## v1.10.1
646
79243825 »
2012-09-12 v5.0.0
647 **[Performance improvements](https://github.com/groue/GRMustacheBenchmark)**
745be05e »
2012-02-17 v1.10.1
648
31100d33 »
2012-02-15 v1.10.0
649 ## v1.10
650
887bcdb4 »
2012-07-23 RELEASE_NOTES: remove undue notifications of performance improvements
651 **Improved Handlebars.js support**
31100d33 »
2012-02-15 v1.10.0
652
745be05e »
2012-02-17 v1.10.1
653 Now `{{foo/bar}}` and `{{foo.bar}}` syntaxes are both supported.
31100d33 »
2012-02-15 v1.10.0
654
80208005 »
2012-01-23 v1.9.0
655 ## v1.9
656
32931033 »
2012-01-24 Introduce GRMustacheNumberFormatterHelper
657 - **Better lambda encapsulation with classes conforming to the GRMustacheHelper protocol.**
658 - **Format all numbers in a section with GRMustacheNumberFormatterHelper**
f52da9d2 »
2012-01-24 README+RELEASE_NOTES for GRMustacheNumberFormatterHelper and GRMustac…
659 - **Format all dates in a section with GRMustacheDateFormatterHelper**
80208005 »
2012-01-23 v1.9.0
660
661 New protocol:
662
32931033 »
2012-01-24 Introduce GRMustacheNumberFormatterHelper
663 - `GRMustacheHelper`
664
5e5ea55e »
2012-03-24 v1.13.0
665 ```objc
666 @protocol GRMustacheHelper<NSObject>
667 @required
018381fe »
2012-09-26 Remove availability macro from RELEASE_NOTES.md
668 - (NSString *)renderSection:(GRMustacheSection *)section withContext:(id)context;
5e5ea55e »
2012-03-24 v1.13.0
669 @end
670 ```
671
f52da9d2 »
2012-01-24 README+RELEASE_NOTES for GRMustacheNumberFormatterHelper and GRMustac…
672 New classes:
32931033 »
2012-01-24 Introduce GRMustacheNumberFormatterHelper
673
674 - `GRMustacheNumberFormatterHelper`
f52da9d2 »
2012-01-24 README+RELEASE_NOTES for GRMustacheNumberFormatterHelper and GRMustac…
675 - `GRMustacheDateFormatterHelper`
80208005 »
2012-01-23 v1.9.0
676
5e5ea55e »
2012-03-24 v1.13.0
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
8704042f »
2011-10-16 v1.8.6
689 ## v1.8.6
690
691 Fixed bug in [GRMustacheTemplate renderObjects:...]
692
d209bef8 »
2011-10-14 v1.8.5
693 ## v1.8.5
694
695 Added missing symbols from lib/libGRMustache1-ios3.a
696
edf6200e »
2011-10-14 v1.8.4
697 ## v1.8.4
698
d209bef8 »
2011-10-14 v1.8.5
699 Added missing symbols from lib/libGRMustache1-ios3.a and lib/libGRMustache1-ios4.a
edf6200e »
2011-10-14 v1.8.4
700
6a23fe69 »
2011-10-09 v1.8.3
701 ## v1.8.3
702
703 Availability fixes.
704
8abbac98 »
2011-10-09 v1.8.2
705 ## v1.8.2
706
707 Better testing of public API thanks to availability macros.
708
b643aa10 »
2011-10-08 v1.8.1
709 ## v1.8.1
710
711 Bug fixes
712
18dc85c5 »
2011-10-08 v1.8.0
713 ## v1.8
714
8abbac98 »
2011-10-09 v1.8.2
715 **GRMustache now supports the [Mustache specification v1.1.2](https://github.com/mustache/spec).**
716
717 New type and enum:
718
5e5ea55e »
2012-03-24 v1.13.0
719 ```objc
720 enum {
721 GRMustacheTemplateOptionNone = 0,
722 GRMustacheTemplateOptionMustacheSpecCompatibility = 0x01,
723 };
8abbac98 »
2011-10-09 v1.8.2
724
5e5ea55e »
2012-03-24 v1.13.0
725 typedef NSUInteger GRMustacheTemplateOptions;
726 ```
8abbac98 »
2011-10-09 v1.8.2
727
728 New GRMustache methods:
729
5e5ea55e »
2012-03-24 v1.13.0
730 ```objc
731 + (GRMustacheTemplateOptions)defaultTemplateOptions;
732 + (void)setDefaultTemplateOptions:(GRMustacheTemplateOptions)templateOptions;
733 ```
8abbac98 »
2011-10-09 v1.8.2
734
735 New GRMustacheTemplate methods:
736
5e5ea55e »
2012-03-24 v1.13.0
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 ```
8abbac98 »
2011-10-09 v1.8.2
749
750 New GRMustacheTemplateLoader methods:
751
5e5ea55e »
2012-03-24 v1.13.0
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 ```
8abbac98 »
2011-10-09 v1.8.2
763
18dc85c5 »
2011-10-08 v1.8.0
764
d08841fc »
2011-09-22 v1.7.4
765 ## v1.7.4
766
767 Bug fix: avoid crashing when one provides uninitialized NSError* to GRMustache.
768
8059b386 »
2011-09-17 v1.7.3
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
6d6e0205 »
2011-07-27 v1.7.2
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
cd4de9d5 »
2011-06-25 v1.7.1
778 ## v1.7.1
779
780 Added missing header file
781
e5d100a5 »
2011-06-09 v1.7.0
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
4373916b »
2011-06-08 v1.6.2
790 ## v1.6.2
791
792 **LLVM3 compatibility**
793
f19ba843 »
2011-04-09 v1.6.1
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
6b1dbf75 »
2011-03-17 v1.6.0
798 ## v1.6.0
799
800 **Reduced memory footprint**
801
8abbac98 »
2011-10-09 v1.8.2
802 New GRMustacheTemplateLoader methods:
6b1dbf75 »
2011-03-17 v1.6.0
803
5e5ea55e »
2012-03-24 v1.13.0
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 ```
6b1dbf75 »
2011-03-17 v1.6.0
809
8abbac98 »
2011-10-09 v1.8.2
810 Deprecated GRMustacheTemplateLoader methods (replace `BasePath` with `Directory`):
6b1dbf75 »
2011-03-17 v1.6.0
811
5e5ea55e »
2012-03-24 v1.13.0
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 ```
6b1dbf75 »
2011-03-17 v1.6.0
817
818 Bug fixes around the NSUndefinedKeyException handling when the `DEBUG` macro is set (thanks to [Mike Ash](http://www.mikeash.com/)).
819
499face2 »
2011-03-08 v1.5.2
820 ## v1.5.2
821
f19ba843 »
2011-04-09 v1.6.1
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).
499face2 »
2011-03-08 v1.5.2
823
e0a103f9 »
2011-03-03 v1.5.1
824 ## v1.5.1
825
40310371 »
2011-03-10 RELEASE_NOTES wording
826 Bug fixes
e0a103f9 »
2011-03-03 v1.5.1
827
3de3613a »
2011-02-27 v1.5.0
828 ## v1.5.0
0915e916 »
2011-02-26 v1.4.1
829
40310371 »
2011-03-10 RELEASE_NOTES wording
830 **API simplification**
831
c5761e89 »
2011-03-10 RELEASE_NOTES wording
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*));`
0915e916 »
2011-02-26 v1.4.1
851
a1f2cf1b »
2011-02-26 v1.4.0
852 ## v1.4.0
853
40310371 »
2011-03-10 RELEASE_NOTES wording
854 **iOS 3.0 support**
c5761e89 »
2011-03-10 RELEASE_NOTES wording
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
8abbac98 »
2011-10-09 v1.8.2
861 New `GRMustacheTemplateLoader` methods:
c5761e89 »
2011-03-10 RELEASE_NOTES wording
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;`
a1f2cf1b »
2011-02-26 v1.4.0
866
de489d54 »
2011-02-05 v1.3.3
867 ## v1.3.3
868
40310371 »
2011-03-10 RELEASE_NOTES wording
869 Bug fixes
de489d54 »
2011-02-05 v1.3.3
870
be39647f »
2010-12-14 v1.3.2
871 ## v1.3.2
872
40310371 »
2011-03-10 RELEASE_NOTES wording
873 Bug fixes
be39647f »
2010-12-14 v1.3.2
874
7f1e927c »
2010-12-09 v1.3.1
875 ## v1.3.1
876
40310371 »
2011-03-10 RELEASE_NOTES wording
877 Bug fixes
7f1e927c »
2010-12-09 v1.3.1
878
b03eb3c9 »
2010-12-07 v1.3.0
879 ## v1.3.0
880
40310371 »
2011-03-10 RELEASE_NOTES wording
881 **Block-less API for helpers.**
b03eb3c9 »
2010-12-07 v1.3.0
882
c5761e89 »
2011-03-10 RELEASE_NOTES wording
883 New classes:
884
885 - `GRMustacheContext`
886 - `GRMustacheSection`
b03eb3c9 »
2010-12-07 v1.3.0
887
c5761e89 »
2011-03-10 RELEASE_NOTES wording
888 New functions:
a368aafe »
2010-12-05 v1.2.1
889
c5761e89 »
2011-03-10 RELEASE_NOTES wording
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 *));`
a368aafe »
2010-12-05 v1.2.1
895
c88c5c6f »
2010-12-04 v1.2.0
896 ## v1.2.0
897
40310371 »
2011-03-10 RELEASE_NOTES wording
898 **iOS 4.0 support**
c5761e89 »
2011-03-10 RELEASE_NOTES wording
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`
c88c5c6f »
2010-12-04 v1.2.0
907
16c756db »
2010-12-01 v1.1.6
908 ## v1.1.6
909
c5761e89 »
2011-03-10 RELEASE_NOTES wording
910 GRMustacheTemplateLoader subclasses can now rely on an immutable `extension` property.
16c756db »
2010-12-01 v1.1.6
911
0805e50e »
2010-11-27 v1.1.5
912 ## v1.1.5
913
40310371 »
2011-03-10 RELEASE_NOTES wording
914 Bug fixes
0805e50e »
2010-11-27 v1.1.5
915
8e257bef »
2010-11-22 v1.1.4
916 ## v1.1.4
917
40310371 »
2011-03-10 RELEASE_NOTES wording
918 Bug fixes
8e257bef »
2010-11-22 v1.1.4
919
3f89a0bf »
2010-11-21 v1.1.3
920 ## v1.1.3
921
40310371 »
2011-03-10 RELEASE_NOTES wording
922 **Rendering performance improvement**
3f89a0bf »
2010-11-21 v1.1.3
923
8dbe23f1 »
2010-11-21 v1.1.2
924 ## v1.1.2
925
887bcdb4 »
2012-07-23 RELEASE_NOTES: remove undue notifications of performance improvements
926 **Parsing performance improvement**
8dbe23f1 »
2010-11-21 v1.1.2
927
161c96cd »
2010-11-20 v1.1.1
928 ## v1.1.1
929
40310371 »
2011-03-10 RELEASE_NOTES wording
930 Bug fixes
161c96cd »
2010-11-20 v1.1.1
931
6ede60be »
2010-11-12 v1.1.0
932 ## v1.1.0
0219c223 »
2010-11-12 v1.0.0
933
c5761e89 »
2011-03-10 RELEASE_NOTES wording
934 New methods:
935
936 - `[GRYes yes]` responds to `boolValue`
937 - `[GRNo no]` responds to `boolValue`
6ede60be »
2010-11-12 v1.1.0
938
939 ## v1.0.0
940
40310371 »
2011-03-10 RELEASE_NOTES wording
941 **First versioned release**
Something went wrong with that request. Please try again.