Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 1061 lines (668 sloc) 43.457 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
c8b59a7b »
2013-02-14 Preparing v6.4.0
6 ## v6.4.0
7
b0a0b872 »
2013-02-14 Talk about the -ObjC option in the release notes for 6.4.0
8 ### Integration in your Xcode project
9
52e3172c »
2013-02-14 Precision, dude
10 The GRMustache static libraries now require that you add the `-ObjC` option in the "Other Linker Flags" of your targets ([how to](http://developer.apple.com/library/mac/#qa/qa1490/_index.html)).
b0a0b872 »
2013-02-14 Talk about the -ObjC option in the release notes for 6.4.0
11
c8b59a7b »
2013-02-14 Preparing v6.4.0
12 ### Configuration
13
14 The [GRMustacheConfiguration](Guides/configuration.md) class now lets you specify a base rendering context, and the Mustache tag delimiters.
15
16 ### Standard Library
17
18 The [standard library](Guides/standard_library.md) sports new services. Localization support is now built-in, as well as various escaping tools.
19
20 ### NSFormatter
21
22 NSFormatter and subclasses such as NSDateFormatter and NSNumberFormatter are now first citizen of GRMustache. Check the [NSFormatter Guide](Guides/NSFormatter.md).
23
24
777d8d22 »
2013-01-30 v6.3.0
25 ## v6.3.0
26
27 GRMustache does no longer raise an exception when a template can't evaluate a filter expression such as `{{ f(x) }}`.
28
29 Instead, an error is returned, with new GRMustache error code `GRMustacheErrorCodeRenderingError`.
30
31
d971665b »
2013-01-27 v6.2.0
32 ## v6.2.0
33
34 **Text templates**
35
36 Text templates render text, and do not HTML-escape their input.
37
38 Check the [HTML vs. Text Templates Guide](Guides/html_vs_text.md).
39
ed7967a2 »
2013-01-12 v6.1.4
40 ## v6.1.4
41
42 Garbage collection support.
43
ecd79e8d »
2012-11-28 v6.1.3
44 ## v6.1.3
45
46 The parser now rejects expressions identifiers that start with a reserved Mustache character: `{}<>&#^$/` (those are the characters that start Mustache tags).
47
1ca7da19 »
2012-11-28 Wording
48 This will help the most daring of you who try to push Mustache off limits:
ecd79e8d »
2012-11-28 v6.1.3
49
50 - `{{ >foo }}` looks a lot like a partial tag, but is not. It will now yield a parse error (because `>foo` turns out to be an invalid expression for a variable tag).
51 - `{{{#foo}}}...{{{/foo}}}` looks a lot like an "unescaped section tag", but there is no such tag in Mustache. This string will now yield a parse error (because `#foo` and `/foo` turn out to be invalid expressions for triple-mustache unescaped variable tags).
52
50ed5990 »
2012-11-23 v6.1.2
53 ## v6.1.2
54
55 Improved template debugging: errors are logged when you do not handle them.
56
85d05654 »
2012-11-19 v6.1.1
57 ## v6.1.1
58
59 **[Performance improvements](https://github.com/groue/GRMustacheBenchmark)**
60
f5a40292 »
2012-11-02 v6.1.0
61 ## v6.1
62
63 ### "Else"
64
65 You don't have to close a regular section if it is immediately followed by its inverted form: `{{#name}}...{{^name}}...{{/name}}`
66
67 The short form `{{#name}}...{{^}}...{{/}}` is accepted, as well as the "unless" form `{{^name}}...{{#}}...{{/}}`.
68
69
e2dbfae5 »
2012-11-01 v6.0.1
70 ## v6.0.1
71
72 Robustness of protected contexts. Check the ["Protected namespaces"](Guides/protected_contexts.md#protected-namespaces) section of the Protected Contexts Guide.
73
74
db220f06 »
2012-10-30 Prepare v6.0.0 RELEASE_NOTES
75 ## v6.0.0
76
77 ### Major refactoring and simplification
78
79 GRMustache has recently been suffering of overengineering and API bloat. GRMustache 6 drastically reduces the surface of the interface.
80
b1495427 »
2012-10-30 Prepare v6.0.0 RELEASE_NOTES
81 **Removed APIs**:
db220f06 »
2012-10-30 Prepare v6.0.0 RELEASE_NOTES
82
15b91e0f »
2012-10-30 Prepare v6.0.0 RELEASE_NOTES
83 - `GRMustacheDynamicPartial`, `GRMustacheProxy`, `GRMustacheSectionTagHelper`, `GRMustacheVariableTagHelper`, and their companion classes have all been gathered in the `GRMustacheRendering` protocol, covered in the [Rendering Objects Guide](Guides/rendering_objects.md).
db220f06 »
2012-10-30 Prepare v6.0.0 RELEASE_NOTES
84
85 - `GRMustacheInvocation` and `GRMustacheTemplateDelegate` have been replaced by `GRMustacheTagDelegate`, covered in the [Tag Delegates Guide](Guides/rendering_objects.md).
86
87 - The `GRMustacheTemplate` and `GRMustacheTemplateRepository` classes have lost many methods that used to cripple the autocompletion menu of Xcode. All removed shortcut are still eventually available through template repositories.
88
b1495427 »
2012-10-30 Prepare v6.0.0 RELEASE_NOTES
89 **New rendering engine behavior**:
db220f06 »
2012-10-30 Prepare v6.0.0 RELEASE_NOTES
90
9ce9568b »
2012-10-30 Prepare v6.0.0 RELEASE_NOTES
91 - The sections of overridable partials behave more like Ruby on Rails' `<% content_for(:foo) do %>...<% end %>`: multiple overriding sections are now concatenated, when GRMustache 5 used to render the last one only. See the [Partials Guide](Guides/partials.md).
db220f06 »
2012-10-30 Prepare v6.0.0 RELEASE_NOTES
92
93 - [Filters](Guides/filters.md) are no longer provided in a separate container (the `renderObject:withFilters:` method is removed). All objects that enter the context stack can now provide filters (and supersede filters defined in parent contexts). You may want to check the [Protected Contexts Guide](Guides/protected_contexts.md) if you want to protect your filter keys.
94
a3a88b4b »
2012-08-04 v4.3.0
95
3844b9da »
2012-10-22 v5.5.2
96 ## v5.5.2
97
98 **Bug fixes**
99
100 [Variadic filters](Guides/filters.md) can now return filters, just as filters with a single argument.
101
6144f741 »
2012-10-21 v5.5.1
102 ## v5.5.1
103
3844b9da »
2012-10-22 v5.5.2
104 **Niceties and bug fixes**
6144f741 »
2012-10-21 v5.5.1
105
bf627893 »
2012-10-21 RELEASE_NOTES.md directly links to the documentation for the handling…
106 The `count` method of NSArray, NSSet and NSOrderedSet can now be queried in templates: `{{collection.count}}` renders as expected, and `{{#collection.count}}...{{/}}` can conditionally render a section if and only if the collection is not empty. See [Guides/runtime/context_stack.md](Guides/runtime/context_stack.md#nsarray-nsset-nsorderedset) for a detailed explanation.
6144f741 »
2012-10-21 v5.5.1
107
108 [Variadic filters](Guides/filters.md) that return nil used to not play well with boolean sections.
109
110 [GRMustacheProxy](Guides/proxies.md) cooperates with `NSUndefinedKeyException` prevention, and keeps its delegate quiet after you have invoked `[GRMustache preventNSUndefinedKeyExceptionAttack]`.
111
112 [GRMustacheProxy](Guides/proxies.md) refuses `nil` delegate, since it can not pose as `nil`. You must use [NSNull null] instead.
113
c834a753 »
2012-10-20 v5.5
114 ## v5.5
115
116 ### Variadic filters
117
118 Filters can now take several arguments: `{{ f(a,b) }}`. Check [Guides/filters.md](Guides/filters.md).
119
120 ### GRMustacheProxy
121
122 Proxies are a tool for the developer who wants to write reusable and robust filters, helpers, and template delegates that extend the abilities of the rendered data. Check [Guides/proxies.md](Guides/proxies.md).
123
124 The [array indexes.md](Guides/sample_code/indexes.md) sample code now uses proxies. The visible benefit is that the sample code is shorter. It is also more robust. Before proxies were introduced, we used not to be able to properly render indexes for "special" array items such as NSNull, false booleans, or helpers. Proxies are really all about robustness.
125
126
1a7b6468 »
2012-10-11 v5.4.4
127 ## v5.4.4
128
129 - Fix a memory leak in [overridable partials](Guides/partials.md).
130 - Until this version, GRMustache would not trigger delegate methods for objects conforming to both GRMustacheVariableHelper and GRMustacheTemplateDelegate protocols.
131
e27f2c5b »
2012-10-02 v5.4.3
132 ## v5.4.3
133
26f510c0 »
2012-10-12 Make clear in guide that variable tag helpers can also be delegates.
134 Until this version, GRMustache would not trigger section tag helpers, variable tag helpers and tag delegates in a few corner cases.
e27f2c5b »
2012-10-02 v5.4.3
135
cc63d535 »
2012-09-29 v5.4.2
136 ## v5.4.2
137
138 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).
139
41da038d »
2012-09-29 v5.4.1
140 ## v5.4.1
141
142 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:
143
144 `{{<layout}} {{$content}}Not rendered{{/content}} {{$content}}Rendered{{/content}} {{/layout}}`.
145
146
7ac295fa »
2012-09-28 v5.4.0
147 ## v5.4.0
148
149 ### Support for templates and partials stored in a hierarchy of directories
150
151 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.
152
153 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.
154
155 Relative partial paths look like regular Mustache partial tags: `{{> header }}`, `{{> partials/header }}`.
156
bdf877a8 »
2012-09-29 Wording
157 GRMustache v5.4.0 brings absolute paths, that start with a slash: `{{> /partials/header }}`.
7ac295fa »
2012-09-28 v5.4.0
158
576a1212 »
2012-09-28 RELEASE_NOTES.md links to partials.md in order to introduce relative …
159 The full story starts at [Guides/partials.md](Guides/partials.md#partials-in-the-file-system).
7ac295fa »
2012-09-28 v5.4.0
160
ed26c851 »
2012-09-26 v5.3.0
161 ## v5.3.0
162
7ac295fa »
2012-09-28 v5.4.0
163 ### API cleanup
ed26c851 »
2012-09-26 v5.3.0
164
165 The introduction of variable tag helpers in v5.1.0 introduced many confusing APIs. Those are still there, but deprecated.
166
167 No new feature has been added, but semantics have been much improved. Many thanks to [@pierlo](https://github.com/pierlo) for his help.
168
7ac295fa »
2012-09-28 v5.4.0
169 **Helpers API changes**
ed26c851 »
2012-09-26 v5.3.0
170
171 `GRMustacheVariableTagHelper` replaces `GRMustacheVariableHelper`. See [Guides/variable_tag_helpers.md](Guides/variable_tag_helpers.md).
172
173 ```objc
174 @protocol GRMustacheVariableTagHelper<NSObject>
175 @required
176 - (NSString *)renderForVariableTagInContext:(GRMustacheVariableTagRenderingContext *)context;
177 @end
178
179 @interface GRMustacheVariableTagRenderingContext : NSObject
018381fe »
2012-09-26 Remove availability macro from RELEASE_NOTES.md
180 - (NSString *)renderTemplateString:(NSString *)string error:(NSError **)outError;
181 - (NSString *)renderTemplateNamed:(NSString *)name error:(NSError **)outError;
ed26c851 »
2012-09-26 v5.3.0
182 @end
183 ```
184
185 `GRMustacheSectionTagHelper` replaces `GRMustacheSectionHelper`. See [Guides/section_tag_helpers.md](Guides/section_tag_helpers.md).
186
187 ```objc
188 @protocol GRMustacheSectionTagHelper<NSObject>
189 @required
018381fe »
2012-09-26 Remove availability macro from RELEASE_NOTES.md
190 - (NSString *)renderForSectionTagInContext:(GRMustacheSectionTagRenderingContext *)context;
ed26c851 »
2012-09-26 v5.3.0
191 @end
192
193 @interface GRMustacheSectionTagRenderingContext: NSObject
018381fe »
2012-09-26 Remove availability macro from RELEASE_NOTES.md
194 @property (nonatomic, readonly) NSString *innerTemplateString;
195 - (NSString *)render;
196 - (NSString *)renderTemplateString:(NSString *)string error:(NSError **)outError;
ed26c851 »
2012-09-26 v5.3.0
197 @end
198 ```
199
7ac295fa »
2012-09-28 v5.4.0
200 **GRMustacheTemplateDelegate API changes**
ed26c851 »
2012-09-26 v5.3.0
201
202 In the `GRMustacheInterpretation` enumeration, `GRMustacheSectionTagInterpretation` replaces `GRMustacheInterpretationSection`, and `GRMustacheVariableTagInterpretation` replaces `GRMustacheInterpretationVariable`.
203
7ac295fa »
2012-09-28 v5.4.0
204 **GRMustacheTemplate API changes**
ed26c851 »
2012-09-26 v5.3.0
205
206 `[GRMustacheTemplate renderObjectsFromArray:]` and `[GRMustacheTemplate renderObjectsFromArray:withFilters:]` replace `[GRMustacheTemplate renderObjectsInArray:]` and `[GRMustacheTemplate renderObjectsInArray:withFilters:]`.
207
70b6029f »
2012-09-23 Prepare v5.2.0
208 ## v5.2.0
209
210 **Overridable partials**
211
212 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.
213
ed26c851 »
2012-09-26 v5.3.0
214 Overridable partials are documented as [Guides/partials.md](Guides/partials.md).
70b6029f »
2012-09-23 Prepare v5.2.0
215
f6a5a446 »
2012-09-23 v5.2.0
216 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
217
218
84779a51 »
2012-09-22 v5.1.0 documentation
219 ## v5.1.0
220
85cbb69d »
2012-09-22 more v5.1.0 release notes
221 ### Dropped support for armv6
222
223 libGRMustache5-iOS.a is now compiled with Xcode 4.5, and does not longer embed the armv6 slice.
224
225 For armv6 support, use [GRMustache 5.0.1](https://github.com/groue/GRMustache/tree/v5.0.1).
226
84779a51 »
2012-09-22 v5.1.0 documentation
227 ### Array rendering
228
85cbb69d »
2012-09-22 more v5.1.0 release notes
229 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
230
231 GRMustache 5.1 renders an array as the concatenation of the rendering of its individual items.
232
85cbb69d »
2012-09-22 more v5.1.0 release notes
233 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
234
235 ### Variable helpers and dynamic partials
236
237 The library was missing support for "Mustache variable lambdas", that let you execute code when rendering a plain `{{variable}}` tag.
238
239 Support for variable lambdas is there now, through the `GRMustacheVariableHelper` protocol.
240
241 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.
242
85cbb69d »
2012-09-22 more v5.1.0 release notes
243 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
244
9221f324 »
2012-09-25 Split section and variable helpers documentations
245 All of those new features are documented at [Guides/variable_helpers.md](Guides/variable_helpers.md).
84779a51 »
2012-09-22 v5.1.0 documentation
246
247 New APIs:
248
249 ```objc
250 // The name of exceptions raised whenever the rendering could not be completed.
251 extern NSString * const GRMustacheRenderingException;
252
253 // Base protocol for "variable lambdas".
254 @protocol GRMustacheVariableHelper<NSObject>
255 @required
018381fe »
2012-09-26 Remove availability macro from RELEASE_NOTES.md
256 - (NSString *)renderVariable:(GRMustacheVariable *)variable;
84779a51 »
2012-09-22 v5.1.0 documentation
257 @end
258
259 // Convenience class in order to avoid implementing a full class that conforms
260 // to the GRMustacheVariableHelper protocol
261 @interface GRMustacheVariableHelper: NSObject<GRMustacheVariableHelper>
262 + (id)helperWithBlock:(NSString *(^)(GRMustacheVariable* variable))block;
263 @end
264
265 // Convenience class for building variable helpers that render the content of a
266 // template partial.
267 @interface GRMustacheDynamicPartial: NSObject<GRMustacheVariableHelper>
268 + (id)dynamicPartialWithName:(NSString *)name;
269 @end
270
271 // Allows you to implement variable helpers through the GRMustacheVariableHelper
272 // protocol.
273 @interface GRMustacheVariable : NSObject
274 - (NSString *)renderTemplateString:(NSString *)string error:(NSError **)outError;
275 - (NSString *)renderTemplateNamed:(NSString *)name error:(NSError **)outError;
276 @end
277
278 // This protocol is identical to the deprecated GRMustacheHelper protocol.
279 @protocol GRMustacheSectionHelper<NSObject>
280 @required
281 - (NSString *)renderSection:(GRMustacheSection *)section;
282 @end
283
284 // This class is identical to the deprecated GRMustacheHelper class.
285 @interface GRMustacheSectionHelper: NSObject<GRMustacheSectionHelper>
286 + (id)helperWithBlock:(NSString *(^)(GRMustacheSection* section))block;
287 @end
288 ```
289
290 Deprecated APIs:
291
292 ```objc
293 // Use GRMustacheRenderingException instead
294 extern NSString * GRMustacheFilterException;
295
296 // Use GRMustacheSectionHelper protocol instead
297 @protocol GRMustacheHelper
298 @end
299
300 // Use GRMustacheSectionHelper class instead
301 @interface GRMustacheHelper
302 @end
303 ```
304
305
b4dfe0d7 »
2012-09-15 v5.0.1
306 ## v5.0.1
307
308 Bug fixes:
309
310 - [Section delegates](Guides/delegate.md) used not to be given the rendered template as expected.
311 - [Helpers](Guides/helpers.md) used not to be able to render partial templates when rendering alternate template strings.
312
313
79243825 »
2012-09-12 v5.0.0
314 ## v5.0.0
315
316 **[Performance improvements](https://github.com/groue/GRMustacheBenchmark), and fix for flaws in the GRMustacheDelegate API.**
317
318 Besides the removal of already deprecated methods, the changes introduced in this version are very unlikely to introduce incompatibilities in your code:
319
320 - Dropped support for iOS3.
321 - 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.
322 - 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.
323
324 Removed APIs:
325
326 ```objc
327 @interface GRMustacheInvocation : NSObject
328 // Removed without deprecation warning
329 @property (nonatomic, readonly) NSString *key;
330 @end
331
332 @interface GRMustacheSection: NSObject
333 // Deprecated in v4.3.0
334 @property (nonatomic, retain, readonly) id renderingContext;
335 @end
336
337 @interface GRMustacheTemplate: NSObject
338 // Deprecated in v4.3.0
339 - (NSString *)renderObjects:(id)object, ...;
340 @end
341
342 // Removed without deprecation warning
343 GRMustacheInterpretationFilterArgument // was part of the GRMustacheInterpretation enum.
344
345 @protocol GRMustacheTemplateDelegate<NSObject>
346 // Deprecated in v4.1.0
347 - (void)template:(GRMustacheTemplate *)template willRenderReturnValueOfInvocation:(GRMustacheInvocation *)invocation;
348 - (void)template:(GRMustacheTemplate *)template didRenderReturnValueOfInvocation:(GRMustacheInvocation *)invocation;
349 @end
350 ```
351
352
2dd7d26f »
2012-09-06 v4.3.4
353 ## v4.3.4
354
355 Restored compatibility with iOS3 and OSX6 (thanks [@Bertrand](https://github.com/Bertrand)).
356
357
1978e573 »
2012-08-30 v4.3.3
358 ## v4.3.3
359
360 Fix a memory leak.
361
362
c3a28fb9 »
2012-08-06 v4.3.2
363 ## v4.3.2
364
365 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).
366
367
c4e98e64 »
2012-08-05 v4.3.1
368 ## v4.3.1
369
370 Bugfix: this release restores the delegate callbacks while rendering alternate template strings in [helpers](Guides/helpers.md).
371
372
373 ## v4.3.0
a3a88b4b »
2012-08-04 v4.3.0
374
c4e98e64 »
2012-08-05 v4.3.1
375 ### Filters
a3a88b4b »
2012-08-04 v4.3.0
376
c4e98e64 »
2012-08-05 v4.3.1
377 [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
378
379 **New APIs**:
380
3c861345 »
2012-08-04 Typo
381 ```objc
a3a88b4b »
2012-08-04 v4.3.0
382 @interface GRMustacheSection: NSObject
383 - (NSString *)renderTemplateString:(NSString *)string error:(NSError **)outError;
384 @end
385
386 @interface GRMustacheTemplate: NSObject
387 + (NSString *)renderObject:(id)object withFilters:(id)filters fromString:(NSString *)templateString error:(NSError **)outError;
388 + (NSString *)renderObject:(id)object withFilters:(id)filters fromContentsOfFile:(NSString *)path error:(NSError **)outError;
389 + (NSString *)renderObject:(id)object withFilters:(id)filters fromContentsOfURL:(NSURL *)url error:(NSError **)outError;
390 + (NSString *)renderObject:(id)object withFilters:(id)filters fromResource:(NSString *)name bundle:(NSBundle *)bundle error:(NSError **)outError;
391 + (NSString *)renderObject:(id)object withFilters:(id)filters fromResource:(NSString *)name withExtension:(NSString *)ext bundle:(NSBundle *)bundle error:(NSError **)outError;
392 - (NSString *)renderObject:(id)object withFilters:(id)filters;
393 - (NSString *)renderObjectsInArray:(NSArray *)objects;
394 - (NSString *)renderObjectsInArray:(NSArray *)objects withFilters:(id)filters;
395 @end
396 ```
397
398 **Deprecated APIs**:
399
3c861345 »
2012-08-04 Typo
400 ```objc
a3a88b4b »
2012-08-04 v4.3.0
401 @interface GRMustacheSection: NSObject
402 // Use renderTemplateString:error: instead.
403 @property (nonatomic, retain, readonly) id renderingContext;
404 @end
405
406 @interface GRMustacheTemplate: NSObject
407 // Use renderObjectsInArray: instead.
408 - (NSString *)renderObjects:(id)object, ...;
409 @end
410 ```
411
6e51540c »
2012-07-27 4.2.0
412 ## v4.2.0
413
c4e98e64 »
2012-08-05 v4.3.1
414 ### Section delegates
6e51540c »
2012-07-27 4.2.0
415
416 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.
417
418 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.
419
cd7ec367 »
2012-07-28 Fix internal documentation link
420 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
421
b7754000 »
2012-07-01 v4.1.1 release notes
422 ## v4.1.1
423
c4e98e64 »
2012-08-05 v4.3.1
424 ### Total inline documentation
b7754000 »
2012-07-01 v4.1.1 release notes
425
426 Headers contain documentation for every exposed API.
427
428 An online reference, automatically generated from inline documentation by appledoc can be read at http://groue.github.com/GRMustache/Reference/.
429
459f57b3 »
2012-06-30 v4.1.0
430 ## v4.1.0
431
432 ### GRMustacheDelegate protocol
433
434 A template's delegate is now able to know how a value will be interpreted by GRMustache.
435
436 New APIs:
437
438 ```objc
439 typedef enum {
440 GRMustacheInterpretationSection,
441 GRMustacheInterpretationVariable,
442 } GRMustacheInterpretation;
443
444 @protocol GRMustacheTemplateDelegate<NSObject>
445 - (void)template:(GRMustacheTemplate *)template willInterpretReturnValueOfInvocation:(GRMustacheInvocation *)invocation as:(GRMustacheInterpretation)interpretation;
446 - (void)template:(GRMustacheTemplate *)template didInterpretReturnValueOfInvocation:(GRMustacheInvocation *)invocation as:(GRMustacheInterpretation)interpretation;
447 @end
448 ```
449
450 Deprecated APIs:
451
452 ```objc
453 @protocol GRMustacheTemplateDelegate<NSObject>
454 - (void)template:(GRMustacheTemplate *)template willRenderReturnValueOfInvocation:(GRMustacheInvocation *)invocation;
455 - (void)template:(GRMustacheTemplate *)template didRenderReturnValueOfInvocation:(GRMustacheInvocation *)invocation;
456 @end
457 ```
458
fdcf3983 »
2012-06-30 RELEASE_NOTES provides links to documentation of classes changed in v…
459 GRMustacheDelegate is documented in [Guides/delegate.md](Guides/delegate.md).
459f57b3 »
2012-06-30 v4.1.0
460
461 ### GRMustacheTemplateRepositoryDataSource protocol
462
463 The return type of `-[GRMustacheTemplateRepositoryDataSource templateRepository:templateIDForName:relativeToTemplateID:]` as changed from `id` to `id<NSCopying>`.
464
fdcf3983 »
2012-06-30 RELEASE_NOTES provides links to documentation of classes changed in v…
465 GRMustacheTemplateRepositoryDataSource is documented in [Guides/template_repositories.md](Guides/template_repositories.md).
466
459f57b3 »
2012-06-30 v4.1.0
467 ### Errors
468
469 GRMustache used to output badly formatted errors. They are now easier to read.
470
63375261 »
2012-05-26 v4.0.0
471 ## v4.0.0
472
c4e98e64 »
2012-08-05 v4.3.1
473 ### Zero numbers are false
63375261 »
2012-05-26 v4.0.0
474
475 GRMustache now considers all `NSNumber` instances whose `boolValue` is `NO` as false, when considering whether a section should render or not.
476
477 Previously, GRMustache used to consider only `[NSNumber numberWithBool:NO]` as false.
478
579209cb »
2012-05-26 RELEASE_NOTES.md wording
479 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
480
813e6893 »
2012-05-26 Fix RELEASE_NOTES.md link
481 See [Guides/sample_code/indexes.md](Guides/sample_code/indexes.md) for a discussion on proxy objects.
63375261 »
2012-05-26 v4.0.0
482
c4e98e64 »
2012-08-05 v4.3.1
483 ### Total NSUndefinedException swallowing
63375261 »
2012-05-26 v4.0.0
484
485 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.
486
487 Previously, GRMustache used to swallow only exceptions that explicitely came from the inquired object, and for the inquired key.
488
579209cb »
2012-05-26 RELEASE_NOTES.md wording
489 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
490
813e6893 »
2012-05-26 Fix RELEASE_NOTES.md link
491 See [Guides/sample_code/indexes.md](Guides/sample_code/indexes.md) for a discussion on proxy objects.
63375261 »
2012-05-26 v4.0.0
492
c4e98e64 »
2012-08-05 v4.3.1
493 ### Support for `.name` keys
63375261 »
2012-05-26 v4.0.0
494
65e9823d »
2012-06-16 Document the "context stack" expression
495 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
496
497 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.
498
579209cb »
2012-05-26 RELEASE_NOTES.md wording
499 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
500
6c310186 »
2012-04-27 v3.0.1
501 ## v3.0.1
502
503 Restored intended architectures: armv6+armv7+i386 for libGRMustache3-iOS, i386+x86_64 for libGRMustache3-MacOS.
504
eb5cff83 »
2012-04-03 v3.0.0
505 ## v3.0.0
506
c4e98e64 »
2012-08-05 v4.3.1
507 ### There is no option
eb5cff83 »
2012-04-03 v3.0.0
508
509 Removed APIs:
510
511 ```objc
512 enum {
513 GRMustacheTemplateOptionNone,
514 GRMustacheTemplateOptionStrictBoolean
515 };
516
517 typedef NSUInteger GRMustacheTemplateOptions;
518
519 @interface GRMustacheTemplate: NSObject {
520 + (id)templateFromString:(NSString *)templateString options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
521 + (id)templateFromContentsOfFile:(NSString *)path options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
522 + (id)templateFromContentsOfURL:(NSURL *)url options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
523 + (id)templateFromResource:(NSString *)name bundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
524 + (id)templateFromResource:(NSString *)name withExtension:(NSString *)ext bundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
525 + (NSString *)renderObject:(id)object fromString:(NSString *)templateString options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
526 + (NSString *)renderObject:(id)object fromContentsOfFile:(NSString *)path options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
527 + (NSString *)renderObject:(id)object fromContentsOfURL:(NSURL *)url options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
528 + (NSString *)renderObject:(id)object fromResource:(NSString *)name bundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
529 + (NSString *)renderObject:(id)object fromResource:(NSString *)name withExtension:(NSString *)ext bundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
530 @end
531
532 @protocol GRMustacheTemplateRepositoryDataSource <NSObject>
533 + (id)templateRepositoryWithBaseURL:(NSURL *)URL options:(GRMustacheTemplateOptions)options;
534 + (id)templateRepositoryWithBaseURL:(NSURL *)URL templateExtension:(NSString *)ext options:(GRMustacheTemplateOptions)options;
535 + (id)templateRepositoryWithBaseURL:(NSURL *)URL templateExtension:(NSString *)ext encoding:(NSStringEncoding)encoding options:(GRMustacheTemplateOptions)options;
536 + (id)templateRepositoryWithDirectory:(NSString *)path options:(GRMustacheTemplateOptions)options;
537 + (id)templateRepositoryWithDirectory:(NSString *)path templateExtension:(NSString *)ext options:(GRMustacheTemplateOptions)options;
538 + (id)templateRepositoryWithDirectory:(NSString *)path templateExtension:(NSString *)ext encoding:(NSStringEncoding)encoding options:(GRMustacheTemplateOptions)options;
539 + (id)templateRepositoryWithBundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options;
540 + (id)templateRepositoryWithBundle:(NSBundle *)bundle templateExtension:(NSString *)ext options:(GRMustacheTemplateOptions)options;
541 + (id)templateRepositoryWithBundle:(NSBundle *)bundle templateExtension:(NSString *)ext encoding:(NSStringEncoding)encoding options:(GRMustacheTemplateOptions)options;
542 + (id)templateRepositoryWithPartialsDictionary:(NSDictionary *)partialsDictionary options:(GRMustacheTemplateOptions)options;
543 + (id)templateRepositoryWithOptions:(GRMustacheTemplateOptions)options;
544 @end
545 ```
546
ed879f31 »
2012-04-01 v2.0.0
547 ## v2.0.0
548
c4e98e64 »
2012-08-05 v4.3.1
549 ### API simplification
ed879f31 »
2012-04-01 v2.0.0
550
c4e98e64 »
2012-08-05 v4.3.1
551 **New APIs**
1f91c525 »
2012-04-02 v2.0.0 RELEASE_NOTES
552
553 ```objc
554 enum {
3e006ccd »
2012-04-02 wording
555 // New option for processing `BOOL` and `char` properties as numbers
1f91c525 »
2012-04-02 v2.0.0 RELEASE_NOTES
556 GRMustacheTemplateOptionStrictBoolean = 1
557 }
558
559 @protocol GRMustacheHelper<NSObject>
560 @required
561 // New required method
562 - (NSString *)renderSection:(GRMustacheSection *)section;
563 @end
564
565 // New GRMustacheHelper class
566 @interface GRMustacheHelper: NSObject<GRMustacheHelper>
567 + (id)helperWithBlock:(NSString *(^)(GRMustacheSection* section))block;
568 @end
569
570 // New GRMustacheSection properties and methods
571 @interface GRMustacheSection: NSObject
572 @property (nonatomic, readonly) NSString *innerTemplateString;
573 @property (nonatomic, readonly) id renderingContext;
574 - (NSString *)render;
575 @end
576 ```
577
c4e98e64 »
2012-08-05 v4.3.1
578 **Removed APIs and behaviors**
1f91c525 »
2012-04-02 v2.0.0 RELEASE_NOTES
579
580 ```objc
581 enum {
582 // GRMustache is now compliant by default to the Mustache specification:
583 GRMustacheTemplateOptionMustacheSpecCompatibility = 1
584 }
585
586 // NSErrors with GRMustacheErrorDomain now store the line number in localizedDescription.
587 extern NSString* const GRMustacheErrorLine;
588
589 @interface GRMustache: NSObject
590 // This global state has been replaced by the GRMustacheTemplateOptionStrictBoolean option:
591 + (BOOL)strictBooleanMode:
592 + (void)setStrictBooleanMode:(BOOL)strictBooleanMode;
593 @end
594
595 @protocol GRMustacheHelper<NSObject>
596 @required
597 // Replaced by renderSection: method
598 - (NSString *)renderSection:(GRMustacheSection *)section withContext:(id)context;
599 @end
600
601 // Replaced by the GRMustacheHelper class:
602 @interface GRMustacheBlockHelper: NSObject<GRMustacheHelper> {
603 + (id)helperWithBlock:(NSString *(^)(GRMustacheSection* section, id context))block;
604 @end
605
606 @interface GRMustacheSection: NSObject
607 // Replaced by the innerTemplateString property
608 @property (nonatomic, readonly) NSString *templateString;
609 // See the new render method
610 - (NSString *)renderObject:(id)object;
611 - (NSString *)renderObjects:(id)object, ...;
612 @end
613 ```
614
8506da0d »
2012-04-02 Link to http://handlebarsjs.com/
615 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
616
617 GRMustache1 used to parse and interpret `this` identifier is tags such as `{{this.foo}}`. GRMustache2 does no longer parse the `this` identifier.
618
5672e6db »
2012-04-02 wording
619 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
620
621
7298c294 »
2012-03-25 v1.13.1
622 ## v1.13.1
623
624 The deprecated class GRMustacheTemplateLoader was broken by 1.13.0. Deprecated does not mean unavailable: it is restored.
625
5e5ea55e »
2012-03-24 v1.13.0
626 ## v1.13.0
627
628 Deprecated class (use [GRMustacheTemplateRepository templateRepositoryWithPartialsDictionary:], or the new GRMustacheTemplateRepositoryDataSource protocol instead):
629
630 - `GRMustacheTemplateLoader`
631
632 New class:
633
634 - `GRMustacheTemplateRepository`
635
636 ```objc
637 @interface GRMustacheTemplateRepository : NSObject
638 @property (nonatomic, assign) id<GRMustacheTemplateRepositoryDataSource> dataSource;
639
640 + (id)templateRepository;
641 + (id)templateRepositoryWithOptions:(GRMustacheTemplateOptions)options;
642
643 + (id)templateRepositoryWithBaseURL:(NSURL *)URL;
644 + (id)templateRepositoryWithBaseURL:(NSURL *)URL options:(GRMustacheTemplateOptions)options;
645 + (id)templateRepositoryWithBaseURL:(NSURL *)URL templateExtension:(NSString *)ext;
646 + (id)templateRepositoryWithBaseURL:(NSURL *)URL templateExtension:(NSString *)ext options:(GRMustacheTemplateOptions)options;
647 + (id)templateRepositoryWithBaseURL:(NSURL *)URL templateExtension:(NSString *)ext;
648 + (id)templateRepositoryWithBaseURL:(NSURL *)URL templateExtension:(NSString *)ext encoding:(NSStringEncoding)encoding;
649 + (id)templateRepositoryWithBaseURL:(NSURL *)URL templateExtension:(NSString *)ext encoding:(NSStringEncoding)encoding options:(GRMustacheTemplateOptions)options;
650
651 + (id)templateRepositoryWithDirectory:(NSString *)path;
652 + (id)templateRepositoryWithDirectory:(NSString *)path options:(GRMustacheTemplateOptions)options;
653 + (id)templateRepositoryWithDirectory:(NSString *)path templateExtension:(NSString *)ext;
654 + (id)templateRepositoryWithDirectory:(NSString *)path templateExtension:(NSString *)ext options:(GRMustacheTemplateOptions)options;
655 + (id)templateRepositoryWithDirectory:(NSString *)path templateExtension:(NSString *)ext encoding:(NSStringEncoding)encoding;
656 + (id)templateRepositoryWithDirectory:(NSString *)path templateExtension:(NSString *)ext encoding:(NSStringEncoding)encoding options:(GRMustacheTemplateOptions)options;
657
658 + (id)templateRepositoryWithBundle:(NSBundle *)bundle;
659 + (id)templateRepositoryWithBundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options;
660 + (id)templateRepositoryWithBundle:(NSBundle *)bundle templateExtension:(NSString *)ext;
661 + (id)templateRepositoryWithBundle:(NSBundle *)bundle templateExtension:(NSString *)ext options:(GRMustacheTemplateOptions)options;
662 + (id)templateRepositoryWithBundle:(NSBundle *)bundle templateExtension:(NSString *)ext encoding:(NSStringEncoding)encoding;
663 + (id)templateRepositoryWithBundle:(NSBundle *)bundle templateExtension:(NSString *)ext encoding:(NSStringEncoding)encoding options:(GRMustacheTemplateOptions)options;
664
665 + (id)templateRepositoryWithPartialsDictionary:(NSDictionary *)partialsDictionary;
666 + (id)templateRepositoryWithPartialsDictionary:(NSDictionary *)partialsDictionary options:(GRMustacheTemplateOptions)options;
667
668 - (GRMustacheTemplate *)templateForName:(NSString *)name error:(NSError **)outError;
669 - (GRMustacheTemplate *)templateFromString:(NSString *)templateString error:(NSError **)outError;
670 ```
671
672 New protocol:
673
674 - `GRMustacheTemplateRepositoryDataSource`
675
676 ```objc
677 @protocol GRMustacheTemplateRepositoryDataSource <NSObject>
678 @required
679 - (id)templateRepository:(GRMustacheTemplateRepository *)templateRepository templateIDForName:(NSString *)name relativeToTemplateID:(id)templateID;
680 - (NSString *)templateRepository:(GRMustacheTemplateRepository *)templateRepository templateStringForTemplateID:(id)templateID error:(NSError **)outError;
681 @end
682 ```
683
6e1642d6 »
2012-03-08 v1.12.2
684 ## v1.12.2
685
887bcdb4 »
2012-07-23 RELEASE_NOTES: remove undue notifications of performance improvements
686 Restore parsing performances of v1.12.0
6e1642d6 »
2012-03-08 v1.12.2
687
71638db4 »
2012-03-08 v1.12.1
688 ## v1.12.1
689
690 Easier template debugging with `[GRMustacheInvocation description]`
691
299d3b15 »
2012-03-04 v1.12.0
692 ## v1.12
693
694 - **GRMustacheTemplateDelegate protocol**
695
696 Deprecated classes:
697
698 - `GRMustacheNumberFormatterHelper`
699 - `GRMustacheDateFormatterHelper`
700
d3b56266 »
2012-02-25 v1.11.2
701 ## v1.11.2
702
2cfb609f »
2012-02-25 wording
703 BOOL property custom getters can be used to control boolean sections.
d3b56266 »
2012-02-25 v1.11.2
704
5d95cad6 »
2012-02-23 v1.11.1
705 ## v1.11.1
706
707 Avoid deprecation warning in GRMustache headers.
708
92c07e2e »
2012-02-23 v1.11.0
709 ## v1.11
710
711 **API cleanup**
712
713 New GRMustacheTemplateLoader methods:
714
5e5ea55e »
2012-03-24 v1.13.0
715 ```objc
716 - (GRMustacheTemplate *)templateWithName:(NSString *)name error:(NSError **)outError;
717 - (GRMustacheTemplate *)templateFromString:(NSString *)templateString error:(NSError **)outError;
718 ```
92c07e2e »
2012-02-23 v1.11.0
719
720 New GRMustacheTemplate methods:
721
5e5ea55e »
2012-03-24 v1.13.0
722 ```objc
723 + (id)templateFromString:(NSString *)templateString error:(NSError **)outError;
724 + (id)templateFromString:(NSString *)templateString options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
725 + (id)templateFromContentsOfFile:(NSString *)path error:(NSError **)outError;
726 + (id)templateFromContentsOfFile:(NSString *)path options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
727 + (id)templateFromResource:(NSString *)name bundle:(NSBundle *)bundle error:(NSError **)outError;
728 + (id)templateFromResource:(NSString *)name bundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
729 + (id)templateFromResource:(NSString *)name withExtension:(NSString *)ext bundle:(NSBundle *)bundle error:(NSError **)outError;
730 + (id)templateFromResource:(NSString *)name withExtension:(NSString *)ext bundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
731 + (id)templateFromContentsOfURL:(NSURL *)url error:(NSError **)outError;
732 + (id)templateFromContentsOfURL:(NSURL *)url options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
733 ```
92c07e2e »
2012-02-23 v1.11.0
734
735 Deprecated GRMustacheTemplateLoader methods (use `templateWithName:error:` and `templateFromString:error:` instead):
736
5e5ea55e »
2012-03-24 v1.13.0
737 ```objc
738 - (GRMustacheTemplate *)parseTemplateNamed:(NSString *)name error:(NSError **)outError;
739 - (GRMustacheTemplate *)parseString:(NSString *)templateString error:(NSError **)outError;
740 ```
92c07e2e »
2012-02-23 v1.11.0
741
742 Deprecated GRMustacheTemplate methods (replace `parse` with `templateFrom`):
743
5e5ea55e »
2012-03-24 v1.13.0
744 ```objc
745 + (id)parseString:(NSString *)templateString error:(NSError **)outError;
746 + (id)parseString:(NSString *)templateString options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
747 + (id)parseContentsOfFile:(NSString *)path error:(NSError **)outError;
748 + (id)parseContentsOfFile:(NSString *)path options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
749 + (id)parseResource:(NSString *)name bundle:(NSBundle *)bundle error:(NSError **)outError;
750 + (id)parseResource:(NSString *)name bundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
751 + (id)parseResource:(NSString *)name withExtension:(NSString *)ext bundle:(NSBundle *)bundle error:(NSError **)outError;
752 + (id)parseResource:(NSString *)name withExtension:(NSString *)ext bundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
753 + (id)parseContentsOfURL:(NSURL *)url error:(NSError **)outError;
754 + (id)parseContentsOfURL:(NSURL *)url options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
755 ```
92c07e2e »
2012-02-23 v1.11.0
756
d5730e58 »
2012-02-22 v1.10.3
757 ## v1.10.3
758
759 Upgrade GRMustache, and get deprecation warnings when you use deprecated APIs. Your code will keep on running fine, though.
760
75eae3b2 »
2012-02-17 v1.10.2
761 ## v1.10.2
762
79243825 »
2012-09-12 v5.0.0
763 **[Performance improvements](https://github.com/groue/GRMustacheBenchmark)**
75eae3b2 »
2012-02-17 v1.10.2
764
745be05e »
2012-02-17 v1.10.1
765 ## v1.10.1
766
79243825 »
2012-09-12 v5.0.0
767 **[Performance improvements](https://github.com/groue/GRMustacheBenchmark)**
745be05e »
2012-02-17 v1.10.1
768
31100d33 »
2012-02-15 v1.10.0
769 ## v1.10
770
887bcdb4 »
2012-07-23 RELEASE_NOTES: remove undue notifications of performance improvements
771 **Improved Handlebars.js support**
31100d33 »
2012-02-15 v1.10.0
772
745be05e »
2012-02-17 v1.10.1
773 Now `{{foo/bar}}` and `{{foo.bar}}` syntaxes are both supported.
31100d33 »
2012-02-15 v1.10.0
774
80208005 »
2012-01-23 v1.9.0
775 ## v1.9
776
32931033 »
2012-01-24 Introduce GRMustacheNumberFormatterHelper
777 - **Better lambda encapsulation with classes conforming to the GRMustacheHelper protocol.**
778 - **Format all numbers in a section with GRMustacheNumberFormatterHelper**
f52da9d2 »
2012-01-24 README+RELEASE_NOTES for GRMustacheNumberFormatterHelper and GRMustac…
779 - **Format all dates in a section with GRMustacheDateFormatterHelper**
80208005 »
2012-01-23 v1.9.0
780
781 New protocol:
782
32931033 »
2012-01-24 Introduce GRMustacheNumberFormatterHelper
783 - `GRMustacheHelper`
784
5e5ea55e »
2012-03-24 v1.13.0
785 ```objc
786 @protocol GRMustacheHelper<NSObject>
787 @required
018381fe »
2012-09-26 Remove availability macro from RELEASE_NOTES.md
788 - (NSString *)renderSection:(GRMustacheSection *)section withContext:(id)context;
5e5ea55e »
2012-03-24 v1.13.0
789 @end
790 ```
791
f52da9d2 »
2012-01-24 README+RELEASE_NOTES for GRMustacheNumberFormatterHelper and GRMustac…
792 New classes:
32931033 »
2012-01-24 Introduce GRMustacheNumberFormatterHelper
793
794 - `GRMustacheNumberFormatterHelper`
f52da9d2 »
2012-01-24 README+RELEASE_NOTES for GRMustacheNumberFormatterHelper and GRMustac…
795 - `GRMustacheDateFormatterHelper`
80208005 »
2012-01-23 v1.9.0
796
5e5ea55e »
2012-03-24 v1.13.0
797 ```objc
798 @interface GRMustacheNumberFormatterHelper : NSObject<GRMustacheHelper>
799 @property (nonatomic, readonly, retain) NSNumberFormatter *numberFormatter;
800 + (id)helperWithNumberFormatter:(NSNumberFormatter *)numberFormatter;
801 @end
802
803 @interface GRMustacheDateFormatterHelper : NSObject<GRMustacheHelper>
804 @property (nonatomic, readonly, retain) NSDateFormatter *dateFormatter;
805 + (id)helperWithDateFormatter:(NSDateFormatter *)dateFormatter;
806 @end
807 ```
808
8704042f »
2011-10-16 v1.8.6
809 ## v1.8.6
810
811 Fixed bug in [GRMustacheTemplate renderObjects:...]
812
d209bef8 »
2011-10-14 v1.8.5
813 ## v1.8.5
814
815 Added missing symbols from lib/libGRMustache1-ios3.a
816
edf6200e »
2011-10-14 v1.8.4
817 ## v1.8.4
818
d209bef8 »
2011-10-14 v1.8.5
819 Added missing symbols from lib/libGRMustache1-ios3.a and lib/libGRMustache1-ios4.a
edf6200e »
2011-10-14 v1.8.4
820
6a23fe69 »
2011-10-09 v1.8.3
821 ## v1.8.3
822
823 Availability fixes.
824
8abbac98 »
2011-10-09 v1.8.2
825 ## v1.8.2
826
827 Better testing of public API thanks to availability macros.
828
b643aa10 »
2011-10-08 v1.8.1
829 ## v1.8.1
830
831 Bug fixes
832
18dc85c5 »
2011-10-08 v1.8.0
833 ## v1.8
834
8abbac98 »
2011-10-09 v1.8.2
835 **GRMustache now supports the [Mustache specification v1.1.2](https://github.com/mustache/spec).**
836
837 New type and enum:
838
5e5ea55e »
2012-03-24 v1.13.0
839 ```objc
840 enum {
841 GRMustacheTemplateOptionNone = 0,
842 GRMustacheTemplateOptionMustacheSpecCompatibility = 0x01,
843 };
8abbac98 »
2011-10-09 v1.8.2
844
5e5ea55e »
2012-03-24 v1.13.0
845 typedef NSUInteger GRMustacheTemplateOptions;
846 ```
8abbac98 »
2011-10-09 v1.8.2
847
848 New GRMustache methods:
849
5e5ea55e »
2012-03-24 v1.13.0
850 ```objc
851 + (GRMustacheTemplateOptions)defaultTemplateOptions;
852 + (void)setDefaultTemplateOptions:(GRMustacheTemplateOptions)templateOptions;
853 ```
8abbac98 »
2011-10-09 v1.8.2
854
855 New GRMustacheTemplate methods:
856
5e5ea55e »
2012-03-24 v1.13.0
857 ```objc
858 + (id)parseString:(NSString *)templateString options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
859 + (id)parseContentsOfURL:(NSURL *)url options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
860 + (id)parseContentsOfFile:(NSString *)path options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
861 + (id)parseResource:(NSString *)name bundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
862 + (id)parseResource:(NSString *)name withExtension:(NSString *)ext bundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
863 + (NSString *)renderObject:(id)object fromString:(NSString *)templateString options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
864 + (NSString *)renderObject:(id)object fromContentsOfURL:(NSURL *)url options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
865 + (NSString *)renderObject:(id)object fromContentsOfFile:(NSString *)path options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
866 + (NSString *)renderObject:(id)object fromResource:(NSString *)name bundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
867 + (NSString *)renderObject:(id)object fromResource:(NSString *)name withExtension:(NSString *)ext bundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options error:(NSError **)outError;
868 ```
8abbac98 »
2011-10-09 v1.8.2
869
870 New GRMustacheTemplateLoader methods:
871
5e5ea55e »
2012-03-24 v1.13.0
872 ```objc
873 + (id)templateLoaderWithBaseURL:(NSURL *)url options:(GRMustacheTemplateOptions)options;
874 + (id)templateLoaderWithBaseURL:(NSURL *)url extension:(NSString *)ext options:(GRMustacheTemplateOptions)options;
875 + (id)templateLoaderWithBaseURL:(NSURL *)url extension:(NSString *)ext encoding:(NSStringEncoding)encoding options:(GRMustacheTemplateOptions)options;
876 + (id)templateLoaderWithDirectory:(NSString *)path options:(GRMustacheTemplateOptions)options;
877 + (id)templateLoaderWithDirectory:(NSString *)path extension:(NSString *)ext options:(GRMustacheTemplateOptions)options;
878 + (id)templateLoaderWithDirectory:(NSString *)path extension:(NSString *)ext encoding:(NSStringEncoding)encoding options:(GRMustacheTemplateOptions)options;
879 + (id)templateLoaderWithBundle:(NSBundle *)bundle options:(GRMustacheTemplateOptions)options;
880 + (id)templateLoaderWithBundle:(NSBundle *)bundle extension:(NSString *)ext options:(GRMustacheTemplateOptions)options;
881 + (id)templateLoaderWithBundle:(NSBundle *)bundle extension:(NSString *)ext encoding:(NSStringEncoding)encoding options:(GRMustacheTemplateOptions)options;
882 ```
8abbac98 »
2011-10-09 v1.8.2
883
18dc85c5 »
2011-10-08 v1.8.0
884
d08841fc »
2011-09-22 v1.7.4
885 ## v1.7.4
886
887 Bug fix: avoid crashing when one provides uninitialized NSError* to GRMustache.
888
8059b386 »
2011-09-17 v1.7.3
889 ## v1.7.3
890
891 One no longer needs to add `-all_load` to the "Other Linker Flags" target option tu use GRMustache static libraries.
892
6d6e0205 »
2011-07-27 v1.7.2
893 ## v1.7.2
894
895 - Fixed [issue #6](https://github.com/groue/GRMustache/issues/6)
896 - `[GRMustache preventNSUndefinedKeyExceptionAttack]` no longer prevents the rendering of `nil`.
897
cd4de9d5 »
2011-06-25 v1.7.1
898 ## v1.7.1
899
900 Added missing header file
901
e5d100a5 »
2011-06-09 v1.7.0
902 ## v1.7.0
903
904 **GRMustache now ships as a static library.**
905
906 See the [Embedding](https://github.com/groue/GRMustache/wiki/Embedding) wiki page in order to see how to embed GRMustache in your project.
907
908 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.
909
4373916b »
2011-06-08 v1.6.2
910 ## v1.6.2
911
912 **LLVM3 compatibility**
913
f19ba843 »
2011-04-09 v1.6.1
914 ## v1.6.1
915
916 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).
917
6b1dbf75 »
2011-03-17 v1.6.0
918 ## v1.6.0
919
920 **Reduced memory footprint**
921
8abbac98 »
2011-10-09 v1.8.2
922 New GRMustacheTemplateLoader methods:
6b1dbf75 »
2011-03-17 v1.6.0
923
5e5ea55e »
2012-03-24 v1.13.0
924 ```objc
925 + (id)templateLoaderWithDirectory:(NSString *)path;
926 + (id)templateLoaderWithDirectory:(NSString *)path extension:(NSString *)ext;
927 + (id)templateLoaderWithDirectory:(NSString *)path extension:(NSString *)ext encoding:(NSStringEncoding)encoding;
928 ```
6b1dbf75 »
2011-03-17 v1.6.0
929
8abbac98 »
2011-10-09 v1.8.2
930 Deprecated GRMustacheTemplateLoader methods (replace `BasePath` with `Directory`):
6b1dbf75 »
2011-03-17 v1.6.0
931
5e5ea55e »
2012-03-24 v1.13.0
932 ```objc
933 + (id)templateLoaderWithBasePath:(NSString *)path;
934 + (id)templateLoaderWithBasePath:(NSString *)path extension:(NSString *)ext;
935 + (id)templateLoaderWithBasePath:(NSString *)path extension:(NSString *)ext encoding:(NSStringEncoding)encoding;
936 ```
6b1dbf75 »
2011-03-17 v1.6.0
937
938 Bug fixes around the NSUndefinedKeyException handling when the `DEBUG` macro is set (thanks to [Mike Ash](http://www.mikeash.com/)).
939
499face2 »
2011-03-08 v1.5.2
940 ## v1.5.2
941
f19ba843 »
2011-04-09 v1.6.1
942 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
943
e0a103f9 »
2011-03-03 v1.5.1
944 ## v1.5.1
945
40310371 »
2011-03-10 RELEASE_NOTES wording
946 Bug fixes
e0a103f9 »
2011-03-03 v1.5.1
947
3de3613a »
2011-02-27 v1.5.0
948 ## v1.5.0
0915e916 »
2011-02-26 v1.4.1
949
40310371 »
2011-03-10 RELEASE_NOTES wording
950 **API simplification**
951
c5761e89 »
2011-03-10 RELEASE_NOTES wording
952 New GRMustacheTemplate method:
953
954 - `- (NSString *)renderObjects:(id)object, ...;`
955
956 New GRMustacheSection method:
957
958 - `- (NSString *)renderObjects:(id)object, ...;`
959
960 New class:
961
962 - `GRMustacheBlockHelper`
963
964 Deprecated class (use `id` instead when refering to a context, and use `renderObjects:` methods instead of instanciating one):
965
966 - `GRMustacheContext`
967
968 Deprecated function (use GRMustacheBlockHelper instead):
969
970 - `id GRMustacheLambdaBlockMake(NSString *(^block)(GRMustacheSection*, GRMustacheContext*));`
0915e916 »
2011-02-26 v1.4.1
971
a1f2cf1b »
2011-02-26 v1.4.0
972 ## v1.4.0
973
40310371 »
2011-03-10 RELEASE_NOTES wording
974 **iOS 3.0 support**
c5761e89 »
2011-03-10 RELEASE_NOTES wording
975
976 New `GRMustacheTemplate` methods:
977
978 - `+ (NSString *)renderObject:(id)object fromContentsOfFile:(NSString *)path error:(NSError **)outError;`
979 - `+ (id)parseContentsOfFile:(NSString *)path error:(NSError **)outError;`
980
8abbac98 »
2011-10-09 v1.8.2
981 New `GRMustacheTemplateLoader` methods:
c5761e89 »
2011-03-10 RELEASE_NOTES wording
982
983 - `+ (id)templateLoaderWithBasePath:(NSString *)path;`
984 - `+ (id)templateLoaderWithBasePath:(NSString *)path extension:(NSString *)ext;`
985 - `+ (id)templateLoaderWithBasePath:(NSString *)path extension:(NSString *)ext encoding:(NSStringEncoding)encoding;`
a1f2cf1b »
2011-02-26 v1.4.0
986
de489d54 »
2011-02-05 v1.3.3
987 ## v1.3.3
988
40310371 »
2011-03-10 RELEASE_NOTES wording
989 Bug fixes
de489d54 »
2011-02-05 v1.3.3
990
be39647f »
2010-12-14 v1.3.2
991 ## v1.3.2
992
40310371 »
2011-03-10 RELEASE_NOTES wording
993 Bug fixes
be39647f »
2010-12-14 v1.3.2
994
7f1e927c »
2010-12-09 v1.3.1
995 ## v1.3.1
996
40310371 »
2011-03-10 RELEASE_NOTES wording
997 Bug fixes
7f1e927c »
2010-12-09 v1.3.1
998
b03eb3c9 »
2010-12-07 v1.3.0
999 ## v1.3.0
1000
40310371 »
2011-03-10 RELEASE_NOTES wording
1001 **Block-less API for helpers.**
b03eb3c9 »
2010-12-07 v1.3.0
1002
c5761e89 »
2011-03-10 RELEASE_NOTES wording
1003 New classes:
1004
1005 - `GRMustacheContext`
1006 - `GRMustacheSection`
b03eb3c9 »
2010-12-07 v1.3.0
1007
c5761e89 »
2011-03-10 RELEASE_NOTES wording
1008 New functions:
a368aafe »
2010-12-05 v1.2.1
1009
c5761e89 »
2011-03-10 RELEASE_NOTES wording
1010 - `id GRMustacheLambdaBlockMake(NSString *(^block)(GRMustacheSection*, GRMustacheContext*));`
1011
1012 Deprecated functions (use GRMustacheLambdaBlockMake instead):
1013
1014 - `GRMustacheLambda GRMustacheLambdaMake(NSString *(^block)(NSString *(^)(id object), id, NSString *));`
a368aafe »
2010-12-05 v1.2.1
1015
c88c5c6f »
2010-12-04 v1.2.0
1016 ## v1.2.0
1017
40310371 »
2011-03-10 RELEASE_NOTES wording
1018 **iOS 4.0 support**
c5761e89 »
2011-03-10 RELEASE_NOTES wording
1019
1020 Deprecated class (use `[NSNumber numberWithBool:YES]` instead of `[GRYes yes]`):
1021
1022 - `GRYes`
1023
1024 Deprecated class (use `[NSNumber numberWithBool:NO]` instead of `[GRNo no]`):
1025
1026 - `GRNo`
c88c5c6f »
2010-12-04 v1.2.0
1027
16c756db »
2010-12-01 v1.1.6
1028 ## v1.1.6
1029
c5761e89 »
2011-03-10 RELEASE_NOTES wording
1030 GRMustacheTemplateLoader subclasses can now rely on an immutable `extension` property.
16c756db »
2010-12-01 v1.1.6
1031
0805e50e »
2010-11-27 v1.1.5
1032 ## v1.1.5
1033
40310371 »
2011-03-10 RELEASE_NOTES wording
1034 Bug fixes
0805e50e »
2010-11-27 v1.1.5
1035
8e257bef »
2010-11-22 v1.1.4
1036 ## v1.1.4
1037
40310371 »
2011-03-10 RELEASE_NOTES wording
1038 Bug fixes
8e257bef »
2010-11-22 v1.1.4
1039
3f89a0bf »
2010-11-21 v1.1.3
1040 ## v1.1.3
1041
40310371 »
2011-03-10 RELEASE_NOTES wording
1042 **Rendering performance improvement**
3f89a0bf »
2010-11-21 v1.1.3
1043
8dbe23f1 »
2010-11-21 v1.1.2
1044 ## v1.1.2
1045
887bcdb4 »
2012-07-23 RELEASE_NOTES: remove undue notifications of performance improvements
1046 **Parsing performance improvement**
8dbe23f1 »
2010-11-21 v1.1.2
1047
161c96cd »
2010-11-20 v1.1.1
1048 ## v1.1.1
1049
40310371 »
2011-03-10 RELEASE_NOTES wording
1050 Bug fixes
161c96cd »
2010-11-20 v1.1.1
1051
6ede60be »
2010-11-12 v1.1.0
1052 ## v1.1.0
0219c223 »
2010-11-12 v1.0.0
1053
c5761e89 »
2011-03-10 RELEASE_NOTES wording
1054 New methods:
1055
1056 - `[GRYes yes]` responds to `boolValue`
1057 - `[GRNo no]` responds to `boolValue`
6ede60be »
2010-11-12 v1.1.0
1058
1059 ## v1.0.0
1060
40310371 »
2011-03-10 RELEASE_NOTES wording
1061 **First versioned release**
Something went wrong with that request. Please try again.