Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

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