From c3691668c2e55e0429e5f31a77a8ca7e817df992 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Thu, 10 Sep 2015 13:05:21 +0200 Subject: [PATCH 01/81] #97: Bump deployment targets to iOS 8.0 and OSX 10.9 in podspec. --- GRMustache.podspec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/GRMustache.podspec b/GRMustache.podspec index f5393957..8694c91b 100644 --- a/GRMustache.podspec +++ b/GRMustache.podspec @@ -8,8 +8,8 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/groue/GRMustache.git', :tag => 'v7.3.2' } s.source_files = 'src/classes/**/*.{h,m}' s.private_header_files = 'src/classes/**/*_private.h' - s.ios.deployment_target = '4.3' - s.osx.deployment_target = '10.6' + s.ios.deployment_target = '8.0' + s.osx.deployment_target = '10.9' s.requires_arc = false s.framework = 'Foundation' s.dependency 'JRSwizzle', '~> 1.0' From 5c441aa6b237137a34cd8bf8a30cc597fa55fc3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Thu, 10 Sep 2015 13:05:58 +0200 Subject: [PATCH 02/81] #97: Remove JRSwizzle dependency in podspec. --- GRMustache.podspec | 1 - 1 file changed, 1 deletion(-) diff --git a/GRMustache.podspec b/GRMustache.podspec index 8694c91b..d3afbc49 100644 --- a/GRMustache.podspec +++ b/GRMustache.podspec @@ -12,5 +12,4 @@ Pod::Spec.new do |s| s.osx.deployment_target = '10.9' s.requires_arc = false s.framework = 'Foundation' - s.dependency 'JRSwizzle', '~> 1.0' end From 9a75765cb7690e506b3e838e5dd1bcfc6ef83cae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Thu, 10 Sep 2015 13:10:18 +0200 Subject: [PATCH 03/81] Reset TODO.md --- TODO.md | 44 -------------------------------------------- 1 file changed, 44 deletions(-) diff --git a/TODO.md b/TODO.md index ef8d6cfc..e69de29b 100644 --- a/TODO.md +++ b/TODO.md @@ -1,44 +0,0 @@ -## TODO - - -- [ ] a Mustache template linter that can run as a build phase - - warns of syntax errors - - warns of compatibility issues: `{{ a/b }}` syntax is deprecated, used `a.b` instead, etc. -- [ ] Document that errors are no longer logged. -- [X] check that {{^ [NSNull null]|@NO }}...{{.}}...{{/}} does not mess with the {{.}} -- [X] Consider replacing GRMustacheTemplate.partialNode with GRMustacheTemplate.templateAST -- [X] Rename `identifier` to `name` -- [X] Fix link to filters Guide from GRMustacheFilter.h -- [X] Document [GRMustacheTemplateRepository templateRepositoryWithDictionary:] changes (mutability of the dictionary) -- [X] Document [GRMustacheTemplateRepository reloadTemplates] in release notes. -- [X] Test [GRMustacheTemplateRepository reloadTemplates]. -- [X] have [GRMustacheTemplate templateFromString:error:] use current repository & content type, and deprecate GRMustacheTag.templateRepository -- [?] have GRMustacheTemplateRepository cache template from string (for faster rendering objects) -- [X] expose GRMustacheTemplate.templateRepository -- [X] document dropped support for garbage collection -- [X] pass http://twitter.github.com/hogan.js/ inheritable template tests -- [X] pass https://github.com/spullara/mustache.java inheritable template tests -- [X] Update the documentation to de-emphasize KVC exceptions. -- [X] Consistent use of the "template inheritance" wording. -- [X] Rewrite documentation for default values for any keys -- [X] Remove all GRMustacheContext subclassing documentation -- [X] Document secure key access to Foundation classes -- [ ] Document the drop of support for adding context into another context -- [X] Rename "protected context" to "Priority keys" -- [X] change version method -- [X] have overridable section use their own identifiers, not expressions. -- [X] Fetch inspiration from "faster mutable strings" in fotonauts/handlebars-objc (https://github.com/fotonauts/handlebars-objc/commit/f2cbde7e12b1fb594c2807a57bd2ecd2adb839b4) - - [X] for escaping methods - - [X] for rendering buffers -- [X] Remove GRMustacheContext subclasses. -- [X] safe property access (https://github.com/fotonauts/handlebars-objc/blob/master/doc/ContextObjects.md#why-does-handlebars-limit-access-to-some-attributes-that-are-normally-accessible-using-key-value-coding) - - [X] Add GRMustacheContext.allowsAllKeys - - [X] Rename validMustacheKeys to allowedMustacheKeys or something like that. Be consistent with GRMustacheContext.allowsAllKeys - - [X] Tests for secure key access -- [ ] examine dependencies using https://github.com/nst/objc_dep $ python objc_dep.py -x "(GRMustacheAvailabilityMacros)" ~/Documents/git/groue/GRMustache/src/classes/ > ~/Desktop/GRMustacheDeps.dot - -## Nice to have - -- [ ] document migration path from all previous versions to latest version -- [ ] > But they do allow Xcode to see the symbols when creating the final executable and allow the static library symbols to get included in the final DSYM file thereby allowing full symoblication of crash reports. (https://github.com/RestKit/RestKit/issues/1277) - From 7a1880f92200b2a177376c82780b64962420f757 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Thu, 10 Sep 2015 13:13:05 +0200 Subject: [PATCH 04/81] TODO.md: Add a #97 reminder. --- TODO.md | 1 + 1 file changed, 1 insertion(+) diff --git a/TODO.md b/TODO.md index e69de29b..058e0f14 100644 --- a/TODO.md +++ b/TODO.md @@ -0,0 +1 @@ +- [ ] #97: In commit 65a6593229ae8bad1630a82ccebb327fb4a9f1e3, Daniel removes a few tests based on Core Data. Make sure that we still have tests for Core Data: attributes are safe keys, and they should be rendered. From 5ee38c7b51d62803f93aa015f08f22e4e1e012b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Thu, 10 Sep 2015 13:18:01 +0200 Subject: [PATCH 05/81] TODO.md: wish list for v8.0.0 --- TODO.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/TODO.md b/TODO.md index 058e0f14..15d5636a 100644 --- a/TODO.md +++ b/TODO.md @@ -1 +1,5 @@ - [ ] #97: In commit 65a6593229ae8bad1630a82ccebb327fb4a9f1e3, Daniel removes a few tests based on Core Data. Make sure that we still have tests for Core Data: attributes are safe keys, and they should be rendered. +- [ ] See if dropping GRMustacheSafeKeyAccess and introducing GRMustacheObject could not solve two issues at the same time: + - [ ] #66 + - [ ] Compatibility with GRMustache.swift on Arrays, Sets, and other standard collections. +- [ ] ARC. Since GRMustache 8 is all about framework and targetting iOS8+ and OSX10.9+, there is no longer any reason for manual memory management. From 8454b3f26c8cb2a0db6b8764e4b21df09374cc20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Thu, 10 Sep 2015 13:25:41 +0200 Subject: [PATCH 06/81] TODO.md: wish list for v8.0.0 --- TODO.md | 1 + 1 file changed, 1 insertion(+) diff --git a/TODO.md b/TODO.md index 15d5636a..9bfda1ec 100644 --- a/TODO.md +++ b/TODO.md @@ -3,3 +3,4 @@ - [ ] #66 - [ ] Compatibility with GRMustache.swift on Arrays, Sets, and other standard collections. - [ ] ARC. Since GRMustache 8 is all about framework and targetting iOS8+ and OSX10.9+, there is no longer any reason for manual memory management. +- [ ] Share JSON tests suite with GRMustache.swift. From 6ffeca700b6812271777c685f75519d43e32118b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Thu, 10 Sep 2015 14:15:26 +0200 Subject: [PATCH 07/81] #97: Introduce OSX framework target and rebuild test targets. FIXME: - @import GRMustache does not work in both test targets. - tests for private APIs in iOS tests won't compile. --- src/GRMustache.xcodeproj/project.pbxproj | 1845 ++++++++--------- .../xcschemes/GRMustacheOSX (Shared).xcscheme | 80 + ...scheme => GRMustacheiOS (Shared).xcscheme} | 12 +- src/tests/GRMustacheTestBase.h | 2 +- src/tests/GRMustacheTestBase.m | 2 +- ...GRMustache7Tests-Info.plist => Info.plist} | 8 +- src/tests/Public/GRMustachePublicAPITest.h | 2 +- 7 files changed, 909 insertions(+), 1042 deletions(-) create mode 100644 src/GRMustache.xcodeproj/xcshareddata/xcschemes/GRMustacheOSX (Shared).xcscheme rename src/GRMustache.xcodeproj/xcshareddata/xcschemes/{GRMustache.xcscheme => GRMustacheiOS (Shared).xcscheme} (89%) rename src/tests/{GRMustache7Tests-Info.plist => Info.plist} (77%) diff --git a/src/GRMustache.xcodeproj/project.pbxproj b/src/GRMustache.xcodeproj/project.pbxproj index c331ebf6..9510e311 100644 --- a/src/GRMustache.xcodeproj/project.pbxproj +++ b/src/GRMustache.xcodeproj/project.pbxproj @@ -7,477 +7,381 @@ objects = { /* Begin PBXBuildFile section */ - 560CE8911526F672004F935E /* GRBooleanTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 560CE88E1526EEF4004F935E /* GRBooleanTest.m */; }; - 560CE8921526F673004F935E /* GRBooleanTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 560CE88E1526EEF4004F935E /* GRBooleanTest.m */; }; - 5623853A18CF365D0034D982 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5623853918CF365D0034D982 /* XCTest.framework */; }; - 5623853B18CF36660034D982 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5623853918CF365D0034D982 /* XCTest.framework */; }; - 5623B796152731B600DF16A6 /* GRMustacheParsingErrorsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5623B795152731B600DF16A6 /* GRMustacheParsingErrorsTest.m */; }; - 5623B797152731B600DF16A6 /* GRMustacheParsingErrorsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5623B795152731B600DF16A6 /* GRMustacheParsingErrorsTest.m */; }; - 563A5EA7163403C000E7E810 /* GRMustacheFoundationCollectionTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 563A5EA6163403C000E7E810 /* GRMustacheFoundationCollectionTest.m */; }; - 563A5EA8163403C000E7E810 /* GRMustacheFoundationCollectionTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 563A5EA6163403C000E7E810 /* GRMustacheFoundationCollectionTest.m */; }; - 563D66E91526497E008628C5 /* GRMustacheSuitesTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 563D66E81526497E008628C5 /* GRMustacheSuitesTest.m */; }; - 563D66EA1526497E008628C5 /* GRMustacheSuitesTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 563D66E81526497E008628C5 /* GRMustacheSuitesTest.m */; }; - 563D66EF152649DF008628C5 /* GRMustacheContextPrivateTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 563D66EC152649DF008628C5 /* GRMustacheContextPrivateTest.m */; }; - 563D66F0152649DF008628C5 /* GRMustacheContextPrivateTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 563D66EC152649DF008628C5 /* GRMustacheContextPrivateTest.m */; }; - 563D66F1152649DF008628C5 /* GRMustacheExpressionParserTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 563D66EE152649DF008628C5 /* GRMustacheExpressionParserTest.m */; }; - 563D66F2152649DF008628C5 /* GRMustacheExpressionParserTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 563D66EE152649DF008628C5 /* GRMustacheExpressionParserTest.m */; }; - 563D66F415264B40008628C5 /* GRMustacheSuites in Resources */ = {isa = PBXBuildFile; fileRef = 563D66F315264B40008628C5 /* GRMustacheSuites */; }; - 563D66F515264B40008628C5 /* GRMustacheSuites in Resources */ = {isa = PBXBuildFile; fileRef = 563D66F315264B40008628C5 /* GRMustacheSuites */; }; - 5648F1B718998BC5001F4B83 /* GRMustacheTemplateRepositoryTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5648F1B618998BC5001F4B83 /* GRMustacheTemplateRepositoryTest.m */; }; - 5648F1B918998BC5001F4B83 /* GRMustacheTemplateRepositoryTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5648F1B618998BC5001F4B83 /* GRMustacheTemplateRepositoryTest.m */; }; - 568140D9163659CC00310B7F /* GRMustacheRenderingObjectTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 568140D7163659CB00310B7F /* GRMustacheRenderingObjectTest.m */; }; - 568140DA163659CC00310B7F /* GRMustacheRenderingObjectTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 568140D7163659CB00310B7F /* GRMustacheRenderingObjectTest.m */; }; - 568140DE16365CF500310B7F /* GRMustacheTemplateRepositoryTest in Resources */ = {isa = PBXBuildFile; fileRef = 568140DD16365CF500310B7F /* GRMustacheTemplateRepositoryTest */; }; - 568140DF16365CF500310B7F /* GRMustacheTemplateRepositoryTest in Resources */ = {isa = PBXBuildFile; fileRef = 568140DD16365CF500310B7F /* GRMustacheTemplateRepositoryTest */; }; - 568140E216365D3000310B7F /* GRMustacheTemplateRepositoryWithBaseURLTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 568140E016365D3000310B7F /* GRMustacheTemplateRepositoryWithBaseURLTest.m */; }; - 568140E316365D3000310B7F /* GRMustacheTemplateRepositoryWithBaseURLTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 568140E016365D3000310B7F /* GRMustacheTemplateRepositoryWithBaseURLTest.m */; }; - 568140E416365D3000310B7F /* GRMustacheTemplateRepositoryWithDirectoryTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 568140E116365D3000310B7F /* GRMustacheTemplateRepositoryWithDirectoryTest.m */; }; - 568140E516365D3000310B7F /* GRMustacheTemplateRepositoryWithDirectoryTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 568140E116365D3000310B7F /* GRMustacheTemplateRepositoryWithDirectoryTest.m */; }; - 568140E816365D6100310B7F /* GRMustachePositionFilterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 568140E616365D6000310B7F /* GRMustachePositionFilterTest.m */; }; - 568140E916365D6100310B7F /* GRMustachePositionFilterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 568140E616365D6000310B7F /* GRMustachePositionFilterTest.m */; }; - 5682B46115282B8200ADD123 /* GRMustacheTemplateFromMethodsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5682B46015282B8200ADD123 /* GRMustacheTemplateFromMethodsTest.m */; }; - 5682B46215282B8200ADD123 /* GRMustacheTemplateFromMethodsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5682B46015282B8200ADD123 /* GRMustacheTemplateFromMethodsTest.m */; }; - 5682B46515282BCA00ADD123 /* GRMustacheTemplateFromMethodsTest.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 5682B46415282BC900ADD123 /* GRMustacheTemplateFromMethodsTest.mustache */; }; - 5682B46615282BCA00ADD123 /* GRMustacheTemplateFromMethodsTest.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 5682B46415282BC900ADD123 /* GRMustacheTemplateFromMethodsTest.mustache */; }; - 5682B4681528324800ADD123 /* GRMustacheTemplateFromMethodsTest.json in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4671528324800ADD123 /* GRMustacheTemplateFromMethodsTest.json */; }; - 5682B4691528324800ADD123 /* GRMustacheTemplateFromMethodsTest.json in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4671528324800ADD123 /* GRMustacheTemplateFromMethodsTest.json */; }; - 5682B46C1528342D00ADD123 /* GRMustacheTemplateRenderMethodsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5682B46B1528342D00ADD123 /* GRMustacheTemplateRenderMethodsTest.m */; }; - 5682B46D1528342D00ADD123 /* GRMustacheTemplateRenderMethodsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5682B46B1528342D00ADD123 /* GRMustacheTemplateRenderMethodsTest.m */; }; - 5682B46F1528370E00ADD123 /* GRMustacheTemplateFromMethodsTest in Resources */ = {isa = PBXBuildFile; fileRef = 5682B46E1528370E00ADD123 /* GRMustacheTemplateFromMethodsTest */; }; - 5682B4701528370E00ADD123 /* GRMustacheTemplateFromMethodsTest in Resources */ = {isa = PBXBuildFile; fileRef = 5682B46E1528370E00ADD123 /* GRMustacheTemplateFromMethodsTest */; }; - 5682B4741528372000ADD123 /* GRMustacheTemplateRenderMethodsTest in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4711528371F00ADD123 /* GRMustacheTemplateRenderMethodsTest */; }; - 5682B4751528372000ADD123 /* GRMustacheTemplateRenderMethodsTest in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4711528371F00ADD123 /* GRMustacheTemplateRenderMethodsTest */; }; - 5682B4761528372000ADD123 /* GRMustacheTemplateRenderMethodsTest.json in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4721528371F00ADD123 /* GRMustacheTemplateRenderMethodsTest.json */; }; - 5682B4771528372000ADD123 /* GRMustacheTemplateRenderMethodsTest.json in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4721528371F00ADD123 /* GRMustacheTemplateRenderMethodsTest.json */; }; - 5682B4781528372000ADD123 /* GRMustacheTemplateRenderMethodsTest.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4731528371F00ADD123 /* GRMustacheTemplateRenderMethodsTest.mustache */; }; - 5682B4791528372000ADD123 /* GRMustacheTemplateRenderMethodsTest.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4731528371F00ADD123 /* GRMustacheTemplateRenderMethodsTest.mustache */; }; - 5682B48B1528473200ADD123 /* GRMustacheTemplateRepositoryDataSourceTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5682B4821528472900ADD123 /* GRMustacheTemplateRepositoryDataSourceTest.m */; }; - 5682B48C1528473200ADD123 /* GRMustacheTemplateRepositoryDataSourceTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5682B4821528472900ADD123 /* GRMustacheTemplateRepositoryDataSourceTest.m */; }; - 5682B48F1528473200ADD123 /* GRMustacheTemplateRepositoryWithBundleTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5682B4861528472C00ADD123 /* GRMustacheTemplateRepositoryWithBundleTest.m */; }; - 5682B4901528473200ADD123 /* GRMustacheTemplateRepositoryWithBundleTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5682B4861528472C00ADD123 /* GRMustacheTemplateRepositoryWithBundleTest.m */; }; - 5682B4931528473200ADD123 /* GRMustacheTemplateRepositoryWithDictionaryTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5682B48A1528472F00ADD123 /* GRMustacheTemplateRepositoryWithDictionaryTest.m */; }; - 5682B4941528473200ADD123 /* GRMustacheTemplateRepositoryWithDictionaryTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5682B48A1528472F00ADD123 /* GRMustacheTemplateRepositoryWithDictionaryTest.m */; }; - 5682B4971528486C00ADD123 /* GRMustacheTemplateRepositoryTest_ISOLatin1 in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4951528486900ADD123 /* GRMustacheTemplateRepositoryTest_ISOLatin1 */; }; - 5682B4981528486C00ADD123 /* GRMustacheTemplateRepositoryTest_ISOLatin1 in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4951528486900ADD123 /* GRMustacheTemplateRepositoryTest_ISOLatin1 */; }; - 5682B4991528486C00ADD123 /* GRMustacheTemplateRepositoryTest_UTF8 in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4961528486A00ADD123 /* GRMustacheTemplateRepositoryTest_UTF8 */; }; - 5682B49A1528486C00ADD123 /* GRMustacheTemplateRepositoryTest_UTF8 in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4961528486A00ADD123 /* GRMustacheTemplateRepositoryTest_UTF8 */; }; - 5682B49E152849FE00ADD123 /* GRMustacheTemplateRepositoryWithBundleTest.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 5682B49C152849FD00ADD123 /* GRMustacheTemplateRepositoryWithBundleTest.mustache */; }; - 5682B49F152849FE00ADD123 /* GRMustacheTemplateRepositoryWithBundleTest.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 5682B49C152849FD00ADD123 /* GRMustacheTemplateRepositoryWithBundleTest.mustache */; }; - 5682B4A0152849FE00ADD123 /* GRMustacheTemplateRepositoryWithBundleTest_partial.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 5682B49D152849FD00ADD123 /* GRMustacheTemplateRepositoryWithBundleTest_partial.mustache */; }; - 5682B4A1152849FE00ADD123 /* GRMustacheTemplateRepositoryWithBundleTest_partial.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 5682B49D152849FD00ADD123 /* GRMustacheTemplateRepositoryWithBundleTest_partial.mustache */; }; - 5682B4A415284A9400ADD123 /* GRMustacheTemplateRepositoryWithBundleTest in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4A215284A9300ADD123 /* GRMustacheTemplateRepositoryWithBundleTest */; }; - 5682B4A515284A9400ADD123 /* GRMustacheTemplateRepositoryWithBundleTest in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4A215284A9300ADD123 /* GRMustacheTemplateRepositoryWithBundleTest */; }; - 5682B4A615284A9400ADD123 /* GRMustacheTemplateRepositoryWithBundleTest.text in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4A315284A9400ADD123 /* GRMustacheTemplateRepositoryWithBundleTest.text */; }; - 5682B4A715284A9400ADD123 /* GRMustacheTemplateRepositoryWithBundleTest.text in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4A315284A9400ADD123 /* GRMustacheTemplateRepositoryWithBundleTest.text */; }; - 5682B4A915284AB600ADD123 /* GRMustacheTemplateRepositoryWithBundleTest_partial in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4A815284AB600ADD123 /* GRMustacheTemplateRepositoryWithBundleTest_partial */; }; - 5682B4AA15284AB600ADD123 /* GRMustacheTemplateRepositoryWithBundleTest_partial in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4A815284AB600ADD123 /* GRMustacheTemplateRepositoryWithBundleTest_partial */; }; - 5682B4AC15284ABD00ADD123 /* GRMustacheTemplateRepositoryWithBundleTest_partial.text in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4AB15284ABC00ADD123 /* GRMustacheTemplateRepositoryWithBundleTest_partial.text */; }; - 5682B4AD15284ABD00ADD123 /* GRMustacheTemplateRepositoryWithBundleTest_partial.text in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4AB15284ABC00ADD123 /* GRMustacheTemplateRepositoryWithBundleTest_partial.text */; }; - 5682B4B21528C69C00ADD123 /* GRMustacheTemplateFromMethodsTest_parserError.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4B01528C69C00ADD123 /* GRMustacheTemplateFromMethodsTest_parserError.mustache */; }; - 5682B4B31528C69C00ADD123 /* GRMustacheTemplateFromMethodsTest_parserError.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4B01528C69C00ADD123 /* GRMustacheTemplateFromMethodsTest_parserError.mustache */; }; - 5682B4B41528C69C00ADD123 /* GRMustacheTemplateFromMethodsTest_parserErrorWrapper.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4B11528C69C00ADD123 /* GRMustacheTemplateFromMethodsTest_parserErrorWrapper.mustache */; }; - 5682B4B51528C69C00ADD123 /* GRMustacheTemplateFromMethodsTest_parserErrorWrapper.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4B11528C69C00ADD123 /* GRMustacheTemplateFromMethodsTest_parserErrorWrapper.mustache */; }; - 5682B4B81528D0FA00ADD123 /* GRMustacheTemplateFromMethodsTest_compilerError.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4B61528D0F900ADD123 /* GRMustacheTemplateFromMethodsTest_compilerError.mustache */; }; - 5682B4B91528D0FA00ADD123 /* GRMustacheTemplateFromMethodsTest_compilerError.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4B61528D0F900ADD123 /* GRMustacheTemplateFromMethodsTest_compilerError.mustache */; }; - 5682B4BA1528D0FA00ADD123 /* GRMustacheTemplateFromMethodsTest_compilerErrorWrapper.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4B71528D0F900ADD123 /* GRMustacheTemplateFromMethodsTest_compilerErrorWrapper.mustache */; }; - 5682B4BB1528D0FA00ADD123 /* GRMustacheTemplateFromMethodsTest_compilerErrorWrapper.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4B71528D0F900ADD123 /* GRMustacheTemplateFromMethodsTest_compilerErrorWrapper.mustache */; }; - 5682B4BE1528DF3F00ADD123 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5682B4BD1528DF3D00ADD123 /* Foundation.framework */; }; - 5682B4C01528DF4A00ADD123 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5682B4BF1528DF4900ADD123 /* Foundation.framework */; }; - 5682B4C31528E0B300ADD123 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5682B4BF1528DF4900ADD123 /* Foundation.framework */; }; - 5682B4C51528E0C600ADD123 /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5682B4C41528E0C500ADD123 /* CoreData.framework */; }; - 5688264D199DFCDF00922497 /* GRMustacheTemplateRepositoryWithBundleTestResources in Resources */ = {isa = PBXBuildFile; fileRef = 5688264C199DFCDF00922497 /* GRMustacheTemplateRepositoryWithBundleTestResources */; }; - 5688264E199DFCDF00922497 /* GRMustacheTemplateRepositoryWithBundleTestResources in Resources */ = {isa = PBXBuildFile; fileRef = 5688264C199DFCDF00922497 /* GRMustacheTemplateRepositoryWithBundleTestResources */; }; - 56A7591719C173E6008D119F /* NSJSONSerialization+Comments.m in Sources */ = {isa = PBXBuildFile; fileRef = 56A7591319C173E6008D119F /* NSJSONSerialization+Comments.m */; }; - 56A7591819C173E6008D119F /* NSJSONSerialization+Comments.m in Sources */ = {isa = PBXBuildFile; fileRef = 56A7591319C173E6008D119F /* NSJSONSerialization+Comments.m */; }; - 56A8D48C15279F8A00D9C718 /* GRMustacheTagDelegateTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56A8D48B15279F8A00D9C718 /* GRMustacheTagDelegateTest.m */; }; - 56A8D48D15279F8A00D9C718 /* GRMustacheTagDelegateTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56A8D48B15279F8A00D9C718 /* GRMustacheTagDelegateTest.m */; }; - 56A8D4931527A23900D9C718 /* GRMustacheTagDelegateTest.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 56A8D4921527A23900D9C718 /* GRMustacheTagDelegateTest.mustache */; }; - 56A8D4941527A23900D9C718 /* GRMustacheTagDelegateTest.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 56A8D4921527A23900D9C718 /* GRMustacheTagDelegateTest.mustache */; }; - 56A8D4961527A3CE00D9C718 /* GRMustacheTagDelegateTest_wrapper.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 56A8D4951527A3CE00D9C718 /* GRMustacheTagDelegateTest_wrapper.mustache */; }; - 56A8D4971527A3CE00D9C718 /* GRMustacheTagDelegateTest_wrapper.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 56A8D4951527A3CE00D9C718 /* GRMustacheTagDelegateTest_wrapper.mustache */; }; - 56ABDBC318D23CF7009DF17A /* GRMustacheTemplateTemplateRepositoryTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56ABDBC218D23CF7009DF17A /* GRMustacheTemplateTemplateRepositoryTest.m */; }; - 56ABDBC418D23CF7009DF17A /* GRMustacheTemplateTemplateRepositoryTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56ABDBC218D23CF7009DF17A /* GRMustacheTemplateTemplateRepositoryTest.m */; }; - 56B01A4C19C49AF5000439C7 /* GRMustacheExpressionGenerator_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56B01A4A19C49AF5000439C7 /* GRMustacheExpressionGenerator_private.h */; }; - 56B01A4D19C49AF5000439C7 /* GRMustacheExpressionGenerator_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56B01A4A19C49AF5000439C7 /* GRMustacheExpressionGenerator_private.h */; }; - 56B01A4E19C49AF5000439C7 /* GRMustacheExpressionGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 56B01A4B19C49AF5000439C7 /* GRMustacheExpressionGenerator.m */; }; - 56B01A4F19C49AF5000439C7 /* GRMustacheExpressionGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 56B01A4B19C49AF5000439C7 /* GRMustacheExpressionGenerator.m */; }; - 56B4778E18CF8A7C00EFF629 /* GRMustacheKeyedSubscriptingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56B4778C18CF8A7600EFF629 /* GRMustacheKeyedSubscriptingTest.m */; }; - 56B4778F18CF8A7C00EFF629 /* GRMustacheKeyedSubscriptingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56B4778C18CF8A7600EFF629 /* GRMustacheKeyedSubscriptingTest.m */; }; - 56B4779118CF8AD100EFF629 /* GRMustacheContextProtectedObjectTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56B4779018CF8AD100EFF629 /* GRMustacheContextProtectedObjectTest.m */; }; - 56B4779218CF8AD100EFF629 /* GRMustacheContextProtectedObjectTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56B4779018CF8AD100EFF629 /* GRMustacheContextProtectedObjectTest.m */; }; - 56B4779718CF8D2A00EFF629 /* GRHoganSuitesTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56B4779618CF8D2A00EFF629 /* GRHoganSuitesTest.m */; }; - 56B4779818CF8D2A00EFF629 /* GRHoganSuitesTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56B4779618CF8D2A00EFF629 /* GRHoganSuitesTest.m */; }; - 56B4779A18CF8D3300EFF629 /* GRHoganSuites in Resources */ = {isa = PBXBuildFile; fileRef = 56B4779918CF8D3300EFF629 /* GRHoganSuites */; }; - 56B4779B18CF8D3300EFF629 /* GRHoganSuites in Resources */ = {isa = PBXBuildFile; fileRef = 56B4779918CF8D3300EFF629 /* GRHoganSuites */; }; - 56B477A118CF9F6100EFF629 /* GRMustacheJavaSuitesTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56B477A018CF9F6100EFF629 /* GRMustacheJavaSuitesTest.m */; }; - 56B477A218CF9F6100EFF629 /* GRMustacheJavaSuitesTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56B477A018CF9F6100EFF629 /* GRMustacheJavaSuitesTest.m */; }; - 56B477A418CF9F6E00EFF629 /* GRMustacheJavaSuites in Resources */ = {isa = PBXBuildFile; fileRef = 56B477A318CF9F6E00EFF629 /* GRMustacheJavaSuites */; }; - 56B477A518CF9F6E00EFF629 /* GRMustacheJavaSuites in Resources */ = {isa = PBXBuildFile; fileRef = 56B477A318CF9F6E00EFF629 /* GRMustacheJavaSuites */; }; - 56B477A718D0E41A00EFF629 /* specs in Resources */ = {isa = PBXBuildFile; fileRef = 56B477A618D0E41A00EFF629 /* specs */; }; - 56B477A818D0E41A00EFF629 /* specs in Resources */ = {isa = PBXBuildFile; fileRef = 56B477A618D0E41A00EFF629 /* specs */; }; - 56BA242618C7A494006DA5F3 /* GRMustacheErrorHandlingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA242518C7A494006DA5F3 /* GRMustacheErrorHandlingTest.m */; }; - 56BA242818C7A494006DA5F3 /* GRMustacheErrorHandlingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA242518C7A494006DA5F3 /* GRMustacheErrorHandlingTest.m */; }; - 56BA243818C7A550006DA5F3 /* GRMustacheConfigurationBaseContextTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA243518C7A550006DA5F3 /* GRMustacheConfigurationBaseContextTest.m */; }; - 56BA243A18C7A550006DA5F3 /* GRMustacheConfigurationBaseContextTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA243518C7A550006DA5F3 /* GRMustacheConfigurationBaseContextTest.m */; }; - 56BA243C18C7A550006DA5F3 /* GRMustacheConfigurationTagDelimitersTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA243618C7A550006DA5F3 /* GRMustacheConfigurationTagDelimitersTest.m */; }; - 56BA243E18C7A550006DA5F3 /* GRMustacheConfigurationTagDelimitersTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA243618C7A550006DA5F3 /* GRMustacheConfigurationTagDelimitersTest.m */; }; - 56BA244018C7A550006DA5F3 /* GRMustacheConfigurationTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA243718C7A550006DA5F3 /* GRMustacheConfigurationTest.m */; }; - 56BA244218C7A550006DA5F3 /* GRMustacheConfigurationTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA243718C7A550006DA5F3 /* GRMustacheConfigurationTest.m */; }; - 56BA245B18C7A5BE006DA5F3 /* GRMustacheLocalizerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA245418C7A5BE006DA5F3 /* GRMustacheLocalizerTest.m */; }; - 56BA245D18C7A5BE006DA5F3 /* GRMustacheLocalizerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA245418C7A5BE006DA5F3 /* GRMustacheLocalizerTest.m */; }; - 56BA246718C7A5BE006DA5F3 /* GRMustacheNSFormatterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA245818C7A5BE006DA5F3 /* GRMustacheNSFormatterTest.m */; }; - 56BA246918C7A5BE006DA5F3 /* GRMustacheNSFormatterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA245818C7A5BE006DA5F3 /* GRMustacheNSFormatterTest.m */; }; - 56BA246B18C7A5BE006DA5F3 /* GRMustacheNSValueTransformerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA245918C7A5BE006DA5F3 /* GRMustacheNSValueTransformerTest.m */; }; - 56BA246D18C7A5BE006DA5F3 /* GRMustacheNSValueTransformerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA245918C7A5BE006DA5F3 /* GRMustacheNSValueTransformerTest.m */; }; - 56BA246F18C7A5BE006DA5F3 /* GRMustacheStandardLibraryTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA245A18C7A5BE006DA5F3 /* GRMustacheStandardLibraryTest.m */; }; - 56BA247118C7A5BE006DA5F3 /* GRMustacheStandardLibraryTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA245A18C7A5BE006DA5F3 /* GRMustacheStandardLibraryTest.m */; }; - 56BA247418C7A5CB006DA5F3 /* GRMustacheLocalizerTestBundle in Resources */ = {isa = PBXBuildFile; fileRef = 56BA247318C7A5CB006DA5F3 /* GRMustacheLocalizerTestBundle */; }; - 56BA247618C7A5CB006DA5F3 /* GRMustacheLocalizerTestBundle in Resources */ = {isa = PBXBuildFile; fileRef = 56BA247318C7A5CB006DA5F3 /* GRMustacheLocalizerTestBundle */; }; - 56BA247B18C7A5F8006DA5F3 /* GRMustacheFilterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA247918C7A5F8006DA5F3 /* GRMustacheFilterTest.m */; }; - 56BA247D18C7A5F8006DA5F3 /* GRMustacheFilterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA247918C7A5F8006DA5F3 /* GRMustacheFilterTest.m */; }; - 56BA247F18C7A5F8006DA5F3 /* GRMustacheVariadicFilterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA247A18C7A5F8006DA5F3 /* GRMustacheVariadicFilterTest.m */; }; - 56BA248118C7A5F8006DA5F3 /* GRMustacheVariadicFilterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA247A18C7A5F8006DA5F3 /* GRMustacheVariadicFilterTest.m */; }; - 56BA248B18C7A62E006DA5F3 /* GRMustacheContextTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA248518C7A62E006DA5F3 /* GRMustacheContextTest.m */; }; - 56BA248D18C7A62E006DA5F3 /* GRMustacheContextTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA248518C7A62E006DA5F3 /* GRMustacheContextTest.m */; }; - 56BA248F18C7A62E006DA5F3 /* GRMustacheContextValueForMustacheKeyTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA248618C7A62E006DA5F3 /* GRMustacheContextValueForMustacheKeyTest.m */; }; - 56BA249118C7A62E006DA5F3 /* GRMustacheContextValueForMustacheKeyTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA248618C7A62E006DA5F3 /* GRMustacheContextValueForMustacheKeyTest.m */; }; - 56BA249418C7A648006DA5F3 /* GRMustacheContextTopMustacheObjectTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA249318C7A648006DA5F3 /* GRMustacheContextTopMustacheObjectTest.m */; }; - 56BA249618C7A648006DA5F3 /* GRMustacheContextTopMustacheObjectTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA249318C7A648006DA5F3 /* GRMustacheContextTopMustacheObjectTest.m */; }; - 56BA249918C7A65E006DA5F3 /* GRMustacheContextHasValueForMustacheExpressionTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA249818C7A65E006DA5F3 /* GRMustacheContextHasValueForMustacheExpressionTest.m */; }; - 56BA249B18C7A65E006DA5F3 /* GRMustacheContextHasValueForMustacheExpressionTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA249818C7A65E006DA5F3 /* GRMustacheContextHasValueForMustacheExpressionTest.m */; }; - 56BA24A318C7A6B2006DA5F3 /* GRMustacheConfigurationExtendBaseContextTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA24A218C7A6B2006DA5F3 /* GRMustacheConfigurationExtendBaseContextTest.m */; }; - 56BA24A518C7A6B2006DA5F3 /* GRMustacheConfigurationExtendBaseContextTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA24A218C7A6B2006DA5F3 /* GRMustacheConfigurationExtendBaseContextTest.m */; }; - 56BA24A818C7A6D4006DA5F3 /* GRMustacheTemplateExtendBaseContextTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA24A718C7A6D4006DA5F3 /* GRMustacheTemplateExtendBaseContextTest.m */; }; - 56BA24AA18C7A6D4006DA5F3 /* GRMustacheTemplateExtendBaseContextTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA24A718C7A6D4006DA5F3 /* GRMustacheTemplateExtendBaseContextTest.m */; }; - 56BA24B318C9A2EE006DA5F3 /* GRMustacheContextKeyAccessTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA24B218C9A2EE006DA5F3 /* GRMustacheContextKeyAccessTest.m */; }; - 56BA24B518C9A2EE006DA5F3 /* GRMustacheContextKeyAccessTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA24B218C9A2EE006DA5F3 /* GRMustacheContextKeyAccessTest.m */; }; - 56BF365A19B8EE7A00854524 /* GRMustacheConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF365719B8EE7A00854524 /* GRMustacheConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56BF365B19B8EE7A00854524 /* GRMustacheConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF365719B8EE7A00854524 /* GRMustacheConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56BF365C19B8EE7A00854524 /* GRMustacheConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF365819B8EE7A00854524 /* GRMustacheConfiguration.m */; }; - 56BF365D19B8EE7A00854524 /* GRMustacheConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF365819B8EE7A00854524 /* GRMustacheConfiguration.m */; }; - 56BF365E19B8EE7A00854524 /* GRMustacheConfiguration_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF365919B8EE7A00854524 /* GRMustacheConfiguration_private.h */; }; - 56BF365F19B8EE7A00854524 /* GRMustacheConfiguration_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF365919B8EE7A00854524 /* GRMustacheConfiguration_private.h */; }; - 56BF366719B8EE8B00854524 /* GRMustacheExpressionParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF366119B8EE8B00854524 /* GRMustacheExpressionParser.m */; }; - 56BF366819B8EE8B00854524 /* GRMustacheExpressionParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF366119B8EE8B00854524 /* GRMustacheExpressionParser.m */; }; - 56BF366919B8EE8B00854524 /* GRMustacheExpressionParser_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF366219B8EE8B00854524 /* GRMustacheExpressionParser_private.h */; }; - 56BF366A19B8EE8B00854524 /* GRMustacheExpressionParser_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF366219B8EE8B00854524 /* GRMustacheExpressionParser_private.h */; }; - 56BF366B19B8EE8B00854524 /* GRMustacheTemplateParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF366319B8EE8B00854524 /* GRMustacheTemplateParser.m */; }; - 56BF366C19B8EE8B00854524 /* GRMustacheTemplateParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF366319B8EE8B00854524 /* GRMustacheTemplateParser.m */; }; - 56BF366D19B8EE8B00854524 /* GRMustacheTemplateParser_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF366419B8EE8B00854524 /* GRMustacheTemplateParser_private.h */; }; - 56BF366E19B8EE8B00854524 /* GRMustacheTemplateParser_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF366419B8EE8B00854524 /* GRMustacheTemplateParser_private.h */; }; - 56BF366F19B8EE8B00854524 /* GRMustacheToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF366519B8EE8B00854524 /* GRMustacheToken.m */; }; - 56BF367019B8EE8B00854524 /* GRMustacheToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF366519B8EE8B00854524 /* GRMustacheToken.m */; }; - 56BF367119B8EE8B00854524 /* GRMustacheToken_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF366619B8EE8B00854524 /* GRMustacheToken_private.h */; }; - 56BF367219B8EE8B00854524 /* GRMustacheToken_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF366619B8EE8B00854524 /* GRMustacheToken_private.h */; }; - 56BF369619B8EE9D00854524 /* GRMustacheExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367519B8EE9D00854524 /* GRMustacheExpression.m */; }; - 56BF369719B8EE9D00854524 /* GRMustacheExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367519B8EE9D00854524 /* GRMustacheExpression.m */; }; - 56BF369819B8EE9D00854524 /* GRMustacheExpression_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF367619B8EE9D00854524 /* GRMustacheExpression_private.h */; }; - 56BF369919B8EE9D00854524 /* GRMustacheExpression_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF367619B8EE9D00854524 /* GRMustacheExpression_private.h */; }; - 56BF369A19B8EE9D00854524 /* GRMustacheExpressionVisitor_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF367719B8EE9D00854524 /* GRMustacheExpressionVisitor_private.h */; }; - 56BF369B19B8EE9D00854524 /* GRMustacheExpressionVisitor_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF367719B8EE9D00854524 /* GRMustacheExpressionVisitor_private.h */; }; - 56BF369C19B8EE9D00854524 /* GRMustacheFilteredExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367819B8EE9D00854524 /* GRMustacheFilteredExpression.m */; }; - 56BF369D19B8EE9D00854524 /* GRMustacheFilteredExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367819B8EE9D00854524 /* GRMustacheFilteredExpression.m */; }; - 56BF369E19B8EE9D00854524 /* GRMustacheFilteredExpression_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF367919B8EE9D00854524 /* GRMustacheFilteredExpression_private.h */; }; - 56BF369F19B8EE9D00854524 /* GRMustacheFilteredExpression_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF367919B8EE9D00854524 /* GRMustacheFilteredExpression_private.h */; }; - 56BF36A019B8EE9D00854524 /* GRMustacheIdentifierExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367A19B8EE9D00854524 /* GRMustacheIdentifierExpression.m */; }; - 56BF36A119B8EE9D00854524 /* GRMustacheIdentifierExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367A19B8EE9D00854524 /* GRMustacheIdentifierExpression.m */; }; - 56BF36A219B8EE9D00854524 /* GRMustacheIdentifierExpression_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF367B19B8EE9D00854524 /* GRMustacheIdentifierExpression_private.h */; }; - 56BF36A319B8EE9D00854524 /* GRMustacheIdentifierExpression_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF367B19B8EE9D00854524 /* GRMustacheIdentifierExpression_private.h */; }; - 56BF36A419B8EE9D00854524 /* GRMustacheImplicitIteratorExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367C19B8EE9D00854524 /* GRMustacheImplicitIteratorExpression.m */; }; - 56BF36A519B8EE9D00854524 /* GRMustacheImplicitIteratorExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367C19B8EE9D00854524 /* GRMustacheImplicitIteratorExpression.m */; }; - 56BF36A619B8EE9D00854524 /* GRMustacheImplicitIteratorExpression_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF367D19B8EE9D00854524 /* GRMustacheImplicitIteratorExpression_private.h */; }; - 56BF36A719B8EE9D00854524 /* GRMustacheImplicitIteratorExpression_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF367D19B8EE9D00854524 /* GRMustacheImplicitIteratorExpression_private.h */; }; - 56BF36A819B8EE9D00854524 /* GRMustacheScopedExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367E19B8EE9D00854524 /* GRMustacheScopedExpression.m */; }; - 56BF36A919B8EE9D00854524 /* GRMustacheScopedExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367E19B8EE9D00854524 /* GRMustacheScopedExpression.m */; }; - 56BF36AA19B8EE9D00854524 /* GRMustacheScopedExpression_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF367F19B8EE9D00854524 /* GRMustacheScopedExpression_private.h */; }; - 56BF36AB19B8EE9D00854524 /* GRMustacheScopedExpression_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF367F19B8EE9D00854524 /* GRMustacheScopedExpression_private.h */; }; - 56BF36AC19B8EE9D00854524 /* GRMustacheCompiler.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368019B8EE9D00854524 /* GRMustacheCompiler.m */; }; - 56BF36AD19B8EE9D00854524 /* GRMustacheCompiler.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368019B8EE9D00854524 /* GRMustacheCompiler.m */; }; - 56BF36AE19B8EE9D00854524 /* GRMustacheCompiler_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368119B8EE9D00854524 /* GRMustacheCompiler_private.h */; }; - 56BF36AF19B8EE9D00854524 /* GRMustacheCompiler_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368119B8EE9D00854524 /* GRMustacheCompiler_private.h */; }; - 56BF36B019B8EE9D00854524 /* GRMustacheInheritedPartialNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368319B8EE9D00854524 /* GRMustacheInheritedPartialNode.m */; }; - 56BF36B119B8EE9D00854524 /* GRMustacheInheritedPartialNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368319B8EE9D00854524 /* GRMustacheInheritedPartialNode.m */; }; - 56BF36B219B8EE9D00854524 /* GRMustacheInheritedPartialNode_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368419B8EE9D00854524 /* GRMustacheInheritedPartialNode_private.h */; }; - 56BF36B319B8EE9D00854524 /* GRMustacheInheritedPartialNode_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368419B8EE9D00854524 /* GRMustacheInheritedPartialNode_private.h */; }; - 56BF36B419B8EE9D00854524 /* GRMustacheInheritableSectionNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368519B8EE9D00854524 /* GRMustacheInheritableSectionNode.m */; }; - 56BF36B519B8EE9D00854524 /* GRMustacheInheritableSectionNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368519B8EE9D00854524 /* GRMustacheInheritableSectionNode.m */; }; - 56BF36B619B8EE9D00854524 /* GRMustacheInheritableSectionNode_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368619B8EE9D00854524 /* GRMustacheInheritableSectionNode_private.h */; }; - 56BF36B719B8EE9D00854524 /* GRMustacheInheritableSectionNode_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368619B8EE9D00854524 /* GRMustacheInheritableSectionNode_private.h */; }; - 56BF36B819B8EE9D00854524 /* GRMustachePartialNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368719B8EE9D00854524 /* GRMustachePartialNode.m */; }; - 56BF36B919B8EE9D00854524 /* GRMustachePartialNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368719B8EE9D00854524 /* GRMustachePartialNode.m */; }; - 56BF36BA19B8EE9D00854524 /* GRMustachePartialNode_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368819B8EE9D00854524 /* GRMustachePartialNode_private.h */; }; - 56BF36BB19B8EE9D00854524 /* GRMustachePartialNode_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368819B8EE9D00854524 /* GRMustachePartialNode_private.h */; }; - 56BF36BC19B8EE9D00854524 /* GRMustacheSectionTag.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368919B8EE9D00854524 /* GRMustacheSectionTag.m */; }; - 56BF36BD19B8EE9D00854524 /* GRMustacheSectionTag.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368919B8EE9D00854524 /* GRMustacheSectionTag.m */; }; - 56BF36BE19B8EE9D00854524 /* GRMustacheSectionTag_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368A19B8EE9D00854524 /* GRMustacheSectionTag_private.h */; }; - 56BF36BF19B8EE9D00854524 /* GRMustacheSectionTag_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368A19B8EE9D00854524 /* GRMustacheSectionTag_private.h */; }; - 56BF36C019B8EE9D00854524 /* GRMustacheTag.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368B19B8EE9D00854524 /* GRMustacheTag.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56BF36C119B8EE9D00854524 /* GRMustacheTag.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368B19B8EE9D00854524 /* GRMustacheTag.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56BF36C219B8EE9D00854524 /* GRMustacheTag.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368C19B8EE9D00854524 /* GRMustacheTag.m */; }; - 56BF36C319B8EE9D00854524 /* GRMustacheTag.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368C19B8EE9D00854524 /* GRMustacheTag.m */; }; - 56BF36C419B8EE9E00854524 /* GRMustacheTag_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368D19B8EE9D00854524 /* GRMustacheTag_private.h */; }; - 56BF36C519B8EE9E00854524 /* GRMustacheTag_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368D19B8EE9D00854524 /* GRMustacheTag_private.h */; }; - 56BF36C619B8EE9E00854524 /* GRMustacheTemplateAST.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368E19B8EE9D00854524 /* GRMustacheTemplateAST.m */; }; - 56BF36C719B8EE9E00854524 /* GRMustacheTemplateAST.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368E19B8EE9D00854524 /* GRMustacheTemplateAST.m */; }; - 56BF36C819B8EE9E00854524 /* GRMustacheTemplateAST_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368F19B8EE9D00854524 /* GRMustacheTemplateAST_private.h */; }; - 56BF36C919B8EE9E00854524 /* GRMustacheTemplateAST_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368F19B8EE9D00854524 /* GRMustacheTemplateAST_private.h */; }; - 56BF36CA19B8EE9E00854524 /* GRMustacheTemplateASTNode_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF369019B8EE9D00854524 /* GRMustacheTemplateASTNode_private.h */; }; - 56BF36CB19B8EE9E00854524 /* GRMustacheTemplateASTNode_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF369019B8EE9D00854524 /* GRMustacheTemplateASTNode_private.h */; }; - 56BF36CC19B8EE9E00854524 /* GRMustacheTemplateASTVisitor_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF369119B8EE9D00854524 /* GRMustacheTemplateASTVisitor_private.h */; }; - 56BF36CD19B8EE9E00854524 /* GRMustacheTemplateASTVisitor_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF369119B8EE9D00854524 /* GRMustacheTemplateASTVisitor_private.h */; }; - 56BF36CE19B8EE9E00854524 /* GRMustacheTextNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF369219B8EE9D00854524 /* GRMustacheTextNode.m */; }; - 56BF36CF19B8EE9E00854524 /* GRMustacheTextNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF369219B8EE9D00854524 /* GRMustacheTextNode.m */; }; - 56BF36D019B8EE9E00854524 /* GRMustacheTextNode_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF369319B8EE9D00854524 /* GRMustacheTextNode_private.h */; }; - 56BF36D119B8EE9E00854524 /* GRMustacheTextNode_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF369319B8EE9D00854524 /* GRMustacheTextNode_private.h */; }; - 56BF36D219B8EE9E00854524 /* GRMustacheVariableTag.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF369419B8EE9D00854524 /* GRMustacheVariableTag.m */; }; - 56BF36D319B8EE9E00854524 /* GRMustacheVariableTag.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF369419B8EE9D00854524 /* GRMustacheVariableTag.m */; }; - 56BF36D419B8EE9E00854524 /* GRMustacheVariableTag_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF369519B8EE9D00854524 /* GRMustacheVariableTag_private.h */; }; - 56BF36D519B8EE9E00854524 /* GRMustacheVariableTag_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF369519B8EE9D00854524 /* GRMustacheVariableTag_private.h */; }; - 56BF36E819B8EEAE00854524 /* GRMustacheContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36D719B8EEAD00854524 /* GRMustacheContext.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56BF36E919B8EEAE00854524 /* GRMustacheContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36D719B8EEAD00854524 /* GRMustacheContext.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56BF36EA19B8EEAE00854524 /* GRMustacheContext.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36D819B8EEAD00854524 /* GRMustacheContext.m */; }; - 56BF36EB19B8EEAE00854524 /* GRMustacheContext.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36D819B8EEAD00854524 /* GRMustacheContext.m */; }; - 56BF36EC19B8EEAE00854524 /* GRMustacheContext_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36D919B8EEAD00854524 /* GRMustacheContext_private.h */; }; - 56BF36ED19B8EEAE00854524 /* GRMustacheContext_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36D919B8EEAD00854524 /* GRMustacheContext_private.h */; }; - 56BF36EE19B8EEAE00854524 /* GRMustacheExpressionInvocation.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36DA19B8EEAD00854524 /* GRMustacheExpressionInvocation.m */; }; - 56BF36EF19B8EEAE00854524 /* GRMustacheExpressionInvocation.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36DA19B8EEAD00854524 /* GRMustacheExpressionInvocation.m */; }; - 56BF36F019B8EEAE00854524 /* GRMustacheExpressionInvocation_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36DB19B8EEAD00854524 /* GRMustacheExpressionInvocation_private.h */; }; - 56BF36F119B8EEAE00854524 /* GRMustacheExpressionInvocation_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36DB19B8EEAD00854524 /* GRMustacheExpressionInvocation_private.h */; }; - 56BF36F219B8EEAE00854524 /* GRMustacheFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36DC19B8EEAD00854524 /* GRMustacheFilter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56BF36F319B8EEAE00854524 /* GRMustacheFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36DC19B8EEAD00854524 /* GRMustacheFilter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56BF36F419B8EEAE00854524 /* GRMustacheFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36DD19B8EEAD00854524 /* GRMustacheFilter.m */; }; - 56BF36F519B8EEAE00854524 /* GRMustacheFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36DD19B8EEAD00854524 /* GRMustacheFilter.m */; }; - 56BF36F619B8EEAE00854524 /* GRMustacheFilter_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36DE19B8EEAD00854524 /* GRMustacheFilter_private.h */; }; - 56BF36F719B8EEAE00854524 /* GRMustacheFilter_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36DE19B8EEAD00854524 /* GRMustacheFilter_private.h */; }; - 56BF36F819B8EEAE00854524 /* GRMustacheKeyAccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36DF19B8EEAE00854524 /* GRMustacheKeyAccess.m */; }; - 56BF36F919B8EEAE00854524 /* GRMustacheKeyAccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36DF19B8EEAE00854524 /* GRMustacheKeyAccess.m */; }; - 56BF36FA19B8EEAE00854524 /* GRMustacheKeyAccess_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36E019B8EEAE00854524 /* GRMustacheKeyAccess_private.h */; }; - 56BF36FB19B8EEAE00854524 /* GRMustacheKeyAccess_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36E019B8EEAE00854524 /* GRMustacheKeyAccess_private.h */; }; - 56BF36FC19B8EEAE00854524 /* GRMustacheRendering.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36E119B8EEAE00854524 /* GRMustacheRendering.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56BF36FD19B8EEAE00854524 /* GRMustacheRendering.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36E119B8EEAE00854524 /* GRMustacheRendering.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56BF36FE19B8EEAE00854524 /* GRMustacheRendering.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36E219B8EEAE00854524 /* GRMustacheRendering.m */; }; - 56BF36FF19B8EEAE00854524 /* GRMustacheRendering.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36E219B8EEAE00854524 /* GRMustacheRendering.m */; }; - 56BF370019B8EEAE00854524 /* GRMustacheRendering_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36E319B8EEAE00854524 /* GRMustacheRendering_private.h */; }; - 56BF370119B8EEAE00854524 /* GRMustacheRendering_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36E319B8EEAE00854524 /* GRMustacheRendering_private.h */; }; - 56BF370219B8EEAE00854524 /* GRMustacheRenderingEngine.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36E419B8EEAE00854524 /* GRMustacheRenderingEngine.m */; }; - 56BF370319B8EEAE00854524 /* GRMustacheRenderingEngine.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36E419B8EEAE00854524 /* GRMustacheRenderingEngine.m */; }; - 56BF370419B8EEAE00854524 /* GRMustacheRenderingEngine_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36E519B8EEAE00854524 /* GRMustacheRenderingEngine_private.h */; }; - 56BF370519B8EEAE00854524 /* GRMustacheRenderingEngine_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36E519B8EEAE00854524 /* GRMustacheRenderingEngine_private.h */; }; - 56BF370619B8EEAE00854524 /* GRMustacheSafeKeyAccess.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36E619B8EEAE00854524 /* GRMustacheSafeKeyAccess.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56BF370719B8EEAE00854524 /* GRMustacheSafeKeyAccess.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36E619B8EEAE00854524 /* GRMustacheSafeKeyAccess.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56BF370819B8EEAE00854524 /* GRMustacheTagDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36E719B8EEAE00854524 /* GRMustacheTagDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56BF370919B8EEAE00854524 /* GRMustacheTagDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36E719B8EEAE00854524 /* GRMustacheTagDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56BF371119B8EEB900854524 /* GRMustacheTemplate.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF370B19B8EEB900854524 /* GRMustacheTemplate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56BF371219B8EEB900854524 /* GRMustacheTemplate.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF370B19B8EEB900854524 /* GRMustacheTemplate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56BF371319B8EEB900854524 /* GRMustacheTemplate.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF370C19B8EEB900854524 /* GRMustacheTemplate.m */; }; - 56BF371419B8EEB900854524 /* GRMustacheTemplate.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF370C19B8EEB900854524 /* GRMustacheTemplate.m */; }; - 56BF371519B8EEB900854524 /* GRMustacheTemplate_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF370D19B8EEB900854524 /* GRMustacheTemplate_private.h */; }; - 56BF371619B8EEB900854524 /* GRMustacheTemplate_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF370D19B8EEB900854524 /* GRMustacheTemplate_private.h */; }; - 56BF371719B8EEB900854524 /* GRMustacheTemplateRepository.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF370E19B8EEB900854524 /* GRMustacheTemplateRepository.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56BF371819B8EEB900854524 /* GRMustacheTemplateRepository.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF370E19B8EEB900854524 /* GRMustacheTemplateRepository.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56BF371919B8EEB900854524 /* GRMustacheTemplateRepository.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF370F19B8EEB900854524 /* GRMustacheTemplateRepository.m */; }; - 56BF371A19B8EEB900854524 /* GRMustacheTemplateRepository.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF370F19B8EEB900854524 /* GRMustacheTemplateRepository.m */; }; - 56BF371B19B8EEB900854524 /* GRMustacheTemplateRepository_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF371019B8EEB900854524 /* GRMustacheTemplateRepository_private.h */; }; - 56BF371C19B8EEB900854524 /* GRMustacheTemplateRepository_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF371019B8EEB900854524 /* GRMustacheTemplateRepository_private.h */; }; - 56BF373119B8EEC700854524 /* GRMustacheTemplateGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF371E19B8EEC700854524 /* GRMustacheTemplateGenerator.m */; }; - 56BF373219B8EEC700854524 /* GRMustacheTemplateGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF371E19B8EEC700854524 /* GRMustacheTemplateGenerator.m */; }; - 56BF373319B8EEC700854524 /* GRMustacheTemplateGenerator_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF371F19B8EEC700854524 /* GRMustacheTemplateGenerator_private.h */; }; - 56BF373419B8EEC700854524 /* GRMustacheTemplateGenerator_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF371F19B8EEC700854524 /* GRMustacheTemplateGenerator_private.h */; }; - 56BF373519B8EEC700854524 /* NSFormatter+GRMustache.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF372019B8EEC700854524 /* NSFormatter+GRMustache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56BF373619B8EEC700854524 /* NSFormatter+GRMustache.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF372019B8EEC700854524 /* NSFormatter+GRMustache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56BF373719B8EEC700854524 /* NSFormatter+GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372119B8EEC700854524 /* NSFormatter+GRMustache.m */; }; - 56BF373819B8EEC700854524 /* NSFormatter+GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372119B8EEC700854524 /* NSFormatter+GRMustache.m */; }; - 56BF373919B8EEC700854524 /* NSValueTransformer+GRMustache.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF372219B8EEC700854524 /* NSValueTransformer+GRMustache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56BF373A19B8EEC700854524 /* NSValueTransformer+GRMustache.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF372219B8EEC700854524 /* NSValueTransformer+GRMustache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56BF373B19B8EEC700854524 /* NSValueTransformer+GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372319B8EEC700854524 /* NSValueTransformer+GRMustache.m */; }; - 56BF373C19B8EEC700854524 /* NSValueTransformer+GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372319B8EEC700854524 /* NSValueTransformer+GRMustache.m */; }; - 56BF373D19B8EEC700854524 /* GRMustacheEachFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372519B8EEC700854524 /* GRMustacheEachFilter.m */; }; - 56BF373E19B8EEC700854524 /* GRMustacheEachFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372519B8EEC700854524 /* GRMustacheEachFilter.m */; }; - 56BF373F19B8EEC700854524 /* GRMustacheEachFilter_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF372619B8EEC700854524 /* GRMustacheEachFilter_private.h */; }; - 56BF374019B8EEC700854524 /* GRMustacheEachFilter_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF372619B8EEC700854524 /* GRMustacheEachFilter_private.h */; }; - 56BF374119B8EEC700854524 /* GRMustacheHTMLLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372719B8EEC700854524 /* GRMustacheHTMLLibrary.m */; }; - 56BF374219B8EEC700854524 /* GRMustacheHTMLLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372719B8EEC700854524 /* GRMustacheHTMLLibrary.m */; }; - 56BF374319B8EEC700854524 /* GRMustacheHTMLLibrary_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF372819B8EEC700854524 /* GRMustacheHTMLLibrary_private.h */; }; - 56BF374419B8EEC700854524 /* GRMustacheHTMLLibrary_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF372819B8EEC700854524 /* GRMustacheHTMLLibrary_private.h */; }; - 56BF374519B8EEC700854524 /* GRMustacheJavascriptLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372919B8EEC700854524 /* GRMustacheJavascriptLibrary.m */; }; - 56BF374619B8EEC700854524 /* GRMustacheJavascriptLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372919B8EEC700854524 /* GRMustacheJavascriptLibrary.m */; }; - 56BF374719B8EEC700854524 /* GRMustacheJavascriptLibrary_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF372A19B8EEC700854524 /* GRMustacheJavascriptLibrary_private.h */; }; - 56BF374819B8EEC700854524 /* GRMustacheJavascriptLibrary_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF372A19B8EEC700854524 /* GRMustacheJavascriptLibrary_private.h */; }; - 56BF374919B8EEC700854524 /* GRMustacheLocalizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF372B19B8EEC700854524 /* GRMustacheLocalizer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56BF374A19B8EEC700854524 /* GRMustacheLocalizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF372B19B8EEC700854524 /* GRMustacheLocalizer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56BF374B19B8EEC700854524 /* GRMustacheLocalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372C19B8EEC700854524 /* GRMustacheLocalizer.m */; }; - 56BF374C19B8EEC700854524 /* GRMustacheLocalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372C19B8EEC700854524 /* GRMustacheLocalizer.m */; }; - 56BF374D19B8EEC700854524 /* GRMustacheStandardLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372D19B8EEC700854524 /* GRMustacheStandardLibrary.m */; }; - 56BF374E19B8EEC700854524 /* GRMustacheStandardLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372D19B8EEC700854524 /* GRMustacheStandardLibrary.m */; }; - 56BF374F19B8EEC700854524 /* GRMustacheStandardLibrary_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF372E19B8EEC700854524 /* GRMustacheStandardLibrary_private.h */; }; - 56BF375019B8EEC700854524 /* GRMustacheStandardLibrary_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF372E19B8EEC700854524 /* GRMustacheStandardLibrary_private.h */; }; - 56BF375119B8EEC700854524 /* GRMustacheURLLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372F19B8EEC700854524 /* GRMustacheURLLibrary.m */; }; - 56BF375219B8EEC700854524 /* GRMustacheURLLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372F19B8EEC700854524 /* GRMustacheURLLibrary.m */; }; - 56BF375319B8EEC700854524 /* GRMustacheURLLibrary_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF373019B8EEC700854524 /* GRMustacheURLLibrary_private.h */; }; - 56BF375419B8EEC700854524 /* GRMustacheURLLibrary_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF373019B8EEC700854524 /* GRMustacheURLLibrary_private.h */; }; - 56BF375E19B8EF2800854524 /* GRMustacheAvailabilityMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375619B8EF2800854524 /* GRMustacheAvailabilityMacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56BF375F19B8EF2800854524 /* GRMustacheAvailabilityMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375619B8EF2800854524 /* GRMustacheAvailabilityMacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56BF376019B8EF2800854524 /* GRMustacheAvailabilityMacros_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375719B8EF2800854524 /* GRMustacheAvailabilityMacros_private.h */; }; - 56BF376119B8EF2800854524 /* GRMustacheAvailabilityMacros_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375719B8EF2800854524 /* GRMustacheAvailabilityMacros_private.h */; }; - 56BF376219B8EF2800854524 /* GRMustacheBuffer_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375819B8EF2800854524 /* GRMustacheBuffer_private.h */; }; - 56BF376319B8EF2800854524 /* GRMustacheBuffer_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375819B8EF2800854524 /* GRMustacheBuffer_private.h */; }; - 56BF376419B8EF2800854524 /* GRMustacheContentType.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375919B8EF2800854524 /* GRMustacheContentType.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56BF376519B8EF2800854524 /* GRMustacheContentType.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375919B8EF2800854524 /* GRMustacheContentType.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56BF376619B8EF2800854524 /* GRMustacheError.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375A19B8EF2800854524 /* GRMustacheError.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56BF376719B8EF2800854524 /* GRMustacheError.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375A19B8EF2800854524 /* GRMustacheError.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56BF376819B8EF2800854524 /* GRMustacheError.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF375B19B8EF2800854524 /* GRMustacheError.m */; }; - 56BF376919B8EF2800854524 /* GRMustacheError.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF375B19B8EF2800854524 /* GRMustacheError.m */; }; - 56BF376A19B8EF2800854524 /* GRMustacheTranslateCharacters.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF375C19B8EF2800854524 /* GRMustacheTranslateCharacters.m */; }; - 56BF376B19B8EF2800854524 /* GRMustacheTranslateCharacters.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF375C19B8EF2800854524 /* GRMustacheTranslateCharacters.m */; }; - 56BF376C19B8EF2800854524 /* GRMustacheTranslateCharacters_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375D19B8EF2800854524 /* GRMustacheTranslateCharacters_private.h */; }; - 56BF376D19B8EF2800854524 /* GRMustacheTranslateCharacters_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375D19B8EF2800854524 /* GRMustacheTranslateCharacters_private.h */; }; - 56C1FDE819A66DBE00006AB4 /* GRMustacheSuites_7_2_Test.m in Sources */ = {isa = PBXBuildFile; fileRef = 56C1FDE719A66DBE00006AB4 /* GRMustacheSuites_7_2_Test.m */; }; - 56C1FDE919A66DBE00006AB4 /* GRMustacheSuites_7_2_Test.m in Sources */ = {isa = PBXBuildFile; fileRef = 56C1FDE719A66DBE00006AB4 /* GRMustacheSuites_7_2_Test.m */; }; - 56C1FDEB19A66DC500006AB4 /* GRMustacheSuites_7_2 in Resources */ = {isa = PBXBuildFile; fileRef = 56C1FDEA19A66DC500006AB4 /* GRMustacheSuites_7_2 */; }; - 56C1FDEC19A66DC500006AB4 /* GRMustacheSuites_7_2 in Resources */ = {isa = PBXBuildFile; fileRef = 56C1FDEA19A66DC500006AB4 /* GRMustacheSuites_7_2 */; }; - 56C1FDF419A6721100006AB4 /* GRMustacheRenderingObject_7_2_Test.m in Sources */ = {isa = PBXBuildFile; fileRef = 56C1FDF119A6721100006AB4 /* GRMustacheRenderingObject_7_2_Test.m */; }; - 56C1FDF519A6721100006AB4 /* GRMustacheRenderingObject_7_2_Test.m in Sources */ = {isa = PBXBuildFile; fileRef = 56C1FDF119A6721100006AB4 /* GRMustacheRenderingObject_7_2_Test.m */; }; - 56C1FDFD19A720B900006AB4 /* GRMustacheEachFilterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56C1FDFC19A720B900006AB4 /* GRMustacheEachFilterTest.m */; }; - 56C1FDFE19A720B900006AB4 /* GRMustacheEachFilterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56C1FDFC19A720B900006AB4 /* GRMustacheEachFilterTest.m */; }; - 56C8892A190A349B0084FC5A /* GRMustacheTemplateGeneratorTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56C88929190A349B0084FC5A /* GRMustacheTemplateGeneratorTest.m */; }; - 56C8892B190A349B0084FC5A /* GRMustacheTemplateGeneratorTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56C88929190A349B0084FC5A /* GRMustacheTemplateGeneratorTest.m */; }; - 56DEC257152631040031E8DC /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 56DEC1F4152630710031E8DC /* Cocoa.framework */; }; - 56DEC25A152631040031E8DC /* libGRMustache7-MacOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 56DEC248152631040031E8DC /* libGRMustache7-MacOS.a */; }; - 56DEC27D1526311C0031E8DC /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 56DEC1CB15262FF70031E8DC /* UIKit.framework */; }; - 56DEC2811526311C0031E8DC /* libGRMustache7-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 56DEC26E1526311B0031E8DC /* libGRMustache7-iOS.a */; }; - 56DEC2BC152631300031E8DC /* GRMustache.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DEC292152631300031E8DC /* GRMustache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56DEC2BD152631300031E8DC /* GRMustache.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DEC292152631300031E8DC /* GRMustache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56DEC2BE152631300031E8DC /* GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC293152631300031E8DC /* GRMustache.m */; }; - 56DEC2BF152631300031E8DC /* GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC293152631300031E8DC /* GRMustache.m */; }; - 56DEC2C0152631300031E8DC /* GRMustache_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DEC294152631300031E8DC /* GRMustache_private.h */; settings = {ATTRIBUTES = (); }; }; - 56DEC2C1152631300031E8DC /* GRMustache_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DEC294152631300031E8DC /* GRMustache_private.h */; settings = {ATTRIBUTES = (); }; }; - 56DEC30E152631300031E8DC /* GRMustacheVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DEC2BB152631300031E8DC /* GRMustacheVersion.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56DEC30F152631300031E8DC /* GRMustacheVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DEC2BB152631300031E8DC /* GRMustacheVersion.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56DEC3B5152638E20031E8DC /* GRMustachePrivateAPITest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC3B0152638E20031E8DC /* GRMustachePrivateAPITest.m */; }; - 56DEC3B6152638E20031E8DC /* GRMustachePrivateAPITest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC3B0152638E20031E8DC /* GRMustachePrivateAPITest.m */; }; - 56DEC3B7152638E20031E8DC /* GRMustachePublicAPITest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC3B2152638E20031E8DC /* GRMustachePublicAPITest.m */; }; - 56DEC3B8152638E20031E8DC /* GRMustachePublicAPITest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC3B2152638E20031E8DC /* GRMustachePublicAPITest.m */; }; - 56DEC3B9152638E20031E8DC /* GRMustacheTestBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC3B4152638E20031E8DC /* GRMustacheTestBase.m */; }; - 56DEC3BA152638E20031E8DC /* GRMustacheTestBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC3B4152638E20031E8DC /* GRMustacheTestBase.m */; }; - 56DEC3C0152639560031E8DC /* GRSpecificationSuitesTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC3BF152639560031E8DC /* GRSpecificationSuitesTest.m */; }; - 56DEC3C1152639560031E8DC /* GRSpecificationSuitesTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC3BF152639560031E8DC /* GRSpecificationSuitesTest.m */; }; + 56214B801BA1A4C50070C6CF /* GRMustache.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6586A05D1B9E2D720067C98E /* GRMustache.framework */; settings = {ASSET_TAGS = (); }; }; + 56214B8F1BA1A4D50070C6CF /* GRMustache.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 56214B6F1BA1A34A0070C6CF /* GRMustache.framework */; settings = {ASSET_TAGS = (); }; }; + 56214B961BA1A51A0070C6CF /* GRMustacheTestBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC3B4152638E20031E8DC /* GRMustacheTestBase.m */; settings = {ASSET_TAGS = (); }; }; + 56214B971BA1A51A0070C6CF /* GRMustacheTestBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC3B4152638E20031E8DC /* GRMustacheTestBase.m */; settings = {ASSET_TAGS = (); }; }; + 56214B981BA1A5290070C6CF /* GRMustachePrivateAPITest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC3B0152638E20031E8DC /* GRMustachePrivateAPITest.m */; settings = {ASSET_TAGS = (); }; }; + 56214B991BA1A52A0070C6CF /* GRMustachePrivateAPITest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC3B0152638E20031E8DC /* GRMustachePrivateAPITest.m */; settings = {ASSET_TAGS = (); }; }; + 56214B9A1BA1A52E0070C6CF /* GRMustacheContextPrivateTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 563D66EC152649DF008628C5 /* GRMustacheContextPrivateTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214B9B1BA1A52E0070C6CF /* GRMustacheExpressionParserTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 563D66EE152649DF008628C5 /* GRMustacheExpressionParserTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214B9C1BA1A52E0070C6CF /* GRMustacheTemplateGeneratorTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56C88929190A349B0084FC5A /* GRMustacheTemplateGeneratorTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214B9D1BA1A52F0070C6CF /* GRMustacheContextPrivateTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 563D66EC152649DF008628C5 /* GRMustacheContextPrivateTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214B9E1BA1A52F0070C6CF /* GRMustacheExpressionParserTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 563D66EE152649DF008628C5 /* GRMustacheExpressionParserTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214B9F1BA1A52F0070C6CF /* GRMustacheTemplateGeneratorTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56C88929190A349B0084FC5A /* GRMustacheTemplateGeneratorTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BA01BA1A5350070C6CF /* GRMustachePublicAPITest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC3B2152638E20031E8DC /* GRMustachePublicAPITest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BA11BA1A5350070C6CF /* GRMustachePublicAPITest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC3B2152638E20031E8DC /* GRMustachePublicAPITest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BA21BA1A5440070C6CF /* GRMustacheSuites in Resources */ = {isa = PBXBuildFile; fileRef = 563D66F315264B40008628C5 /* GRMustacheSuites */; settings = {ASSET_TAGS = (); }; }; + 56214BA31BA1A5450070C6CF /* GRMustacheSuites in Resources */ = {isa = PBXBuildFile; fileRef = 563D66F315264B40008628C5 /* GRMustacheSuites */; settings = {ASSET_TAGS = (); }; }; + 56214BA41BA1A5480070C6CF /* GRMustacheSuitesTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 563D66E81526497E008628C5 /* GRMustacheSuitesTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BA51BA1A5480070C6CF /* GRMustacheSuitesTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 563D66E81526497E008628C5 /* GRMustacheSuitesTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BA61BA1A54C0070C6CF /* specs in Resources */ = {isa = PBXBuildFile; fileRef = 56B477A618D0E41A00EFF629 /* specs */; settings = {ASSET_TAGS = (); }; }; + 56214BA71BA1A54C0070C6CF /* GRMustacheJavaSuites in Resources */ = {isa = PBXBuildFile; fileRef = 56B477A318CF9F6E00EFF629 /* GRMustacheJavaSuites */; settings = {ASSET_TAGS = (); }; }; + 56214BA81BA1A54C0070C6CF /* GRHoganSuites in Resources */ = {isa = PBXBuildFile; fileRef = 56B4779918CF8D3300EFF629 /* GRHoganSuites */; settings = {ASSET_TAGS = (); }; }; + 56214BA91BA1A54C0070C6CF /* specs in Resources */ = {isa = PBXBuildFile; fileRef = 56B477A618D0E41A00EFF629 /* specs */; settings = {ASSET_TAGS = (); }; }; + 56214BAA1BA1A54C0070C6CF /* GRMustacheJavaSuites in Resources */ = {isa = PBXBuildFile; fileRef = 56B477A318CF9F6E00EFF629 /* GRMustacheJavaSuites */; settings = {ASSET_TAGS = (); }; }; + 56214BAB1BA1A54C0070C6CF /* GRHoganSuites in Resources */ = {isa = PBXBuildFile; fileRef = 56B4779918CF8D3300EFF629 /* GRHoganSuites */; settings = {ASSET_TAGS = (); }; }; + 56214BAC1BA1A5550070C6CF /* GRSpecificationSuitesTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC3BF152639560031E8DC /* GRSpecificationSuitesTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BAD1BA1A5550070C6CF /* GRMustacheJavaSuitesTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56B477A018CF9F6100EFF629 /* GRMustacheJavaSuitesTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BAE1BA1A5550070C6CF /* GRHoganSuitesTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56B4779618CF8D2A00EFF629 /* GRHoganSuitesTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BAF1BA1A5550070C6CF /* GRBooleanTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 560CE88E1526EEF4004F935E /* GRBooleanTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BB01BA1A5550070C6CF /* GRMustacheErrorHandlingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA242518C7A494006DA5F3 /* GRMustacheErrorHandlingTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BB11BA1A5550070C6CF /* GRMustacheFoundationCollectionTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 563A5EA6163403C000E7E810 /* GRMustacheFoundationCollectionTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BB21BA1A5550070C6CF /* GRMustacheParsingErrorsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5623B795152731B600DF16A6 /* GRMustacheParsingErrorsTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BB31BA1A5550070C6CF /* GRMustachePositionFilterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 568140E616365D6000310B7F /* GRMustachePositionFilterTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BB41BA1A5550070C6CF /* GRMustacheRenderingObjectTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 568140D7163659CB00310B7F /* GRMustacheRenderingObjectTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BB51BA1A5560070C6CF /* GRSpecificationSuitesTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC3BF152639560031E8DC /* GRSpecificationSuitesTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BB61BA1A5560070C6CF /* GRMustacheJavaSuitesTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56B477A018CF9F6100EFF629 /* GRMustacheJavaSuitesTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BB71BA1A5560070C6CF /* GRHoganSuitesTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56B4779618CF8D2A00EFF629 /* GRHoganSuitesTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BB81BA1A5560070C6CF /* GRBooleanTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 560CE88E1526EEF4004F935E /* GRBooleanTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BB91BA1A5560070C6CF /* GRMustacheErrorHandlingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA242518C7A494006DA5F3 /* GRMustacheErrorHandlingTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BBA1BA1A5560070C6CF /* GRMustacheFoundationCollectionTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 563A5EA6163403C000E7E810 /* GRMustacheFoundationCollectionTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BBB1BA1A5560070C6CF /* GRMustacheParsingErrorsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5623B795152731B600DF16A6 /* GRMustacheParsingErrorsTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BBC1BA1A5560070C6CF /* GRMustachePositionFilterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 568140E616365D6000310B7F /* GRMustachePositionFilterTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BBD1BA1A5560070C6CF /* GRMustacheRenderingObjectTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 568140D7163659CB00310B7F /* GRMustacheRenderingObjectTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BBE1BA1A5690070C6CF /* GRMustacheConfigurationBaseContextTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA243518C7A550006DA5F3 /* GRMustacheConfigurationBaseContextTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BBF1BA1A5690070C6CF /* GRMustacheConfigurationExtendBaseContextTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA24A218C7A6B2006DA5F3 /* GRMustacheConfigurationExtendBaseContextTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BC01BA1A5690070C6CF /* GRMustacheConfigurationTagDelimitersTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA243618C7A550006DA5F3 /* GRMustacheConfigurationTagDelimitersTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BC11BA1A5690070C6CF /* GRMustacheConfigurationTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA243718C7A550006DA5F3 /* GRMustacheConfigurationTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BC21BA1A5690070C6CF /* GRMustacheConfigurationBaseContextTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA243518C7A550006DA5F3 /* GRMustacheConfigurationBaseContextTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BC31BA1A5690070C6CF /* GRMustacheConfigurationExtendBaseContextTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA24A218C7A6B2006DA5F3 /* GRMustacheConfigurationExtendBaseContextTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BC41BA1A5690070C6CF /* GRMustacheConfigurationTagDelimitersTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA243618C7A550006DA5F3 /* GRMustacheConfigurationTagDelimitersTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BC51BA1A5690070C6CF /* GRMustacheConfigurationTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA243718C7A550006DA5F3 /* GRMustacheConfigurationTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BC61BA1A56D0070C6CF /* GRMustacheKeyedSubscriptingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56B4778C18CF8A7600EFF629 /* GRMustacheKeyedSubscriptingTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BC71BA1A56D0070C6CF /* GRMustacheContextHasValueForMustacheExpressionTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA249818C7A65E006DA5F3 /* GRMustacheContextHasValueForMustacheExpressionTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BC81BA1A56D0070C6CF /* GRMustacheContextProtectedObjectTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56B4779018CF8AD100EFF629 /* GRMustacheContextProtectedObjectTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BC91BA1A56D0070C6CF /* GRMustacheContextTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA248518C7A62E006DA5F3 /* GRMustacheContextTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BCA1BA1A56D0070C6CF /* GRMustacheContextTopMustacheObjectTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA249318C7A648006DA5F3 /* GRMustacheContextTopMustacheObjectTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BCB1BA1A56D0070C6CF /* GRMustacheContextValueForMustacheKeyTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA248618C7A62E006DA5F3 /* GRMustacheContextValueForMustacheKeyTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BCC1BA1A56D0070C6CF /* GRMustacheContextKeyAccessTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA24B218C9A2EE006DA5F3 /* GRMustacheContextKeyAccessTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BCD1BA1A56D0070C6CF /* GRMustacheKeyedSubscriptingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56B4778C18CF8A7600EFF629 /* GRMustacheKeyedSubscriptingTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BCE1BA1A56D0070C6CF /* GRMustacheContextHasValueForMustacheExpressionTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA249818C7A65E006DA5F3 /* GRMustacheContextHasValueForMustacheExpressionTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BCF1BA1A56D0070C6CF /* GRMustacheContextProtectedObjectTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56B4779018CF8AD100EFF629 /* GRMustacheContextProtectedObjectTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BD01BA1A56D0070C6CF /* GRMustacheContextTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA248518C7A62E006DA5F3 /* GRMustacheContextTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BD11BA1A56D0070C6CF /* GRMustacheContextTopMustacheObjectTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA249318C7A648006DA5F3 /* GRMustacheContextTopMustacheObjectTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BD21BA1A56D0070C6CF /* GRMustacheContextValueForMustacheKeyTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA248618C7A62E006DA5F3 /* GRMustacheContextValueForMustacheKeyTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BD31BA1A56D0070C6CF /* GRMustacheContextKeyAccessTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA24B218C9A2EE006DA5F3 /* GRMustacheContextKeyAccessTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BD41BA1A5710070C6CF /* GRMustacheFilterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA247918C7A5F8006DA5F3 /* GRMustacheFilterTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BD51BA1A5710070C6CF /* GRMustacheVariadicFilterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA247A18C7A5F8006DA5F3 /* GRMustacheVariadicFilterTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BD61BA1A5710070C6CF /* GRMustacheFilterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA247918C7A5F8006DA5F3 /* GRMustacheFilterTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BD71BA1A5710070C6CF /* GRMustacheVariadicFilterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA247A18C7A5F8006DA5F3 /* GRMustacheVariadicFilterTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BD81BA1A5760070C6CF /* GRMustacheLocalizerTestBundle in Resources */ = {isa = PBXBuildFile; fileRef = 56BA247318C7A5CB006DA5F3 /* GRMustacheLocalizerTestBundle */; settings = {ASSET_TAGS = (); }; }; + 56214BD91BA1A5760070C6CF /* GRMustacheLocalizerTestBundle in Resources */ = {isa = PBXBuildFile; fileRef = 56BA247318C7A5CB006DA5F3 /* GRMustacheLocalizerTestBundle */; settings = {ASSET_TAGS = (); }; }; + 56214BDA1BA1A57C0070C6CF /* GRMustacheLocalizerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA245418C7A5BE006DA5F3 /* GRMustacheLocalizerTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BDB1BA1A57C0070C6CF /* GRMustacheNSFormatterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA245818C7A5BE006DA5F3 /* GRMustacheNSFormatterTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BDC1BA1A57C0070C6CF /* GRMustacheNSValueTransformerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA245918C7A5BE006DA5F3 /* GRMustacheNSValueTransformerTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BDD1BA1A57C0070C6CF /* GRMustacheStandardLibraryTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA245A18C7A5BE006DA5F3 /* GRMustacheStandardLibraryTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BDE1BA1A57C0070C6CF /* GRMustacheLocalizerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA245418C7A5BE006DA5F3 /* GRMustacheLocalizerTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BDF1BA1A57C0070C6CF /* GRMustacheNSFormatterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA245818C7A5BE006DA5F3 /* GRMustacheNSFormatterTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BE01BA1A57C0070C6CF /* GRMustacheNSValueTransformerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA245918C7A5BE006DA5F3 /* GRMustacheNSValueTransformerTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BE11BA1A57C0070C6CF /* GRMustacheStandardLibraryTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA245A18C7A5BE006DA5F3 /* GRMustacheStandardLibraryTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BE21BA1A5800070C6CF /* GRMustacheTagDelegateTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56A8D48B15279F8A00D9C718 /* GRMustacheTagDelegateTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BE31BA1A5800070C6CF /* GRMustacheTagDelegateTest.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 56A8D4921527A23900D9C718 /* GRMustacheTagDelegateTest.mustache */; settings = {ASSET_TAGS = (); }; }; + 56214BE41BA1A5800070C6CF /* GRMustacheTagDelegateTest_wrapper.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 56A8D4951527A3CE00D9C718 /* GRMustacheTagDelegateTest_wrapper.mustache */; settings = {ASSET_TAGS = (); }; }; + 56214BE51BA1A5800070C6CF /* GRMustacheTagDelegateTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56A8D48B15279F8A00D9C718 /* GRMustacheTagDelegateTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BE61BA1A5800070C6CF /* GRMustacheTagDelegateTest.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 56A8D4921527A23900D9C718 /* GRMustacheTagDelegateTest.mustache */; settings = {ASSET_TAGS = (); }; }; + 56214BE71BA1A5800070C6CF /* GRMustacheTagDelegateTest_wrapper.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 56A8D4951527A3CE00D9C718 /* GRMustacheTagDelegateTest_wrapper.mustache */; settings = {ASSET_TAGS = (); }; }; + 56214BE81BA1A5850070C6CF /* GRMustacheTemplateExtendBaseContextTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA24A718C7A6D4006DA5F3 /* GRMustacheTemplateExtendBaseContextTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BE91BA1A5850070C6CF /* GRMustacheTemplateTemplateRepositoryTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56ABDBC218D23CF7009DF17A /* GRMustacheTemplateTemplateRepositoryTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BEA1BA1A5850070C6CF /* GRMustacheTemplateExtendBaseContextTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA24A718C7A6D4006DA5F3 /* GRMustacheTemplateExtendBaseContextTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BEB1BA1A5850070C6CF /* GRMustacheTemplateTemplateRepositoryTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56ABDBC218D23CF7009DF17A /* GRMustacheTemplateTemplateRepositoryTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BEC1BA1A58A0070C6CF /* GRMustacheTemplateFromMethodsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5682B46015282B8200ADD123 /* GRMustacheTemplateFromMethodsTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BED1BA1A58A0070C6CF /* GRMustacheTemplateFromMethodsTest in Resources */ = {isa = PBXBuildFile; fileRef = 5682B46E1528370E00ADD123 /* GRMustacheTemplateFromMethodsTest */; settings = {ASSET_TAGS = (); }; }; + 56214BEE1BA1A58A0070C6CF /* GRMustacheTemplateFromMethodsTest.json in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4671528324800ADD123 /* GRMustacheTemplateFromMethodsTest.json */; settings = {ASSET_TAGS = (); }; }; + 56214BEF1BA1A58A0070C6CF /* GRMustacheTemplateFromMethodsTest.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 5682B46415282BC900ADD123 /* GRMustacheTemplateFromMethodsTest.mustache */; settings = {ASSET_TAGS = (); }; }; + 56214BF01BA1A58A0070C6CF /* GRMustacheTemplateFromMethodsTest_compilerError.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4B61528D0F900ADD123 /* GRMustacheTemplateFromMethodsTest_compilerError.mustache */; settings = {ASSET_TAGS = (); }; }; + 56214BF11BA1A58A0070C6CF /* GRMustacheTemplateFromMethodsTest_compilerErrorWrapper.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4B71528D0F900ADD123 /* GRMustacheTemplateFromMethodsTest_compilerErrorWrapper.mustache */; settings = {ASSET_TAGS = (); }; }; + 56214BF21BA1A58A0070C6CF /* GRMustacheTemplateFromMethodsTest_parserError.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4B01528C69C00ADD123 /* GRMustacheTemplateFromMethodsTest_parserError.mustache */; settings = {ASSET_TAGS = (); }; }; + 56214BF31BA1A58A0070C6CF /* GRMustacheTemplateFromMethodsTest_parserErrorWrapper.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4B11528C69C00ADD123 /* GRMustacheTemplateFromMethodsTest_parserErrorWrapper.mustache */; settings = {ASSET_TAGS = (); }; }; + 56214BF41BA1A58A0070C6CF /* GRMustacheTemplateFromMethodsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5682B46015282B8200ADD123 /* GRMustacheTemplateFromMethodsTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BF51BA1A58A0070C6CF /* GRMustacheTemplateFromMethodsTest in Resources */ = {isa = PBXBuildFile; fileRef = 5682B46E1528370E00ADD123 /* GRMustacheTemplateFromMethodsTest */; settings = {ASSET_TAGS = (); }; }; + 56214BF61BA1A58A0070C6CF /* GRMustacheTemplateFromMethodsTest.json in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4671528324800ADD123 /* GRMustacheTemplateFromMethodsTest.json */; settings = {ASSET_TAGS = (); }; }; + 56214BF71BA1A58A0070C6CF /* GRMustacheTemplateFromMethodsTest.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 5682B46415282BC900ADD123 /* GRMustacheTemplateFromMethodsTest.mustache */; settings = {ASSET_TAGS = (); }; }; + 56214BF81BA1A58A0070C6CF /* GRMustacheTemplateFromMethodsTest_compilerError.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4B61528D0F900ADD123 /* GRMustacheTemplateFromMethodsTest_compilerError.mustache */; settings = {ASSET_TAGS = (); }; }; + 56214BF91BA1A58A0070C6CF /* GRMustacheTemplateFromMethodsTest_compilerErrorWrapper.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4B71528D0F900ADD123 /* GRMustacheTemplateFromMethodsTest_compilerErrorWrapper.mustache */; settings = {ASSET_TAGS = (); }; }; + 56214BFA1BA1A58A0070C6CF /* GRMustacheTemplateFromMethodsTest_parserError.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4B01528C69C00ADD123 /* GRMustacheTemplateFromMethodsTest_parserError.mustache */; settings = {ASSET_TAGS = (); }; }; + 56214BFB1BA1A58A0070C6CF /* GRMustacheTemplateFromMethodsTest_parserErrorWrapper.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4B11528C69C00ADD123 /* GRMustacheTemplateFromMethodsTest_parserErrorWrapper.mustache */; settings = {ASSET_TAGS = (); }; }; + 56214BFC1BA1A58D0070C6CF /* GRMustacheTemplateRenderMethodsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5682B46B1528342D00ADD123 /* GRMustacheTemplateRenderMethodsTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214BFD1BA1A58D0070C6CF /* GRMustacheTemplateRenderMethodsTest in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4711528371F00ADD123 /* GRMustacheTemplateRenderMethodsTest */; settings = {ASSET_TAGS = (); }; }; + 56214BFE1BA1A58D0070C6CF /* GRMustacheTemplateRenderMethodsTest.json in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4721528371F00ADD123 /* GRMustacheTemplateRenderMethodsTest.json */; settings = {ASSET_TAGS = (); }; }; + 56214BFF1BA1A58D0070C6CF /* GRMustacheTemplateRenderMethodsTest.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4731528371F00ADD123 /* GRMustacheTemplateRenderMethodsTest.mustache */; settings = {ASSET_TAGS = (); }; }; + 56214C001BA1A58E0070C6CF /* GRMustacheTemplateRenderMethodsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5682B46B1528342D00ADD123 /* GRMustacheTemplateRenderMethodsTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214C011BA1A58E0070C6CF /* GRMustacheTemplateRenderMethodsTest in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4711528371F00ADD123 /* GRMustacheTemplateRenderMethodsTest */; settings = {ASSET_TAGS = (); }; }; + 56214C021BA1A58E0070C6CF /* GRMustacheTemplateRenderMethodsTest.json in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4721528371F00ADD123 /* GRMustacheTemplateRenderMethodsTest.json */; settings = {ASSET_TAGS = (); }; }; + 56214C031BA1A58E0070C6CF /* GRMustacheTemplateRenderMethodsTest.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4731528371F00ADD123 /* GRMustacheTemplateRenderMethodsTest.mustache */; settings = {ASSET_TAGS = (); }; }; + 56214C041BA1A5920070C6CF /* GRMustacheTemplateRepositoryTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5648F1B618998BC5001F4B83 /* GRMustacheTemplateRepositoryTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214C051BA1A5920070C6CF /* GRMustacheTemplateRepositoryDataSourceTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5682B4821528472900ADD123 /* GRMustacheTemplateRepositoryDataSourceTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214C061BA1A5920070C6CF /* GRMustacheTemplateRepositoryWithDictionaryTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5682B48A1528472F00ADD123 /* GRMustacheTemplateRepositoryWithDictionaryTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214C071BA1A5920070C6CF /* GRMustacheTemplateRepositoryTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5648F1B618998BC5001F4B83 /* GRMustacheTemplateRepositoryTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214C081BA1A5920070C6CF /* GRMustacheTemplateRepositoryDataSourceTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5682B4821528472900ADD123 /* GRMustacheTemplateRepositoryDataSourceTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214C091BA1A5920070C6CF /* GRMustacheTemplateRepositoryWithDictionaryTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5682B48A1528472F00ADD123 /* GRMustacheTemplateRepositoryWithDictionaryTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214C0A1BA1A5970070C6CF /* GRMustacheTemplateRepositoryWithBundleTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5682B4861528472C00ADD123 /* GRMustacheTemplateRepositoryWithBundleTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214C0B1BA1A5970070C6CF /* GRMustacheTemplateRepositoryWithBundleTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5682B4861528472C00ADD123 /* GRMustacheTemplateRepositoryWithBundleTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214C0C1BA1A59A0070C6CF /* GRMustacheTemplateRepositoryWithBundleTestResources in Resources */ = {isa = PBXBuildFile; fileRef = 5688264C199DFCDF00922497 /* GRMustacheTemplateRepositoryWithBundleTestResources */; settings = {ASSET_TAGS = (); }; }; + 56214C0D1BA1A59A0070C6CF /* GRMustacheTemplateRepositoryWithBundleTestResources in Resources */ = {isa = PBXBuildFile; fileRef = 5688264C199DFCDF00922497 /* GRMustacheTemplateRepositoryWithBundleTestResources */; settings = {ASSET_TAGS = (); }; }; + 56214C0E1BA1A59D0070C6CF /* GRMustacheTemplateRepositoryWithBundleTest in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4A215284A9300ADD123 /* GRMustacheTemplateRepositoryWithBundleTest */; settings = {ASSET_TAGS = (); }; }; + 56214C0F1BA1A59D0070C6CF /* GRMustacheTemplateRepositoryWithBundleTest.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 5682B49C152849FD00ADD123 /* GRMustacheTemplateRepositoryWithBundleTest.mustache */; settings = {ASSET_TAGS = (); }; }; + 56214C101BA1A59D0070C6CF /* GRMustacheTemplateRepositoryWithBundleTest.text in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4A315284A9400ADD123 /* GRMustacheTemplateRepositoryWithBundleTest.text */; settings = {ASSET_TAGS = (); }; }; + 56214C111BA1A59D0070C6CF /* GRMustacheTemplateRepositoryWithBundleTest_partial in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4A815284AB600ADD123 /* GRMustacheTemplateRepositoryWithBundleTest_partial */; settings = {ASSET_TAGS = (); }; }; + 56214C121BA1A59D0070C6CF /* GRMustacheTemplateRepositoryWithBundleTest_partial.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 5682B49D152849FD00ADD123 /* GRMustacheTemplateRepositoryWithBundleTest_partial.mustache */; settings = {ASSET_TAGS = (); }; }; + 56214C131BA1A59D0070C6CF /* GRMustacheTemplateRepositoryWithBundleTest_partial.text in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4AB15284ABC00ADD123 /* GRMustacheTemplateRepositoryWithBundleTest_partial.text */; settings = {ASSET_TAGS = (); }; }; + 56214C141BA1A59E0070C6CF /* GRMustacheTemplateRepositoryWithBundleTest in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4A215284A9300ADD123 /* GRMustacheTemplateRepositoryWithBundleTest */; settings = {ASSET_TAGS = (); }; }; + 56214C151BA1A59E0070C6CF /* GRMustacheTemplateRepositoryWithBundleTest.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 5682B49C152849FD00ADD123 /* GRMustacheTemplateRepositoryWithBundleTest.mustache */; settings = {ASSET_TAGS = (); }; }; + 56214C161BA1A59E0070C6CF /* GRMustacheTemplateRepositoryWithBundleTest.text in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4A315284A9400ADD123 /* GRMustacheTemplateRepositoryWithBundleTest.text */; settings = {ASSET_TAGS = (); }; }; + 56214C171BA1A59E0070C6CF /* GRMustacheTemplateRepositoryWithBundleTest_partial in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4A815284AB600ADD123 /* GRMustacheTemplateRepositoryWithBundleTest_partial */; settings = {ASSET_TAGS = (); }; }; + 56214C181BA1A59E0070C6CF /* GRMustacheTemplateRepositoryWithBundleTest_partial.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 5682B49D152849FD00ADD123 /* GRMustacheTemplateRepositoryWithBundleTest_partial.mustache */; settings = {ASSET_TAGS = (); }; }; + 56214C191BA1A59E0070C6CF /* GRMustacheTemplateRepositoryWithBundleTest_partial.text in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4AB15284ABC00ADD123 /* GRMustacheTemplateRepositoryWithBundleTest_partial.text */; settings = {ASSET_TAGS = (); }; }; + 56214C1A1BA1A5A60070C6CF /* GRMustacheTemplateRepositoryWithBaseURLTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 568140E016365D3000310B7F /* GRMustacheTemplateRepositoryWithBaseURLTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214C1B1BA1A5A60070C6CF /* GRMustacheTemplateRepositoryWithDirectoryTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 568140E116365D3000310B7F /* GRMustacheTemplateRepositoryWithDirectoryTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214C1C1BA1A5A70070C6CF /* GRMustacheTemplateRepositoryWithBaseURLTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 568140E016365D3000310B7F /* GRMustacheTemplateRepositoryWithBaseURLTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214C1D1BA1A5A70070C6CF /* GRMustacheTemplateRepositoryWithDirectoryTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 568140E116365D3000310B7F /* GRMustacheTemplateRepositoryWithDirectoryTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214C1E1BA1A5AB0070C6CF /* GRMustacheTemplateRepositoryTest in Resources */ = {isa = PBXBuildFile; fileRef = 568140DD16365CF500310B7F /* GRMustacheTemplateRepositoryTest */; settings = {ASSET_TAGS = (); }; }; + 56214C1F1BA1A5AB0070C6CF /* GRMustacheTemplateRepositoryTest_ISOLatin1 in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4951528486900ADD123 /* GRMustacheTemplateRepositoryTest_ISOLatin1 */; settings = {ASSET_TAGS = (); }; }; + 56214C201BA1A5AB0070C6CF /* GRMustacheTemplateRepositoryTest_UTF8 in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4961528486A00ADD123 /* GRMustacheTemplateRepositoryTest_UTF8 */; settings = {ASSET_TAGS = (); }; }; + 56214C211BA1A5AB0070C6CF /* GRMustacheTemplateRepositoryTest in Resources */ = {isa = PBXBuildFile; fileRef = 568140DD16365CF500310B7F /* GRMustacheTemplateRepositoryTest */; settings = {ASSET_TAGS = (); }; }; + 56214C221BA1A5AB0070C6CF /* GRMustacheTemplateRepositoryTest_ISOLatin1 in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4951528486900ADD123 /* GRMustacheTemplateRepositoryTest_ISOLatin1 */; settings = {ASSET_TAGS = (); }; }; + 56214C231BA1A5AB0070C6CF /* GRMustacheTemplateRepositoryTest_UTF8 in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4961528486A00ADD123 /* GRMustacheTemplateRepositoryTest_UTF8 */; settings = {ASSET_TAGS = (); }; }; + 56214C241BA1A5B00070C6CF /* GRMustacheSuites_7_2 in Resources */ = {isa = PBXBuildFile; fileRef = 56C1FDEA19A66DC500006AB4 /* GRMustacheSuites_7_2 */; settings = {ASSET_TAGS = (); }; }; + 56214C251BA1A5B10070C6CF /* GRMustacheSuites_7_2 in Resources */ = {isa = PBXBuildFile; fileRef = 56C1FDEA19A66DC500006AB4 /* GRMustacheSuites_7_2 */; settings = {ASSET_TAGS = (); }; }; + 56214C261BA1A5B40070C6CF /* GRMustacheSuites_7_2_Test.m in Sources */ = {isa = PBXBuildFile; fileRef = 56C1FDE719A66DBE00006AB4 /* GRMustacheSuites_7_2_Test.m */; settings = {ASSET_TAGS = (); }; }; + 56214C271BA1A5B40070C6CF /* GRMustacheSuites_7_2_Test.m in Sources */ = {isa = PBXBuildFile; fileRef = 56C1FDE719A66DBE00006AB4 /* GRMustacheSuites_7_2_Test.m */; settings = {ASSET_TAGS = (); }; }; + 56214C281BA1A5B80070C6CF /* GRMustacheEachFilterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56C1FDFC19A720B900006AB4 /* GRMustacheEachFilterTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214C291BA1A5B80070C6CF /* GRMustacheRenderingObject_7_2_Test.m in Sources */ = {isa = PBXBuildFile; fileRef = 56C1FDF119A6721100006AB4 /* GRMustacheRenderingObject_7_2_Test.m */; settings = {ASSET_TAGS = (); }; }; + 56214C2A1BA1A5B90070C6CF /* GRMustacheEachFilterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56C1FDFC19A720B900006AB4 /* GRMustacheEachFilterTest.m */; settings = {ASSET_TAGS = (); }; }; + 56214C2B1BA1A5B90070C6CF /* GRMustacheRenderingObject_7_2_Test.m in Sources */ = {isa = PBXBuildFile; fileRef = 56C1FDF119A6721100006AB4 /* GRMustacheRenderingObject_7_2_Test.m */; settings = {ASSET_TAGS = (); }; }; + 56214C2C1BA1A6870070C6CF /* GRMustache.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DEC292152631300031E8DC /* GRMustache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 56214C2D1BA1A68E0070C6CF /* GRMustacheVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DEC2BB152631300031E8DC /* GRMustacheVersion.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 56214C2F1BA1A6A70070C6CF /* GRMustache_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DEC294152631300031E8DC /* GRMustache_private.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 56214C301BA1A6AD0070C6CF /* GRMustacheTranslateCharacters_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375D19B8EF2800854524 /* GRMustacheTranslateCharacters_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214C331BA1A6B50070C6CF /* GRMustacheError.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375A19B8EF2800854524 /* GRMustacheError.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 56214C341BA1A6BA0070C6CF /* GRMustacheContentType.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375919B8EF2800854524 /* GRMustacheContentType.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 56214C351BA1A6BE0070C6CF /* GRMustacheBuffer_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375819B8EF2800854524 /* GRMustacheBuffer_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214C361BA1A6C20070C6CF /* GRMustacheAvailabilityMacros_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375719B8EF2800854524 /* GRMustacheAvailabilityMacros_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214C371BA1A6C50070C6CF /* GRMustacheAvailabilityMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375619B8EF2800854524 /* GRMustacheAvailabilityMacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 56214C381BA1A6CD0070C6CF /* GRMustacheURLLibrary_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF373019B8EEC700854524 /* GRMustacheURLLibrary_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214C5D1BA1A6F20070C6CF /* GRMustacheConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF365819B8EE7A00854524 /* GRMustacheConfiguration.m */; settings = {ASSET_TAGS = (); }; }; + 56214C5E1BA1A6F20070C6CF /* GRMustacheExpressionParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF366119B8EE8B00854524 /* GRMustacheExpressionParser.m */; settings = {ASSET_TAGS = (); }; }; + 56214C5F1BA1A6F20070C6CF /* GRMustacheTemplateParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF366319B8EE8B00854524 /* GRMustacheTemplateParser.m */; settings = {ASSET_TAGS = (); }; }; + 56214C601BA1A6F20070C6CF /* GRMustacheToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF366519B8EE8B00854524 /* GRMustacheToken.m */; settings = {ASSET_TAGS = (); }; }; + 56214C611BA1A6F20070C6CF /* GRMustacheCompiler.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368019B8EE9D00854524 /* GRMustacheCompiler.m */; settings = {ASSET_TAGS = (); }; }; + 56214C621BA1A6F20070C6CF /* GRMustacheExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367519B8EE9D00854524 /* GRMustacheExpression.m */; settings = {ASSET_TAGS = (); }; }; + 56214C631BA1A6F20070C6CF /* GRMustacheFilteredExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367819B8EE9D00854524 /* GRMustacheFilteredExpression.m */; settings = {ASSET_TAGS = (); }; }; + 56214C641BA1A6F20070C6CF /* GRMustacheIdentifierExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367A19B8EE9D00854524 /* GRMustacheIdentifierExpression.m */; settings = {ASSET_TAGS = (); }; }; + 56214C651BA1A6F20070C6CF /* GRMustacheImplicitIteratorExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367C19B8EE9D00854524 /* GRMustacheImplicitIteratorExpression.m */; settings = {ASSET_TAGS = (); }; }; + 56214C661BA1A6F20070C6CF /* GRMustacheScopedExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367E19B8EE9D00854524 /* GRMustacheScopedExpression.m */; settings = {ASSET_TAGS = (); }; }; + 56214C671BA1A6F20070C6CF /* GRMustacheInheritedPartialNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368319B8EE9D00854524 /* GRMustacheInheritedPartialNode.m */; settings = {ASSET_TAGS = (); }; }; + 56214C681BA1A6F20070C6CF /* GRMustacheInheritableSectionNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368519B8EE9D00854524 /* GRMustacheInheritableSectionNode.m */; settings = {ASSET_TAGS = (); }; }; + 56214C691BA1A6F20070C6CF /* GRMustachePartialNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368719B8EE9D00854524 /* GRMustachePartialNode.m */; settings = {ASSET_TAGS = (); }; }; + 56214C6A1BA1A6F20070C6CF /* GRMustacheSectionTag.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368919B8EE9D00854524 /* GRMustacheSectionTag.m */; settings = {ASSET_TAGS = (); }; }; + 56214C6B1BA1A6F20070C6CF /* GRMustacheTag.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368C19B8EE9D00854524 /* GRMustacheTag.m */; settings = {ASSET_TAGS = (); }; }; + 56214C6C1BA1A6F20070C6CF /* GRMustacheTemplateAST.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368E19B8EE9D00854524 /* GRMustacheTemplateAST.m */; settings = {ASSET_TAGS = (); }; }; + 56214C6D1BA1A6F20070C6CF /* GRMustacheTextNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF369219B8EE9D00854524 /* GRMustacheTextNode.m */; settings = {ASSET_TAGS = (); }; }; + 56214C6E1BA1A6F20070C6CF /* GRMustacheVariableTag.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF369419B8EE9D00854524 /* GRMustacheVariableTag.m */; settings = {ASSET_TAGS = (); }; }; + 56214C6F1BA1A6F20070C6CF /* GRMustacheContext.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36D819B8EEAD00854524 /* GRMustacheContext.m */; settings = {ASSET_TAGS = (); }; }; + 56214C701BA1A6F20070C6CF /* GRMustacheExpressionInvocation.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36DA19B8EEAD00854524 /* GRMustacheExpressionInvocation.m */; settings = {ASSET_TAGS = (); }; }; + 56214C711BA1A6F20070C6CF /* GRMustacheFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36DD19B8EEAD00854524 /* GRMustacheFilter.m */; settings = {ASSET_TAGS = (); }; }; + 56214C721BA1A6F20070C6CF /* GRMustacheKeyAccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36DF19B8EEAE00854524 /* GRMustacheKeyAccess.m */; settings = {ASSET_TAGS = (); }; }; + 56214C731BA1A6F20070C6CF /* GRMustacheRendering.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36E219B8EEAE00854524 /* GRMustacheRendering.m */; settings = {ASSET_TAGS = (); }; }; + 56214C741BA1A6F20070C6CF /* GRMustacheRenderingEngine.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36E419B8EEAE00854524 /* GRMustacheRenderingEngine.m */; settings = {ASSET_TAGS = (); }; }; + 56214C751BA1A6F20070C6CF /* GRMustacheTemplate.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF370C19B8EEB900854524 /* GRMustacheTemplate.m */; settings = {ASSET_TAGS = (); }; }; + 56214C761BA1A6F20070C6CF /* GRMustacheTemplateRepository.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF370F19B8EEB900854524 /* GRMustacheTemplateRepository.m */; settings = {ASSET_TAGS = (); }; }; + 56214C771BA1A6F20070C6CF /* GRMustacheExpressionGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 56B01A4B19C49AF5000439C7 /* GRMustacheExpressionGenerator.m */; settings = {ASSET_TAGS = (); }; }; + 56214C781BA1A6F20070C6CF /* GRMustacheTemplateGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF371E19B8EEC700854524 /* GRMustacheTemplateGenerator.m */; settings = {ASSET_TAGS = (); }; }; + 56214C791BA1A6F20070C6CF /* NSFormatter+GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372119B8EEC700854524 /* NSFormatter+GRMustache.m */; settings = {ASSET_TAGS = (); }; }; + 56214C7A1BA1A6F20070C6CF /* NSValueTransformer+GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372319B8EEC700854524 /* NSValueTransformer+GRMustache.m */; settings = {ASSET_TAGS = (); }; }; + 56214C7B1BA1A6F20070C6CF /* GRMustacheEachFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372519B8EEC700854524 /* GRMustacheEachFilter.m */; settings = {ASSET_TAGS = (); }; }; + 56214C7C1BA1A6F20070C6CF /* GRMustacheHTMLLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372719B8EEC700854524 /* GRMustacheHTMLLibrary.m */; settings = {ASSET_TAGS = (); }; }; + 56214C7D1BA1A6F20070C6CF /* GRMustacheJavascriptLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372919B8EEC700854524 /* GRMustacheJavascriptLibrary.m */; settings = {ASSET_TAGS = (); }; }; + 56214C7E1BA1A6F20070C6CF /* GRMustacheLocalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372C19B8EEC700854524 /* GRMustacheLocalizer.m */; settings = {ASSET_TAGS = (); }; }; + 56214C7F1BA1A6F20070C6CF /* GRMustacheStandardLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372D19B8EEC700854524 /* GRMustacheStandardLibrary.m */; settings = {ASSET_TAGS = (); }; }; + 56214C801BA1A6F20070C6CF /* GRMustacheURLLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372F19B8EEC700854524 /* GRMustacheURLLibrary.m */; settings = {ASSET_TAGS = (); }; }; + 56214C811BA1A6F20070C6CF /* GRMustacheError.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF375B19B8EF2800854524 /* GRMustacheError.m */; settings = {ASSET_TAGS = (); }; }; + 56214C821BA1A6F20070C6CF /* GRMustacheTranslateCharacters.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF375C19B8EF2800854524 /* GRMustacheTranslateCharacters.m */; settings = {ASSET_TAGS = (); }; }; + 56214C831BA1A6F20070C6CF /* GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC293152631300031E8DC /* GRMustache.m */; settings = {ASSET_TAGS = (); }; }; + 56214C841BA1A70D0070C6CF /* GRMustacheConfiguration_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF365919B8EE7A00854524 /* GRMustacheConfiguration_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214C851BA1A70D0070C6CF /* GRMustacheExpressionParser_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF366219B8EE8B00854524 /* GRMustacheExpressionParser_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214C861BA1A70D0070C6CF /* GRMustacheTemplateParser_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF366419B8EE8B00854524 /* GRMustacheTemplateParser_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214C871BA1A70D0070C6CF /* GRMustacheToken_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF366619B8EE8B00854524 /* GRMustacheToken_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214C881BA1A70D0070C6CF /* GRMustacheCompiler_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368119B8EE9D00854524 /* GRMustacheCompiler_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214C891BA1A70D0070C6CF /* GRMustacheExpression_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF367619B8EE9D00854524 /* GRMustacheExpression_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214C8A1BA1A70D0070C6CF /* GRMustacheExpressionVisitor_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF367719B8EE9D00854524 /* GRMustacheExpressionVisitor_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214C8B1BA1A70D0070C6CF /* GRMustacheFilteredExpression_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF367919B8EE9D00854524 /* GRMustacheFilteredExpression_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214C8C1BA1A70D0070C6CF /* GRMustacheIdentifierExpression_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF367B19B8EE9D00854524 /* GRMustacheIdentifierExpression_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214C8D1BA1A70D0070C6CF /* GRMustacheImplicitIteratorExpression_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF367D19B8EE9D00854524 /* GRMustacheImplicitIteratorExpression_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214C8E1BA1A70D0070C6CF /* GRMustacheScopedExpression_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF367F19B8EE9D00854524 /* GRMustacheScopedExpression_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214C8F1BA1A70D0070C6CF /* GRMustacheInheritedPartialNode_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368419B8EE9D00854524 /* GRMustacheInheritedPartialNode_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214C901BA1A70D0070C6CF /* GRMustacheInheritableSectionNode_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368619B8EE9D00854524 /* GRMustacheInheritableSectionNode_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214C911BA1A70D0070C6CF /* GRMustachePartialNode_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368819B8EE9D00854524 /* GRMustachePartialNode_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214C921BA1A70D0070C6CF /* GRMustacheSectionTag_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368A19B8EE9D00854524 /* GRMustacheSectionTag_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214C931BA1A70D0070C6CF /* GRMustacheTag_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368D19B8EE9D00854524 /* GRMustacheTag_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214C941BA1A70D0070C6CF /* GRMustacheTemplateAST_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368F19B8EE9D00854524 /* GRMustacheTemplateAST_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214C951BA1A70D0070C6CF /* GRMustacheTemplateASTNode_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF369019B8EE9D00854524 /* GRMustacheTemplateASTNode_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214C961BA1A70D0070C6CF /* GRMustacheTemplateASTVisitor_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF369119B8EE9D00854524 /* GRMustacheTemplateASTVisitor_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214C971BA1A70D0070C6CF /* GRMustacheTextNode_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF369319B8EE9D00854524 /* GRMustacheTextNode_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214C981BA1A70D0070C6CF /* GRMustacheVariableTag_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF369519B8EE9D00854524 /* GRMustacheVariableTag_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214C991BA1A70D0070C6CF /* GRMustacheContext_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36D919B8EEAD00854524 /* GRMustacheContext_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214C9A1BA1A70D0070C6CF /* GRMustacheExpressionInvocation_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36DB19B8EEAD00854524 /* GRMustacheExpressionInvocation_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214C9B1BA1A70D0070C6CF /* GRMustacheFilter_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36DE19B8EEAD00854524 /* GRMustacheFilter_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214C9C1BA1A70D0070C6CF /* GRMustacheKeyAccess_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36E019B8EEAE00854524 /* GRMustacheKeyAccess_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214C9D1BA1A70D0070C6CF /* GRMustacheRendering_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36E319B8EEAE00854524 /* GRMustacheRendering_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214C9E1BA1A70D0070C6CF /* GRMustacheRenderingEngine_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36E519B8EEAE00854524 /* GRMustacheRenderingEngine_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214C9F1BA1A70D0070C6CF /* GRMustacheTemplate_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF370D19B8EEB900854524 /* GRMustacheTemplate_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214CA01BA1A70D0070C6CF /* GRMustacheTemplateRepository_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF371019B8EEB900854524 /* GRMustacheTemplateRepository_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214CA11BA1A70D0070C6CF /* GRMustacheExpressionGenerator_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56B01A4A19C49AF5000439C7 /* GRMustacheExpressionGenerator_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214CA21BA1A70D0070C6CF /* GRMustacheTemplateGenerator_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF371F19B8EEC700854524 /* GRMustacheTemplateGenerator_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214CA31BA1A70D0070C6CF /* GRMustacheEachFilter_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF372619B8EEC700854524 /* GRMustacheEachFilter_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214CA41BA1A70D0070C6CF /* GRMustacheHTMLLibrary_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF372819B8EEC700854524 /* GRMustacheHTMLLibrary_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214CA51BA1A70D0070C6CF /* GRMustacheJavascriptLibrary_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF372A19B8EEC700854524 /* GRMustacheJavascriptLibrary_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214CA61BA1A70D0070C6CF /* GRMustacheStandardLibrary_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF372E19B8EEC700854524 /* GRMustacheStandardLibrary_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214CA71BA1A7240070C6CF /* GRMustacheConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF365719B8EE7A00854524 /* GRMustacheConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 56214CA81BA1A7300070C6CF /* GRMustacheTag.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368B19B8EE9D00854524 /* GRMustacheTag.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 56214CA91BA1A7490070C6CF /* GRMustacheContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36D719B8EEAD00854524 /* GRMustacheContext.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 56214CAA1BA1A7490070C6CF /* GRMustacheFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36DC19B8EEAD00854524 /* GRMustacheFilter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 56214CAB1BA1A7490070C6CF /* GRMustacheRendering.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36E119B8EEAE00854524 /* GRMustacheRendering.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 56214CAC1BA1A7490070C6CF /* GRMustacheSafeKeyAccess.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36E619B8EEAE00854524 /* GRMustacheSafeKeyAccess.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 56214CAD1BA1A7490070C6CF /* GRMustacheTagDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36E719B8EEAE00854524 /* GRMustacheTagDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 56214CAE1BA1A7490070C6CF /* GRMustacheTemplate.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF370B19B8EEB900854524 /* GRMustacheTemplate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 56214CAF1BA1A7490070C6CF /* GRMustacheTemplateRepository.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF370E19B8EEB900854524 /* GRMustacheTemplateRepository.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 56214CB01BA1A7490070C6CF /* NSFormatter+GRMustache.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF372019B8EEC700854524 /* NSFormatter+GRMustache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 56214CB11BA1A7490070C6CF /* NSValueTransformer+GRMustache.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF372219B8EEC700854524 /* NSValueTransformer+GRMustache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 56214CB21BA1A7490070C6CF /* GRMustacheLocalizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF372B19B8EEC700854524 /* GRMustacheLocalizer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 56214CB31BA1A8BE0070C6CF /* NSJSONSerialization+Comments.m in Sources */ = {isa = PBXBuildFile; fileRef = 56A7591319C173E6008D119F /* NSJSONSerialization+Comments.m */; settings = {ASSET_TAGS = (); }; }; + 56214CB41BA1A8BE0070C6CF /* NSJSONSerialization+Comments.m in Sources */ = {isa = PBXBuildFile; fileRef = 56A7591319C173E6008D119F /* NSJSONSerialization+Comments.m */; settings = {ASSET_TAGS = (); }; }; 6586A0651B9E2DAD0067C98E /* GRMustache.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DEC292152631300031E8DC /* GRMustache.h */; settings = {ATTRIBUTES = (Public, ); }; }; 6586A0661B9E2DB30067C98E /* GRMustache_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DEC294152631300031E8DC /* GRMustache_private.h */; settings = {ASSET_TAGS = (); }; }; - 6586A0671B9E2DB90067C98E /* GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC293152631300031E8DC /* GRMustache.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6586A0671B9E2DB90067C98E /* GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC293152631300031E8DC /* GRMustache.m */; }; 6586A0681B9E2DBC0067C98E /* GRMustacheVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DEC2BB152631300031E8DC /* GRMustacheVersion.h */; settings = {ATTRIBUTES = (Public, ); }; }; 6586A0691B9E2E100067C98E /* GRMustacheAvailabilityMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375619B8EF2800854524 /* GRMustacheAvailabilityMacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; 6586A06A1B9E2E100067C98E /* GRMustacheAvailabilityMacros_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375719B8EF2800854524 /* GRMustacheAvailabilityMacros_private.h */; settings = {ASSET_TAGS = (); }; }; 6586A06B1B9E2E100067C98E /* GRMustacheBuffer_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375819B8EF2800854524 /* GRMustacheBuffer_private.h */; settings = {ASSET_TAGS = (); }; }; 6586A06C1B9E2E100067C98E /* GRMustacheContentType.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375919B8EF2800854524 /* GRMustacheContentType.h */; settings = {ATTRIBUTES = (Public, ); }; }; 6586A06D1B9E2E100067C98E /* GRMustacheError.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375A19B8EF2800854524 /* GRMustacheError.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6586A06E1B9E2E100067C98E /* GRMustacheError.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF375B19B8EF2800854524 /* GRMustacheError.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 6586A06F1B9E2E100067C98E /* GRMustacheTranslateCharacters.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF375C19B8EF2800854524 /* GRMustacheTranslateCharacters.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6586A06E1B9E2E100067C98E /* GRMustacheError.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF375B19B8EF2800854524 /* GRMustacheError.m */; }; + 6586A06F1B9E2E100067C98E /* GRMustacheTranslateCharacters.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF375C19B8EF2800854524 /* GRMustacheTranslateCharacters.m */; }; 6586A0701B9E2E100067C98E /* GRMustacheTranslateCharacters_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375D19B8EF2800854524 /* GRMustacheTranslateCharacters_private.h */; settings = {ASSET_TAGS = (); }; }; - 6586A0711B9E2E310067C98E /* GRMustacheExpressionGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 56B01A4B19C49AF5000439C7 /* GRMustacheExpressionGenerator.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6586A0711B9E2E310067C98E /* GRMustacheExpressionGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 56B01A4B19C49AF5000439C7 /* GRMustacheExpressionGenerator.m */; }; 6586A0721B9E2E310067C98E /* GRMustacheExpressionGenerator_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56B01A4A19C49AF5000439C7 /* GRMustacheExpressionGenerator_private.h */; settings = {ASSET_TAGS = (); }; }; - 6586A0731B9E2E310067C98E /* GRMustacheTemplateGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF371E19B8EEC700854524 /* GRMustacheTemplateGenerator.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6586A0731B9E2E310067C98E /* GRMustacheTemplateGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF371E19B8EEC700854524 /* GRMustacheTemplateGenerator.m */; }; 6586A0741B9E2E310067C98E /* GRMustacheTemplateGenerator_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF371F19B8EEC700854524 /* GRMustacheTemplateGenerator_private.h */; settings = {ASSET_TAGS = (); }; }; 6586A0751B9E2E310067C98E /* NSFormatter+GRMustache.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF372019B8EEC700854524 /* NSFormatter+GRMustache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6586A0761B9E2E310067C98E /* NSFormatter+GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372119B8EEC700854524 /* NSFormatter+GRMustache.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6586A0761B9E2E310067C98E /* NSFormatter+GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372119B8EEC700854524 /* NSFormatter+GRMustache.m */; }; 6586A0771B9E2E310067C98E /* NSValueTransformer+GRMustache.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF372219B8EEC700854524 /* NSValueTransformer+GRMustache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6586A0781B9E2E310067C98E /* NSValueTransformer+GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372319B8EEC700854524 /* NSValueTransformer+GRMustache.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 6586A0791B9E2E360067C98E /* GRMustacheEachFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372519B8EEC700854524 /* GRMustacheEachFilter.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6586A0781B9E2E310067C98E /* NSValueTransformer+GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372319B8EEC700854524 /* NSValueTransformer+GRMustache.m */; }; + 6586A0791B9E2E360067C98E /* GRMustacheEachFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372519B8EEC700854524 /* GRMustacheEachFilter.m */; }; 6586A07A1B9E2E360067C98E /* GRMustacheEachFilter_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF372619B8EEC700854524 /* GRMustacheEachFilter_private.h */; settings = {ASSET_TAGS = (); }; }; - 6586A07B1B9E2E360067C98E /* GRMustacheHTMLLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372719B8EEC700854524 /* GRMustacheHTMLLibrary.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6586A07B1B9E2E360067C98E /* GRMustacheHTMLLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372719B8EEC700854524 /* GRMustacheHTMLLibrary.m */; }; 6586A07C1B9E2E360067C98E /* GRMustacheHTMLLibrary_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF372819B8EEC700854524 /* GRMustacheHTMLLibrary_private.h */; settings = {ASSET_TAGS = (); }; }; - 6586A07D1B9E2E360067C98E /* GRMustacheJavascriptLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372919B8EEC700854524 /* GRMustacheJavascriptLibrary.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6586A07D1B9E2E360067C98E /* GRMustacheJavascriptLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372919B8EEC700854524 /* GRMustacheJavascriptLibrary.m */; }; 6586A07E1B9E2E360067C98E /* GRMustacheJavascriptLibrary_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF372A19B8EEC700854524 /* GRMustacheJavascriptLibrary_private.h */; settings = {ASSET_TAGS = (); }; }; 6586A07F1B9E2E360067C98E /* GRMustacheLocalizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF372B19B8EEC700854524 /* GRMustacheLocalizer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6586A0801B9E2E360067C98E /* GRMustacheLocalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372C19B8EEC700854524 /* GRMustacheLocalizer.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 6586A0811B9E2E360067C98E /* GRMustacheStandardLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372D19B8EEC700854524 /* GRMustacheStandardLibrary.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6586A0801B9E2E360067C98E /* GRMustacheLocalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372C19B8EEC700854524 /* GRMustacheLocalizer.m */; }; + 6586A0811B9E2E360067C98E /* GRMustacheStandardLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372D19B8EEC700854524 /* GRMustacheStandardLibrary.m */; }; 6586A0821B9E2E360067C98E /* GRMustacheStandardLibrary_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF372E19B8EEC700854524 /* GRMustacheStandardLibrary_private.h */; settings = {ASSET_TAGS = (); }; }; - 6586A0831B9E2E360067C98E /* GRMustacheURLLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372F19B8EEC700854524 /* GRMustacheURLLibrary.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6586A0831B9E2E360067C98E /* GRMustacheURLLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372F19B8EEC700854524 /* GRMustacheURLLibrary.m */; }; 6586A0841B9E2E360067C98E /* GRMustacheURLLibrary_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF373019B8EEC700854524 /* GRMustacheURLLibrary_private.h */; settings = {ASSET_TAGS = (); }; }; 6586A0851B9E2E4A0067C98E /* GRMustacheTemplate.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF370B19B8EEB900854524 /* GRMustacheTemplate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6586A0861B9E2E4A0067C98E /* GRMustacheTemplate.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF370C19B8EEB900854524 /* GRMustacheTemplate.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6586A0861B9E2E4A0067C98E /* GRMustacheTemplate.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF370C19B8EEB900854524 /* GRMustacheTemplate.m */; }; 6586A0871B9E2E4A0067C98E /* GRMustacheTemplate_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF370D19B8EEB900854524 /* GRMustacheTemplate_private.h */; settings = {ASSET_TAGS = (); }; }; 6586A0881B9E2E4A0067C98E /* GRMustacheTemplateRepository.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF370E19B8EEB900854524 /* GRMustacheTemplateRepository.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6586A0891B9E2E4A0067C98E /* GRMustacheTemplateRepository.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF370F19B8EEB900854524 /* GRMustacheTemplateRepository.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6586A0891B9E2E4A0067C98E /* GRMustacheTemplateRepository.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF370F19B8EEB900854524 /* GRMustacheTemplateRepository.m */; }; 6586A08A1B9E2E4A0067C98E /* GRMustacheTemplateRepository_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF371019B8EEB900854524 /* GRMustacheTemplateRepository_private.h */; settings = {ASSET_TAGS = (); }; }; 6586A08B1B9E2E4F0067C98E /* GRMustacheContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36D719B8EEAD00854524 /* GRMustacheContext.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6586A08C1B9E2E4F0067C98E /* GRMustacheContext.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36D819B8EEAD00854524 /* GRMustacheContext.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6586A08C1B9E2E4F0067C98E /* GRMustacheContext.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36D819B8EEAD00854524 /* GRMustacheContext.m */; }; 6586A08D1B9E2E4F0067C98E /* GRMustacheContext_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36D919B8EEAD00854524 /* GRMustacheContext_private.h */; settings = {ASSET_TAGS = (); }; }; - 6586A08E1B9E2E4F0067C98E /* GRMustacheExpressionInvocation.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36DA19B8EEAD00854524 /* GRMustacheExpressionInvocation.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6586A08E1B9E2E4F0067C98E /* GRMustacheExpressionInvocation.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36DA19B8EEAD00854524 /* GRMustacheExpressionInvocation.m */; }; 6586A08F1B9E2E4F0067C98E /* GRMustacheExpressionInvocation_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36DB19B8EEAD00854524 /* GRMustacheExpressionInvocation_private.h */; settings = {ASSET_TAGS = (); }; }; 6586A0901B9E2E4F0067C98E /* GRMustacheFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36DC19B8EEAD00854524 /* GRMustacheFilter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6586A0911B9E2E4F0067C98E /* GRMustacheFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36DD19B8EEAD00854524 /* GRMustacheFilter.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6586A0911B9E2E4F0067C98E /* GRMustacheFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36DD19B8EEAD00854524 /* GRMustacheFilter.m */; }; 6586A0921B9E2E4F0067C98E /* GRMustacheFilter_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36DE19B8EEAD00854524 /* GRMustacheFilter_private.h */; settings = {ASSET_TAGS = (); }; }; - 6586A0931B9E2E4F0067C98E /* GRMustacheKeyAccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36DF19B8EEAE00854524 /* GRMustacheKeyAccess.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6586A0931B9E2E4F0067C98E /* GRMustacheKeyAccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36DF19B8EEAE00854524 /* GRMustacheKeyAccess.m */; }; 6586A0941B9E2E4F0067C98E /* GRMustacheKeyAccess_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36E019B8EEAE00854524 /* GRMustacheKeyAccess_private.h */; settings = {ASSET_TAGS = (); }; }; 6586A0951B9E2E4F0067C98E /* GRMustacheRendering.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36E119B8EEAE00854524 /* GRMustacheRendering.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6586A0961B9E2E4F0067C98E /* GRMustacheRendering.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36E219B8EEAE00854524 /* GRMustacheRendering.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6586A0961B9E2E4F0067C98E /* GRMustacheRendering.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36E219B8EEAE00854524 /* GRMustacheRendering.m */; }; 6586A0971B9E2E4F0067C98E /* GRMustacheRendering_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36E319B8EEAE00854524 /* GRMustacheRendering_private.h */; settings = {ASSET_TAGS = (); }; }; - 6586A0981B9E2E4F0067C98E /* GRMustacheRenderingEngine.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36E419B8EEAE00854524 /* GRMustacheRenderingEngine.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6586A0981B9E2E4F0067C98E /* GRMustacheRenderingEngine.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36E419B8EEAE00854524 /* GRMustacheRenderingEngine.m */; }; 6586A0991B9E2E4F0067C98E /* GRMustacheRenderingEngine_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36E519B8EEAE00854524 /* GRMustacheRenderingEngine_private.h */; settings = {ASSET_TAGS = (); }; }; 6586A09A1B9E2E4F0067C98E /* GRMustacheSafeKeyAccess.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36E619B8EEAE00854524 /* GRMustacheSafeKeyAccess.h */; settings = {ATTRIBUTES = (Public, ); }; }; 6586A09B1B9E2E4F0067C98E /* GRMustacheTagDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36E719B8EEAE00854524 /* GRMustacheTagDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6586A09C1B9E2E550067C98E /* GRMustacheCompiler.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368019B8EE9D00854524 /* GRMustacheCompiler.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6586A09C1B9E2E550067C98E /* GRMustacheCompiler.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368019B8EE9D00854524 /* GRMustacheCompiler.m */; }; 6586A09D1B9E2E550067C98E /* GRMustacheCompiler_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368119B8EE9D00854524 /* GRMustacheCompiler_private.h */; settings = {ASSET_TAGS = (); }; }; - 6586A09E1B9E2E5B0067C98E /* GRMustacheInheritedPartialNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368319B8EE9D00854524 /* GRMustacheInheritedPartialNode.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6586A09E1B9E2E5B0067C98E /* GRMustacheInheritedPartialNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368319B8EE9D00854524 /* GRMustacheInheritedPartialNode.m */; }; 6586A09F1B9E2E5B0067C98E /* GRMustacheInheritedPartialNode_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368419B8EE9D00854524 /* GRMustacheInheritedPartialNode_private.h */; settings = {ASSET_TAGS = (); }; }; - 6586A0A01B9E2E5B0067C98E /* GRMustacheInheritableSectionNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368519B8EE9D00854524 /* GRMustacheInheritableSectionNode.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6586A0A01B9E2E5B0067C98E /* GRMustacheInheritableSectionNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368519B8EE9D00854524 /* GRMustacheInheritableSectionNode.m */; }; 6586A0A11B9E2E5B0067C98E /* GRMustacheInheritableSectionNode_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368619B8EE9D00854524 /* GRMustacheInheritableSectionNode_private.h */; settings = {ASSET_TAGS = (); }; }; - 6586A0A21B9E2E5B0067C98E /* GRMustachePartialNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368719B8EE9D00854524 /* GRMustachePartialNode.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6586A0A21B9E2E5B0067C98E /* GRMustachePartialNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368719B8EE9D00854524 /* GRMustachePartialNode.m */; }; 6586A0A31B9E2E5B0067C98E /* GRMustachePartialNode_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368819B8EE9D00854524 /* GRMustachePartialNode_private.h */; settings = {ASSET_TAGS = (); }; }; - 6586A0A41B9E2E5B0067C98E /* GRMustacheSectionTag.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368919B8EE9D00854524 /* GRMustacheSectionTag.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6586A0A41B9E2E5B0067C98E /* GRMustacheSectionTag.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368919B8EE9D00854524 /* GRMustacheSectionTag.m */; }; 6586A0A51B9E2E5B0067C98E /* GRMustacheSectionTag_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368A19B8EE9D00854524 /* GRMustacheSectionTag_private.h */; settings = {ASSET_TAGS = (); }; }; 6586A0A61B9E2E5B0067C98E /* GRMustacheTag.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368B19B8EE9D00854524 /* GRMustacheTag.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6586A0A71B9E2E5B0067C98E /* GRMustacheTag.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368C19B8EE9D00854524 /* GRMustacheTag.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6586A0A71B9E2E5B0067C98E /* GRMustacheTag.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368C19B8EE9D00854524 /* GRMustacheTag.m */; }; 6586A0A81B9E2E5B0067C98E /* GRMustacheTag_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368D19B8EE9D00854524 /* GRMustacheTag_private.h */; settings = {ASSET_TAGS = (); }; }; - 6586A0A91B9E2E5B0067C98E /* GRMustacheTemplateAST.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368E19B8EE9D00854524 /* GRMustacheTemplateAST.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6586A0A91B9E2E5B0067C98E /* GRMustacheTemplateAST.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368E19B8EE9D00854524 /* GRMustacheTemplateAST.m */; }; 6586A0AA1B9E2E5B0067C98E /* GRMustacheTemplateAST_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368F19B8EE9D00854524 /* GRMustacheTemplateAST_private.h */; settings = {ASSET_TAGS = (); }; }; 6586A0AB1B9E2E5B0067C98E /* GRMustacheTemplateASTNode_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF369019B8EE9D00854524 /* GRMustacheTemplateASTNode_private.h */; settings = {ASSET_TAGS = (); }; }; 6586A0AC1B9E2E5B0067C98E /* GRMustacheTemplateASTVisitor_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF369119B8EE9D00854524 /* GRMustacheTemplateASTVisitor_private.h */; settings = {ASSET_TAGS = (); }; }; - 6586A0AD1B9E2E5B0067C98E /* GRMustacheTextNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF369219B8EE9D00854524 /* GRMustacheTextNode.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6586A0AD1B9E2E5B0067C98E /* GRMustacheTextNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF369219B8EE9D00854524 /* GRMustacheTextNode.m */; }; 6586A0AE1B9E2E5B0067C98E /* GRMustacheTextNode_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF369319B8EE9D00854524 /* GRMustacheTextNode_private.h */; settings = {ASSET_TAGS = (); }; }; - 6586A0AF1B9E2E5B0067C98E /* GRMustacheVariableTag.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF369419B8EE9D00854524 /* GRMustacheVariableTag.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6586A0AF1B9E2E5B0067C98E /* GRMustacheVariableTag.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF369419B8EE9D00854524 /* GRMustacheVariableTag.m */; }; 6586A0B01B9E2E5B0067C98E /* GRMustacheVariableTag_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF369519B8EE9D00854524 /* GRMustacheVariableTag_private.h */; settings = {ASSET_TAGS = (); }; }; - 6586A0B11B9E2E600067C98E /* GRMustacheExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367519B8EE9D00854524 /* GRMustacheExpression.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6586A0B11B9E2E600067C98E /* GRMustacheExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367519B8EE9D00854524 /* GRMustacheExpression.m */; }; 6586A0B21B9E2E600067C98E /* GRMustacheExpression_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF367619B8EE9D00854524 /* GRMustacheExpression_private.h */; settings = {ASSET_TAGS = (); }; }; 6586A0B31B9E2E600067C98E /* GRMustacheExpressionVisitor_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF367719B8EE9D00854524 /* GRMustacheExpressionVisitor_private.h */; settings = {ASSET_TAGS = (); }; }; - 6586A0B41B9E2E600067C98E /* GRMustacheFilteredExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367819B8EE9D00854524 /* GRMustacheFilteredExpression.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6586A0B41B9E2E600067C98E /* GRMustacheFilteredExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367819B8EE9D00854524 /* GRMustacheFilteredExpression.m */; }; 6586A0B51B9E2E600067C98E /* GRMustacheFilteredExpression_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF367919B8EE9D00854524 /* GRMustacheFilteredExpression_private.h */; settings = {ASSET_TAGS = (); }; }; - 6586A0B61B9E2E600067C98E /* GRMustacheIdentifierExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367A19B8EE9D00854524 /* GRMustacheIdentifierExpression.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6586A0B61B9E2E600067C98E /* GRMustacheIdentifierExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367A19B8EE9D00854524 /* GRMustacheIdentifierExpression.m */; }; 6586A0B71B9E2E600067C98E /* GRMustacheIdentifierExpression_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF367B19B8EE9D00854524 /* GRMustacheIdentifierExpression_private.h */; settings = {ASSET_TAGS = (); }; }; - 6586A0B81B9E2E600067C98E /* GRMustacheImplicitIteratorExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367C19B8EE9D00854524 /* GRMustacheImplicitIteratorExpression.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6586A0B81B9E2E600067C98E /* GRMustacheImplicitIteratorExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367C19B8EE9D00854524 /* GRMustacheImplicitIteratorExpression.m */; }; 6586A0B91B9E2E600067C98E /* GRMustacheImplicitIteratorExpression_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF367D19B8EE9D00854524 /* GRMustacheImplicitIteratorExpression_private.h */; settings = {ASSET_TAGS = (); }; }; - 6586A0BA1B9E2E600067C98E /* GRMustacheScopedExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367E19B8EE9D00854524 /* GRMustacheScopedExpression.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6586A0BA1B9E2E600067C98E /* GRMustacheScopedExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367E19B8EE9D00854524 /* GRMustacheScopedExpression.m */; }; 6586A0BB1B9E2E600067C98E /* GRMustacheScopedExpression_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF367F19B8EE9D00854524 /* GRMustacheScopedExpression_private.h */; settings = {ASSET_TAGS = (); }; }; - 6586A0BC1B9E2E660067C98E /* GRMustacheExpressionParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF366119B8EE8B00854524 /* GRMustacheExpressionParser.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6586A0BC1B9E2E660067C98E /* GRMustacheExpressionParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF366119B8EE8B00854524 /* GRMustacheExpressionParser.m */; }; 6586A0BD1B9E2E660067C98E /* GRMustacheExpressionParser_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF366219B8EE8B00854524 /* GRMustacheExpressionParser_private.h */; settings = {ASSET_TAGS = (); }; }; - 6586A0BE1B9E2E660067C98E /* GRMustacheTemplateParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF366319B8EE8B00854524 /* GRMustacheTemplateParser.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6586A0BE1B9E2E660067C98E /* GRMustacheTemplateParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF366319B8EE8B00854524 /* GRMustacheTemplateParser.m */; }; 6586A0BF1B9E2E660067C98E /* GRMustacheTemplateParser_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF366419B8EE8B00854524 /* GRMustacheTemplateParser_private.h */; settings = {ASSET_TAGS = (); }; }; - 6586A0C01B9E2E660067C98E /* GRMustacheToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF366519B8EE8B00854524 /* GRMustacheToken.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6586A0C01B9E2E660067C98E /* GRMustacheToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF366519B8EE8B00854524 /* GRMustacheToken.m */; }; 6586A0C11B9E2E660067C98E /* GRMustacheToken_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF366619B8EE8B00854524 /* GRMustacheToken_private.h */; settings = {ASSET_TAGS = (); }; }; 6586A0C21B9E2E6A0067C98E /* GRMustacheConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF365719B8EE7A00854524 /* GRMustacheConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6586A0C31B9E2E6A0067C98E /* GRMustacheConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF365819B8EE7A00854524 /* GRMustacheConfiguration.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6586A0C31B9E2E6A0067C98E /* GRMustacheConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF365819B8EE7A00854524 /* GRMustacheConfiguration.m */; }; 6586A0C41B9E2E6A0067C98E /* GRMustacheConfiguration_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF365919B8EE7A00854524 /* GRMustacheConfiguration_private.h */; settings = {ASSET_TAGS = (); }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 56DEC258152631040031E8DC /* PBXContainerItemProxy */ = { + 56214B811BA1A4C50070C6CF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 56DEC19C15262FC80031E8DC /* Project object */; proxyType = 1; - remoteGlobalIDString = 56DEC247152631040031E8DC; - remoteInfo = "GRMustache7-MacOS"; + remoteGlobalIDString = 6586A05C1B9E2D720067C98E; + remoteInfo = GRMustacheiOS; }; - 56DEC27F1526311C0031E8DC /* PBXContainerItemProxy */ = { + 56214B901BA1A4D50070C6CF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 56DEC19C15262FC80031E8DC /* Project object */; proxyType = 1; - remoteGlobalIDString = 56DEC26D1526311B0031E8DC; - remoteInfo = "GRMustache7-iOS"; + remoteGlobalIDString = 56214B6E1BA1A34A0070C6CF; + remoteInfo = GRMustacheOSX; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ 560CE88E1526EEF4004F935E /* GRBooleanTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRBooleanTest.m; sourceTree = ""; }; + 56214B6F1BA1A34A0070C6CF /* GRMustache.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = GRMustache.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 56214B7B1BA1A4C50070C6CF /* GRMustacheiOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = GRMustacheiOSTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 56214B7D1BA1A4C50070C6CF /* GRMustacheiOSTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GRMustacheiOSTests.m; sourceTree = ""; }; + 56214B7F1BA1A4C50070C6CF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 56214B8A1BA1A4D50070C6CF /* GRMustacheOSXTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = GRMustacheOSXTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 56214B8C1BA1A4D50070C6CF /* GRMustacheOSXTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GRMustacheOSXTests.m; sourceTree = ""; }; + 56214B8E1BA1A4D50070C6CF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 56214B951BA1A5100070C6CF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 5623853918CF365D0034D982 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; 5623B795152731B600DF16A6 /* GRMustacheParsingErrorsTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheParsingErrorsTest.m; sourceTree = ""; }; 563A5EA6163403C000E7E810 /* GRMustacheFoundationCollectionTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheFoundationCollectionTest.m; sourceTree = ""; }; @@ -652,10 +556,6 @@ 56C88929190A349B0084FC5A /* GRMustacheTemplateGeneratorTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheTemplateGeneratorTest.m; sourceTree = ""; }; 56DEC1CB15262FF70031E8DC /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; 56DEC1F4152630710031E8DC /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; - 56DEC248152631040031E8DC /* libGRMustache7-MacOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libGRMustache7-MacOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 56DEC255152631040031E8DC /* GRMustache7-MacOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "GRMustache7-MacOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; - 56DEC26E1526311B0031E8DC /* libGRMustache7-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libGRMustache7-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 56DEC27B1526311C0031E8DC /* GRMustache7-iOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "GRMustache7-iOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 56DEC292152631300031E8DC /* GRMustache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustache.h; sourceTree = ""; }; 56DEC293152631300031E8DC /* GRMustache.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustache.m; sourceTree = ""; }; 56DEC294152631300031E8DC /* GRMustache_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustache_private.h; sourceTree = ""; }; @@ -670,45 +570,29 @@ 56E2F2E616BA49A500F01DC2 /* TODO.md */ = {isa = PBXFileReference; lastKnownFileType = text; name = TODO.md; path = ../TODO.md; sourceTree = ""; }; 6586A05D1B9E2D720067C98E /* GRMustache.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = GRMustache.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 6586A0C71B9E2F070067C98E /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = GRMustache/Info.plist; sourceTree = ""; }; - ABAF86A816A0A852001ADE96 /* GRMustache7Tests-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GRMustache7Tests-Info.plist"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 56DEC245152631040031E8DC /* Frameworks */ = { + 56214B6B1BA1A34A0070C6CF /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 5682B4BE1528DF3F00ADD123 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 56DEC251152631040031E8DC /* Frameworks */ = { + 56214B781BA1A4C50070C6CF /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 5623853A18CF365D0034D982 /* XCTest.framework in Frameworks */, - 56DEC257152631040031E8DC /* Cocoa.framework in Frameworks */, - 56DEC25A152631040031E8DC /* libGRMustache7-MacOS.a in Frameworks */, + 56214B801BA1A4C50070C6CF /* GRMustache.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 56DEC26B1526311B0031E8DC /* Frameworks */ = { + 56214B871BA1A4D50070C6CF /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 5682B4C01528DF4A00ADD123 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 56DEC2771526311C0031E8DC /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 5623853B18CF36660034D982 /* XCTest.framework in Frameworks */, - 5682B4C51528E0C600ADD123 /* CoreData.framework in Frameworks */, - 5682B4C31528E0B300ADD123 /* Foundation.framework in Frameworks */, - 56DEC27D1526311C0031E8DC /* UIKit.framework in Frameworks */, - 56DEC2811526311C0031E8DC /* libGRMustache7-iOS.a in Frameworks */, + 56214B8F1BA1A4D50070C6CF /* GRMustache.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -722,6 +606,24 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 56214B7C1BA1A4C50070C6CF /* GRMustacheiOSTests */ = { + isa = PBXGroup; + children = ( + 56214B7D1BA1A4C50070C6CF /* GRMustacheiOSTests.m */, + 56214B7F1BA1A4C50070C6CF /* Info.plist */, + ); + path = GRMustacheiOSTests; + sourceTree = ""; + }; + 56214B8B1BA1A4D50070C6CF /* GRMustacheOSXTests */ = { + isa = PBXGroup; + children = ( + 56214B8C1BA1A4D50070C6CF /* GRMustacheOSXTests.m */, + 56214B8E1BA1A4D50070C6CF /* Info.plist */, + ); + path = GRMustacheOSXTests; + sourceTree = ""; + }; 567AEC4E15278C9A0009CA61 /* GRMustache */ = { isa = PBXGroup; children = ( @@ -1140,6 +1042,8 @@ 56E2F2E616BA49A500F01DC2 /* TODO.md */, 567AEC4E15278C9A0009CA61 /* GRMustache */, 56DEC3AE152638CD0031E8DC /* Tests */, + 56214B7C1BA1A4C50070C6CF /* GRMustacheiOSTests */, + 56214B8B1BA1A4D50070C6CF /* GRMustacheOSXTests */, 56DEC1A615262FC90031E8DC /* Products */, ); sourceTree = ""; @@ -1147,11 +1051,10 @@ 56DEC1A615262FC90031E8DC /* Products */ = { isa = PBXGroup; children = ( - 56DEC248152631040031E8DC /* libGRMustache7-MacOS.a */, - 56DEC255152631040031E8DC /* GRMustache7-MacOSTests.xctest */, - 56DEC26E1526311B0031E8DC /* libGRMustache7-iOS.a */, - 56DEC27B1526311C0031E8DC /* GRMustache7-iOSTests.xctest */, 6586A05D1B9E2D720067C98E /* GRMustache.framework */, + 56214B6F1BA1A34A0070C6CF /* GRMustache.framework */, + 56214B7B1BA1A4C50070C6CF /* GRMustacheiOSTests.xctest */, + 56214B8A1BA1A4D50070C6CF /* GRMustacheOSXTests.xctest */, ); name = Products; sourceTree = ""; @@ -1196,7 +1099,7 @@ 56DEC3AE152638CD0031E8DC /* Tests */ = { isa = PBXGroup; children = ( - ABAF86A816A0A852001ADE96 /* GRMustache7Tests-Info.plist */, + 56214B951BA1A5100070C6CF /* Info.plist */, 56DEC3B3152638E20031E8DC /* GRMustacheTestBase.h */, 56DEC3B4152638E20031E8DC /* GRMustacheTestBase.m */, 56DEC3BB152638FB0031E8DC /* Private */, @@ -1255,131 +1158,67 @@ /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 56DEC246152631040031E8DC /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 56BF373919B8EEC700854524 /* NSValueTransformer+GRMustache.h in Headers */, - 56BF373319B8EEC700854524 /* GRMustacheTemplateGenerator_private.h in Headers */, - 56DEC2BC152631300031E8DC /* GRMustache.h in Headers */, - 56DEC2C0152631300031E8DC /* GRMustache_private.h in Headers */, - 56BF371719B8EEB900854524 /* GRMustacheTemplateRepository.h in Headers */, - 56BF36EC19B8EEAE00854524 /* GRMustacheContext_private.h in Headers */, - 56BF374719B8EEC700854524 /* GRMustacheJavascriptLibrary_private.h in Headers */, - 56BF371519B8EEB900854524 /* GRMustacheTemplate_private.h in Headers */, - 56BF374919B8EEC700854524 /* GRMustacheLocalizer.h in Headers */, - 56BF36B219B8EE9D00854524 /* GRMustacheInheritedPartialNode_private.h in Headers */, - 56BF370019B8EEAE00854524 /* GRMustacheRendering_private.h in Headers */, - 56BF367119B8EE8B00854524 /* GRMustacheToken_private.h in Headers */, - 56BF36E819B8EEAE00854524 /* GRMustacheContext.h in Headers */, - 56BF365E19B8EE7A00854524 /* GRMustacheConfiguration_private.h in Headers */, - 56BF36F019B8EEAE00854524 /* GRMustacheExpressionInvocation_private.h in Headers */, - 56BF371119B8EEB900854524 /* GRMustacheTemplate.h in Headers */, - 56BF375E19B8EF2800854524 /* GRMustacheAvailabilityMacros.h in Headers */, - 56B01A4C19C49AF5000439C7 /* GRMustacheExpressionGenerator_private.h in Headers */, - 56BF36CA19B8EE9E00854524 /* GRMustacheTemplateASTNode_private.h in Headers */, - 56BF36C419B8EE9E00854524 /* GRMustacheTag_private.h in Headers */, - 56BF36AE19B8EE9D00854524 /* GRMustacheCompiler_private.h in Headers */, - 56BF36F219B8EEAE00854524 /* GRMustacheFilter.h in Headers */, - 56BF370819B8EEAE00854524 /* GRMustacheTagDelegate.h in Headers */, - 56BF369A19B8EE9D00854524 /* GRMustacheExpressionVisitor_private.h in Headers */, - 56BF376019B8EF2800854524 /* GRMustacheAvailabilityMacros_private.h in Headers */, - 56BF36F619B8EEAE00854524 /* GRMustacheFilter_private.h in Headers */, - 56BF36CC19B8EE9E00854524 /* GRMustacheTemplateASTVisitor_private.h in Headers */, - 56DEC30E152631300031E8DC /* GRMustacheVersion.h in Headers */, - 56BF366D19B8EE8B00854524 /* GRMustacheTemplateParser_private.h in Headers */, - 56BF376619B8EF2800854524 /* GRMustacheError.h in Headers */, - 56BF36BA19B8EE9D00854524 /* GRMustachePartialNode_private.h in Headers */, - 56BF36FC19B8EEAE00854524 /* GRMustacheRendering.h in Headers */, - 56BF373519B8EEC700854524 /* NSFormatter+GRMustache.h in Headers */, - 56BF366919B8EE8B00854524 /* GRMustacheExpressionParser_private.h in Headers */, - 56BF374F19B8EEC700854524 /* GRMustacheStandardLibrary_private.h in Headers */, - 56BF369E19B8EE9D00854524 /* GRMustacheFilteredExpression_private.h in Headers */, - 56BF365A19B8EE7A00854524 /* GRMustacheConfiguration.h in Headers */, - 56BF373F19B8EEC700854524 /* GRMustacheEachFilter_private.h in Headers */, - 56BF36D419B8EE9E00854524 /* GRMustacheVariableTag_private.h in Headers */, - 56BF36D019B8EE9E00854524 /* GRMustacheTextNode_private.h in Headers */, - 56BF370619B8EEAE00854524 /* GRMustacheSafeKeyAccess.h in Headers */, - 56BF36AA19B8EE9D00854524 /* GRMustacheScopedExpression_private.h in Headers */, - 56BF371B19B8EEB900854524 /* GRMustacheTemplateRepository_private.h in Headers */, - 56BF369819B8EE9D00854524 /* GRMustacheExpression_private.h in Headers */, - 56BF375319B8EEC700854524 /* GRMustacheURLLibrary_private.h in Headers */, - 56BF36A619B8EE9D00854524 /* GRMustacheImplicitIteratorExpression_private.h in Headers */, - 56BF36C019B8EE9D00854524 /* GRMustacheTag.h in Headers */, - 56BF36FA19B8EEAE00854524 /* GRMustacheKeyAccess_private.h in Headers */, - 56BF370419B8EEAE00854524 /* GRMustacheRenderingEngine_private.h in Headers */, - 56BF376419B8EF2800854524 /* GRMustacheContentType.h in Headers */, - 56BF36C819B8EE9E00854524 /* GRMustacheTemplateAST_private.h in Headers */, - 56BF376C19B8EF2800854524 /* GRMustacheTranslateCharacters_private.h in Headers */, - 56BF36BE19B8EE9D00854524 /* GRMustacheSectionTag_private.h in Headers */, - 56BF36A219B8EE9D00854524 /* GRMustacheIdentifierExpression_private.h in Headers */, - 56BF36B619B8EE9D00854524 /* GRMustacheInheritableSectionNode_private.h in Headers */, - 56BF374319B8EEC700854524 /* GRMustacheHTMLLibrary_private.h in Headers */, - 56BF376219B8EF2800854524 /* GRMustacheBuffer_private.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 56DEC26C1526311B0031E8DC /* Headers */ = { + 56214B6C1BA1A34A0070C6CF /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 56BF373A19B8EEC700854524 /* NSValueTransformer+GRMustache.h in Headers */, - 56BF373419B8EEC700854524 /* GRMustacheTemplateGenerator_private.h in Headers */, - 56DEC2BD152631300031E8DC /* GRMustache.h in Headers */, - 56DEC2C1152631300031E8DC /* GRMustache_private.h in Headers */, - 56BF371819B8EEB900854524 /* GRMustacheTemplateRepository.h in Headers */, - 56BF36ED19B8EEAE00854524 /* GRMustacheContext_private.h in Headers */, - 56BF374819B8EEC700854524 /* GRMustacheJavascriptLibrary_private.h in Headers */, - 56BF371619B8EEB900854524 /* GRMustacheTemplate_private.h in Headers */, - 56BF374A19B8EEC700854524 /* GRMustacheLocalizer.h in Headers */, - 56BF36B319B8EE9D00854524 /* GRMustacheInheritedPartialNode_private.h in Headers */, - 56BF370119B8EEAE00854524 /* GRMustacheRendering_private.h in Headers */, - 56BF367219B8EE8B00854524 /* GRMustacheToken_private.h in Headers */, - 56BF36E919B8EEAE00854524 /* GRMustacheContext.h in Headers */, - 56BF365F19B8EE7A00854524 /* GRMustacheConfiguration_private.h in Headers */, - 56BF36F119B8EEAE00854524 /* GRMustacheExpressionInvocation_private.h in Headers */, - 56BF371219B8EEB900854524 /* GRMustacheTemplate.h in Headers */, - 56BF375F19B8EF2800854524 /* GRMustacheAvailabilityMacros.h in Headers */, - 56B01A4D19C49AF5000439C7 /* GRMustacheExpressionGenerator_private.h in Headers */, - 56BF36CB19B8EE9E00854524 /* GRMustacheTemplateASTNode_private.h in Headers */, - 56BF36C519B8EE9E00854524 /* GRMustacheTag_private.h in Headers */, - 56BF36AF19B8EE9D00854524 /* GRMustacheCompiler_private.h in Headers */, - 56BF36F319B8EEAE00854524 /* GRMustacheFilter.h in Headers */, - 56BF370919B8EEAE00854524 /* GRMustacheTagDelegate.h in Headers */, - 56BF369B19B8EE9D00854524 /* GRMustacheExpressionVisitor_private.h in Headers */, - 56BF376119B8EF2800854524 /* GRMustacheAvailabilityMacros_private.h in Headers */, - 56BF36F719B8EEAE00854524 /* GRMustacheFilter_private.h in Headers */, - 56BF36CD19B8EE9E00854524 /* GRMustacheTemplateASTVisitor_private.h in Headers */, - 56DEC30F152631300031E8DC /* GRMustacheVersion.h in Headers */, - 56BF366E19B8EE8B00854524 /* GRMustacheTemplateParser_private.h in Headers */, - 56BF376719B8EF2800854524 /* GRMustacheError.h in Headers */, - 56BF36BB19B8EE9D00854524 /* GRMustachePartialNode_private.h in Headers */, - 56BF36FD19B8EEAE00854524 /* GRMustacheRendering.h in Headers */, - 56BF373619B8EEC700854524 /* NSFormatter+GRMustache.h in Headers */, - 56BF366A19B8EE8B00854524 /* GRMustacheExpressionParser_private.h in Headers */, - 56BF375019B8EEC700854524 /* GRMustacheStandardLibrary_private.h in Headers */, - 56BF369F19B8EE9D00854524 /* GRMustacheFilteredExpression_private.h in Headers */, - 56BF365B19B8EE7A00854524 /* GRMustacheConfiguration.h in Headers */, - 56BF374019B8EEC700854524 /* GRMustacheEachFilter_private.h in Headers */, - 56BF36D519B8EE9E00854524 /* GRMustacheVariableTag_private.h in Headers */, - 56BF36D119B8EE9E00854524 /* GRMustacheTextNode_private.h in Headers */, - 56BF370719B8EEAE00854524 /* GRMustacheSafeKeyAccess.h in Headers */, - 56BF36AB19B8EE9D00854524 /* GRMustacheScopedExpression_private.h in Headers */, - 56BF371C19B8EEB900854524 /* GRMustacheTemplateRepository_private.h in Headers */, - 56BF369919B8EE9D00854524 /* GRMustacheExpression_private.h in Headers */, - 56BF375419B8EEC700854524 /* GRMustacheURLLibrary_private.h in Headers */, - 56BF36A719B8EE9D00854524 /* GRMustacheImplicitIteratorExpression_private.h in Headers */, - 56BF36C119B8EE9D00854524 /* GRMustacheTag.h in Headers */, - 56BF36FB19B8EEAE00854524 /* GRMustacheKeyAccess_private.h in Headers */, - 56BF370519B8EEAE00854524 /* GRMustacheRenderingEngine_private.h in Headers */, - 56BF376519B8EF2800854524 /* GRMustacheContentType.h in Headers */, - 56BF36C919B8EE9E00854524 /* GRMustacheTemplateAST_private.h in Headers */, - 56BF376D19B8EF2800854524 /* GRMustacheTranslateCharacters_private.h in Headers */, - 56BF36BF19B8EE9D00854524 /* GRMustacheSectionTag_private.h in Headers */, - 56BF36A319B8EE9D00854524 /* GRMustacheIdentifierExpression_private.h in Headers */, - 56BF36B719B8EE9D00854524 /* GRMustacheInheritableSectionNode_private.h in Headers */, - 56BF374419B8EEC700854524 /* GRMustacheHTMLLibrary_private.h in Headers */, - 56BF376319B8EF2800854524 /* GRMustacheBuffer_private.h in Headers */, + 56214C861BA1A70D0070C6CF /* GRMustacheTemplateParser_private.h in Headers */, + 56214CA91BA1A7490070C6CF /* GRMustacheContext.h in Headers */, + 56214CA21BA1A70D0070C6CF /* GRMustacheTemplateGenerator_private.h in Headers */, + 56214C9A1BA1A70D0070C6CF /* GRMustacheExpressionInvocation_private.h in Headers */, + 56214C891BA1A70D0070C6CF /* GRMustacheExpression_private.h in Headers */, + 56214C851BA1A70D0070C6CF /* GRMustacheExpressionParser_private.h in Headers */, + 56214C991BA1A70D0070C6CF /* GRMustacheContext_private.h in Headers */, + 56214C301BA1A6AD0070C6CF /* GRMustacheTranslateCharacters_private.h in Headers */, + 56214C361BA1A6C20070C6CF /* GRMustacheAvailabilityMacros_private.h in Headers */, + 56214C2D1BA1A68E0070C6CF /* GRMustacheVersion.h in Headers */, + 56214C2F1BA1A6A70070C6CF /* GRMustache_private.h in Headers */, + 56214CB01BA1A7490070C6CF /* NSFormatter+GRMustache.h in Headers */, + 56214CA31BA1A70D0070C6CF /* GRMustacheEachFilter_private.h in Headers */, + 56214C961BA1A70D0070C6CF /* GRMustacheTemplateASTVisitor_private.h in Headers */, + 56214CA71BA1A7240070C6CF /* GRMustacheConfiguration.h in Headers */, + 56214C351BA1A6BE0070C6CF /* GRMustacheBuffer_private.h in Headers */, + 56214CAF1BA1A7490070C6CF /* GRMustacheTemplateRepository.h in Headers */, + 56214C951BA1A70D0070C6CF /* GRMustacheTemplateASTNode_private.h in Headers */, + 56214C371BA1A6C50070C6CF /* GRMustacheAvailabilityMacros.h in Headers */, + 56214C341BA1A6BA0070C6CF /* GRMustacheContentType.h in Headers */, + 56214CB11BA1A7490070C6CF /* NSValueTransformer+GRMustache.h in Headers */, + 56214C8C1BA1A70D0070C6CF /* GRMustacheIdentifierExpression_private.h in Headers */, + 56214C881BA1A70D0070C6CF /* GRMustacheCompiler_private.h in Headers */, + 56214CA81BA1A7300070C6CF /* GRMustacheTag.h in Headers */, + 56214C8F1BA1A70D0070C6CF /* GRMustacheInheritedPartialNode_private.h in Headers */, + 56214CA11BA1A70D0070C6CF /* GRMustacheExpressionGenerator_private.h in Headers */, + 56214C331BA1A6B50070C6CF /* GRMustacheError.h in Headers */, + 56214C931BA1A70D0070C6CF /* GRMustacheTag_private.h in Headers */, + 56214CA01BA1A70D0070C6CF /* GRMustacheTemplateRepository_private.h in Headers */, + 56214CB21BA1A7490070C6CF /* GRMustacheLocalizer.h in Headers */, + 56214CAB1BA1A7490070C6CF /* GRMustacheRendering.h in Headers */, + 56214C941BA1A70D0070C6CF /* GRMustacheTemplateAST_private.h in Headers */, + 56214C8B1BA1A70D0070C6CF /* GRMustacheFilteredExpression_private.h in Headers */, + 56214C8D1BA1A70D0070C6CF /* GRMustacheImplicitIteratorExpression_private.h in Headers */, + 56214C9C1BA1A70D0070C6CF /* GRMustacheKeyAccess_private.h in Headers */, + 56214C981BA1A70D0070C6CF /* GRMustacheVariableTag_private.h in Headers */, + 56214CA61BA1A70D0070C6CF /* GRMustacheStandardLibrary_private.h in Headers */, + 56214CAE1BA1A7490070C6CF /* GRMustacheTemplate.h in Headers */, + 56214CA51BA1A70D0070C6CF /* GRMustacheJavascriptLibrary_private.h in Headers */, + 56214C9B1BA1A70D0070C6CF /* GRMustacheFilter_private.h in Headers */, + 56214CAD1BA1A7490070C6CF /* GRMustacheTagDelegate.h in Headers */, + 56214CA41BA1A70D0070C6CF /* GRMustacheHTMLLibrary_private.h in Headers */, + 56214CAC1BA1A7490070C6CF /* GRMustacheSafeKeyAccess.h in Headers */, + 56214C2C1BA1A6870070C6CF /* GRMustache.h in Headers */, + 56214C9D1BA1A70D0070C6CF /* GRMustacheRendering_private.h in Headers */, + 56214C871BA1A70D0070C6CF /* GRMustacheToken_private.h in Headers */, + 56214C971BA1A70D0070C6CF /* GRMustacheTextNode_private.h in Headers */, + 56214C8A1BA1A70D0070C6CF /* GRMustacheExpressionVisitor_private.h in Headers */, + 56214C8E1BA1A70D0070C6CF /* GRMustacheScopedExpression_private.h in Headers */, + 56214C381BA1A6CD0070C6CF /* GRMustacheURLLibrary_private.h in Headers */, + 56214C921BA1A70D0070C6CF /* GRMustacheSectionTag_private.h in Headers */, + 56214C911BA1A70D0070C6CF /* GRMustachePartialNode_private.h in Headers */, + 56214C841BA1A70D0070C6CF /* GRMustacheConfiguration_private.h in Headers */, + 56214C901BA1A70D0070C6CF /* GRMustacheInheritableSectionNode_private.h in Headers */, + 56214C9E1BA1A70D0070C6CF /* GRMustacheRenderingEngine_private.h in Headers */, + 56214CAA1BA1A7490070C6CF /* GRMustacheFilter.h in Headers */, + 56214C9F1BA1A70D0070C6CF /* GRMustacheTemplate_private.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1450,81 +1289,63 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 56DEC247152631040031E8DC /* GRMustache7-MacOS */ = { + 56214B6E1BA1A34A0070C6CF /* GRMustacheOSX */ = { isa = PBXNativeTarget; - buildConfigurationList = 56DEC264152631040031E8DC /* Build configuration list for PBXNativeTarget "GRMustache7-MacOS" */; + buildConfigurationList = 56214B741BA1A34A0070C6CF /* Build configuration list for PBXNativeTarget "GRMustacheOSX" */; buildPhases = ( - 56DEC244152631040031E8DC /* Sources */, - 56DEC245152631040031E8DC /* Frameworks */, - 56DEC246152631040031E8DC /* Headers */, + 56214B6A1BA1A34A0070C6CF /* Sources */, + 56214B6B1BA1A34A0070C6CF /* Frameworks */, + 56214B6C1BA1A34A0070C6CF /* Headers */, + 56214B6D1BA1A34A0070C6CF /* Resources */, ); buildRules = ( ); dependencies = ( ); - name = "GRMustache7-MacOS"; - productName = "GRMustache7-MacOS"; - productReference = 56DEC248152631040031E8DC /* libGRMustache7-MacOS.a */; - productType = "com.apple.product-type.library.static"; + name = GRMustacheOSX; + productName = GRMustacheOSX; + productReference = 56214B6F1BA1A34A0070C6CF /* GRMustache.framework */; + productType = "com.apple.product-type.framework"; }; - 56DEC254152631040031E8DC /* GRMustache7-MacOSTests */ = { + 56214B7A1BA1A4C50070C6CF /* GRMustacheiOSTests */ = { isa = PBXNativeTarget; - buildConfigurationList = 56DEC267152631040031E8DC /* Build configuration list for PBXNativeTarget "GRMustache7-MacOSTests" */; + buildConfigurationList = 56214B831BA1A4C50070C6CF /* Build configuration list for PBXNativeTarget "GRMustacheiOSTests" */; buildPhases = ( - 56DEC250152631040031E8DC /* Sources */, - 56DEC251152631040031E8DC /* Frameworks */, - 56DEC252152631040031E8DC /* Resources */, - 56DEC253152631040031E8DC /* ShellScript */, + 56214B771BA1A4C50070C6CF /* Sources */, + 56214B781BA1A4C50070C6CF /* Frameworks */, + 56214B791BA1A4C50070C6CF /* Resources */, ); buildRules = ( ); dependencies = ( - 56DEC259152631040031E8DC /* PBXTargetDependency */, + 56214B821BA1A4C50070C6CF /* PBXTargetDependency */, ); - name = "GRMustache7-MacOSTests"; - productName = "GRMustache7-MacOSTests"; - productReference = 56DEC255152631040031E8DC /* GRMustache7-MacOSTests.xctest */; + name = GRMustacheiOSTests; + productName = GRMustacheiOSTests; + productReference = 56214B7B1BA1A4C50070C6CF /* GRMustacheiOSTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; - 56DEC26D1526311B0031E8DC /* GRMustache7-iOS */ = { + 56214B891BA1A4D50070C6CF /* GRMustacheOSXTests */ = { isa = PBXNativeTarget; - buildConfigurationList = 56DEC28B1526311C0031E8DC /* Build configuration list for PBXNativeTarget "GRMustache7-iOS" */; + buildConfigurationList = 56214B921BA1A4D50070C6CF /* Build configuration list for PBXNativeTarget "GRMustacheOSXTests" */; buildPhases = ( - 56DEC26A1526311B0031E8DC /* Sources */, - 56DEC26B1526311B0031E8DC /* Frameworks */, - 56DEC26C1526311B0031E8DC /* Headers */, + 56214B861BA1A4D50070C6CF /* Sources */, + 56214B871BA1A4D50070C6CF /* Frameworks */, + 56214B881BA1A4D50070C6CF /* Resources */, ); buildRules = ( ); dependencies = ( + 56214B911BA1A4D50070C6CF /* PBXTargetDependency */, ); - name = "GRMustache7-iOS"; - productName = "GRMustache7-iOS"; - productReference = 56DEC26E1526311B0031E8DC /* libGRMustache7-iOS.a */; - productType = "com.apple.product-type.library.static"; - }; - 56DEC27A1526311C0031E8DC /* GRMustache7-iOSTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 56DEC28E1526311C0031E8DC /* Build configuration list for PBXNativeTarget "GRMustache7-iOSTests" */; - buildPhases = ( - 56DEC2761526311C0031E8DC /* Sources */, - 56DEC2771526311C0031E8DC /* Frameworks */, - 56DEC2781526311C0031E8DC /* Resources */, - 56DEC2791526311C0031E8DC /* ShellScript */, - ); - buildRules = ( - ); - dependencies = ( - 56DEC2801526311C0031E8DC /* PBXTargetDependency */, - ); - name = "GRMustache7-iOSTests"; - productName = "GRMustache7-iOSTests"; - productReference = 56DEC27B1526311C0031E8DC /* GRMustache7-iOSTests.xctest */; + name = GRMustacheOSXTests; + productName = GRMustacheOSXTests; + productReference = 56214B8A1BA1A4D50070C6CF /* GRMustacheOSXTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; - 6586A05C1B9E2D720067C98E /* GRMustache */ = { + 6586A05C1B9E2D720067C98E /* GRMustacheiOS */ = { isa = PBXNativeTarget; - buildConfigurationList = 6586A0641B9E2D720067C98E /* Build configuration list for PBXNativeTarget "GRMustache" */; + buildConfigurationList = 6586A0641B9E2D720067C98E /* Build configuration list for PBXNativeTarget "GRMustacheiOS" */; buildPhases = ( 6586A0581B9E2D720067C98E /* Sources */, 6586A0591B9E2D720067C98E /* Frameworks */, @@ -1535,7 +1356,7 @@ ); dependencies = ( ); - name = GRMustache; + name = GRMustacheiOS; productName = GRMustache; productReference = 6586A05D1B9E2D720067C98E /* GRMustache.framework */; productType = "com.apple.product-type.framework"; @@ -1546,8 +1367,17 @@ 56DEC19C15262FC80031E8DC /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0630; + LastUpgradeCheck = 0700; TargetAttributes = { + 56214B6E1BA1A34A0070C6CF = { + CreatedOnToolsVersion = 7.0; + }; + 56214B7A1BA1A4C50070C6CF = { + CreatedOnToolsVersion = 7.0; + }; + 56214B891BA1A4D50070C6CF = { + CreatedOnToolsVersion = 7.0; + }; 6586A05C1B9E2D720067C98E = { CreatedOnToolsVersion = 7.0; }; @@ -1565,324 +1395,255 @@ projectDirPath = ""; projectRoot = ""; targets = ( - 56DEC247152631040031E8DC /* GRMustache7-MacOS */, - 56DEC254152631040031E8DC /* GRMustache7-MacOSTests */, - 56DEC26D1526311B0031E8DC /* GRMustache7-iOS */, - 56DEC27A1526311C0031E8DC /* GRMustache7-iOSTests */, - 6586A05C1B9E2D720067C98E /* GRMustache */, + 56214B6E1BA1A34A0070C6CF /* GRMustacheOSX */, + 56214B891BA1A4D50070C6CF /* GRMustacheOSXTests */, + 6586A05C1B9E2D720067C98E /* GRMustacheiOS */, + 56214B7A1BA1A4C50070C6CF /* GRMustacheiOSTests */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - 56DEC252152631040031E8DC /* Resources */ = { + 56214B6D1BA1A34A0070C6CF /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 56B477A718D0E41A00EFF629 /* specs in Resources */, - 563D66F415264B40008628C5 /* GRMustacheSuites in Resources */, - 56A8D4931527A23900D9C718 /* GRMustacheTagDelegateTest.mustache in Resources */, - 56A8D4961527A3CE00D9C718 /* GRMustacheTagDelegateTest_wrapper.mustache in Resources */, - 5682B46515282BCA00ADD123 /* GRMustacheTemplateFromMethodsTest.mustache in Resources */, - 5682B4681528324800ADD123 /* GRMustacheTemplateFromMethodsTest.json in Resources */, - 5682B46F1528370E00ADD123 /* GRMustacheTemplateFromMethodsTest in Resources */, - 5682B4741528372000ADD123 /* GRMustacheTemplateRenderMethodsTest in Resources */, - 56B477A418CF9F6E00EFF629 /* GRMustacheJavaSuites in Resources */, - 56BA247418C7A5CB006DA5F3 /* GRMustacheLocalizerTestBundle in Resources */, - 5682B4761528372000ADD123 /* GRMustacheTemplateRenderMethodsTest.json in Resources */, - 56C1FDEB19A66DC500006AB4 /* GRMustacheSuites_7_2 in Resources */, - 5682B4781528372000ADD123 /* GRMustacheTemplateRenderMethodsTest.mustache in Resources */, - 5682B4971528486C00ADD123 /* GRMustacheTemplateRepositoryTest_ISOLatin1 in Resources */, - 5688264D199DFCDF00922497 /* GRMustacheTemplateRepositoryWithBundleTestResources in Resources */, - 5682B4991528486C00ADD123 /* GRMustacheTemplateRepositoryTest_UTF8 in Resources */, - 5682B49E152849FE00ADD123 /* GRMustacheTemplateRepositoryWithBundleTest.mustache in Resources */, - 5682B4A0152849FE00ADD123 /* GRMustacheTemplateRepositoryWithBundleTest_partial.mustache in Resources */, - 56B4779A18CF8D3300EFF629 /* GRHoganSuites in Resources */, - 5682B4A415284A9400ADD123 /* GRMustacheTemplateRepositoryWithBundleTest in Resources */, - 5682B4A615284A9400ADD123 /* GRMustacheTemplateRepositoryWithBundleTest.text in Resources */, - 5682B4A915284AB600ADD123 /* GRMustacheTemplateRepositoryWithBundleTest_partial in Resources */, - 5682B4AC15284ABD00ADD123 /* GRMustacheTemplateRepositoryWithBundleTest_partial.text in Resources */, - 5682B4B21528C69C00ADD123 /* GRMustacheTemplateFromMethodsTest_parserError.mustache in Resources */, - 5682B4B41528C69C00ADD123 /* GRMustacheTemplateFromMethodsTest_parserErrorWrapper.mustache in Resources */, - 5682B4B81528D0FA00ADD123 /* GRMustacheTemplateFromMethodsTest_compilerError.mustache in Resources */, - 5682B4BA1528D0FA00ADD123 /* GRMustacheTemplateFromMethodsTest_compilerErrorWrapper.mustache in Resources */, - 568140DE16365CF500310B7F /* GRMustacheTemplateRepositoryTest in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 56DEC2781526311C0031E8DC /* Resources */ = { + 56214B791BA1A4C50070C6CF /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 56B477A818D0E41A00EFF629 /* specs in Resources */, - 563D66F515264B40008628C5 /* GRMustacheSuites in Resources */, - 56A8D4941527A23900D9C718 /* GRMustacheTagDelegateTest.mustache in Resources */, - 56A8D4971527A3CE00D9C718 /* GRMustacheTagDelegateTest_wrapper.mustache in Resources */, - 5682B46615282BCA00ADD123 /* GRMustacheTemplateFromMethodsTest.mustache in Resources */, - 5682B4691528324800ADD123 /* GRMustacheTemplateFromMethodsTest.json in Resources */, - 5682B4701528370E00ADD123 /* GRMustacheTemplateFromMethodsTest in Resources */, - 5682B4751528372000ADD123 /* GRMustacheTemplateRenderMethodsTest in Resources */, - 56B477A518CF9F6E00EFF629 /* GRMustacheJavaSuites in Resources */, - 56BA247618C7A5CB006DA5F3 /* GRMustacheLocalizerTestBundle in Resources */, - 5682B4771528372000ADD123 /* GRMustacheTemplateRenderMethodsTest.json in Resources */, - 56C1FDEC19A66DC500006AB4 /* GRMustacheSuites_7_2 in Resources */, - 5682B4791528372000ADD123 /* GRMustacheTemplateRenderMethodsTest.mustache in Resources */, - 5682B4981528486C00ADD123 /* GRMustacheTemplateRepositoryTest_ISOLatin1 in Resources */, - 5688264E199DFCDF00922497 /* GRMustacheTemplateRepositoryWithBundleTestResources in Resources */, - 5682B49A1528486C00ADD123 /* GRMustacheTemplateRepositoryTest_UTF8 in Resources */, - 5682B49F152849FE00ADD123 /* GRMustacheTemplateRepositoryWithBundleTest.mustache in Resources */, - 5682B4A1152849FE00ADD123 /* GRMustacheTemplateRepositoryWithBundleTest_partial.mustache in Resources */, - 56B4779B18CF8D3300EFF629 /* GRHoganSuites in Resources */, - 5682B4A515284A9400ADD123 /* GRMustacheTemplateRepositoryWithBundleTest in Resources */, - 5682B4A715284A9400ADD123 /* GRMustacheTemplateRepositoryWithBundleTest.text in Resources */, - 5682B4AA15284AB600ADD123 /* GRMustacheTemplateRepositoryWithBundleTest_partial in Resources */, - 5682B4AD15284ABD00ADD123 /* GRMustacheTemplateRepositoryWithBundleTest_partial.text in Resources */, - 5682B4B31528C69C00ADD123 /* GRMustacheTemplateFromMethodsTest_parserError.mustache in Resources */, - 5682B4B51528C69C00ADD123 /* GRMustacheTemplateFromMethodsTest_parserErrorWrapper.mustache in Resources */, - 5682B4B91528D0FA00ADD123 /* GRMustacheTemplateFromMethodsTest_compilerError.mustache in Resources */, - 5682B4BB1528D0FA00ADD123 /* GRMustacheTemplateFromMethodsTest_compilerErrorWrapper.mustache in Resources */, - 568140DF16365CF500310B7F /* GRMustacheTemplateRepositoryTest in Resources */, + 56214C151BA1A59E0070C6CF /* GRMustacheTemplateRepositoryWithBundleTest.mustache in Resources */, + 56214BF51BA1A58A0070C6CF /* GRMustacheTemplateFromMethodsTest in Resources */, + 56214BF61BA1A58A0070C6CF /* GRMustacheTemplateFromMethodsTest.json in Resources */, + 56214C031BA1A58E0070C6CF /* GRMustacheTemplateRenderMethodsTest.mustache in Resources */, + 56214BAB1BA1A54C0070C6CF /* GRHoganSuites in Resources */, + 56214C171BA1A59E0070C6CF /* GRMustacheTemplateRepositoryWithBundleTest_partial in Resources */, + 56214C221BA1A5AB0070C6CF /* GRMustacheTemplateRepositoryTest_ISOLatin1 in Resources */, + 56214C021BA1A58E0070C6CF /* GRMustacheTemplateRenderMethodsTest.json in Resources */, + 56214C161BA1A59E0070C6CF /* GRMustacheTemplateRepositoryWithBundleTest.text in Resources */, + 56214C011BA1A58E0070C6CF /* GRMustacheTemplateRenderMethodsTest in Resources */, + 56214BA31BA1A5450070C6CF /* GRMustacheSuites in Resources */, + 56214C251BA1A5B10070C6CF /* GRMustacheSuites_7_2 in Resources */, + 56214BE61BA1A5800070C6CF /* GRMustacheTagDelegateTest.mustache in Resources */, + 56214C191BA1A59E0070C6CF /* GRMustacheTemplateRepositoryWithBundleTest_partial.text in Resources */, + 56214C141BA1A59E0070C6CF /* GRMustacheTemplateRepositoryWithBundleTest in Resources */, + 56214BA91BA1A54C0070C6CF /* specs in Resources */, + 56214BFA1BA1A58A0070C6CF /* GRMustacheTemplateFromMethodsTest_parserError.mustache in Resources */, + 56214C211BA1A5AB0070C6CF /* GRMustacheTemplateRepositoryTest in Resources */, + 56214BE71BA1A5800070C6CF /* GRMustacheTagDelegateTest_wrapper.mustache in Resources */, + 56214BF71BA1A58A0070C6CF /* GRMustacheTemplateFromMethodsTest.mustache in Resources */, + 56214BD91BA1A5760070C6CF /* GRMustacheLocalizerTestBundle in Resources */, + 56214C0D1BA1A59A0070C6CF /* GRMustacheTemplateRepositoryWithBundleTestResources in Resources */, + 56214BAA1BA1A54C0070C6CF /* GRMustacheJavaSuites in Resources */, + 56214BF81BA1A58A0070C6CF /* GRMustacheTemplateFromMethodsTest_compilerError.mustache in Resources */, + 56214BF91BA1A58A0070C6CF /* GRMustacheTemplateFromMethodsTest_compilerErrorWrapper.mustache in Resources */, + 56214BFB1BA1A58A0070C6CF /* GRMustacheTemplateFromMethodsTest_parserErrorWrapper.mustache in Resources */, + 56214C181BA1A59E0070C6CF /* GRMustacheTemplateRepositoryWithBundleTest_partial.mustache in Resources */, + 56214C231BA1A5AB0070C6CF /* GRMustacheTemplateRepositoryTest_UTF8 in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 6586A05B1B9E2D720067C98E /* Resources */ = { + 56214B881BA1A4D50070C6CF /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 56214C0F1BA1A59D0070C6CF /* GRMustacheTemplateRepositoryWithBundleTest.mustache in Resources */, + 56214BED1BA1A58A0070C6CF /* GRMustacheTemplateFromMethodsTest in Resources */, + 56214BEE1BA1A58A0070C6CF /* GRMustacheTemplateFromMethodsTest.json in Resources */, + 56214BFF1BA1A58D0070C6CF /* GRMustacheTemplateRenderMethodsTest.mustache in Resources */, + 56214BA81BA1A54C0070C6CF /* GRHoganSuites in Resources */, + 56214C111BA1A59D0070C6CF /* GRMustacheTemplateRepositoryWithBundleTest_partial in Resources */, + 56214C1F1BA1A5AB0070C6CF /* GRMustacheTemplateRepositoryTest_ISOLatin1 in Resources */, + 56214BFE1BA1A58D0070C6CF /* GRMustacheTemplateRenderMethodsTest.json in Resources */, + 56214C101BA1A59D0070C6CF /* GRMustacheTemplateRepositoryWithBundleTest.text in Resources */, + 56214BFD1BA1A58D0070C6CF /* GRMustacheTemplateRenderMethodsTest in Resources */, + 56214BA21BA1A5440070C6CF /* GRMustacheSuites in Resources */, + 56214C241BA1A5B00070C6CF /* GRMustacheSuites_7_2 in Resources */, + 56214BE31BA1A5800070C6CF /* GRMustacheTagDelegateTest.mustache in Resources */, + 56214C131BA1A59D0070C6CF /* GRMustacheTemplateRepositoryWithBundleTest_partial.text in Resources */, + 56214C0E1BA1A59D0070C6CF /* GRMustacheTemplateRepositoryWithBundleTest in Resources */, + 56214BA61BA1A54C0070C6CF /* specs in Resources */, + 56214BF21BA1A58A0070C6CF /* GRMustacheTemplateFromMethodsTest_parserError.mustache in Resources */, + 56214C1E1BA1A5AB0070C6CF /* GRMustacheTemplateRepositoryTest in Resources */, + 56214BE41BA1A5800070C6CF /* GRMustacheTagDelegateTest_wrapper.mustache in Resources */, + 56214BEF1BA1A58A0070C6CF /* GRMustacheTemplateFromMethodsTest.mustache in Resources */, + 56214BD81BA1A5760070C6CF /* GRMustacheLocalizerTestBundle in Resources */, + 56214C0C1BA1A59A0070C6CF /* GRMustacheTemplateRepositoryWithBundleTestResources in Resources */, + 56214BA71BA1A54C0070C6CF /* GRMustacheJavaSuites in Resources */, + 56214BF01BA1A58A0070C6CF /* GRMustacheTemplateFromMethodsTest_compilerError.mustache in Resources */, + 56214BF11BA1A58A0070C6CF /* GRMustacheTemplateFromMethodsTest_compilerErrorWrapper.mustache in Resources */, + 56214BF31BA1A58A0070C6CF /* GRMustacheTemplateFromMethodsTest_parserErrorWrapper.mustache in Resources */, + 56214C121BA1A59D0070C6CF /* GRMustacheTemplateRepositoryWithBundleTest_partial.mustache in Resources */, + 56214C201BA1A5AB0070C6CF /* GRMustacheTemplateRepositoryTest_UTF8 in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 56DEC253152631040031E8DC /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; + 6586A05B1B9E2D720067C98E /* Resources */ = { + isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); - inputPaths = ( - ); - outputPaths = ( - ); runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n"; }; - 56DEC2791526311C0031E8DC /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n"; - }; -/* End PBXShellScriptBuildPhase section */ +/* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - 56DEC244152631040031E8DC /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 56DEC2BE152631300031E8DC /* GRMustache.m in Sources */, - 56BF375119B8EEC700854524 /* GRMustacheURLLibrary.m in Sources */, - 56BF36FE19B8EEAE00854524 /* GRMustacheRendering.m in Sources */, - 56BF36B819B8EE9D00854524 /* GRMustachePartialNode.m in Sources */, - 56BF371919B8EEB900854524 /* GRMustacheTemplateRepository.m in Sources */, - 56BF373D19B8EEC700854524 /* GRMustacheEachFilter.m in Sources */, - 56BF36A819B8EE9D00854524 /* GRMustacheScopedExpression.m in Sources */, - 56BF373719B8EEC700854524 /* NSFormatter+GRMustache.m in Sources */, - 56BF36BC19B8EE9D00854524 /* GRMustacheSectionTag.m in Sources */, - 56BF374D19B8EEC700854524 /* GRMustacheStandardLibrary.m in Sources */, - 56BF36AC19B8EE9D00854524 /* GRMustacheCompiler.m in Sources */, - 56BF36EE19B8EEAE00854524 /* GRMustacheExpressionInvocation.m in Sources */, - 56BF376A19B8EF2800854524 /* GRMustacheTranslateCharacters.m in Sources */, - 56BF36F419B8EEAE00854524 /* GRMustacheFilter.m in Sources */, - 56BF374B19B8EEC700854524 /* GRMustacheLocalizer.m in Sources */, - 56BF36A019B8EE9D00854524 /* GRMustacheIdentifierExpression.m in Sources */, - 56BF374519B8EEC700854524 /* GRMustacheJavascriptLibrary.m in Sources */, - 56BF366B19B8EE8B00854524 /* GRMustacheTemplateParser.m in Sources */, - 56BF36B019B8EE9D00854524 /* GRMustacheInheritedPartialNode.m in Sources */, - 56BF36CE19B8EE9E00854524 /* GRMustacheTextNode.m in Sources */, - 56BF365C19B8EE7A00854524 /* GRMustacheConfiguration.m in Sources */, - 56BF36D219B8EE9E00854524 /* GRMustacheVariableTag.m in Sources */, - 56BF371319B8EEB900854524 /* GRMustacheTemplate.m in Sources */, - 56BF369C19B8EE9D00854524 /* GRMustacheFilteredExpression.m in Sources */, - 56BF374119B8EEC700854524 /* GRMustacheHTMLLibrary.m in Sources */, - 56BF36C219B8EE9D00854524 /* GRMustacheTag.m in Sources */, - 56BF36A419B8EE9D00854524 /* GRMustacheImplicitIteratorExpression.m in Sources */, - 56BF366719B8EE8B00854524 /* GRMustacheExpressionParser.m in Sources */, - 56BF36C619B8EE9E00854524 /* GRMustacheTemplateAST.m in Sources */, - 56BF366F19B8EE8B00854524 /* GRMustacheToken.m in Sources */, - 56BF36F819B8EEAE00854524 /* GRMustacheKeyAccess.m in Sources */, - 56BF376819B8EF2800854524 /* GRMustacheError.m in Sources */, - 56BF369619B8EE9D00854524 /* GRMustacheExpression.m in Sources */, - 56BF370219B8EEAE00854524 /* GRMustacheRenderingEngine.m in Sources */, - 56BF373119B8EEC700854524 /* GRMustacheTemplateGenerator.m in Sources */, - 56BF373B19B8EEC700854524 /* NSValueTransformer+GRMustache.m in Sources */, - 56BF36B419B8EE9D00854524 /* GRMustacheInheritableSectionNode.m in Sources */, - 56BF36EA19B8EEAE00854524 /* GRMustacheContext.m in Sources */, - 56B01A4E19C49AF5000439C7 /* GRMustacheExpressionGenerator.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 56DEC250152631040031E8DC /* Sources */ = { + 56214B6A1BA1A34A0070C6CF /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 56DEC3B5152638E20031E8DC /* GRMustachePrivateAPITest.m in Sources */, - 56BA246718C7A5BE006DA5F3 /* GRMustacheNSFormatterTest.m in Sources */, - 56DEC3B7152638E20031E8DC /* GRMustachePublicAPITest.m in Sources */, - 56DEC3B9152638E20031E8DC /* GRMustacheTestBase.m in Sources */, - 56B477A118CF9F6100EFF629 /* GRMustacheJavaSuitesTest.m in Sources */, - 56BA246F18C7A5BE006DA5F3 /* GRMustacheStandardLibraryTest.m in Sources */, - 56BA243C18C7A550006DA5F3 /* GRMustacheConfigurationTagDelimitersTest.m in Sources */, - 56BA245B18C7A5BE006DA5F3 /* GRMustacheLocalizerTest.m in Sources */, - 56BA247F18C7A5F8006DA5F3 /* GRMustacheVariadicFilterTest.m in Sources */, - 56BA249918C7A65E006DA5F3 /* GRMustacheContextHasValueForMustacheExpressionTest.m in Sources */, - 56DEC3C0152639560031E8DC /* GRSpecificationSuitesTest.m in Sources */, - 56C8892A190A349B0084FC5A /* GRMustacheTemplateGeneratorTest.m in Sources */, - 563D66E91526497E008628C5 /* GRMustacheSuitesTest.m in Sources */, - 56BA247B18C7A5F8006DA5F3 /* GRMustacheFilterTest.m in Sources */, - 56BA244018C7A550006DA5F3 /* GRMustacheConfigurationTest.m in Sources */, - 56A7591719C173E6008D119F /* NSJSONSerialization+Comments.m in Sources */, - 563D66EF152649DF008628C5 /* GRMustacheContextPrivateTest.m in Sources */, - 563D66F1152649DF008628C5 /* GRMustacheExpressionParserTest.m in Sources */, - 56BA24A818C7A6D4006DA5F3 /* GRMustacheTemplateExtendBaseContextTest.m in Sources */, - 56BA248B18C7A62E006DA5F3 /* GRMustacheContextTest.m in Sources */, - 560CE8921526F673004F935E /* GRBooleanTest.m in Sources */, - 56C1FDE819A66DBE00006AB4 /* GRMustacheSuites_7_2_Test.m in Sources */, - 56C1FDFD19A720B900006AB4 /* GRMustacheEachFilterTest.m in Sources */, - 5623B796152731B600DF16A6 /* GRMustacheParsingErrorsTest.m in Sources */, - 56A8D48C15279F8A00D9C718 /* GRMustacheTagDelegateTest.m in Sources */, - 56B4779118CF8AD100EFF629 /* GRMustacheContextProtectedObjectTest.m in Sources */, - 5682B46115282B8200ADD123 /* GRMustacheTemplateFromMethodsTest.m in Sources */, - 5682B46C1528342D00ADD123 /* GRMustacheTemplateRenderMethodsTest.m in Sources */, - 5682B48B1528473200ADD123 /* GRMustacheTemplateRepositoryDataSourceTest.m in Sources */, - 5682B48F1528473200ADD123 /* GRMustacheTemplateRepositoryWithBundleTest.m in Sources */, - 5682B4931528473200ADD123 /* GRMustacheTemplateRepositoryWithDictionaryTest.m in Sources */, - 56C1FDF419A6721100006AB4 /* GRMustacheRenderingObject_7_2_Test.m in Sources */, - 56BA249418C7A648006DA5F3 /* GRMustacheContextTopMustacheObjectTest.m in Sources */, - 563A5EA7163403C000E7E810 /* GRMustacheFoundationCollectionTest.m in Sources */, - 56B4778E18CF8A7C00EFF629 /* GRMustacheKeyedSubscriptingTest.m in Sources */, - 56BA248F18C7A62E006DA5F3 /* GRMustacheContextValueForMustacheKeyTest.m in Sources */, - 56B4779718CF8D2A00EFF629 /* GRHoganSuitesTest.m in Sources */, - 568140D9163659CC00310B7F /* GRMustacheRenderingObjectTest.m in Sources */, - 56BA24A318C7A6B2006DA5F3 /* GRMustacheConfigurationExtendBaseContextTest.m in Sources */, - 56BA243818C7A550006DA5F3 /* GRMustacheConfigurationBaseContextTest.m in Sources */, - 568140E216365D3000310B7F /* GRMustacheTemplateRepositoryWithBaseURLTest.m in Sources */, - 56BA24B318C9A2EE006DA5F3 /* GRMustacheContextKeyAccessTest.m in Sources */, - 568140E416365D3000310B7F /* GRMustacheTemplateRepositoryWithDirectoryTest.m in Sources */, - 568140E816365D6100310B7F /* GRMustachePositionFilterTest.m in Sources */, - 56ABDBC318D23CF7009DF17A /* GRMustacheTemplateTemplateRepositoryTest.m in Sources */, - 5648F1B718998BC5001F4B83 /* GRMustacheTemplateRepositoryTest.m in Sources */, - 56BA246B18C7A5BE006DA5F3 /* GRMustacheNSValueTransformerTest.m in Sources */, - 56BA242618C7A494006DA5F3 /* GRMustacheErrorHandlingTest.m in Sources */, + 56214C721BA1A6F20070C6CF /* GRMustacheKeyAccess.m in Sources */, + 56214C821BA1A6F20070C6CF /* GRMustacheTranslateCharacters.m in Sources */, + 56214C671BA1A6F20070C6CF /* GRMustacheInheritedPartialNode.m in Sources */, + 56214C6B1BA1A6F20070C6CF /* GRMustacheTag.m in Sources */, + 56214C621BA1A6F20070C6CF /* GRMustacheExpression.m in Sources */, + 56214C801BA1A6F20070C6CF /* GRMustacheURLLibrary.m in Sources */, + 56214C761BA1A6F20070C6CF /* GRMustacheTemplateRepository.m in Sources */, + 56214C601BA1A6F20070C6CF /* GRMustacheToken.m in Sources */, + 56214C7F1BA1A6F20070C6CF /* GRMustacheStandardLibrary.m in Sources */, + 56214C7E1BA1A6F20070C6CF /* GRMustacheLocalizer.m in Sources */, + 56214C781BA1A6F20070C6CF /* GRMustacheTemplateGenerator.m in Sources */, + 56214C741BA1A6F20070C6CF /* GRMustacheRenderingEngine.m in Sources */, + 56214C731BA1A6F20070C6CF /* GRMustacheRendering.m in Sources */, + 56214C771BA1A6F20070C6CF /* GRMustacheExpressionGenerator.m in Sources */, + 56214C7B1BA1A6F20070C6CF /* GRMustacheEachFilter.m in Sources */, + 56214C661BA1A6F20070C6CF /* GRMustacheScopedExpression.m in Sources */, + 56214C641BA1A6F20070C6CF /* GRMustacheIdentifierExpression.m in Sources */, + 56214C811BA1A6F20070C6CF /* GRMustacheError.m in Sources */, + 56214C5F1BA1A6F20070C6CF /* GRMustacheTemplateParser.m in Sources */, + 56214C651BA1A6F20070C6CF /* GRMustacheImplicitIteratorExpression.m in Sources */, + 56214C7C1BA1A6F20070C6CF /* GRMustacheHTMLLibrary.m in Sources */, + 56214C711BA1A6F20070C6CF /* GRMustacheFilter.m in Sources */, + 56214C701BA1A6F20070C6CF /* GRMustacheExpressionInvocation.m in Sources */, + 56214C6D1BA1A6F20070C6CF /* GRMustacheTextNode.m in Sources */, + 56214C751BA1A6F20070C6CF /* GRMustacheTemplate.m in Sources */, + 56214C6E1BA1A6F20070C6CF /* GRMustacheVariableTag.m in Sources */, + 56214C6A1BA1A6F20070C6CF /* GRMustacheSectionTag.m in Sources */, + 56214C6C1BA1A6F20070C6CF /* GRMustacheTemplateAST.m in Sources */, + 56214C5D1BA1A6F20070C6CF /* GRMustacheConfiguration.m in Sources */, + 56214C611BA1A6F20070C6CF /* GRMustacheCompiler.m in Sources */, + 56214C831BA1A6F20070C6CF /* GRMustache.m in Sources */, + 56214C6F1BA1A6F20070C6CF /* GRMustacheContext.m in Sources */, + 56214C631BA1A6F20070C6CF /* GRMustacheFilteredExpression.m in Sources */, + 56214C681BA1A6F20070C6CF /* GRMustacheInheritableSectionNode.m in Sources */, + 56214C791BA1A6F20070C6CF /* NSFormatter+GRMustache.m in Sources */, + 56214C7A1BA1A6F20070C6CF /* NSValueTransformer+GRMustache.m in Sources */, + 56214C7D1BA1A6F20070C6CF /* GRMustacheJavascriptLibrary.m in Sources */, + 56214C5E1BA1A6F20070C6CF /* GRMustacheExpressionParser.m in Sources */, + 56214C691BA1A6F20070C6CF /* GRMustachePartialNode.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 56DEC26A1526311B0031E8DC /* Sources */ = { + 56214B771BA1A4C50070C6CF /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 56DEC2BF152631300031E8DC /* GRMustache.m in Sources */, - 56BF375219B8EEC700854524 /* GRMustacheURLLibrary.m in Sources */, - 56BF36FF19B8EEAE00854524 /* GRMustacheRendering.m in Sources */, - 56BF36B919B8EE9D00854524 /* GRMustachePartialNode.m in Sources */, - 56BF371A19B8EEB900854524 /* GRMustacheTemplateRepository.m in Sources */, - 56BF373E19B8EEC700854524 /* GRMustacheEachFilter.m in Sources */, - 56BF36A919B8EE9D00854524 /* GRMustacheScopedExpression.m in Sources */, - 56BF373819B8EEC700854524 /* NSFormatter+GRMustache.m in Sources */, - 56BF36BD19B8EE9D00854524 /* GRMustacheSectionTag.m in Sources */, - 56BF374E19B8EEC700854524 /* GRMustacheStandardLibrary.m in Sources */, - 56BF36AD19B8EE9D00854524 /* GRMustacheCompiler.m in Sources */, - 56BF36EF19B8EEAE00854524 /* GRMustacheExpressionInvocation.m in Sources */, - 56BF376B19B8EF2800854524 /* GRMustacheTranslateCharacters.m in Sources */, - 56BF36F519B8EEAE00854524 /* GRMustacheFilter.m in Sources */, - 56BF374C19B8EEC700854524 /* GRMustacheLocalizer.m in Sources */, - 56BF36A119B8EE9D00854524 /* GRMustacheIdentifierExpression.m in Sources */, - 56BF374619B8EEC700854524 /* GRMustacheJavascriptLibrary.m in Sources */, - 56BF366C19B8EE8B00854524 /* GRMustacheTemplateParser.m in Sources */, - 56BF36B119B8EE9D00854524 /* GRMustacheInheritedPartialNode.m in Sources */, - 56BF36CF19B8EE9E00854524 /* GRMustacheTextNode.m in Sources */, - 56BF365D19B8EE7A00854524 /* GRMustacheConfiguration.m in Sources */, - 56BF36D319B8EE9E00854524 /* GRMustacheVariableTag.m in Sources */, - 56BF371419B8EEB900854524 /* GRMustacheTemplate.m in Sources */, - 56BF369D19B8EE9D00854524 /* GRMustacheFilteredExpression.m in Sources */, - 56BF374219B8EEC700854524 /* GRMustacheHTMLLibrary.m in Sources */, - 56BF36C319B8EE9D00854524 /* GRMustacheTag.m in Sources */, - 56BF36A519B8EE9D00854524 /* GRMustacheImplicitIteratorExpression.m in Sources */, - 56BF366819B8EE8B00854524 /* GRMustacheExpressionParser.m in Sources */, - 56BF36C719B8EE9E00854524 /* GRMustacheTemplateAST.m in Sources */, - 56BF367019B8EE8B00854524 /* GRMustacheToken.m in Sources */, - 56BF36F919B8EEAE00854524 /* GRMustacheKeyAccess.m in Sources */, - 56BF376919B8EF2800854524 /* GRMustacheError.m in Sources */, - 56BF369719B8EE9D00854524 /* GRMustacheExpression.m in Sources */, - 56BF370319B8EEAE00854524 /* GRMustacheRenderingEngine.m in Sources */, - 56BF373219B8EEC700854524 /* GRMustacheTemplateGenerator.m in Sources */, - 56BF373C19B8EEC700854524 /* NSValueTransformer+GRMustache.m in Sources */, - 56BF36B519B8EE9D00854524 /* GRMustacheInheritableSectionNode.m in Sources */, - 56BF36EB19B8EEAE00854524 /* GRMustacheContext.m in Sources */, - 56B01A4F19C49AF5000439C7 /* GRMustacheExpressionGenerator.m in Sources */, + 56214BB71BA1A5560070C6CF /* GRHoganSuitesTest.m in Sources */, + 56214B9A1BA1A52E0070C6CF /* GRMustacheContextPrivateTest.m in Sources */, + 56214BC41BA1A5690070C6CF /* GRMustacheConfigurationTagDelimitersTest.m in Sources */, + 56214BA51BA1A5480070C6CF /* GRMustacheSuitesTest.m in Sources */, + 56214C071BA1A5920070C6CF /* GRMustacheTemplateRepositoryTest.m in Sources */, + 56214B991BA1A52A0070C6CF /* GRMustachePrivateAPITest.m in Sources */, + 56214C271BA1A5B40070C6CF /* GRMustacheSuites_7_2_Test.m in Sources */, + 56214B9C1BA1A52E0070C6CF /* GRMustacheTemplateGeneratorTest.m in Sources */, + 56214B9B1BA1A52E0070C6CF /* GRMustacheExpressionParserTest.m in Sources */, + 56214BEA1BA1A5850070C6CF /* GRMustacheTemplateExtendBaseContextTest.m in Sources */, + 56214BD21BA1A56D0070C6CF /* GRMustacheContextValueForMustacheKeyTest.m in Sources */, + 56214BD31BA1A56D0070C6CF /* GRMustacheContextKeyAccessTest.m in Sources */, + 56214BBB1BA1A5560070C6CF /* GRMustacheParsingErrorsTest.m in Sources */, + 56214BCD1BA1A56D0070C6CF /* GRMustacheKeyedSubscriptingTest.m in Sources */, + 56214C001BA1A58E0070C6CF /* GRMustacheTemplateRenderMethodsTest.m in Sources */, + 56214BD11BA1A56D0070C6CF /* GRMustacheContextTopMustacheObjectTest.m in Sources */, + 56214BBC1BA1A5560070C6CF /* GRMustachePositionFilterTest.m in Sources */, + 56214BEB1BA1A5850070C6CF /* GRMustacheTemplateTemplateRepositoryTest.m in Sources */, + 56214C1C1BA1A5A70070C6CF /* GRMustacheTemplateRepositoryWithBaseURLTest.m in Sources */, + 56214CB41BA1A8BE0070C6CF /* NSJSONSerialization+Comments.m in Sources */, + 56214BCF1BA1A56D0070C6CF /* GRMustacheContextProtectedObjectTest.m in Sources */, + 56214BA11BA1A5350070C6CF /* GRMustachePublicAPITest.m in Sources */, + 56214BC21BA1A5690070C6CF /* GRMustacheConfigurationBaseContextTest.m in Sources */, + 56214C1D1BA1A5A70070C6CF /* GRMustacheTemplateRepositoryWithDirectoryTest.m in Sources */, + 56214BF41BA1A58A0070C6CF /* GRMustacheTemplateFromMethodsTest.m in Sources */, + 56214C091BA1A5920070C6CF /* GRMustacheTemplateRepositoryWithDictionaryTest.m in Sources */, + 56214BDE1BA1A57C0070C6CF /* GRMustacheLocalizerTest.m in Sources */, + 56214BC31BA1A5690070C6CF /* GRMustacheConfigurationExtendBaseContextTest.m in Sources */, + 56214BE11BA1A57C0070C6CF /* GRMustacheStandardLibraryTest.m in Sources */, + 56214C2B1BA1A5B90070C6CF /* GRMustacheRenderingObject_7_2_Test.m in Sources */, + 56214C0B1BA1A5970070C6CF /* GRMustacheTemplateRepositoryWithBundleTest.m in Sources */, + 56214BCE1BA1A56D0070C6CF /* GRMustacheContextHasValueForMustacheExpressionTest.m in Sources */, + 56214B961BA1A51A0070C6CF /* GRMustacheTestBase.m in Sources */, + 56214BC51BA1A5690070C6CF /* GRMustacheConfigurationTest.m in Sources */, + 56214C2A1BA1A5B90070C6CF /* GRMustacheEachFilterTest.m in Sources */, + 56214C081BA1A5920070C6CF /* GRMustacheTemplateRepositoryDataSourceTest.m in Sources */, + 56214BE01BA1A57C0070C6CF /* GRMustacheNSValueTransformerTest.m in Sources */, + 56214BBD1BA1A5560070C6CF /* GRMustacheRenderingObjectTest.m in Sources */, + 56214BB51BA1A5560070C6CF /* GRSpecificationSuitesTest.m in Sources */, + 56214BE51BA1A5800070C6CF /* GRMustacheTagDelegateTest.m in Sources */, + 56214BB61BA1A5560070C6CF /* GRMustacheJavaSuitesTest.m in Sources */, + 56214BB91BA1A5560070C6CF /* GRMustacheErrorHandlingTest.m in Sources */, + 56214BD71BA1A5710070C6CF /* GRMustacheVariadicFilterTest.m in Sources */, + 56214BD01BA1A56D0070C6CF /* GRMustacheContextTest.m in Sources */, + 56214BB81BA1A5560070C6CF /* GRBooleanTest.m in Sources */, + 56214BD61BA1A5710070C6CF /* GRMustacheFilterTest.m in Sources */, + 56214BDF1BA1A57C0070C6CF /* GRMustacheNSFormatterTest.m in Sources */, + 56214BBA1BA1A5560070C6CF /* GRMustacheFoundationCollectionTest.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 56DEC2761526311C0031E8DC /* Sources */ = { + 56214B861BA1A4D50070C6CF /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 56DEC3B6152638E20031E8DC /* GRMustachePrivateAPITest.m in Sources */, - 56BA246918C7A5BE006DA5F3 /* GRMustacheNSFormatterTest.m in Sources */, - 56DEC3B8152638E20031E8DC /* GRMustachePublicAPITest.m in Sources */, - 56DEC3BA152638E20031E8DC /* GRMustacheTestBase.m in Sources */, - 56B477A218CF9F6100EFF629 /* GRMustacheJavaSuitesTest.m in Sources */, - 56BA247118C7A5BE006DA5F3 /* GRMustacheStandardLibraryTest.m in Sources */, - 56BA243E18C7A550006DA5F3 /* GRMustacheConfigurationTagDelimitersTest.m in Sources */, - 56BA245D18C7A5BE006DA5F3 /* GRMustacheLocalizerTest.m in Sources */, - 56BA248118C7A5F8006DA5F3 /* GRMustacheVariadicFilterTest.m in Sources */, - 56BA249B18C7A65E006DA5F3 /* GRMustacheContextHasValueForMustacheExpressionTest.m in Sources */, - 56DEC3C1152639560031E8DC /* GRSpecificationSuitesTest.m in Sources */, - 56C8892B190A349B0084FC5A /* GRMustacheTemplateGeneratorTest.m in Sources */, - 563D66EA1526497E008628C5 /* GRMustacheSuitesTest.m in Sources */, - 56BA247D18C7A5F8006DA5F3 /* GRMustacheFilterTest.m in Sources */, - 56BA244218C7A550006DA5F3 /* GRMustacheConfigurationTest.m in Sources */, - 56A7591819C173E6008D119F /* NSJSONSerialization+Comments.m in Sources */, - 563D66F0152649DF008628C5 /* GRMustacheContextPrivateTest.m in Sources */, - 563D66F2152649DF008628C5 /* GRMustacheExpressionParserTest.m in Sources */, - 56BA24AA18C7A6D4006DA5F3 /* GRMustacheTemplateExtendBaseContextTest.m in Sources */, - 56BA248D18C7A62E006DA5F3 /* GRMustacheContextTest.m in Sources */, - 560CE8911526F672004F935E /* GRBooleanTest.m in Sources */, - 56C1FDE919A66DBE00006AB4 /* GRMustacheSuites_7_2_Test.m in Sources */, - 56C1FDFE19A720B900006AB4 /* GRMustacheEachFilterTest.m in Sources */, - 5623B797152731B600DF16A6 /* GRMustacheParsingErrorsTest.m in Sources */, - 56A8D48D15279F8A00D9C718 /* GRMustacheTagDelegateTest.m in Sources */, - 56B4779218CF8AD100EFF629 /* GRMustacheContextProtectedObjectTest.m in Sources */, - 5682B46215282B8200ADD123 /* GRMustacheTemplateFromMethodsTest.m in Sources */, - 5682B46D1528342D00ADD123 /* GRMustacheTemplateRenderMethodsTest.m in Sources */, - 5682B48C1528473200ADD123 /* GRMustacheTemplateRepositoryDataSourceTest.m in Sources */, - 5682B4901528473200ADD123 /* GRMustacheTemplateRepositoryWithBundleTest.m in Sources */, - 5682B4941528473200ADD123 /* GRMustacheTemplateRepositoryWithDictionaryTest.m in Sources */, - 56C1FDF519A6721100006AB4 /* GRMustacheRenderingObject_7_2_Test.m in Sources */, - 56BA249618C7A648006DA5F3 /* GRMustacheContextTopMustacheObjectTest.m in Sources */, - 563A5EA8163403C000E7E810 /* GRMustacheFoundationCollectionTest.m in Sources */, - 56B4778F18CF8A7C00EFF629 /* GRMustacheKeyedSubscriptingTest.m in Sources */, - 56BA249118C7A62E006DA5F3 /* GRMustacheContextValueForMustacheKeyTest.m in Sources */, - 56B4779818CF8D2A00EFF629 /* GRHoganSuitesTest.m in Sources */, - 568140DA163659CC00310B7F /* GRMustacheRenderingObjectTest.m in Sources */, - 56BA24A518C7A6B2006DA5F3 /* GRMustacheConfigurationExtendBaseContextTest.m in Sources */, - 56BA243A18C7A550006DA5F3 /* GRMustacheConfigurationBaseContextTest.m in Sources */, - 568140E316365D3000310B7F /* GRMustacheTemplateRepositoryWithBaseURLTest.m in Sources */, - 56BA24B518C9A2EE006DA5F3 /* GRMustacheContextKeyAccessTest.m in Sources */, - 568140E516365D3000310B7F /* GRMustacheTemplateRepositoryWithDirectoryTest.m in Sources */, - 568140E916365D6100310B7F /* GRMustachePositionFilterTest.m in Sources */, - 56ABDBC418D23CF7009DF17A /* GRMustacheTemplateTemplateRepositoryTest.m in Sources */, - 5648F1B918998BC5001F4B83 /* GRMustacheTemplateRepositoryTest.m in Sources */, - 56BA246D18C7A5BE006DA5F3 /* GRMustacheNSValueTransformerTest.m in Sources */, - 56BA242818C7A494006DA5F3 /* GRMustacheErrorHandlingTest.m in Sources */, + 56214BAE1BA1A5550070C6CF /* GRHoganSuitesTest.m in Sources */, + 56214B9D1BA1A52F0070C6CF /* GRMustacheContextPrivateTest.m in Sources */, + 56214BC01BA1A5690070C6CF /* GRMustacheConfigurationTagDelimitersTest.m in Sources */, + 56214BA41BA1A5480070C6CF /* GRMustacheSuitesTest.m in Sources */, + 56214C041BA1A5920070C6CF /* GRMustacheTemplateRepositoryTest.m in Sources */, + 56214B981BA1A5290070C6CF /* GRMustachePrivateAPITest.m in Sources */, + 56214C261BA1A5B40070C6CF /* GRMustacheSuites_7_2_Test.m in Sources */, + 56214B9F1BA1A52F0070C6CF /* GRMustacheTemplateGeneratorTest.m in Sources */, + 56214B9E1BA1A52F0070C6CF /* GRMustacheExpressionParserTest.m in Sources */, + 56214BE81BA1A5850070C6CF /* GRMustacheTemplateExtendBaseContextTest.m in Sources */, + 56214BCB1BA1A56D0070C6CF /* GRMustacheContextValueForMustacheKeyTest.m in Sources */, + 56214BCC1BA1A56D0070C6CF /* GRMustacheContextKeyAccessTest.m in Sources */, + 56214BB21BA1A5550070C6CF /* GRMustacheParsingErrorsTest.m in Sources */, + 56214BC61BA1A56D0070C6CF /* GRMustacheKeyedSubscriptingTest.m in Sources */, + 56214BFC1BA1A58D0070C6CF /* GRMustacheTemplateRenderMethodsTest.m in Sources */, + 56214BCA1BA1A56D0070C6CF /* GRMustacheContextTopMustacheObjectTest.m in Sources */, + 56214BB31BA1A5550070C6CF /* GRMustachePositionFilterTest.m in Sources */, + 56214BE91BA1A5850070C6CF /* GRMustacheTemplateTemplateRepositoryTest.m in Sources */, + 56214C1A1BA1A5A60070C6CF /* GRMustacheTemplateRepositoryWithBaseURLTest.m in Sources */, + 56214CB31BA1A8BE0070C6CF /* NSJSONSerialization+Comments.m in Sources */, + 56214BC81BA1A56D0070C6CF /* GRMustacheContextProtectedObjectTest.m in Sources */, + 56214BA01BA1A5350070C6CF /* GRMustachePublicAPITest.m in Sources */, + 56214BBE1BA1A5690070C6CF /* GRMustacheConfigurationBaseContextTest.m in Sources */, + 56214C1B1BA1A5A60070C6CF /* GRMustacheTemplateRepositoryWithDirectoryTest.m in Sources */, + 56214BEC1BA1A58A0070C6CF /* GRMustacheTemplateFromMethodsTest.m in Sources */, + 56214C061BA1A5920070C6CF /* GRMustacheTemplateRepositoryWithDictionaryTest.m in Sources */, + 56214BDA1BA1A57C0070C6CF /* GRMustacheLocalizerTest.m in Sources */, + 56214BBF1BA1A5690070C6CF /* GRMustacheConfigurationExtendBaseContextTest.m in Sources */, + 56214BDD1BA1A57C0070C6CF /* GRMustacheStandardLibraryTest.m in Sources */, + 56214C291BA1A5B80070C6CF /* GRMustacheRenderingObject_7_2_Test.m in Sources */, + 56214C0A1BA1A5970070C6CF /* GRMustacheTemplateRepositoryWithBundleTest.m in Sources */, + 56214BC71BA1A56D0070C6CF /* GRMustacheContextHasValueForMustacheExpressionTest.m in Sources */, + 56214B971BA1A51A0070C6CF /* GRMustacheTestBase.m in Sources */, + 56214BC11BA1A5690070C6CF /* GRMustacheConfigurationTest.m in Sources */, + 56214C281BA1A5B80070C6CF /* GRMustacheEachFilterTest.m in Sources */, + 56214C051BA1A5920070C6CF /* GRMustacheTemplateRepositoryDataSourceTest.m in Sources */, + 56214BDC1BA1A57C0070C6CF /* GRMustacheNSValueTransformerTest.m in Sources */, + 56214BB41BA1A5550070C6CF /* GRMustacheRenderingObjectTest.m in Sources */, + 56214BAC1BA1A5550070C6CF /* GRSpecificationSuitesTest.m in Sources */, + 56214BE21BA1A5800070C6CF /* GRMustacheTagDelegateTest.m in Sources */, + 56214BAD1BA1A5550070C6CF /* GRMustacheJavaSuitesTest.m in Sources */, + 56214BB01BA1A5550070C6CF /* GRMustacheErrorHandlingTest.m in Sources */, + 56214BD51BA1A5710070C6CF /* GRMustacheVariadicFilterTest.m in Sources */, + 56214BC91BA1A56D0070C6CF /* GRMustacheContextTest.m in Sources */, + 56214BAF1BA1A5550070C6CF /* GRBooleanTest.m in Sources */, + 56214BD41BA1A5710070C6CF /* GRMustacheFilterTest.m in Sources */, + 56214BDB1BA1A57C0070C6CF /* GRMustacheNSFormatterTest.m in Sources */, + 56214BB11BA1A5550070C6CF /* GRMustacheFoundationCollectionTest.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1935,19 +1696,175 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 56DEC259152631040031E8DC /* PBXTargetDependency */ = { + 56214B821BA1A4C50070C6CF /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = 56DEC247152631040031E8DC /* GRMustache7-MacOS */; - targetProxy = 56DEC258152631040031E8DC /* PBXContainerItemProxy */; + target = 6586A05C1B9E2D720067C98E /* GRMustacheiOS */; + targetProxy = 56214B811BA1A4C50070C6CF /* PBXContainerItemProxy */; }; - 56DEC2801526311C0031E8DC /* PBXTargetDependency */ = { + 56214B911BA1A4D50070C6CF /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = 56DEC26D1526311B0031E8DC /* GRMustache7-iOS */; - targetProxy = 56DEC27F1526311C0031E8DC /* PBXContainerItemProxy */; + target = 56214B6E1BA1A34A0070C6CF /* GRMustacheOSX */; + targetProxy = 56214B901BA1A4D50070C6CF /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ + 56214B751BA1A34A0070C6CF /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = NO; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + COMBINE_HIDPI_IMAGES = YES; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_VERSION = A; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + INFOPLIST_FILE = GRMustache/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 10.10; + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.github.groue.GRMustache; + PRODUCT_NAME = GRMustache; + SKIP_INSTALL = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 56214B761BA1A34A0070C6CF /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = NO; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + COMBINE_HIDPI_IMAGES = YES; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_NS_ASSERTIONS = NO; + FRAMEWORK_VERSION = A; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + INFOPLIST_FILE = GRMustache/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 10.10; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_BUNDLE_IDENTIFIER = com.github.groue.GRMustache; + PRODUCT_NAME = GRMustache; + SKIP_INSTALL = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 56214B841BA1A4C50070C6CF /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = NO; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + DEBUG_INFORMATION_FORMAT = dwarf; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + INFOPLIST_FILE = tests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.github.groue.GRMustacheiOSTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + }; + name = Debug; + }; + 56214B851BA1A4C50070C6CF /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = NO; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + COPY_PHASE_STRIP = NO; + ENABLE_NS_ASSERTIONS = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + INFOPLIST_FILE = tests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_BUNDLE_IDENTIFIER = com.github.groue.GRMustacheiOSTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 56214B931BA1A4D50070C6CF /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = NO; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + COMBINE_HIDPI_IMAGES = YES; + DEBUG_INFORMATION_FORMAT = dwarf; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + INFOPLIST_FILE = tests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 10.10; + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.github.groue.GRMustacheOSXTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 56214B941BA1A4D50070C6CF /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = NO; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + COMBINE_HIDPI_IMAGES = YES; + COPY_PHASE_STRIP = NO; + ENABLE_NS_ASSERTIONS = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + INFOPLIST_FILE = tests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 10.10; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_BUNDLE_IDENTIFIER = com.github.groue.GRMustacheOSXTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; 56DEC1B215262FC90031E8DC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1961,6 +1878,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_OBJC_EXCEPTIONS = YES; @@ -2019,135 +1937,13 @@ }; name = Release; }; - 56DEC265152631040031E8DC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - COMBINE_HIDPI_IMAGES = YES; - DSTROOT = "/tmp/$(TARGET_NAME).dst"; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Debug; - }; - 56DEC266152631040031E8DC /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - COMBINE_HIDPI_IMAGES = YES; - DSTROOT = "/tmp/$(TARGET_NAME).dst"; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Release; - }; - 56DEC268152631040031E8DC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - COMBINE_HIDPI_IMAGES = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(DEVELOPER_FRAMEWORKS_DIR)", - ); - GCC_PRECOMPILE_PREFIX_HEADER = YES; - INFOPLIST_FILE = "tests/GRMustache7Tests-Info.plist"; - OTHER_CFLAGS = ""; - OTHER_LDFLAGS = "-all_load"; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Debug; - }; - 56DEC269152631040031E8DC /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - COMBINE_HIDPI_IMAGES = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(DEVELOPER_FRAMEWORKS_DIR)", - ); - GCC_PRECOMPILE_PREFIX_HEADER = YES; - INFOPLIST_FILE = "tests/GRMustache7Tests-Info.plist"; - OTHER_CFLAGS = ""; - OTHER_LDFLAGS = "-all_load"; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Release; - }; - 56DEC28C1526311C0031E8DC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - DSTROOT = "/tmp/$(TARGET_NAME).dst"; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_THUMB_SUPPORT = NO; - OTHER_CFLAGS = "-DTARGET_OS_IPHONE"; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - }; - name = Debug; - }; - 56DEC28D1526311C0031E8DC /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - DSTROOT = "/tmp/$(TARGET_NAME).dst"; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_THUMB_SUPPORT = NO; - OTHER_CFLAGS = ( - "-DNS_BLOCK_ASSERTIONS=1", - "-DTARGET_OS_IPHONE", - ); - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 56DEC28F1526311C0031E8DC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - FRAMEWORK_SEARCH_PATHS = ( - "$(SDKROOT)/Developer/Library/Frameworks", - "$(DEVELOPER_LIBRARY_DIR)/Frameworks", - "$(DEVELOPER_FRAMEWORKS_DIR)", - ); - GCC_PRECOMPILE_PREFIX_HEADER = YES; - INFOPLIST_FILE = "tests/GRMustache7Tests-Info.plist"; - OTHER_CFLAGS = ""; - OTHER_LDFLAGS = "-all_load"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - WRAPPER_EXTENSION = xctest; - }; - name = Debug; - }; - 56DEC2901526311C0031E8DC /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - FRAMEWORK_SEARCH_PATHS = ( - "$(SDKROOT)/Developer/Library/Frameworks", - "$(DEVELOPER_LIBRARY_DIR)/Frameworks", - "$(DEVELOPER_FRAMEWORKS_DIR)", - ); - GCC_PRECOMPILE_PREFIX_HEADER = YES; - INFOPLIST_FILE = "tests/GRMustache7Tests-Info.plist"; - OTHER_CFLAGS = ""; - OTHER_LDFLAGS = "-all_load"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - VALIDATE_PRODUCT = YES; - WRAPPER_EXTENSION = xctest; - }; - name = Release; - }; 6586A0621B9E2D720067C98E /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_ARC = NO; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -2166,7 +1962,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MTL_ENABLE_DEBUG_INFO = YES; PRODUCT_BUNDLE_IDENTIFIER = com.github.groue.GRMustache; - PRODUCT_NAME = "$(TARGET_NAME)"; + PRODUCT_NAME = GRMustache; PUBLIC_HEADERS_FOLDER_PATH = "$(CONTENTS_FOLDER_PATH)/Headers"; SDKROOT = iphoneos; SKIP_INSTALL = YES; @@ -2182,7 +1978,7 @@ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_ARC = NO; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -2201,7 +1997,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MTL_ENABLE_DEBUG_INFO = NO; PRODUCT_BUNDLE_IDENTIFIER = com.github.groue.GRMustache; - PRODUCT_NAME = "$(TARGET_NAME)"; + PRODUCT_NAME = GRMustache; PUBLIC_HEADERS_FOLDER_PATH = "$(CONTENTS_FOLDER_PATH)/Headers"; SDKROOT = iphoneos; SKIP_INSTALL = YES; @@ -2215,52 +2011,41 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 56DEC19F15262FC80031E8DC /* Build configuration list for PBXProject "GRMustache" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 56DEC1B215262FC90031E8DC /* Debug */, - 56DEC1B315262FC90031E8DC /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 56DEC264152631040031E8DC /* Build configuration list for PBXNativeTarget "GRMustache7-MacOS" */ = { + 56214B741BA1A34A0070C6CF /* Build configuration list for PBXNativeTarget "GRMustacheOSX" */ = { isa = XCConfigurationList; buildConfigurations = ( - 56DEC265152631040031E8DC /* Debug */, - 56DEC266152631040031E8DC /* Release */, + 56214B751BA1A34A0070C6CF /* Debug */, + 56214B761BA1A34A0070C6CF /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 56DEC267152631040031E8DC /* Build configuration list for PBXNativeTarget "GRMustache7-MacOSTests" */ = { + 56214B831BA1A4C50070C6CF /* Build configuration list for PBXNativeTarget "GRMustacheiOSTests" */ = { isa = XCConfigurationList; buildConfigurations = ( - 56DEC268152631040031E8DC /* Debug */, - 56DEC269152631040031E8DC /* Release */, + 56214B841BA1A4C50070C6CF /* Debug */, + 56214B851BA1A4C50070C6CF /* Release */, ); defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; }; - 56DEC28B1526311C0031E8DC /* Build configuration list for PBXNativeTarget "GRMustache7-iOS" */ = { + 56214B921BA1A4D50070C6CF /* Build configuration list for PBXNativeTarget "GRMustacheOSXTests" */ = { isa = XCConfigurationList; buildConfigurations = ( - 56DEC28C1526311C0031E8DC /* Debug */, - 56DEC28D1526311C0031E8DC /* Release */, + 56214B931BA1A4D50070C6CF /* Debug */, + 56214B941BA1A4D50070C6CF /* Release */, ); defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; }; - 56DEC28E1526311C0031E8DC /* Build configuration list for PBXNativeTarget "GRMustache7-iOSTests" */ = { + 56DEC19F15262FC80031E8DC /* Build configuration list for PBXProject "GRMustache" */ = { isa = XCConfigurationList; buildConfigurations = ( - 56DEC28F1526311C0031E8DC /* Debug */, - 56DEC2901526311C0031E8DC /* Release */, + 56DEC1B215262FC90031E8DC /* Debug */, + 56DEC1B315262FC90031E8DC /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 6586A0641B9E2D720067C98E /* Build configuration list for PBXNativeTarget "GRMustache" */ = { + 6586A0641B9E2D720067C98E /* Build configuration list for PBXNativeTarget "GRMustacheiOS" */ = { isa = XCConfigurationList; buildConfigurations = ( 6586A0621B9E2D720067C98E /* Debug */, diff --git a/src/GRMustache.xcodeproj/xcshareddata/xcschemes/GRMustacheOSX (Shared).xcscheme b/src/GRMustache.xcodeproj/xcshareddata/xcschemes/GRMustacheOSX (Shared).xcscheme new file mode 100644 index 00000000..9986a24e --- /dev/null +++ b/src/GRMustache.xcodeproj/xcshareddata/xcschemes/GRMustacheOSX (Shared).xcscheme @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/GRMustache.xcodeproj/xcshareddata/xcschemes/GRMustache.xcscheme b/src/GRMustache.xcodeproj/xcshareddata/xcschemes/GRMustacheiOS (Shared).xcscheme similarity index 89% rename from src/GRMustache.xcodeproj/xcshareddata/xcschemes/GRMustache.xcscheme rename to src/GRMustache.xcodeproj/xcshareddata/xcschemes/GRMustacheiOS (Shared).xcscheme index afb0b6a7..8597a204 100644 --- a/src/GRMustache.xcodeproj/xcshareddata/xcschemes/GRMustache.xcscheme +++ b/src/GRMustache.xcodeproj/xcshareddata/xcschemes/GRMustacheiOS (Shared).xcscheme @@ -15,8 +15,8 @@ @@ -46,8 +46,8 @@ @@ -64,8 +64,8 @@ diff --git a/src/tests/GRMustacheTestBase.h b/src/tests/GRMustacheTestBase.h index b14ba6d2..80ece4e2 100644 --- a/src/tests/GRMustacheTestBase.h +++ b/src/tests/GRMustacheTestBase.h @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#import +@import XCTest; #import "GRMustacheTagDelegate.h" @interface GRMustacheTestBase: XCTestCase diff --git a/src/tests/GRMustacheTestBase.m b/src/tests/GRMustacheTestBase.m index 8e5e5a95..03bb9e82 100644 --- a/src/tests/GRMustacheTestBase.m +++ b/src/tests/GRMustacheTestBase.m @@ -28,7 +28,7 @@ @implementation GRMustacheTestBase - (NSBundle *)testBundle { - return [NSBundle bundleWithIdentifier:@"com.github.groue.GRMustache"]; + return [NSBundle bundleForClass:[self class]]; } @end diff --git a/src/tests/GRMustache7Tests-Info.plist b/src/tests/Info.plist similarity index 77% rename from src/tests/GRMustache7Tests-Info.plist rename to src/tests/Info.plist index 76e2c012..ba72822e 100644 --- a/src/tests/GRMustache7Tests-Info.plist +++ b/src/tests/Info.plist @@ -5,11 +5,13 @@ CFBundleDevelopmentRegion en CFBundleExecutable - ${EXECUTABLE_NAME} + $(EXECUTABLE_NAME) CFBundleIdentifier - com.github.groue.GRMustache + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion - 7.0 + 6.0 + CFBundleName + $(PRODUCT_NAME) CFBundlePackageType BNDL CFBundleShortVersionString diff --git a/src/tests/Public/GRMustachePublicAPITest.h b/src/tests/Public/GRMustachePublicAPITest.h index 04246c92..0cb7b9e2 100644 --- a/src/tests/Public/GRMustachePublicAPITest.h +++ b/src/tests/Public/GRMustachePublicAPITest.h @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#import "GRMustache.h" +@import GRMustache; #import "GRMustacheTestBase.h" @interface GRMustachePublicAPITest: GRMustacheTestBase From 02cc8139b08165464547801e2882242423d815f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Thu, 10 Sep 2015 17:14:15 +0200 Subject: [PATCH 08/81] RELEASE_NOTES.md -> CHANGELOG.md --- RELEASE_NOTES.md => CHANGELOG.md | 0 README.md | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename RELEASE_NOTES.md => CHANGELOG.md (100%) diff --git a/RELEASE_NOTES.md b/CHANGELOG.md similarity index 100% rename from RELEASE_NOTES.md rename to CHANGELOG.md diff --git a/README.md b/README.md index 38b0c36a..22a62ae9 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ GRMustache is a [Mustache](http://mustache.github.io) template engine written in It ships with built-in goodies and extensibility hooks that let you avoid the strict minimalism of the genuine Mustache language when you need it. -**April 22, 2015: GRMustache 7.3.2 is out.** [Release notes](RELEASE_NOTES.md) +**April 22, 2015: GRMustache 7.3.2 is out.** [Release notes](CHANGELOG.md) Get release announcements and usage tips: follow [@GRMustache on Twitter](http://twitter.com/GRMustache). From ddc26f6293714f01ec2149eee764ea039853f734 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sat, 26 Sep 2015 11:11:05 +0200 Subject: [PATCH 09/81] Delete obsolete files --- Articles/TheNatureOfLogicLessTemplates.md | 77 -------- Articles/WhyMustacheFilters.md | 205 ---------------------- 2 files changed, 282 deletions(-) delete mode 100644 Articles/TheNatureOfLogicLessTemplates.md delete mode 100644 Articles/WhyMustacheFilters.md diff --git a/Articles/TheNatureOfLogicLessTemplates.md b/Articles/TheNatureOfLogicLessTemplates.md deleted file mode 100644 index 21bfd7bb..00000000 --- a/Articles/TheNatureOfLogicLessTemplates.md +++ /dev/null @@ -1,77 +0,0 @@ -# The nature of logicless templates - -[@pvande](https://github.com/pvande) [wonders](https://github.com/mustache/spec/wiki/%5BDiscussion%5D-Logic-Free-vs.-Non-Evaled) what is the difference between the "Logic Free" templates such as [Mustache](http://mustache.github.io) and the "Non-Evaled" templates like [Liquid](http://liquidmarkup.org). - -He enumerates different properties of both kinds of templates, and feels perplexed when wondering what are the fundamental properties he should be the guardian of, as the maintainer of the [Mustache Specification](http://github.com/mustache/spec). - -My opinion on the subject is that he has been misled by an artificial distinction created by names such as "Logic-Free" and "Non-Evaled", which are actual synonyms for "codeless". - -## "Get the code out of the view!" - -We have seen MVC emerging as a powerful pattern to code desktop, mobile and web applications. It became quickly clear that template engines were the weak link in this nice building. Most of them used to allow the coder to embed raw code right into his views. and raw code means any code, including code that should not lie in a view component. And while embedding code has more and more been considered as a quick and dirty practice, nothing would prevent the coder to do so, because the template engines were explicitely allowing it. - -For some people, allowing bad practices is the same as advocating it. The need for strict and clean template engine that totally forbid the coder to embed code in his view was now imperious. - -So came Mustache, Liquid, and others. All have this single common property: *they explicitely disallow embedding raw code*. Plus, add that those template engines are fundamentally language-agnostic (Mustache has achieved a [tremendous success](https://github.com/defunkt/mustache/wiki/Other-Mustache-implementations) here), and you know why those new template language have such a momentum these days. - -## Logic and evaluation? They're right under the carpet - -So, names. "Logic-Free". "Non-Evaled". - -Is the logic totally banned? Of course not: template engines still provide a syntax for controlling the rendering of templates. But the control is a consequence of the values that are computed, and provided by the template user. The actual controlling code is in *userland*. - -Is the evaluation totally banned? Of course not: template engines provide syntax for rendering values. But not all values can be rendered: only values that are available to the template, chosen by the template user. Those values come, again, from *userland*. - -There we are now: in codeless languages, the code (there is always code) has been sent out to userland. - - -## There is no other important property - -@pvande [enumerates](https://github.com/mustache/spec/wiki/%5BDiscussion%5D-Logic-Free-vs.-Non-Evaled) a few other properties for Liquid and Mustache. Let's see if they wouldn't be plain consequence of the fundamental "codeless" motto: - -- promotes "safe" templating (Liquid + Mustache) - -The idea is that a template can't crash the runtime it is rendered in. Since the library user can not run arbitrary code right from the template, this property looks like it is a direct consequence from the codelessness. - -Actually, a template engine that would define its own Turing-complete language and provide a robust virtual machine could be very safe as well. Think PHP, for instance. Unfortunately, this is very difficult, and the "safe templating" argument of codeless languages could be rewritten as "easily-implemented safety". Anyway, as long as code from userland is executed, I don't know which kind of safety we're discussing here: eventually "safe templating" means "safety is not my problem". The Liquid team is rather honest here, claiming safety from *template editors*, and not claiming anything about the code written by *developpers* that gets executed by the templates. - -- disallows execution of any code accessible from the data (Liquid) - -Yet Liquid allows execution of filters. Filters whose code lies in userland. Check. - -- permits execution of code accessible from the data stack (Mustache) - -Yes, Mustache "lambda sections" contain code. In userland. Check. - -- keeps executable code in a separate context (Liquid) - -Check. - -- allows basic literal types in templates as values (Liquid) -- encourages "procedural" templates and internal template state (e.g. via assign variables) (Liquid) -- discourages internal template state (Mustache) -has (should have?) no explicit order-dependency -- "declarative" templates (Mustache) - -It looks like the Liquid designers, generally, needed some expressivity. Yet these points are irrelevant to the "Non-Evaled" claim of Liquid and "Logic-Less" claim of Mustache: I can't see any relationship between those interesting properties and these nice expressions. - -So as the dedicated reader has noticed, "Logic Less" and "Non Evaled" are really just plain synonyms for "GTFCO", as Get The Filthy Code Out. - - -## The last @pvande's questions - -> Open questions: -> -> - Since Mustache has basic conditionals, what is the logic we're trying to avoid in templates? -> - Database access? -> - Data construction? -> - Data manipulation? -> - Arbitrary data manipulation? -> - Predefined data manipulation? -> - Do filters fit in that worldview? -> - Do parameterized filters fit in that worldview? -> - Do data literals fit in that worldview? -> - Are there other significant differences between Logic-Free and Non-Evaling templates? - -Keep relaxed. You're not trying to avoid anything. All the job has already been done when the code has been removed from the template. - -Now it's time to empower your users, and to give them the tools and the expressivity they need. diff --git a/Articles/WhyMustacheFilters.md b/Articles/WhyMustacheFilters.md deleted file mode 100644 index 001cb806..00000000 --- a/Articles/WhyMustacheFilters.md +++ /dev/null @@ -1,205 +0,0 @@ -# Mustache support for "Filters" - -Here are a few arguments for the introduction of "filters" in Mustache, and a description of what they should be, as a contribution to the [open discussion](http://github.com/mustache/spec/issues/41) on the mustache/spec repository. - -GRMustache provides an implementation of [filters](../Guides/filters.md) that fully cover all the points described here. - -1. Why filters are good for Mustache -2. Why Mustache tags should contain expressions, not statements -3. Parsing GRMustache expressions -4. The details - -## 1. Why filters are good for Mustache - -### History of user-provided code: lambdas - -Mustache users today have a single way to have their own code executed while rendering a template: "Mustache lambdas". - -Lambdas operate at the *template canvas* level: they can alter raw portions of a template, insert and process raw text, add and remove mustache tags, and their output is then processed by the Mustache engine which renders it. - -One can for instance write a lambda that turns `{{#link}}{{name}}{{/link}}` into `{{name}}`, which is later rendered as `blah`. - -However, lambdas do not have access to the *view model* level. They can not, for instance, render the uppercase version of a value. - -> Precisely: should a lambda evaluate the inner rendering of a section, turn it into uppercase, and provide the result to the Mustache engine, there is the possibility that the view model data would contain mustache tags that would be then processed by the Mustache engine. An application user could "attack" the rendering engine by setting his name to `{{pwned}}`, for instance. - -### The consequences of a drastic interpretation of "logiclessness" - -The inability for library user's to provide code that operates on the view model level has until now be considered positive and "pure", because of the "logiclessness" of Mustache. Yes, there is no logic code in the template itself, no "if", no "while", no operators, etc. Actually, there is no code at all in a Mustache template. - -However, the interpretation of "logiclessness" becomes uselessly drastic, and painful to the library user when the view model is made 100% responsible for the rendering of value tags and the control of section tags. The problem arises at the the *view model preparation phase*, when the library user has to prepare all the values that will be interpreted by the Mustache engine. The preparation phase becomes a chore when the user has to process many values in the same way. - -For instance, a model may hold a dozen named numerical values, that should be rendered in a formatted way. It thus has to be turned into a view model holding a dozen named formatted values, with the necessity of duplicated code. I, as a Mustache implementor, have received many feature requests on this topic. There is more evidence that this is a recurrent issue with Mustache at: [mustache/spec/issues/41](https://github.com/mustache/spec/issues/41) and [bobthecow/mustache.php/pull/102](https://github.com/bobthecow/mustache.php/pull/102). - -Another common chore is preparing the input in order to test if a collection is empty or not. See [mustache/spec/issues/23](https://github.com/mustache/spec/pull/23), and [defunkt/mustache/issues/4](https://github.com/defunkt/mustache/issues/4). - -Another chore is processing model arrays so that the view model contains arrays whose items know about their index in the array. Again, if many model arrays should be processed this way, we again have a duplicated code problem. Evidence can be found at [janl/mustache.js/pull/205](https://github.com/janl/mustache.js/pull/205), [groue/GRMustache/issues/14](https://github.com/groue/GRMustache/issues/14), [groue/GRMustache/issues/18](https://github.com/groue/GRMustache/issues/18), and the language extension implemented by [samskivert/jmustache](https://github.com/samskivert/jmustache) and [christophercotton/GRMustache](https://github.com/christophercotton/GRMustache). - -Some would say: "use your language features, and dynamically add the needed properties to your objects". This argument is invalid for many reasons, and primarily because Mustache is a language-agnostic template language, and some host languages do not sport any dynamic features. - -Some readers might be interested by a [more general rebuttal of the drastic interpretation of Mustache "logiclessness"](TheNatureOfLogicLessTemplates.md). - -### Filters empower the library user, and Mustache itself - -This is why Mustache should provide a way to let the library user provide code that processes the view model values before they enter the rendering engine, and express directly in the template how the view model values should be processed. - -These code chunks would be called *filters*, because they are functions that take a mustache-interpretable value as an input, and return an other mustache-interpretable value. In the template itself, tags would contain *filtered expressions* that would tell the rendering engine which filters should be applied to the raw view model values. - -Since the role of filters is to relieve view models from providing "final" values, filters do not conceptually belong to them. They instead belong the template: for instance, a template would provide a filter for rendering uppercase values. Now all the view models are relieved from the burden of computing those. Another template would provide a filter for rendering array indexes. View models would then provide raw arrays, and the template would be able to render item indexes. (For real examples, check [number formatting](../Guides/sample_code/number_formatting.md) and [indexes](../Guides/sample_code/indexes.md) sample code). - -Since filters belong to the templates, Mustache can provide a *standard library* of filters, that would be pre-baked into all Mustache templates. - -Since filters are not tied to the view model, they are *reusable*. - - -## 2. Why Mustache tags should contain expressions, not statements - -### Composition - -There are major differences between *expressions* and *statements*. Statements chain, one after the other, independently, and can not provide any value. Statements *perform* and return nothing. Expressions are a different kind of beast: by essence, they provide *values*, and can be *composed* from other expressions. - -Obviously, Mustache needs values: variable tags need a value that they can render, section tags need a value that they can test, loop, or make enter the context stack. Since only expressions provide with values, they are what Mustache need. - -Mustache already has two kinds of expressions: keys and key paths. `name` is a key. `person.name` is a key path. Both expressions evaluate in a different manner. The key expression looks in the context stack for an object that would provide the "name" key. The key path expression looks in the context stack for an object that would provide the "person" key, and then extract the "name" key right from this person. The latter behavior is called a "scoped lookup". - -Let filters enter, and turn them into expressions: - -Library users should be able to build filter expressions with other expressions. One should be able to filter `person.name` with the filter `uppercase`. - -Composition goes further: library users should be able to perform a "scoped" lookup out of a filtered expression. - -The latter point is important: there is no good reason to prevent the library user to perform a scoped lookup out of a filtered expression. - -### A syntax that fulfills those properties - -GRMustache implements filters with a good old function call syntax: `f(x)`. - -Just like `x`, `f(x)` is an expression that has a value. The GRMustache expression syntax let the user write `f(*)` and `*(x)` anywhere he can write `*`: - -- One can render `{{ f(x) }}` instead of `{{ x }}`. -- One can render `{{ f(x.y) }}` instead of `{{ x.y }}`. -- One can render `{{ f(g(x)) }}` instead of `{{ g(x) }}`. -- One can render `{{ f(x)(y) }}` instead of `{{ f(x) }}` (`f` is a meta-filter: a filter that returns a filter). - -This fits pretty well with the "scoped" Mustache expression: the regular Mustache syntax lets the user write `*.y` anywhere he can write `*`: - -- One can render `{{ x.y }}` instead of `{{ x }}`. -- One can render `{{ f(x).y }}` instead of `{{ f(x) }}`. -- One can render `{{ f.g(x) }}` instead of `{{ f(x) }}`. - -A contrieved user could write `{{a.b(c.d(e.f).g.h).i.j(k.l)}}`. Whether this is sane or not is not the business of a library that embraces userland code. - -Last point: white space is irrelevant. `f(x)` is the same as `f ( x )`. - -You'll find below a grammar and a state machine that implement the parsing of those expressions. - -### A syntax that does not fullfill those properties - -The only other syntax that I'm aware of is the one of bobthecow's [mustache.php](https://github.com/bobthecow/mustache.php/pull/102), which is not yet merged in the released branch of his library. - - {{ created_at | date.iso8601 }} - -Pipes have great ascendants (unix shell, Liquid filters), and this syntax sports a genuine relevance for its purpose. Pipable unix commands such as sort, uniq, etc. have a great deal in common with template filters. - -However, it fails on the composition part, since pipes build *statements*, not expressions. - -For example, how would pipes handle cases like `f(x).y` without the introduction of parenthesis in a fashion that is not common to pipes? - - {{ (x | f).y }} vs. {{ f(x).y }} - {{ (x | f).y | g }} vs. {{ g(f(x).y) }} - -More, how would pipes handle meta-filters like `f(x)(y)` ? - - {{ y | (x | f) }} vs. {{ f(x)(y) }} - -The `f(x)` notation has here an advantage, which is its pervasiveness if many widely adopted languages that also use the dot as a property accessor. - - -### Filters can't load from the "implicit iterator" - -We've said above that filters should not come from the view model provided by the user, but instead be tied to a template. This allows a template to provide filters as services, including a standard library of filters. - -As a consequence, the `.(x)` syntax is forbidden. In Mustache, `.` aka the "implicit iterator", represents the currently rendered object from the view model. It thus can not provide any filter. Identically, the `.a(x)` syntax is invalid as well (it would mean "perform a scoped lookup for `a` in the view model, and apply the result as a filter"). - - -## 3. Parsing GRMustache expressions - -Here is a state machine that describes GRMustache expressions. It reads one character -after the other, until it reaches the *VALID*, *EMPTY*, or *INVALID* state: - - # ID stands for "identifier character" - # WS stands for "white space character" - # EOF stands for "end of input" - # All non explicited transitions end up in the INVALID state. - -> parenthesisLevel=0, INITIAL - INITIAL -> WS -> INITIAL - INITIAL -> ID -> scopable=YES, IDENTIFIER - INITIAL -> '.' -> scopable=NO, LEADING_DOT - INITIAL && parenthesisLevel==0 -> EOF -> EMPTY - LEADING_DOT -> WS -> IDENTIFIER_DONE - LEADING_DOT -> ID -> IDENTIFIER - LEADING_DOT && parenthesisLevel>0 -> ')' -> --parenthesisLevel, FILTER_DONE - LEADING_DOT && parenthesisLevel==0 -> EOF -> VALID - IDENTIFIER -> WS -> IDENTIFIER_DONE - IDENTIFIER -> ID -> IDENTIFIER - IDENTIFIER -> '.' -> WAITING_FOR_IDENTIFIER - IDENTIFIER && scopable -> '(' -> ++parenthesisLevel, INITIAL - IDENTIFIER && parenthesisLevel>0 -> ')' -> --parenthesisLevel, FILTER_DONE - IDENTIFIER && parenthesisLevel==0 -> EOF -> VALID - WAITING_FOR_IDENTIFIER -> ID -> IDENTIFIER - IDENTIFIER_DONE -> WS -> IDENTIFIER_DONE - IDENTIFIER_DONE && scopable -> '(' -> ++parenthesisLevel, INITIAL - IDENTIFIER_DONE && parenthesisLevel==0 -> EOF -> VALID - FILTER_DONE -> WS -> FILTER_DONE - FILTER_DONE -> '.' -> WAITING_FOR_IDENTIFIER - FILTER_DONE -> '(' -> ++parenthesisLevel, INITIAL - FILTER_DONE && parenthesisLevel>0 -> ')' -> --parenthesisLevel, FILTER_DONE - FILTER_DONE && parenthesisLevel==0 -> EOF -> VALID - - -## 4. The details - -### Filtered variables, filtered sections - -Expressions as a way for the library user to build values that would be rendered by Mustache. Now those values are actually rendered by variable tags, or section tags. - -The only argument so far I've read against filtered sections is: "I see no compelling use case that need this feature". - -This argument fails for two reasons. First it only shows the lack of imagination of the one expressing it. Second, it artificially limits the empowerment of the library user, who deserves more respect. If Mustache allows the library user to inject code, there is no point nannying him and preventing him from injecting his code where he thinks it is relevant. This only makes Mustache painful to use, without any benefit for anybody. - -Here is a nice section filter, for the unimaginative ones: - -```js -with_index = function(array) { - for (i=0; i Date: Sat, 26 Sep 2015 11:11:46 +0200 Subject: [PATCH 10/81] Delete static library, public headers, and Makefile. --- Makefile | 66 --- include/GRMustache.h | 174 ------- include/GRMustacheAvailabilityMacros.h | 291 ------------ include/GRMustacheConfiguration.h | 296 ------------ include/GRMustacheContentType.h | 53 --- include/GRMustacheContext.h | 482 -------------------- include/GRMustacheError.h | 71 --- include/GRMustacheFilter.h | 125 ----- include/GRMustacheLocalizer.h | 107 ----- include/GRMustacheRendering.h | 130 ------ include/GRMustacheSafeKeyAccess.h | 54 --- include/GRMustacheTag.h | 151 ------- include/GRMustacheTagDelegate.h | 84 ---- include/GRMustacheTemplate.h | 383 ---------------- include/GRMustacheTemplateRepository.h | 576 ------------------------ include/GRMustacheVersion.h | 44 -- include/NSFormatter+GRMustache.h | 70 --- include/NSValueTransformer+GRMustache.h | 34 -- lib/libGRMustache7-MacOS.a | Bin 1079672 -> 0 bytes lib/libGRMustache7-iOS.a | Bin 3996232 -> 0 bytes 20 files changed, 3191 deletions(-) delete mode 100644 Makefile delete mode 100644 include/GRMustache.h delete mode 100644 include/GRMustacheAvailabilityMacros.h delete mode 100644 include/GRMustacheConfiguration.h delete mode 100644 include/GRMustacheContentType.h delete mode 100644 include/GRMustacheContext.h delete mode 100644 include/GRMustacheError.h delete mode 100644 include/GRMustacheFilter.h delete mode 100644 include/GRMustacheLocalizer.h delete mode 100644 include/GRMustacheRendering.h delete mode 100644 include/GRMustacheSafeKeyAccess.h delete mode 100644 include/GRMustacheTag.h delete mode 100644 include/GRMustacheTagDelegate.h delete mode 100644 include/GRMustacheTemplate.h delete mode 100644 include/GRMustacheTemplateRepository.h delete mode 100644 include/GRMustacheVersion.h delete mode 100644 include/NSFormatter+GRMustache.h delete mode 100644 include/NSValueTransformer+GRMustache.h delete mode 100644 lib/libGRMustache7-MacOS.a delete mode 100644 lib/libGRMustache7-iOS.a diff --git a/Makefile b/Makefile deleted file mode 100644 index e7ab79fe..00000000 --- a/Makefile +++ /dev/null @@ -1,66 +0,0 @@ -all: lib/libGRMustache7-iOS.a lib/libGRMustache7-MacOS.a include/GRMustache.h Reference - -lib/libGRMustache7-iOS.a: build/GRMustache7-iOS/Release-iphoneos/libGRMustache7-iOS.a build/GRMustache7-iphonesimulator/Release-iphonesimulator/libGRMustache7-iOS.a build/GRMustache7-iphonesimulator-x86_64/Release-iphonesimulator/libGRMustache7-iOS.a - mkdir -p lib - lipo -create \ - "build/GRMustache7-iphonesimulator/Release-iphonesimulator/libGRMustache7-iOS.a" \ - "build/GRMustache7-iphonesimulator-x86_64/Release-iphonesimulator/libGRMustache7-iOS.a" \ - "build/GRMustache7-iOS/Release-iphoneos/libGRMustache7-iOS.a" \ - -output "lib/libGRMustache7-iOS.a" - -lib/libGRMustache7-MacOS.a: build/MacOS/Release/libGRMustache7-MacOS.a - mkdir -p lib - cp build/MacOS/Release/libGRMustache7-MacOS.a lib/libGRMustache7-MacOS.a - -build/GRMustache7-iOS/Release-iphoneos/libGRMustache7-iOS.a: - xcodebuild -project src/GRMustache.xcodeproj \ - -target GRMustache7-iOS \ - -configuration Release \ - build SYMROOT=../build/GRMustache7-iOS - -build/GRMustache7-iphonesimulator/Release-iphonesimulator/libGRMustache7-iOS.a: - xcodebuild -project src/GRMustache.xcodeproj \ - -target GRMustache7-iOS \ - -configuration Release \ - -sdk iphonesimulator \ - -arch "i386" \ - build SYMROOT=../build/GRMustache7-iphonesimulator - -build/GRMustache7-iphonesimulator-x86_64/Release-iphonesimulator/libGRMustache7-iOS.a: - xcodebuild -project src/GRMustache.xcodeproj \ - -target GRMustache7-iOS \ - -configuration Release \ - -sdk iphonesimulator \ - -arch "x86_64" \ - build SYMROOT=../build/GRMustache7-iphonesimulator-x86_64 - -build/MacOS/Release/libGRMustache7-MacOS.a: - xcodebuild -project src/GRMustache.xcodeproj \ - -target GRMustache7-MacOS \ - -configuration Release \ - build SYMROOT=../build/MacOS - -include/GRMustache.h: build/MacOS/Release/libGRMustache7-MacOS.a - cp -R build/MacOS/Release/include/GRMustache include - -Reference: include/GRMustache.h - # Appledoc does not parse availability macros: create a temporary directory - # with "cleaned" GRMustache headers. - rm -Rf /tmp/GRMustache_include - cp -Rf include /tmp/GRMustache_include - for f in /tmp/GRMustache_include/*; do \ - cat $${f} | sed "s/AVAILABLE_[A-Za-z0-9_]*//g" > $${f}.tmp; \ - mv -f $${f}.tmp $${f}; \ - done - # Generate documentation - mkdir Reference - appledoc --output Reference AppledocSettings.plist /tmp/GRMustache_include || true - # Cleanup - rm -Rf /tmp/GRMustache_include - -clean: - rm -rf build - rm -rf include - rm -rf lib - rm -rf Reference - diff --git a/include/GRMustache.h b/include/GRMustache.h deleted file mode 100644 index df385a1e..00000000 --- a/include/GRMustache.h +++ /dev/null @@ -1,174 +0,0 @@ -// The MIT License -// -// Copyright (c) 2014 Gwendal Roué -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import -#import "GRMustacheAvailabilityMacros.h" - -@protocol GRMustacheRendering; -@class GRMustacheTag; -@class GRMustacheContext; - -/** - * A C struct that hold GRMustache version information - * - * @since v1.0 - */ -typedef struct { - int major; /**< The major component of the version. */ - int minor; /**< The minor component of the version. */ - int patch; /**< The patch-level component of the version. */ -} GRMustacheVersion; - - -/** - * The GRMustache class provides with global-level information and configuration - * of the GRMustache library. - * - * @since v1.0 - */ -@interface GRMustache: NSObject - -//////////////////////////////////////////////////////////////////////////////// -/// @name Getting the GRMustache version -//////////////////////////////////////////////////////////////////////////////// - -/** - * @return The version of GRMustache as a GRMustacheVersion struct. - * - * @since v7.0 - */ -+ (GRMustacheVersion)libraryVersion AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - - -//////////////////////////////////////////////////////////////////////////////// -/// @name Preventing NSUndefinedKeyException in Development configuration -//////////////////////////////////////////////////////////////////////////////// - -/** - * Have GRMustache avoid most `NSUndefinedKeyExceptions` when rendering - * templates. - * - * The rendering of a GRMustache template can lead to `NSUndefinedKeyExceptions` - * to be raised, because of the usage of the `valueForKey:` method. Those - * exceptions are nicely handled by GRMustache, and are part of the regular - * rendering of a template. - * - * Unfortunately, Objective-C exceptions have several drawbacks, particularly: - * - * 1. they play badly with autorelease pools, and are reputed to leak memory. - * 2. they usually stop your debugger when you are developping your application. - * - * The first point is indeed a matter of worry: Apple does not guarantee that - * exceptions raised by `valueForKey:` do not leak memory. However, I never had - * any evidence of such a leak from NSObject's implementation. - * - * Should you still worry, we recommend that you avoid the `valueForKey:` method - * altogether. Instead, implement the [keyed subscripting](http://clang.llvm.org/docs/ObjectiveCLiterals.html#dictionary-style-subscripting) - * `objectForKeyedSubscript:` method on objects that you provide to GRMustache. - * - * The second point is valid also: NSUndefinedKeyException raised by template - * rendering may become a real annoyance when you are debugging your project, - * because it's likely you've told your debugger to stop on every Objective-C - * exceptions. - * - * You can avoid them as well: make sure you invoke once, early in your - * application, the `preventNSUndefinedKeyExceptionAttack` method. - * - * Depending on the number of NSUndefinedKeyException that get prevented, you - * will experience a slight performance hit, or a performance improvement. - * - * Since the main use case for this method is to avoid Xcode breaks on rendering - * exceptions, the best practice is to conditionally invoke this method, using - * the [NS_BLOCK_ASSERTIONS](http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Functions/Reference/reference.html) - * that helps identifying the Debug configuration of your targets: - * - * ``` - * #if !defined(NS_BLOCK_ASSERTIONS) - * // Debug configuration: keep GRMustache quiet - * [GRMustache preventNSUndefinedKeyExceptionAttack]; - * #endif - * ``` - * - * **Companion guide:** https://github.com/groue/GRMustache/blob/master/Guides/runtime.md - * - * @since v1.7 - */ -+ (void)preventNSUndefinedKeyExceptionAttack AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - - -//////////////////////////////////////////////////////////////////////////////// -/// @name Standard Library -//////////////////////////////////////////////////////////////////////////////// - -/** - * @return The GRMustache standard library. - * - * **Companion guide:** https://github.com/groue/GRMustache/blob/master/Guides/standard_library.md - * - * @since v6.4 - */ -+ (NSObject *)standardLibrary AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - - -//////////////////////////////////////////////////////////////////////////////// -/// @name Building rendering objects -//////////////////////////////////////////////////////////////////////////////// - -/** - * This method is deprecated. Use - * `+[GRMustacheRendering renderingObjectForObject:]` instead. - * - * @see GRMustacheRendering class - * - * @since v6.0 - * @deprecated v7.0 - */ -+ (id)renderingObjectForObject:(id)object AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER_BUT_DEPRECATED; - -/** - * This method is deprecated. Use - * `+[GRMustacheRendering renderingObjectWithBlock:]` instead. - * - * @see GRMustacheRendering class - * - * @since v6.0 - * @deprecated v7.0 - */ -+ (id)renderingObjectWithBlock:(NSString *(^)(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error))block AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER_BUT_DEPRECATED; - -@end - -#import "GRMustacheTemplate.h" -#import "GRMustacheTagDelegate.h" -#import "GRMustacheTemplateRepository.h" -#import "GRMustacheFilter.h" -#import "GRMustacheError.h" -#import "GRMustacheVersion.h" -#import "GRMustacheContentType.h" -#import "GRMustacheContext.h" -#import "GRMustacheRendering.h" -#import "GRMustacheTag.h" -#import "GRMustacheConfiguration.h" -#import "GRMustacheLocalizer.h" -#import "GRMustacheSafeKeyAccess.h" -#import "NSValueTransformer+GRMustache.h" -#import "NSFormatter+GRMustache.h" diff --git a/include/GRMustacheAvailabilityMacros.h b/include/GRMustacheAvailabilityMacros.h deleted file mode 100644 index 9467640b..00000000 --- a/include/GRMustacheAvailabilityMacros.h +++ /dev/null @@ -1,291 +0,0 @@ -// The MIT License -// -// Copyright (c) 2014 Gwendal Roué -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - - - - - - -/* - * Set up standard GRMustache versions - */ -#define GRMUSTACHE_VERSION_7_0 7000 -#define GRMUSTACHE_VERSION_7_1 7010 -#define GRMUSTACHE_VERSION_7_2 7020 -#define GRMUSTACHE_VERSION_7_3 7030 - - - - - - -/* - * If max GRMustacheVersion not specified, assume 7.3 - */ -#ifndef GRMUSTACHE_VERSION_MAX_ALLOWED -#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_3 -#endif - -/* - * if min GRMustacheVersion not specified, assume max - */ -#ifndef GRMUSTACHE_VERSION_MIN_REQUIRED -#define GRMUSTACHE_VERSION_MIN_REQUIRED GRMUSTACHE_VERSION_MAX_ALLOWED -#endif - -/* - * Error on bad values - */ -#if GRMUSTACHE_VERSION_MAX_ALLOWED < GRMUSTACHE_VERSION_MIN_REQUIRED -#error GRMUSTACHE_VERSION_MAX_ALLOWED must be >= GRMUSTACHE_VERSION_MIN_REQUIRED -#endif -#if GRMUSTACHE_VERSION_MIN_REQUIRED < GRMUSTACHE_VERSION_7_0 -#error GRMUSTACHE_VERSION_MIN_REQUIRED must be >= GRMUSTACHE_VERSION_7_0 -#endif - - - - - - -/* - * AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER - * - * Used on declarations introduced in GRMustache 7.0 - */ -#define AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER - -/* - * AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER_BUT_DEPRECATED - * - * Used on declarations introduced in GRMustache 7.0, - * and deprecated in GRMustache 7.0 - */ -#define AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER_BUT_DEPRECATED DEPRECATED_ATTRIBUTE - -/* - * DEPRECATED_IN_GRMUSTACHE_VERSION_7_0_AND_LATER - * - * Used on types deprecated in GRMustache 7.0 - */ -#define DEPRECATED_IN_GRMUSTACHE_VERSION_7_0_AND_LATER DEPRECATED_ATTRIBUTE - - - - - - -/* - * AVAILABLE_GRMUSTACHE_VERSION_7_1_AND_LATER - * - * Used on declarations introduced in GRMustache 7.1 - */ -#if GRMUSTACHE_VERSION_MAX_ALLOWED < GRMUSTACHE_VERSION_7_1 -#define AVAILABLE_GRMUSTACHE_VERSION_7_1_AND_LATER UNAVAILABLE_ATTRIBUTE -#elif GRMUSTACHE_VERSION_MIN_REQUIRED < GRMUSTACHE_VERSION_7_1 -#define AVAILABLE_GRMUSTACHE_VERSION_7_1_AND_LATER WEAK_IMPORT_ATTRIBUTE -#else -#define AVAILABLE_GRMUSTACHE_VERSION_7_1_AND_LATER -#endif - -/* - * AVAILABLE_GRMUSTACHE_VERSION_7_1_AND_LATER_BUT_DEPRECATED - * - * Used on declarations introduced in GRMustache 7.1, - * and deprecated in GRMustache 7.1 - */ -#if GRMUSTACHE_VERSION_MIN_REQUIRED >= GRMUSTACHE_VERSION_7_1 -#define AVAILABLE_GRMUSTACHE_VERSION_7_1_AND_LATER_BUT_DEPRECATED DEPRECATED_ATTRIBUTE -#else -#define AVAILABLE_GRMUSTACHE_VERSION_7_1_AND_LATER_BUT_DEPRECATED AVAILABLE_GRMUSTACHE_VERSION_7_1_AND_LATER -#endif - -/* - * AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER_BUT_DEPRECATED_IN_GRMUSTACHE_VERSION_7_1 - * - * Used on declarations introduced in GRMustache 7.0, - * but later deprecated in GRMustache 7.1 - */ -#if GRMUSTACHE_VERSION_MIN_REQUIRED >= GRMUSTACHE_VERSION_7_1 -#define AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER_BUT_DEPRECATED_IN_GRMUSTACHE_VERSION_7_1 DEPRECATED_ATTRIBUTE -#else -#define AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER_BUT_DEPRECATED_IN_GRMUSTACHE_VERSION_7_1 AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER -#endif - -/* - * DEPRECATED_IN_GRMUSTACHE_VERSION_7_1_AND_LATER - * - * Used on types deprecated in GRMustache 7.1 - */ -#if GRMUSTACHE_VERSION_MIN_REQUIRED >= GRMUSTACHE_VERSION_7_1 -#define DEPRECATED_IN_GRMUSTACHE_VERSION_7_1_AND_LATER DEPRECATED_ATTRIBUTE -#else -#define DEPRECATED_IN_GRMUSTACHE_VERSION_7_1_AND_LATER -#endif - - - - - - -/* - * AVAILABLE_GRMUSTACHE_VERSION_7_2_AND_LATER - * - * Used on declarations introduced in GRMustache 7.2 - */ -#if GRMUSTACHE_VERSION_MAX_ALLOWED < GRMUSTACHE_VERSION_7_2 -#define AVAILABLE_GRMUSTACHE_VERSION_7_2_AND_LATER UNAVAILABLE_ATTRIBUTE -#elif GRMUSTACHE_VERSION_MIN_REQUIRED < GRMUSTACHE_VERSION_7_2 -#define AVAILABLE_GRMUSTACHE_VERSION_7_2_AND_LATER WEAK_IMPORT_ATTRIBUTE -#else -#define AVAILABLE_GRMUSTACHE_VERSION_7_2_AND_LATER -#endif - -/* - * AVAILABLE_GRMUSTACHE_VERSION_7_2_AND_LATER_BUT_DEPRECATED - * - * Used on declarations introduced in GRMustache 7.2, - * and deprecated in GRMustache 7.2 - */ -#if GRMUSTACHE_VERSION_MIN_REQUIRED >= GRMUSTACHE_VERSION_7_2 -#define AVAILABLE_GRMUSTACHE_VERSION_7_2_AND_LATER_BUT_DEPRECATED DEPRECATED_ATTRIBUTE -#else -#define AVAILABLE_GRMUSTACHE_VERSION_7_2_AND_LATER_BUT_DEPRECATED AVAILABLE_GRMUSTACHE_VERSION_7_2_AND_LATER -#endif - -/* - * AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER_BUT_DEPRECATED_IN_GRMUSTACHE_VERSION_7_2 - * - * Used on declarations introduced in GRMustache 7.0, - * but later deprecated in GRMustache 7.2 - */ -#if GRMUSTACHE_VERSION_MIN_REQUIRED >= GRMUSTACHE_VERSION_7_2 -#define AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER_BUT_DEPRECATED_IN_GRMUSTACHE_VERSION_7_2 DEPRECATED_ATTRIBUTE -#else -#define AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER_BUT_DEPRECATED_IN_GRMUSTACHE_VERSION_7_2 AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER -#endif - -/* - * AVAILABLE_GRMUSTACHE_VERSION_7_1_AND_LATER_BUT_DEPRECATED_IN_GRMUSTACHE_VERSION_7_2 - * - * Used on declarations introduced in GRMustache 7.1, - * but later deprecated in GRMustache 7.2 - */ -#if GRMUSTACHE_VERSION_MIN_REQUIRED >= GRMUSTACHE_VERSION_7_2 -#define AVAILABLE_GRMUSTACHE_VERSION_7_1_AND_LATER_BUT_DEPRECATED_IN_GRMUSTACHE_VERSION_7_2 DEPRECATED_ATTRIBUTE -#else -#define AVAILABLE_GRMUSTACHE_VERSION_7_1_AND_LATER_BUT_DEPRECATED_IN_GRMUSTACHE_VERSION_7_2 AVAILABLE_GRMUSTACHE_VERSION_7_1_AND_LATER -#endif - -/* - * DEPRECATED_IN_GRMUSTACHE_VERSION_7_2_AND_LATER - * - * Used on types deprecated in GRMustache 7.2 - */ -#if GRMUSTACHE_VERSION_MIN_REQUIRED >= GRMUSTACHE_VERSION_7_2 -#define DEPRECATED_IN_GRMUSTACHE_VERSION_7_2_AND_LATER DEPRECATED_ATTRIBUTE -#else -#define DEPRECATED_IN_GRMUSTACHE_VERSION_7_2_AND_LATER -#endif - - - - - - -/* - * AVAILABLE_GRMUSTACHE_VERSION_7_3_AND_LATER - * - * Used on declarations introduced in GRMustache 7.3 - */ -#if GRMUSTACHE_VERSION_MAX_ALLOWED < GRMUSTACHE_VERSION_7_3 -#define AVAILABLE_GRMUSTACHE_VERSION_7_3_AND_LATER UNAVAILABLE_ATTRIBUTE -#elif GRMUSTACHE_VERSION_MIN_REQUIRED < GRMUSTACHE_VERSION_7_3 -#define AVAILABLE_GRMUSTACHE_VERSION_7_3_AND_LATER WEAK_IMPORT_ATTRIBUTE -#else -#define AVAILABLE_GRMUSTACHE_VERSION_7_3_AND_LATER -#endif - -/* - * AVAILABLE_GRMUSTACHE_VERSION_7_3_AND_LATER_BUT_DEPRECATED - * - * Used on declarations introduced in GRMustache 7.3, - * and deprecated in GRMustache 7.3 - */ -#if GRMUSTACHE_VERSION_MIN_REQUIRED >= GRMUSTACHE_VERSION_7_3 -#define AVAILABLE_GRMUSTACHE_VERSION_7_3_AND_LATER_BUT_DEPRECATED DEPRECATED_ATTRIBUTE -#else -#define AVAILABLE_GRMUSTACHE_VERSION_7_3_AND_LATER_BUT_DEPRECATED AVAILABLE_GRMUSTACHE_VERSION_7_3_AND_LATER -#endif - -/* - * AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER_BUT_DEPRECATED_IN_GRMUSTACHE_VERSION_7_3 - * - * Used on declarations introduced in GRMustache 7.0, - * but later deprecated in GRMustache 7.3 - */ -#if GRMUSTACHE_VERSION_MIN_REQUIRED >= GRMUSTACHE_VERSION_7_3 -#define AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER_BUT_DEPRECATED_IN_GRMUSTACHE_VERSION_7_3 DEPRECATED_ATTRIBUTE -#else -#define AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER_BUT_DEPRECATED_IN_GRMUSTACHE_VERSION_7_3 AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER -#endif - -/* - * AVAILABLE_GRMUSTACHE_VERSION_7_1_AND_LATER_BUT_DEPRECATED_IN_GRMUSTACHE_VERSION_7_3 - * - * Used on declarations introduced in GRMustache 7.1, - * but later deprecated in GRMustache 7.3 - */ -#if GRMUSTACHE_VERSION_MIN_REQUIRED >= GRMUSTACHE_VERSION_7_3 -#define AVAILABLE_GRMUSTACHE_VERSION_7_1_AND_LATER_BUT_DEPRECATED_IN_GRMUSTACHE_VERSION_7_3 DEPRECATED_ATTRIBUTE -#else -#define AVAILABLE_GRMUSTACHE_VERSION_7_1_AND_LATER_BUT_DEPRECATED_IN_GRMUSTACHE_VERSION_7_3 AVAILABLE_GRMUSTACHE_VERSION_7_1_AND_LATER -#endif - -/* - * AVAILABLE_GRMUSTACHE_VERSION_7_2_AND_LATER_BUT_DEPRECATED_IN_GRMUSTACHE_VERSION_7_3 - * - * Used on declarations introduced in GRMustache 7.2, - * but later deprecated in GRMustache 7.3 - */ -#if GRMUSTACHE_VERSION_MIN_REQUIRED >= GRMUSTACHE_VERSION_7_3 -#define AVAILABLE_GRMUSTACHE_VERSION_7_2_AND_LATER_BUT_DEPRECATED_IN_GRMUSTACHE_VERSION_7_3 DEPRECATED_ATTRIBUTE -#else -#define AVAILABLE_GRMUSTACHE_VERSION_7_2_AND_LATER_BUT_DEPRECATED_IN_GRMUSTACHE_VERSION_7_3 AVAILABLE_GRMUSTACHE_VERSION_7_2_AND_LATER -#endif - -/* - * DEPRECATED_IN_GRMUSTACHE_VERSION_7_3_AND_LATER - * - * Used on types deprecated in GRMustache 7.3 - */ -#if GRMUSTACHE_VERSION_MIN_REQUIRED >= GRMUSTACHE_VERSION_7_3 -#define DEPRECATED_IN_GRMUSTACHE_VERSION_7_3_AND_LATER DEPRECATED_ATTRIBUTE -#else -#define DEPRECATED_IN_GRMUSTACHE_VERSION_7_3_AND_LATER -#endif - - - - - - diff --git a/include/GRMustacheConfiguration.h b/include/GRMustacheConfiguration.h deleted file mode 100644 index 2d061ae9..00000000 --- a/include/GRMustacheConfiguration.h +++ /dev/null @@ -1,296 +0,0 @@ -// The MIT License -// -// Copyright (c) 2013 Gwendal Roué -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import -#import "GRMustacheAvailabilityMacros.h" -#import "GRMustacheContentType.h" - -@class GRMustacheContext; -@protocol GRMustacheTagDelegate; - -/** - * A GRMustacheConfiguration instance configures GRMustache rendering. - * - * **Companion guide:** https://github.com/groue/GRMustache/blob/master/Guides/configuration.md - * - * The default configuration [GRMustacheConfiguration defaultConfiguration] - * applies to all GRMustache rendering by default: - * - * ``` - * // Have GRMustache templates render text by default, - * // and do not HTML-escape their input. - * [GRMustacheConfiguration defaultConfiguration].contentType = GRMustacheContentTypeText; - * ``` - * - * You can also alter the configuration of a specific template repository: its - * configuration only applies to the templates built by this very template - * repository: - * - * ``` - * // All templates loaded from _repo_ will use [[ and ]] as tag delimiters. - * GRMustacheTemplateRepository *repo = [GRMustacheTemplateRepository templateRepositoryWithBundle:nil]; - * repo.configuration.tagStartDelimiter = @"[["; - * repo.configuration.tagEndDelimiter = @"]]"; - * ``` - * - * A third option is to create a new configuration, and assign it to the template: - * - * ``` - * // Create a configuration - * GRMustacheConfiguration *configuration = [GRMustacheConfiguration configuration]; - * configuration.... // setup - * - * GRMustacheTemplateRepository *repo = [GRMustacheTemplateRepository templateRepositoryWithBundle:nil]; - * repo.configuration = configuration; - * ``` - * - * The `contentType` option can be specified at the template level, so that your - * repositories can mix HTML and text templates: see the documentation of this - * property. - * - * The `tagStartDelimiter` and `tagEndDelimiter` options can also be specified - * at the template level, using a "Set Delimiters tag": see the documentation of - * these properties. - * - * @see GRMustacheTemplateRepository - * - * @since v6.2 - */ -@interface GRMustacheConfiguration : NSObject { -@private - GRMustacheContentType _contentType; - NSString *_tagStartDelimiter; - NSString *_tagEndDelimiter; - GRMustacheContext *_baseContext; - BOOL _locked; -} - - -//////////////////////////////////////////////////////////////////////////////// -/// @name Default Configuration -//////////////////////////////////////////////////////////////////////////////// - - -/** - * The default configuration. - * - * All templates and template repositories use the default configuration unless - * you specify otherwise by setting the configuration of a template repository. - * - * The "default" defaultConfiguration has GRMustacheContentTypeHTML contentType, - * and {{ and }} as tag delimiters. - * - * @returns The default configuration. - * - * @since v6.2 - */ -+ (GRMustacheConfiguration *)defaultConfiguration AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - - -//////////////////////////////////////////////////////////////////////////////// -/// @name Creating Configuration -//////////////////////////////////////////////////////////////////////////////// - - -/** - * @returns A new factory configuration. - * - * Its contentType is GRMustacheContentTypeHTML. - * Its tag delimiters are {{ and }}. - * - * @since v6.2 - */ -+ (GRMustacheConfiguration *)configuration AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - - -//////////////////////////////////////////////////////////////////////////////// -/// @name Set Up Configuration -//////////////////////////////////////////////////////////////////////////////// - - -/** - * The base context for templates rendering. The default base context contains - * the GRMustache standard Library. - * - * @see GRMustacheTemplate - * - * @since v6.4 - */ -@property (nonatomic, retain) GRMustacheContext *baseContext AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * Extends the base context of the receiver with the provided object, making its - * keys available for all renderings. - * - * For example: - * - * ``` - * GRMustacheConfiguration *configuration = [GRMustacheConfiguration defaultConfiguration]; - * - * // Have the `name` key defined for all template renderings: - * id object = @{ @"name": @"Arthur" }; - * [configuration extendBaseContextWithObject:object]; - * - * // Renders "Arthur" - * [GRMustacheTemplate renderObject:nil fromString:@"{{name}}" error:NULL]; - * ``` - * - * Keys defined by _object_ can be overriden by other objects that will - * eventually enter the context stack: - * - * ``` - * // Renders "Billy", not "Arthur" - * [GRMustacheTemplate renderObject:nil:@{ @"name": @"Billy" } fromString:@"{{name}}" error:NULL]; - * ``` - * - * This method is a shortcut. It is equivalent to the following line of code: - * - * ``` - * configuration.baseContext = [configuration.baseContext contextByAddingObject:object]; - * ``` - * - * @param object An object - * - * @see baseContext - * @see extendBaseContextWithProtectedObject: - * @see extendBaseContextWithTagDelegate: - * - * @since v6.8 - */ -- (void)extendBaseContextWithObject:(id)object AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * Extends the base context of the receiver with the provided object, making its - * keys available for all renderings. - * - * Keys defined by _object_ are given priority, which means that they can not be - * overriden by other objects that will eventually enter the context stack. - * - * For example: - * - * ``` - * GRMustacheConfiguration *configuration = [GRMustacheConfiguration defaultConfiguration]; - * - * // The `precious` key is given priority: - * [configuration extendBaseContextWithProtectedObject:@{ @"precious": @"gold" }]; - * - * // Renders "gold", not "lead". - * [GRMustacheTemplate renderObject:nil:@{ @"precious": @"lead" } fromString:@"{{precious}}" error:NULL]; - * ``` - * - * This method is a shortcut. It is equivalent to the following line of code: - * - * ``` - * configuration.baseContext = [configuration.baseContext contextByAddingProtectedObject:object]; - * ``` - * - * @param object An object - * - * @see baseContext - * @see extendBaseContextWithObject: - * @see extendBaseContextWithTagDelegate: - * - * @since v6.8 - */ -- (void)extendBaseContextWithProtectedObject:(id)object AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER;; - -/** - * Extends the base context of the receiver with a tag delegate, making it aware - * of the rendering of all template tags. - * - * This method is a shortcut. It is equivalent to the following line of code: - * - * ``` - * configuration.baseContext = [configuration.baseContext contextByAddingTagDelegate:tagDelegate]; - * ``` - * - * @param tagDelegate A tag delegate - * - * @see baseContext - * @see extendBaseContextWithObject: - * @see extendBaseContextWithProtectedObject: - * - * @since v6.8 - */ -- (void)extendBaseContextWithTagDelegate:(id)tagDelegate AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER;; - -/** - * The content type of strings rendered by templates. - * - * This property affects the HTML-escaping of your data, and the inclusion - * of templates in other templates. - * - * The `GRMustacheContentTypeHTML` content type has templates render HTML. - * This is the default behavior. HTML template escape the input of variable tags - * such as `{{name}}`. Use triple mustache tags `{{{content}}}` in order to - * avoid the HTML-escaping. - * - * The `GRMustacheContentTypeText` content type has templates render text. - * They do not HTML-escape their input: `{{name}}` and `{{{name}}}` have - * identical renderings. - * - * GRMustache safely keeps track of the content type of templates: should a HTML - * template embed a text template, the content of the text template would be - * HTML-escaped. - * - * There is no API to specify the content type of individual templates. However, - * you can use pragma tags right in the content of your templates: - * - * - `{{% CONTENT_TYPE:TEXT }}` turns a template into a text template. - * - `{{% CONTENT_TYPE:HTML }}` turns a template into a HTML template. - * - * Insert those pragma tags early in your templates. For example: - * - * ``` - * {{! This template renders a bash script. }} - * {{% CONTENT_TYPE:TEXT }} - * export LANG={{ENV.LANG}} - * ... - * ``` - * - * Should two such pragmas be found in a template content, the last one wins. - * - * @since v6.2 - */ -@property (nonatomic) GRMustacheContentType contentType AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * The opening delimiter for Mustache tags. Its default value is `{{`. - * - * You can also change the delimiters right in your templates using a "Set - * Delimiter tag": {{=[[ ]]=}} changes start and end delimiters to [[ and ]]. - * - * @since v6.4 - */ -@property (nonatomic, copy) NSString *tagStartDelimiter AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * The closing delimiter for Mustache tags. Its default value is `}}`. - * - * You can also change the delimiters right in your templates using a "Set - * Delimiter tag": {{=[[ ]]=}} changes start and end delimiters to [[ and ]]. - * - * @since v6.4 - */ -@property (nonatomic, copy) NSString *tagEndDelimiter AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -@end diff --git a/include/GRMustacheContentType.h b/include/GRMustacheContentType.h deleted file mode 100644 index 712f9878..00000000 --- a/include/GRMustacheContentType.h +++ /dev/null @@ -1,53 +0,0 @@ -// The MIT License -// -// Copyright (c) 2014 Gwendal Roué -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import -#import "GRMustacheAvailabilityMacros.h" - -/** - * The content type of strings rendered by templates. - * - * @see GRMustacheConfiguration - * @see GRMustacheTemplateRepository - * - * @since v6.2 - */ -typedef NS_ENUM(NSUInteger, GRMustacheContentType) { - /** - * The `GRMustacheContentTypeHTML` content type has templates render HTML. - * HTML template escape the input of variable tags such as `{{name}}`. Use - * triple mustache tags `{{{content}}}` in order to avoid the HTML-escaping. - * - * @since v6.2 - */ - GRMustacheContentTypeHTML AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER, - - /** - * The `GRMustacheContentTypeText` content type has templates render text. - * They do not HTML-escape their input: `{{name}}` and `{{{name}}}` have - * identical renderings. - * - * @since v6.2 - */ - GRMustacheContentTypeText AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER, -} AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - diff --git a/include/GRMustacheContext.h b/include/GRMustacheContext.h deleted file mode 100644 index e1419756..00000000 --- a/include/GRMustacheContext.h +++ /dev/null @@ -1,482 +0,0 @@ -// The MIT License -// -// Copyright (c) 2014 Gwendal Roué -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import -#import "GRMustacheAvailabilityMacros.h" - -@protocol GRMustacheTagDelegate; - -/** - * The GRMustacheContext represents a Mustache rendering context: it internally - * maintains three stacks: - * - * - a *context stack*, that makes it able to provide the current context - * object, and to perform key lookup. - * - * - a *priority context stack*, whose objects define important keys that - * should not be overriden. - * - * - a *tag delegate stack*, so that tag delegates are notified when a Mustache - * tag is rendered. - * - * **Companion guides:** - * - * - https://github.com/groue/GRMustache/blob/master/Guides/view_model.md - * - https://github.com/groue/GRMustache/blob/master/Guides/delegate.md - * - https://github.com/groue/GRMustache/blob/master/Guides/rendering_objects.md - * - https://github.com/groue/GRMustache/blob/master/Guides/security.md - * - * @warning GRMustacheContext is not suitable for subclassing. - * - * @see GRMustacheRendering protocol - */ -@interface GRMustacheContext : NSObject { -@private -#define GRMUSTACHE_STACK_TOP_IVAR(stackName) _ ## stackName ## Object -#define GRMUSTACHE_STACK_PARENT_IVAR(stackName) _ ## stackName ## Parent -#define GRMUSTACHE_STACK_DECLARE_IVARS(stackName, type) \ - GRMustacheContext *GRMUSTACHE_STACK_PARENT_IVAR(stackName); \ - type GRMUSTACHE_STACK_TOP_IVAR(stackName) - - GRMUSTACHE_STACK_DECLARE_IVARS(contextStack, id); - GRMUSTACHE_STACK_DECLARE_IVARS(protectedContextStack, id); - GRMUSTACHE_STACK_DECLARE_IVARS(hiddenContextStack, id); - GRMUSTACHE_STACK_DECLARE_IVARS(tagDelegateStack, id); - GRMUSTACHE_STACK_DECLARE_IVARS(inheritablePartialNodeStack, id); - - BOOL _unsafeKeyAccess; -} - - -//////////////////////////////////////////////////////////////////////////////// -/// @name Creating Rendering Contexts -//////////////////////////////////////////////////////////////////////////////// - -/** - * Returns an initialized empty rendering context. - * - * Empty contexts do not provide any value for any key. - * - * If you wish to use the services provided by the GRMustache standard library, - * you should create a context with the +[GRMustacheContext contextWithObject:] - * method, like this: - * - * ``` - * [GRMustacheContext contextWithObject:[GRMustache standardLibrary]] - * ``` - * - * @return A rendering context. - * - * @see +[GRMustache standardLibrary] - */ -- (instancetype)init; - -/** - * Returns an empty rendering context. - * - * Empty contexts do not provide any value for any key. - * - * If you wish to use the services provided by the GRMustache standard library, - * you should create a context with the +[GRMustacheContext contextWithObject:] - * method, like this: - * - * ``` - * [GRMustacheContext contextWithObject:[GRMustache standardLibrary]] - * ``` - * - * @return A rendering context. - * - * @see contextWithObject: - * @see +[GRMustache standardLibrary] - * - * @since v6.4 - */ -+ (instancetype)context AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * Returns a rendering context containing a single object. - * - * Keys defined by _object_ gets available for template rendering. - * - * ``` - * context = [GRMustacheContext contextWithObject:@{ @"name": @"Arthur" }]; - * [context valueForMustacheKey:@"name"]; // @"Arthur" - * ``` - * - * If _object_ conforms to the GRMustacheTemplateDelegate protocol, it is also - * made the top of the tag delegate stack. - * - * **Companion guide:** https://github.com/groue/GRMustache/blob/master/Guides/delegate.md - * - * @param object An object - * - * @return A rendering context. - * - * @see contextByAddingObject: - * - * @see GRMustacheTemplateDelegate - * - * @since v6.4 - */ -+ (instancetype)contextWithObject:(id)object AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * Returns a context containing a single priority object. - * - * Keys defined by _object_ are given priority, which means that they can not be - * overriden by other objects that will eventually enter the context stack. - * - * ``` - * // Create a context with a priority `precious` key - * context = [GRMustacheContext contextWithProtectedObject:@{ @"precious": @"gold" }]; - * - * // Derive a new context by attempting to override the `precious` key: - * context = [context contextByAddingObject:@{ @"precious": @"lead" }]; - * - * // Priority keys can't be overriden - * [context valueForMustacheKey:@"precious"]; // @"gold" - * ``` - * - * **Companion guide:** https://github.com/groue/GRMustache/blob/master/Guides/security.md#priority-keys - * - * @param object An object - * - * @return A rendering context. - * - * @see contextByAddingProtectedObject: - * - * @since v6.4 - */ -+ (instancetype)contextWithProtectedObject:(id)object AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * Returns a context containing a single tag delegate. - * - * _tagDelegate_ will be notified of the rendering of all tags rendered from the - * receiver or from contexts derived from the receiver. - * - * Unlike contextWithObject: and contextWithProtectedObject:, _tagDelegate_ will - * not provide any key to the templates. It will only be notified of the - * rendering of tags. - * - * **Companion guide:** https://github.com/groue/GRMustache/blob/master/Guides/delegate.md - * - * @param tagDelegate A tag delegate - * - * @return A rendering context. - * - * @see GRMustacheTagDelegate - * - * @since v6.4 - */ -+ (instancetype)contextWithTagDelegate:(id)tagDelegate AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - - -//////////////////////////////////////////////////////////////////////////////// -/// @name Deriving New Contexts -//////////////////////////////////////////////////////////////////////////////// - - -/** - * Returns a new rendering context that is the copy of the receiver, and the - * given object added at the top of the context stack. - * - * Keys defined by _object_ gets available for template rendering, and override - * the values defined by objects already contained in the context stack. Keys - * unknown to _object_ will be looked up deeper in the context stack. - * - * ``` - * context = [GRMustacheContext contextWithObject:@{ @"a": @"ignored", @"b": @"foo" }]; - * context = [context contextByAddingObject:@{ @"a": @"bar" }]; - * - * // `a` is overriden - * [context valueForMustacheKey:@"a"]; // @"bar" - * - * // `b` is inherited - * [context valueForMustacheKey:@"b"]; // @"foo" - * ``` - * - * _object_ can not override keys defined by the objects of the priority - * context stack, though. See contextWithProtectedObject: and - * contextByAddingProtectedObject:. - * - * If _object_ conforms to the GRMustacheTemplateDelegate protocol, it is also - * added at the top of the tag delegate stack. - * - * **Companion guide:** https://github.com/groue/GRMustache/blob/master/Guides/delegate.md - * - * @param object An object - * - * @return A new rendering context. - * - * @see GRMustacheTemplateDelegate - * - * @since v6.0 - */ -- (instancetype)contextByAddingObject:(id)object AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * Returns a new rendering context that is the copy of the receiver, and the - * given object added at the top of the priority context stack. - * - * Keys defined by _object_ are given priority, which means that they can not be - * overriden by other objects that will eventually enter the context stack. - * - * ``` - * // Derive a context with a priority `precious` key - * context = [context contextByAddingProtectedObject:@{ @"precious": @"gold" }]; - * - * // Derive a new context by attempting to override the `precious` key: - * context = [context contextByAddingObject:@{ @"precious": @"lead" }]; - * - * // Priority keys can't be overriden - * [context valueForMustacheKey:@"precious"]; // @"gold" - * ``` - * - * **Companion guide:** https://github.com/groue/GRMustache/blob/master/Guides/security.md#priority-keys - * - * @param object An object - * - * @return A new rendering context. - * - * @since v6.0 - */ -- (instancetype)contextByAddingProtectedObject:(id)object AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * Returns a new rendering context that is the copy of the receiver, and the - * given object added at the top of the tag delegate stack. - * - * _tagDelegate_ will be notified of the rendering of all tags rendered from the - * receiver or from contexts derived from the receiver. - * - * Unlike contextByAddingObject: and contextByAddingProtectedObject:, - * _tagDelegate_ will not provide any key to the templates. It will only be - * notified of the rendering of tags. - * - * **Companion guide:** https://github.com/groue/GRMustache/blob/master/Guides/delegate.md - * - * @param tagDelegate A tag delegate - * - * @return A new rendering context. - * - * @see GRMustacheTagDelegate - * - * @since v6.0 - */ -- (instancetype)contextByAddingTagDelegate:(id)tagDelegate AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - - -//////////////////////////////////////////////////////////////////////////////// -/// @name Fetching Values from the Context Stack -//////////////////////////////////////////////////////////////////////////////// - -/** - * Returns the object at the top of the receiver's context stack. - * - * The returned object is the same as the one that would be rendered by a - * `{{ . }}` tag. - * - * ``` - * user = ...; - * context = [GRMustacheContext contextWithObject:user]; - * context.topMustacheObject; // user - * ``` - * - * @return The object at the top of the receiver's context stack. - * - * @see contextWithObject: - * @see contextByAddingObject: - * - * @since v6.7 - */ -@property (nonatomic, readonly) id topMustacheObject AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * Returns the value stored in the context stack for the given key. - * - * If you want the value for an full expression such as `user.name` or - * `uppercase(user.name)`, use the hasValue:forMustacheExpression:error: - * method. - * - * ### Search Pattern for valueForMustacheKey - * - * The Mustache value of any object for a given key is defined as: - * - * 1. If the object responds to the `objectForKeyedSubscript:` instance method, - * return the result of this method. - * - * 2. Otherwise, build the list of safe keys: - * a. If the object responds to the `safeMustacheKeys` class method defined - * by the `GRMustacheSafeKeyAccess` protocol, use this method. - * b. Otherwise, use the list of Objective-C properties declared with - * `@property`. - * c. If object is an instance of NSManagedObject, add all the attributes of - * its Core Data entity. - * - * 3. If the key belongs to the list of safe keys, return the result of the - * `valueForKey:` method, unless this method throws NSUndefinedKeyException. - * - * 4. Otherwise, return nil. - * - * Contexts with unsafe key access skip the key validation step. - * - * In this method, the following search pattern is used: - * - * 1. Searches the priority context stack for an object that has a non-nil - * Mustache value for the key. - * - * 2. Otherwise (irrelevant priority context stack), search the context stack - * for an object that has a non-nil Mustache value for the key. - * - * 3. If none of the above situations occurs, returns nil. - * - * **Companion guides:** https://github.com/groue/GRMustache/blob/master/Guides/runtime.md, - * https://github.com/groue/GRMustache/blob/master/Guides/view_model.md - * - * @param key a key such as @"name" - * - * @return The value found in the context stack for the given key. - * - * @see contextWithUnsafeKeyAccess - * @see hasValue:forMustacheExpression:error: - * - * @since v6.6 - */ -- (id)valueForMustacheKey:(NSString *)key AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * Evaluates an expression such as `name`, or `uppercase(user.name)`. - * - * **Companion guide:** https://github.com/groue/GRMustache/blob/master/Guides/view_model.md - * - * @param value Upon return contains the value of the expression. - * @param expression An expression. - * @param error If there is an error computing the value, upon return - * contains an NSError object that describes the problem. - * - * @return YES if the value could be computed. - * - * @see valueForMustacheKey: - * - * @since v6.8 - */ -- (BOOL)hasValue:(id *)value forMustacheExpression:(NSString *)expression error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - - -//////////////////////////////////////////////////////////////////////////////// -/// @name Unsafe Key Access -//////////////////////////////////////////////////////////////////////////////// - -/** - * Returns whether this context allows unsafe key access or not. - * - * @since v7.0 - */ -@property (nonatomic, readonly) BOOL unsafeKeyAccess AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * Returns a new context with unsafe key access. - * - * Unsafe key access allows this context, and all contexts derived from it, to - * access keys that are normally forbidden: keys that are not declared as - * Objective-C properties, or keys that do not belong to the result of the - * `safeMustacheKeys` method. - * - * Compare: - * - * ``` - * @interface DBRecord : NSObject - * - (void)deleteRecord; - * @end - * - * @implementation DBRecord - * - (void)deleteRecord - * { - *     NSLog(@"Oooops, your record was just deleted!"); - * } - * @end - * - * DBRecord *record = ...; - * NSString *templateString = @"{{ deleteRecord }}"; - * GRMustacheTemplate * template = [GRMustacheTemplate templateWithString:templateString error:NULL]; - * - * // Safe rendering of the dangerous template: record is not deleted. - * [template renderObject:record error:NULL]; - * - * // Unsafe rendering of the dangerous template: record is deleted. - * template.baseContext = [GRMustacheContext contextWithUnsafeKeyAccess]; - * [template renderObject:record error:NULL]; - * ``` - * - * **Companion guide:** https://github.com/groue/GRMustache/blob/master/Guides/security.md - * - * @see GRMustacheSafeKeyAccess - * - * @since v7.0 - */ -+ (instancetype)contextWithUnsafeKeyAccess AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * Returns a new rendering context that is the copy of the receiver, with unsafe - * key access. - * - * Unsafe key access allows this context, and all contexts derived from it, to - * access keys that are normally forbidden: keys that are not declared as - * Objective-C properties, or keys that do not belong to the result of the - * `safeMustacheKeys` method. - * - * Compare: - * - * ``` - * @interface DBRecord : NSObject - * - (void)deleteRecord; - * @end - * - * @implementation DBRecord - * - (void)deleteRecord - * { - *     NSLog(@"Oooops, your record was just deleted!"); - * } - * @end - * - * DBRecord *record = ...; - * NSString *templateString = @"{{ deleteRecord }}"; - * GRMustacheTemplate * template = [GRMustacheTemplate templateWithString:templateString error:NULL]; - * - * // Safe rendering of the dangerous template: record is not deleted. - * [template renderObject:record error:NULL]; - * - * // Unsafe rendering of the dangerous template: record is deleted. - * template.baseContext = [template.baseContext contextWithUnsafeKeyAccess]; - * [template renderObject:record error:NULL]; - * ``` - * - * **Companion guide:** https://github.com/groue/GRMustache/blob/master/Guides/security.md - * - * @see GRMustacheSafeKeyAccess - * - * @since v7.0 - */ -- (instancetype)contextWithUnsafeKeyAccess AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -@end diff --git a/include/GRMustacheError.h b/include/GRMustacheError.h deleted file mode 100644 index c988651b..00000000 --- a/include/GRMustacheError.h +++ /dev/null @@ -1,71 +0,0 @@ -// The MIT License -// -// Copyright (c) 2014 Gwendal Roué -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import -#import "GRMustacheAvailabilityMacros.h" - - -/** - * The codes of a GRMustache-generated NSError - * - * @since v1.0 - */ -typedef NS_ENUM(NSInteger, GRMustacheErrorCode) { - /** - * The error code for parse errors. - * - * @since v1.0 - */ - GRMustacheErrorCodeParseError AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER, - - /** - * The error code for not found templates and partials. - * - * @since v1.0 - */ - GRMustacheErrorCodeTemplateNotFound AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER, - - /** - * The error code for not rendering errors. - * - * @since v6.3 - */ - GRMustacheErrorCodeRenderingError AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER, - -} AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - - -/** - * The domain of a GRMustache-generated NSError - * - * @since v1.0 - */ -extern NSString *const GRMustacheErrorDomain AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - - -/** - * The name of exceptions raised by GRMustache when rendering a template. - * - * @since v5.1 - */ -extern NSString *const GRMustacheRenderingException AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - diff --git a/include/GRMustacheFilter.h b/include/GRMustacheFilter.h deleted file mode 100644 index b89e2eca..00000000 --- a/include/GRMustacheFilter.h +++ /dev/null @@ -1,125 +0,0 @@ -// The MIT License -// -// Copyright (c) 2014 Gwendal Roué -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#ifndef GRMUSTACHE_FILTER -#define GRMUSTACHE_FILTER - -#import -#import "GRMustacheAvailabilityMacros.h" - - -// ============================================================================= -#pragma mark - - - -/** - * The protocol for implementing GRMustache filters. - * - * **Companion guide:** https://github.com/groue/GRMustache/blob/master/Guides/filters.md - * - * The responsability of a GRMustacheFilter is to transform a value into - * another. - * - * For example, the tag `{{ uppercase(name) }}` uses a filter object that - * returns the uppercase version of its input. - * - * @since v4.3 - */ -@protocol GRMustacheFilter -@required - -//////////////////////////////////////////////////////////////////////////////// -/// @name Transforming Values -//////////////////////////////////////////////////////////////////////////////// - -/** - * Applies some transformation to its input, and returns the transformed value. - * - * @param object An object to be processed by the filter. - * - * @return A transformed value. - * - * @since v4.3 - */ -- (id)transformedValue:(id)object AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -@end - - - -// ============================================================================= -#pragma mark - GRMustacheFilter - -/** - * The GRMustacheFilter class helps building mustache filters without writing a - * custom class that conforms to the GRMustacheFilter protocol. - * - * **Companion guide:** https://github.com/groue/GRMustache/blob/master/Guides/filters.md - * - * @see GRMustacheFilter protocol - * - * @since v4.3 - */ -@interface GRMustacheFilter : NSObject - -//////////////////////////////////////////////////////////////////////////////// -/// @name Creating Filters -//////////////////////////////////////////////////////////////////////////////// - -/** - * Returns a GRMustacheFilter object that executes the provided block when - * tranforming a value. - * - * @param block The block that transforms its input. - * - * @return a GRMustacheFilter object. - * - * @since v4.3 - * - * @see variadicFilterWithBlock: - */ -+ (id)filterWithBlock:(id(^)(id value))block AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * Returns a GRMustacheFilter object that executes the provided block, given an - * array of arguments. - * - * Those filters can evaluate expressions like `{{ f(a,b) }}`. - * - * GRMustache will invoke the filter regardless of the number of arguments in - * the template: `{{ f(a) }}`, `{{ f(a,b) }}` and `{{ f(a,b,c) }}` will provide - * arrays of 1, 2, and 3 arguments respectively. It is your responsability to - * check that you are provided with as many arguments as you expect. - * - * @param block The block that transforms its input. - * - * @return a GRMustacheFilter object. - * - * @since v5.5 - * - * @see filterWithBlock: - */ -+ (id)variadicFilterWithBlock:(id(^)(NSArray *arguments))block AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -@end - -#endif diff --git a/include/GRMustacheLocalizer.h b/include/GRMustacheLocalizer.h deleted file mode 100644 index d8887db7..00000000 --- a/include/GRMustacheLocalizer.h +++ /dev/null @@ -1,107 +0,0 @@ -// The MIT License -// -// Copyright (c) 2014 Gwendal Roué -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import -#import "GRMustacheAvailabilityMacros.h" -#import "GRMustacheRendering.h" -#import "GRMustacheFilter.h" - -/** - * GRMustacheLocalizer can localize the content of a Mustache section. - * It also has a filter facet that localizes your data. - * - * **Companion guide:** https://github.com/groue/GRMustache/blob/master/Guides/standard_library.md#localize - * - * The GRMustache standard library has a `localize` key which returns a - * GRMustacheLocalizer that localizes just like the NSLocalizableString macro - * does: with the Localizable.strings table of the main bundle. - * - * ### Localizing data: - * - * `{{ localize(greeting) }}` renders `NSLocalizedString(@"Hello", nil)`, - * assuming the `greeting` key resolves to the `Hello` string. - * - * ### Localizing sections: - * - * `{{#localize}}Hello{{/localize}}` renders `NSLocalizedString(@"Hello", nil)`. - * - * ### Localizing sections with arguments: - * - * `{{#localize}}Hello {{name}}{{/localize}}` builds the format string - * `Hello %@`, localizes it with NSLocalizedString, and finally - * injects the name with `[NSString stringWithFormat:]`. - * - * ### Localize sections with arguments and conditions: - * - * `{{#localize}}Good morning {{#title}}{{title}}{{/title}} {{name}}{{/localize}}` - * build the format string `Good morning %@" or @"Good morning %@ %@`, - * depending on the presence of the `title` key. It then injects the name, or - * both title and name, with `[NSString stringWithFormat:]`, to build the final - * rendering. - * - * ### Custom GRMustacheLocalizer - * - * You can build your own localizing helper with the initWithBundle:tableName: - * method. The helper would then localize using the specified table from the - * specified bundle. - * - * @since v6.4 - */ -@interface GRMustacheLocalizer : NSObject { -@private - NSBundle *_bundle; - NSString *_tableName; - NSMutableArray *_formatArguments; -} - -/** - * Returns an initialized localizing helper. - * - * @param bundle The bundle where to look for localized strings. If nil, the - * main bundle is used. - * @param tableName The table where to look for localized strings. If nil, the - * default Localizable.strings table would be searched. - * - * @return A newly initialized localizing helper. - * - * @since v6.4 - */ -- (instancetype)initWithBundle:(NSBundle *)bundle tableName:(NSString *)tableName AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * The bundle where to look for localized strings. - * - * @since v6.4 - */ -@property (nonatomic, retain, readonly) NSBundle *bundle AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * The table where to look for localized strings. - * - * If nil, the default Localizable.strings table would be searched. - * - * @since v6.4 - */ -@property (nonatomic, retain, readonly) NSString *tableName AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -@end - diff --git a/include/GRMustacheRendering.h b/include/GRMustacheRendering.h deleted file mode 100644 index f1b526a2..00000000 --- a/include/GRMustacheRendering.h +++ /dev/null @@ -1,130 +0,0 @@ -// The MIT License -// -// Copyright (c) 2014 Gwendal Roué -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#ifndef GRMUSTACHE_RENDERING -#define GRMUSTACHE_RENDERING - -#import -#import "GRMustacheAvailabilityMacros.h" - -@class GRMustacheContext; -@class GRMustacheTag; - - -// ============================================================================= -#pragma mark - - - -/** - * The protocol for your own objects that perform custom rendering. - * - * **Companion guide:** https://github.com/groue/GRMustache/blob/master/Guides/rendering_objects.md - */ -@protocol GRMustacheRendering - -/** - * This method is invoked when the receiver should be rendered by a Mustache - * tag. - * - * It returns three values: the rendering itself, a boolean that says whether - * the rendering is HTML-safe or not, and an eventual error. - * - * Input values are the tag that should be rendered, and the context object that - * represents the current context stack. - * - * Depending on the content type of the currently rendered template, an output - * parameter _HTMLSafe_ set to NO will have the returned string HTML-escaped. - * - * @param tag The tag to be rendered - * @param context A context for rendering inner tags. - * @param HTMLSafe Upon return contains YES if the result is HTML-safe. - * @param error If there is an error performing the rendering, upon return - * contains an NSError object that describes the problem. - * - * @return The rendering of the receiver for the given tag, in the given - * context. - * - * @see GRMustacheTag - * @see GRMustacheContext - * @see GRMustacheContentType - * - * @since v6.0 - */ -- (NSString *)renderForMustacheTag:(GRMustacheTag *)tag - context:(GRMustacheContext *)context - HTMLSafe:(BOOL *)HTMLSafe - error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; -@end - - -// ============================================================================= -#pragma mark - GRMustacheRendering - -/** - * The GRMustacheRendering class helps building rendering objects without - * writing a custom class that conforms to the GRMustacheRendering protocol. - * - * **Companion guide:** https://github.com/groue/GRMustache/blob/master/Guides/rendering_objects.md - * - * @see GRMustacheRendering protocol - * - * @since v7.0 - */ -@interface GRMustacheRendering : NSObject - -//////////////////////////////////////////////////////////////////////////////// -/// @name Creating Rendering Objects -//////////////////////////////////////////////////////////////////////////////// - -/** - * Returns a rendering object that is able to render the argument _object_ for - * the various Mustache tags. - * - * @param object An object. - * - * @return A rendering object able to render the argument. - * - * @see GRMustacheRendering protocol - * - * @since v7.0 - */ -+ (id)renderingObjectForObject:(id)object AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * Returns a rendering object that renders with the provided block. - * - * @param renderingBlock A block that follows the semantics of the - * renderForMustacheTag:context:HTMLSafe:error: method - * defined by the GRMustacheRendering protocol. See the - * documentation of this method. - * - * @return A rendering object - * - * @see GRMustacheRendering protocol - * - * @since v7.0 - */ -+ (id)renderingObjectWithBlock:(NSString *(^)(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error))renderingBlock AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -@end - -#endif diff --git a/include/GRMustacheSafeKeyAccess.h b/include/GRMustacheSafeKeyAccess.h deleted file mode 100644 index caca2275..00000000 --- a/include/GRMustacheSafeKeyAccess.h +++ /dev/null @@ -1,54 +0,0 @@ -// The MIT License -// -// Copyright (c) 2014 Gwendal Roué -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import -#import "GRMustacheAvailabilityMacros.h" - - -/** - * Your data classes should conform to the GRMustacheSafeKeyAccess protocol - * to filter the keys that can be accessed by GRMustache templates. - * - * **Companion guide:** https://github.com/groue/GRMustache/blob/master/Guides/runtime/security.md - */ -@protocol GRMustacheSafeKeyAccess - -/** - * List the name of the keys GRMustache can access on this class using the - * `valueForKey:` method. - * - * When objects do not respond to this method, only declared properties can be - * accessed. All properties of Core Data NSManagedObjects are also accessible, - * even without property declaration. - * - * This method is not used for objects responding to `objectForKeyedSubscript:`. - * For those objects, all keys are accessible from templates. - * - * **Companion guide:** https://github.com/groue/GRMustache/blob/master/Guides/security.md - * - * @return The set of accessible keys on the class. - * - * @since v7.0 - */ -+ (NSSet *)safeMustacheKeys AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -@end diff --git a/include/GRMustacheTag.h b/include/GRMustacheTag.h deleted file mode 100644 index 64795082..00000000 --- a/include/GRMustacheTag.h +++ /dev/null @@ -1,151 +0,0 @@ -// The MIT License -// -// Copyright (c) 2014 Gwendal Roué -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import -#import "GRMustacheAvailabilityMacros.h" - -@class GRMustacheTemplateRepository; -@class GRMustacheContext; - -/** - * The types of Mustache tags - * - * @since v6.0 - */ -typedef NS_ENUM(NSUInteger, GRMustacheTagType) { - /** - * The type for variable tags such as `{{name}}`. - * - * @since v6.0 - */ - GRMustacheTagTypeVariable = 1 << 1 AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER, - - /** - * The type for regular and inverted section tags, such as - * `{{#name}}...{{/name}}` and `{{#name}}...{{/name}}`. - * - * @since v6.0 - */ - GRMustacheTagTypeSection = 1 << 2 AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER, - -} AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * The type for inverted section tags such as {{^ name }}...{{/}} - * - * This value is deprecated. - * - * @since v6.0 - * @deprecated v7.2 - */ -AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER_BUT_DEPRECATED_IN_GRMUSTACHE_VERSION_7_2 static GRMustacheTagType const GRMustacheTagTypeInvertedSection = 1 << 3; - -/** - * GRMustacheTag instances represent Mustache tags that render values, such as - * a variable tag `{{ name }}`, or a section tag `{{# name }}...{{/ })`. - * - * **Companion guides:** - * - * - https://github.com/groue/GRMustache/blob/master/Guides/delegate.md - * - https://github.com/groue/GRMustache/blob/master/Guides/rendering_objects.md - */ -@interface GRMustacheTag: NSObject - - -//////////////////////////////////////////////////////////////////////////////// -/// @name Tag Information -//////////////////////////////////////////////////////////////////////////////// - - -/** - * The type of the tag - */ -@property (nonatomic, readonly) GRMustacheTagType type AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * Returns the literal and unprocessed inner content of the tag. - * - * A section tag such as `{{# name }}inner content{{/}}` returns `inner content`. - * - * Variable tags such as `{{ name }}` have no inner content: their inner - * template string is the empty string. - */ -@property (nonatomic, readonly) NSString *innerTemplateString AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * Returns the description of the tag. - * - * For example: - * - * ``` - * - * ``` - */ -- (NSString *)description; - -//////////////////////////////////////////////////////////////////////////////// -/// @name Methods Dedicated to the GRMustacheRendering Protocol -//////////////////////////////////////////////////////////////////////////////// - -/** - * This method is deprecated. - * - * Replace `[tag.templateRepository templateFromString:... error:...]` with - * `[GRMustacheTemplate templateFromString:... error:...]`. - * - * Replace `[tag.templateRepository templateNamed:... error:...]` with explicit - * invocation of the targeted template repository. - * - * @since v6.0 - * @deprecated v7.0 - */ -@property (nonatomic, readonly) GRMustacheTemplateRepository *templateRepository AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER_BUT_DEPRECATED; - -/** - * Returns the rendering of the tag's inner content, rendering all inner - * Mustache tags with the rendering context argument. - * - * This method is intended for objects conforming to the GRMustacheRendering - * protocol. The following Guides show some use cases for this method: - * - * - https://github.com/groue/GRMustache/blob/master/Guides/delegate.md - * - https://github.com/groue/GRMustache/blob/master/Guides/rendering_objects.md - * - * Note that variable tags such as `{{ name }}` have no inner content, and - * return the empty string. - * - * @param context A context for rendering inner tags. - * @param HTMLSafe Upon return contains YES or NO, depending on the content - * type of the tag's template, as set by the configuration of - * the source template repository. HTML templates yield YES, - * text templates yield NO. - * @param error If there is an error rendering the tag, upon return contains - * an NSError object that describes the problem. - * - * @see GRMustacheRendering - * @see GRMustacheContext - * - * @return The rendering of the tag's inner content. - */ -- (NSString *)renderContentWithContext:(GRMustacheContext *)context HTMLSafe:(BOOL *)HTMLSafe error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -@end diff --git a/include/GRMustacheTagDelegate.h b/include/GRMustacheTagDelegate.h deleted file mode 100644 index 573410f3..00000000 --- a/include/GRMustacheTagDelegate.h +++ /dev/null @@ -1,84 +0,0 @@ -// The MIT License -// -// Copyright (c) 2014 Gwendal Roué -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import -#import "GRMustacheAvailabilityMacros.h" - -@class GRMustacheTag; - -/** - * Objects conforming to the GRMustacheTagDelegate protocol can observe and - * alter, the rendering of Mustache tags. - * - * **Companion guide:** https://github.com/groue/GRMustache/blob/master/Guides/delegate.md - * - * @since v6.0 - */ -@protocol GRMustacheTagDelegate -@optional - -/** - * Sent before a Mustache tag renders. - * - * This method gives an opportunity to alter objects that are rendered. - * - * For example, it is implemented by the NSFormatter class, in templates like - * `{{# dateFormatter }}...{{ value }}...{{ value }}... {{/}}`. - * - * @param tag The Mustache tag about to render. - * @param object The object about to be rendered. - * - * @return The object that should be rendered. - * - * @see GRMustacheTag - * - * @since v6.0 - */ -- (id)mustacheTag:(GRMustacheTag *)tag willRenderObject:(id)object AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * Sent after a Mustache tag has rendered. - * - * @param tag The Mustache tag that has just rendered. - * @param object The rendered object. - * @param rendering The actual rendering - * - * @see GRMustacheTag - * - * @since v6.0 - */ -- (void)mustacheTag:(GRMustacheTag *)tag didRenderObject:(id)object as:(NSString *)rendering AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * Sent right after a Mustache tag has failed rendering. - * - * @param tag The Mustache tag that has just failed rendering. - * @param object The rendered object. - * @param error The error. - * - * @see GRMustacheTag - * - * @since v6.0 - */ -- (void)mustacheTag:(GRMustacheTag *)tag didFailRenderingObject:(id)object withError:(NSError *)error AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -@end diff --git a/include/GRMustacheTemplate.h b/include/GRMustacheTemplate.h deleted file mode 100644 index 19c499e5..00000000 --- a/include/GRMustacheTemplate.h +++ /dev/null @@ -1,383 +0,0 @@ -// The MIT License -// -// Copyright (c) 2014 Gwendal Roué -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import -#import "GRMustacheAvailabilityMacros.h" -#import "GRMustacheRendering.h" - -@class GRMustacheContext; -@class GRMustacheTemplateRepository; -@protocol GRMustacheTagDelegate; - -/** - * The GRMustacheTemplate class provides with Mustache template rendering - * services. - * - * **Companion guide:** https://github.com/groue/GRMustache/blob/master/Guides/templates.md - * - * @since v1.0 - */ -@interface GRMustacheTemplate: NSObject { -@private - GRMustacheTemplateRepository *_templateRepository; - id _templateAST; - GRMustacheContext *_baseContext; -} - - -//////////////////////////////////////////////////////////////////////////////// -/// @name Creating Templates -//////////////////////////////////////////////////////////////////////////////// - -/** - * Parses a template string, and returns a compiled template. - * - * @param templateString The template string. - * @param error If there is an error loading or parsing template and - * partials, upon return contains an NSError object that - * describes the problem. - * - * @return A GRMustacheTemplate instance. - * - * @since v1.11 - */ -+ (instancetype)templateFromString:(NSString *)templateString error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * Parses a template file, and returns a compiled template. - * - * The template at path must be encoded in UTF8. See the - * GRMustacheTemplateRepository class for more encoding options. - * - * @param path The path of the template. - * @param error If there is an error loading or parsing template and - * partials, upon return contains an NSError object that - * describes the problem. - * - * @return A GRMustacheTemplate instance. - * - * @see GRMustacheTemplateRepository - * - * @since v1.11 - */ -+ (instancetype)templateFromContentsOfFile:(NSString *)path error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * Parses a template file, and returns a compiled template. - * - * The template at url must be encoded in UTF8. See the - * GRMustacheTemplateRepository class for more encoding options. - * - * @param url The URL of the template. - * @param error If there is an error loading or parsing template and - * partials, upon return contains an NSError object that - * describes the problem. - * - * @return A GRMustacheTemplate instance. - * - * @see GRMustacheTemplateRepository - * - * @since v1.11 - */ -+ (instancetype)templateFromContentsOfURL:(NSURL *)url error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * Parses a bundle resource template, and returns a compiled template. - * - * If you provide nil as a bundle, the resource will be looked in the main - * bundle. - * - * The template resource must be encoded in UTF8. See the - * GRMustacheTemplateRepository class for more encoding options. - * - * @param name The name of a bundle resource of extension "mustache". - * @param bundle The bundle where to look for the template resource. If nil, - * the main bundle is used. - * @param error If there is an error loading or parsing template and - * partials, upon return contains an NSError object that - * describes the problem. - * - * @return A GRMustacheTemplate instance. - * - * @see GRMustacheTemplateRepository - * - * @since v1.11 - */ -+ (instancetype)templateFromResource:(NSString *)name bundle:(NSBundle *)bundle error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - - -//////////////////////////////////////////////////////////////////////////////// -/// @name Configuring Templates -//////////////////////////////////////////////////////////////////////////////// - -/** - * The template's base context: all rendering start from this context. - * - * Its default value comes from the configuration of the source template - * repository. Unless specified, it contains the GRMustache standard library. - * - * @see GRMustacheContext - * @see GRMustacheConfiguration - * @see GRMustacheTemplateRepository - * @see [GRMustache standardLibrary] - * @see extendBaseContextWithObject: - * @see extendBaseContextWithProtectedObject: - * @see extendBaseContextWithTagDelegate: - * - * @since v6.0 - */ -@property (nonatomic, retain) GRMustacheContext *baseContext AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * Extends the base context of the receiver with the provided object, making its - * keys available for all renderings. - * - * For example: - * - * ``` - * GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"{{name}}" error:NULL]; - * - * // Have the `name` key defined for all renderings of the template: - * id object = @{ @"name": @"Arthur" }; - * [template extendBaseContextWithObject:object]; - * - * // Renders "Arthur" - * ``` - * [template renderObject:nil error:NULL]; - * - * Keys defined by _object_ can be overriden by other objects that will - * eventually enter the context stack: - * - * ``` - * // Renders "Billy", not "Arthur" - * [template renderObject:@{ @"name": @"Billy" } error:NULL]; - * ``` - * - * This method is a shortcut. It is equivalent to the following line of code: - * - * ``` - * template.baseContext = [template.baseContext contextByAddingObject:object]; - * ``` - * - * @param object An object - * - * @see baseContext - * @see extendBaseContextWithProtectedObject: - * @see extendBaseContextWithTagDelegate: - * - * @since v6.8 - */ -- (void)extendBaseContextWithObject:(id)object AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * Extends the base context of the receiver with the provided object, making its - * keys available for all renderings. - * - * Keys defined by _object_ are given priority, which means that they can not be - * overriden by other objects that will eventually enter the context stack. - * - * For example: - * - * ``` - * GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"{{precious}}" error:NULL]; - * - * // The `precious` key is given priority: - * id object = @{ @"precious": @"gold" }; - * [template extendBaseContextWithProtectedObject:object]; - * - * // Renders "gold", not "lead". - * [template renderObject:@{ @"precious": @"lead" } error:NULL]; - * ``` - * - * This method is a shortcut. It is equivalent to the following line of code: - * - * ``` - * template.baseContext = [template.baseContext contextByAddingProtectedObject:object]; - * ``` - * - * @param object An object - * - * @see baseContext - * @see extendBaseContextWithObject: - * @see extendBaseContextWithTagDelegate: - * - * @since v6.8 - */ -- (void)extendBaseContextWithProtectedObject:(id)object AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * Extends the base context of the receiver with a tag delegate, making it aware - * of the rendering of all tags in the template. - * - * This method is a shortcut. It is equivalent to the following line of code: - * - * ``` - * template.baseContext = [template.baseContext contextByAddingTagDelegate:tagDelegate]; - * ``` - * - * @param tagDelegate A tag delegate - * - * @see baseContext - * @see extendBaseContextWithObject: - * @see extendBaseContextWithProtectedObject: - * - * @since v6.8 - */ -- (void)extendBaseContextWithTagDelegate:(id)tagDelegate AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER;; - - -//////////////////////////////////////////////////////////////////////////////// -/// @name Rendering Templates -//////////////////////////////////////////////////////////////////////////////// - - -/** - * Renders an object from a template string. - * - * @param object An object used for interpreting Mustache tags. - * @param templateString The template string. - * @param error If there is an error during rendering, upon return - * contains an NSError object that describes the problem. - * - * @return A string containing the rendered template. - * - * @since v1.0 - */ -+ (NSString *)renderObject:(id)object fromString:(NSString *)templateString error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * Renders an object from a bundle resource template. - * - * If you provide nil as a bundle, the resource will be looked in the main - * bundle, with a "mustache" extension. - * - * The template resource must be encoded in UTF8. See the - * GRMustacheTemplateRepository class for more encoding options. - * - * @param object An object used for interpreting Mustache tags. - * @param name The name of a bundle resource of extension "mustache". - * @param bundle The bundle where to look for the template resource. If nil, - * the main bundle is used. - * @param error If there is an error during rendering, upon return contains an - * NSError object that describes the problem. - * - * @return A string containing the rendered template. - * - * @see GRMustacheTemplateRepository - * - * @since v1.0 - */ -+ (NSString *)renderObject:(id)object fromResource:(NSString *)name bundle:(NSBundle *)bundle error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * Renders a template with a context stack initialized with the provided object - * on top of the base context. - * - * @param object An object used for interpreting Mustache tags. - * @param error If there is an error rendering the template and its - * partials, upon return contains an NSError object that - * describes the problem. - * - * @return A string containing the rendered template. - * - * @since v6.0 - */ -- (NSString *)renderObject:(id)object error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * Renders a template with a context stack initialized with the provided objects - * on top of the base context. - * - * @param objects An array of context objects for interpreting Mustache tags. - * @param error If there is an error rendering the template and its - * partials, upon return contains an NSError object that - * describes the problem. - * - * @return A string containing the rendered template. - * - * @since v6.0 - */ -- (NSString *)renderObjectsFromArray:(NSArray *)objects error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * Returns the rendering of the receiver, given a rendering context. - * - * @param context A rendering context. - * @param HTMLSafe Upon return contains YES or NO, depending on the content - * type of the template, as set by the configuration of the - * source template repository. HTML templates yield YES, text - * templates yield NO. - * @param error If there is an error rendering the tag, upon return contains - * an NSError object that describes the problem. - * - * @return The rendering of the template. - * - * @see GRMustacheConfiguration - * @see GRMustacheContentType - * - * @since v6.0 - */ -- (NSString *)renderContentWithContext:(GRMustacheContext *)context HTMLSafe:(BOOL *)HTMLSafe error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -//////////////////////////////////////////////////////////////////////////////// -/// @name Accessing Sibling Templates -//////////////////////////////////////////////////////////////////////////////// - -/** - * Returns the template repository that issued the receiver. - * - * All templates belong a template repository: - * - * - Templates returned by `+[GRMustacheTemplate templateFromString:error:]` - * have a template repository that loads templates and partials stored as - * resources in the main bundle, with extension ".mustache", encoded in UTF8. - * - * - Templates returned by `+[GRMustacheTemplate templateFromContentsOfFile:error:]` - * have a template repository that loads templates and partials stored in the - * directory of the receiver, with the same file extension ".mustache", - * encoded in UTF8. - * - * - Templates returned by `+[GRMustacheTemplate templateFromContentsOfURL:error:]` - * have a template repository that loads templates and partials stored in the - * directory of the receiver, with the same file extension ".mustache", - * encoded in UTF8. - * - * - Templates returned by `+[GRMustacheTemplate templateFromResource:bundle:error:]` - * have a template repository that loads templates and partials stored as - * resources in the specified bundle, with extension ".mustache", encoded in - * UTF8. - * - * - Templates returned by `-[GRMustacheTemplateRepository templateNamed:error:]` - * and `-[GRMustacheTemplateRepository templateFromString:error:]` belong to - * the invoked repository. - * - * @see GRMustacheTemplateRepository - * @see templateFromString:error: - * @see templateFromContentsOfFile:error: - * @see templateFromContentsOfURL:error: - * @see templateFromResource:bundle:error: - * - * @since v7.0 - */ -@property (nonatomic, retain, readonly) GRMustacheTemplateRepository *templateRepository AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -@end diff --git a/include/GRMustacheTemplateRepository.h b/include/GRMustacheTemplateRepository.h deleted file mode 100644 index 31ab8ca6..00000000 --- a/include/GRMustacheTemplateRepository.h +++ /dev/null @@ -1,576 +0,0 @@ -// The MIT License -// -// Copyright (c) 2014 Gwendal Roué -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import -#import "GRMustacheAvailabilityMacros.h" - -@class GRMustacheTemplate; -@class GRMustacheTemplateRepository; -@class GRMustacheConfiguration; - -/** - * The protocol for a GRMustacheTemplateRepository's dataSource. - * - * The dataSource's responsability is to provide Mustache template strings for - * template and partial names. - * - * **Companion guide:** https://github.com/groue/GRMustache/blob/master/Guides/template_repositories.md - * - * @see GRMustacheTemplateRepository - * - * @since v1.13 - */ -@protocol GRMustacheTemplateRepositoryDataSource -@required - -/** - * Returns a template ID, that is to say an object that uniquely identifies a - * template or a template partial. - * - * The class of this ID is opaque: your implementation of a - * GRMustacheTemplateRepositoryDataSource would define, for itself, what kind of - * object would identity a template or a partial. - * - * For example, a file-based data source may use NSString objects containing - * paths to the templates. - * - * You should try to choose "human-readable" template IDs, because template IDs - * are embedded in the description of errors that may happen during a template - * processing, in order to help the library user locate, and fix, the faulting - * template. - * - * Whenever relevant, template and partial hierarchies are supported via the - * _baseTemplateID_ parameter: it contains the template ID of the enclosing - * template, or nil when the data source is asked for a template ID for a - * partial that is referred from a raw template string (see - * [GRMustacheTemplateRepository templateFromString:error:]). - * - * Not all data sources have to implement hierarchies: they can simply ignore - * this parameter. - * - * Data sources that implement hierarchies have to implement their own support - * for absolute partial paths. - * - * The return value of this method can be nil: the library user would then - * eventually get an NSError of domain GRMustacheErrorDomain and code - * GRMustacheErrorCodeTemplateNotFound. - * - * @param templateRepository The GRMustacheTemplateRepository asking for a - * template ID. - * @param name The name of the template or template partial. - * @param baseTemplateID The template ID of the enclosing template, or nil. - * - * @return a template ID - * - * @since v1.13 - */ -- (id)templateRepository:(GRMustacheTemplateRepository *)templateRepository templateIDForName:(NSString *)name relativeToTemplateID:(id)baseTemplateID AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * Provided with a template ID that comes from - * templateRepository:templateIDForName:relativeToTemplateID:, - * returns a Mustache template string. - * - * For example, a file-based data source may interpret the template ID as a - * NSString object containing paths to the template, and return the file - * content. - * - * As usual, whenever this method returns nil, the _error_ parameter should - * point to a valid NSError. This NSError would eventually reach the library - * user. - * - * @param templateRepository The GRMustacheTemplateRepository asking for a - * Mustache template string. - * @param templateID The template ID of the template - * @param error If there is an error returning a template string, - * upon return contains nil, or an NSError object - * that describes the problem. - * - * @return a Mustache template string - * - * @since v1.13 - */ -- (NSString *)templateRepository:(GRMustacheTemplateRepository *)templateRepository templateStringForTemplateID:(id)templateID error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; -@end - - -/** - * Given a data source that provides Mustache template strings, a - * GRMustacheTemplateRepository's responsability is to provide - * GRMustacheTemplate instances. - * - * You may provide your own template string data source. However common cases - * such as loading templates from URLs, files, bundle resources, and - * dictionaries, are already implemented. - * - * **Companion guide:** https://github.com/groue/GRMustache/blob/master/Guides/template_repositories.md - * - * @see GRMustacheTemplate - * @see GRMustacheTemplateRepositoryDataSource - * - * @since v1.13 - */ -@interface GRMustacheTemplateRepository : NSObject { -@private - id _dataSource; - NSMutableDictionary *_templateASTForTemplateID; - GRMustacheConfiguration *_configuration; -} - - -//////////////////////////////////////////////////////////////////////////////// -/// @name Creating Template Repositories -//////////////////////////////////////////////////////////////////////////////// - - -/** - * Returns a GRMustacheTemplateRepository. - * - * Until it is provided with a data source, it is unable to load template by - * names, and unable to process partial tags such as `{{>partial}}`: - * - * ``` - * GRMustacheTemplateRepository *repository = [GRMustacheTemplateRepository templateRepository]; - * NSError *error; - * - * // Returns nil, and sets error to an NSError of domain - * // GRMustacheErrorDomain, code GRMustacheErrorCodeTemplateNotFound. - * [repository templateNamed:@"foo" error:&error]; - * - * // Returns nil, and sets error to an NSError of domain GRMustacheErrorDomain, - * // code GRMustacheErrorCodeTemplateNotFound. - * [repository templateFromString:@"{{>partial}}" error:&error]; - * ``` - * - * It is, however, able to process Mustache template strings without any - * partial: - * - * ``` - * GRMustacheTemplate *template = [repository templateFromString:@"Hello {{name}}!" error:NULL]; - * ``` - * - * You will give it a data source conforming to the - * GRMustacheTemplateRepositoryDataSource protocol in order to load template and - * partials by name: - * - * ``` - * repository.dataSource = ...; - * - * // Returns a template built from the string provided by the dataSource. - * [repository templateNamed:@"foo" error:NULL]; - * ``` - * - * @return a GRMustacheTemplateRepository - * - * @see GRMustacheTemplateRepositoryDataSource - * - * @since v1.13 - */ -+ (instancetype)templateRepository AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * Returns a GRMustacheTemplateRepository that loads Mustache template strings - * from files of extension .mustache, encoded in UTF8, stored in the provided - * directory. - * - * For example: - * - * ``` - * // Creates a repository for templates stored in /path/to/templates - * GRMustacheTemplateRepository *repository = [GRMustacheTemplateRepository templateRepositoryWithDirectory:@"/path/to/templates"]; - * - * // Returns a template for the file stored in - * // /path/to/templates/profile.mustache - * GRMustacheTemplate *template = [repository templateNamed:@"profile" error:NULL]; - * ``` - * - * A partial tag `{{>partial}}` loads a partial template stored in a file named - * `partial.mustache`, located in the enclosing template's directory. - * - * You may use the slash `/`, and `..`, in order to navigate the hierarchical - * file system: `{{>partials/achievements}}` would load - * /path/to/templates/partials/achievements.mustache, if invoked from - * /path/to/templates/profile.mustache. - * - * When you ask the repository to parse a raw template string, partials are - * loaded from the base directory: - * - * ``` - * // The partial would be loaded from - * // /path/to/templates/partials/achievements.mustache - * GRMustacheTemplate *template = [repository templateFromString:@"{{>partials/achievements}}" error:NULL]; - * ``` - * - * @param path The path of the directory that stores templates. - * - * @return a GRMustacheTemplateRepository - * - * @since v1.13 - */ -+ (instancetype)templateRepositoryWithDirectory:(NSString *)path AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * Returns a GRMustacheTemplateRepository that loads Mustache template strings - * from files of provided extension, encoded in the provided encoding, stored in - * the provided directory. - * - * For example: - * - * ``` - * // Creates a repository for templates of extension `.txt` stored in - * // /path/to/templates, encoded with NSMacOSRomanStringEncoding: - * GRMustacheTemplateRepository *repository = [GRMustacheTemplateRepository templateRepositoryWithDirectory:@"/path/to/templates" - *                                                                                        templateExtension:@"txt" - *                                                                                                 encoding:NSMacOSRomanStringEncoding]; - * - * // Returns a template for the file stored in - * // /path/to/templates/profile.txt - * GRMustacheTemplate *template = [repository templateNamed:@"profile" error:NULL]; - * ``` - * - * A partial tag `{{>partial}}` loads a partial template stored in a file named - * `partial.txt`, located in the enclosing template's directory. - * - * You may use the slash `/`, and `..`, in order to navigate the hierarchical - * file system: `{{>partials/achievements}}` would load - * /path/to/templates/partials/achievements.txt, if invoked from - * /path/to/templates/profile.txt. - * - * When you ask the repository to parse a raw template string, partials are - * loaded from the base directory: - * - * ``` - * // The partial would be loaded from - * // /path/to/templates/partials/achievements.txt - * GRMustacheTemplate *template = [repository templateFromString:@"{{>partials/achievements}}" error:NULL]; - * ``` - * - * @param path The path of the directory that stores templates. - * @param ext The extension of template files. - * @param encoding The encoding of template files. - * - * @return a GRMustacheTemplateRepository - * - * @since v1.13 - */ -+ (instancetype)templateRepositoryWithDirectory:(NSString *)path templateExtension:(NSString *)ext encoding:(NSStringEncoding)encoding AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * Returns a GRMustacheTemplateRepository that loads Mustache template strings - * from files of extension .mustache, encoded in UTF8, stored in the provided - * base URL. - * - * For example: - * - * ``` - * // Creates a repository for templates stored in /path/to/templates - * NSURL *baseURL = [NSURL fileURLWithPath:@"/path/to/templates"]; - * GRMustacheTemplateRepository *repository = [GRMustacheTemplateRepository templateRepositoryWithBaseURL:baseURL]; - * - * // Returns a template for the file stored in - * // /path/to/templates/profile.mustache - * GRMustacheTemplate *template = [repository templateNamed:@"profile" error:NULL]; - * ``` - * - * A partial tag `{{>partial}}` loads a partial template stored in a file named - * `partial.mustache`, located in the enclosing template's directory. - * - * You may use the slash `/`, and `..`, in order to navigate the URL - * hierarchical system: `{{>partials/achievements}}` would load - * /path/to/templates/partials/achievements.mustache, if invoked from - * /path/to/templates/profile.mustache. - * - * When you ask the repository to parse a raw template string, partials are - * loaded from the base URL: - * - * ``` - * // The partial would be loaded from - * // /path/to/templates/partials/achievements.mustache - * GRMustacheTemplate *template = [repository templateFromString:@"{{>partials/achievements}}" error:NULL]; - * ``` - * - * @param URL the base URL where to look templates from. - * - * @return a GRMustacheTemplateRepository - * - * @since v1.13 - */ -+ (instancetype)templateRepositoryWithBaseURL:(NSURL *)URL AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * Returns a GRMustacheTemplateRepository that loads Mustache template strings - * from files of provided extension, encoded in the provided encoding, stored in - * the provided base URL. - * - * For example: - * - * ``` - * // Creates a repository for templates of extension `.txt` stored in - * // /path/to/templates, encoded with NSMacOSRomanStringEncoding: - * NSURL *baseURL = [NSURL fileURLWithPath:@"/path/to/templates"]; - * GRMustacheTemplateRepository *repository = [GRMustacheTemplateRepository templateRepositoryWithBaseURL:baseURL - *                                                                                      templateExtension:@"txt" - *                                                                                               encoding:NSMacOSRomanStringEncoding]; - * - * // Returns a template for the file stored in - * // /path/to/templates/profile.txt - * GRMustacheTemplate *template = [repository templateNamed:@"profile" error:NULL]; - * ``` - * - * A partial tag `{{>partial}}` loads a partial template stored in a file named - * `partial.txt`, located in the enclosing template's directory. - * - * You may use the slash `/`, and `..`, in order to navigate the URL - * hierarchical system: `{{>partials/achievements}}` would load - * /path/to/templates/partials/achievements.txt, if invoked from - * /path/to/templates/profile.txt. - * - * When you ask the repository to parse a raw template string, partials are - * loaded from the base URL: - * - * ``` - * // The partial would be loaded from - * // /path/to/templates/partials/achievements.txt - * GRMustacheTemplate *template = [repository templateFromString:@"{{>partials/achievements}}" error:NULL]; - * ``` - * - * @param URL The base URL where to look templates from. - * @param ext The extension of template files. - * @param encoding The encoding of template files. - * - * @return a GRMustacheTemplateRepository - * - * @since v1.13 - */ -+ (instancetype)templateRepositoryWithBaseURL:(NSURL *)URL templateExtension:(NSString *)ext encoding:(NSStringEncoding)encoding AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * Returns a GRMustacheTemplateRepository that loads Mustache template strings - * from resources of extension .mustache, encoded in UTF8, stored in the - * provided bundle. - * - * For example: - * - * ``` - * // Creates a repository for templates stored in the main bundle: - * GRMustacheTemplateRepository *repository = [GRMustacheTemplateRepository templateRepositoryWithBundle:[NSBundle mainBundle]]; - * - * // Returns a template for the resource profile.mustache - * GRMustacheTemplate *template = [repository templateNamed:@"profile" error:NULL]; - * ``` - * - * You may provide nil for the bundle parameter: the repository will use the - * main bundle. - * - * A partial tag `{{>partial}}` loads a partial template from the - * `partial.mustache` resource in the bundle. - * - * @param bundle The bundle that stores templates as resources. If nil, the - * main bundle is used. - * - * @return a GRMustacheTemplateRepository - * - * @since v1.13 - */ -+ (instancetype)templateRepositoryWithBundle:(NSBundle *)bundle AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * Returns a GRMustacheTemplateRepository that loads Mustache template strings - * from resources of provided extension, encoded in the provided encoding, - * stored in the provided bundle. - * - * For example: - * - * ``` - * // Creates a repository for templates of extension `.txt` stored in the - * // main bundle, encoded with NSMacOSRomanStringEncoding: - * GRMustacheTemplateRepository *repository = [GRMustacheTemplateRepository templateRepositoryWithBundle:[NSBundle mainBundle] - *                                                                                     templateExtension:@"txt" - *                                                                                              encoding:NSMacOSRomanStringEncoding]; - * - * // Returns a template for the resource profile.txt - * GRMustacheTemplate *template = [repository templateNamed:@"profile" error:NULL]; - * ``` - * - * You may provide nil for the bundle parameter: the repository will use the - * main bundle. - * - * A partial tag `{{>partial}}` loads a partial template from the `partial.txt` - * resource in the bundle. - * - * @param bundle The bundle that stores templates as resources. - * @param ext The extension of template files. - * @param encoding The encoding of template files. - * - * @return a GRMustacheTemplateRepository - * - * @since v1.13 - */ -+ (instancetype)templateRepositoryWithBundle:(NSBundle *)bundle templateExtension:(NSString *)ext encoding:(NSStringEncoding)encoding AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * Returns a GRMustacheTemplateRepository that loads Mustache template strings - * from a dictionary whose keys are template names, and values template strings. - * - * For example: - * - * ``` - * NSDictionary *templates = @{ @"partial": @"It works." }; - * GRMustacheTemplateRepository *repository = [GRMustacheTemplateRepository templateRepositoryWithDictionary:templates]; - * - * // Two templates that render "It works." - * GRMustacheTemplate *template1 = [repository templateNamed:@"partial" error:NULL]; - * GRMustacheTemplate *template2 = [repository templateFromString:@"{{> partial }}" error:NULL]; - * ``` - * - * The dictionary is not copied, but retained: changes to the original - * dictionary may affect the loading of templates. - * - * You can stay immune to any change by providing a copy of the dictionary. - * - * Or you may embrace the changes, and invoke the `reloadTemplates` method - * whenever the changes should be applied. - * - * @param templates A dictionary whose keys are template names, and values - * Mustache template strings. - * - * @return a GRMustacheTemplateRepository - * - * @see reloadTemplates - * - * @since v1.13 - */ -+ (instancetype)templateRepositoryWithDictionary:(NSDictionary *)templates AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - - -//////////////////////////////////////////////////////////////////////////////// -/// @name Configuring Template Repositories -//////////////////////////////////////////////////////////////////////////////// - -/** - * The configuration for all templates and partials built by the repository. - * - * It is initialized to a copy of [GRMustacheConfiguration defaultConfiguration]. - * - * You can alter the repository's configuration: - * - * ``` - * // All templates loaded from _repo_ will render text, - * // and will not HTML-escape their input. - * GRMustacheTemplateRepository *repo = [GRMustacheTemplateRepository templateRepositoryWithBundle:nil]; - * repo.configuration.contentType = GRMustacheContentTypeText; - * ``` - * - * You can also create a new configuration, and assign it to the repository: - * - * ``` - * // Create a configuration - * GRMustacheConfiguration *configuration = [GRMustacheConfiguration configuration]; - * configuration.... // setup - * - * GRMustacheTemplateRepository *repo = [GRMustacheTemplateRepository templateRepositoryWithBundle:nil]; - * repo.configuration = configuration; - * ``` - * - * @see GRMustacheConfiguration - * - * @since v6.2 - */ -@property (nonatomic, copy) GRMustacheConfiguration *configuration AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * The repository's data source. - * - * @see GRMustacheTemplateRepositoryDataSource - * - * @since v1.13 - */ -@property (nonatomic, assign) id dataSource AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - - -//////////////////////////////////////////////////////////////////////////////// -/// @name Getting Templates out of a Repository -//////////////////////////////////////////////////////////////////////////////// - -/** - * Returns a template identified by its name. - * - * Depending on the way the repository has been created, the name identifies a - * URL, a file path, a key in a dictionary, or whatever is relevant to the - * repository's data source. - * - * @param name The template name - * @param error If there is an error loading or parsing template and - * partials, upon return contains an NSError object that - * describes the problem. - * - * @return a GRMustacheTemplate - * - * @since v1.13 - */ -- (GRMustacheTemplate *)templateNamed:(NSString *)name error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * Returns a template built from the provided Mustache template string. - * - * Depending on the way the repository has been created, partial tags such as - * `{{>partial}}` load partial templates from URLs, file paths, keys in a - * dictionary, or whatever is relevant to the repository's data source. - * - * @param templateString A Mustache template string - * @param error If there is an error loading or parsing template and - * partials, upon return contains an NSError object that - * describes the problem. - * - * @return a GRMustacheTemplate - * - * @since v1.13 - */ -- (GRMustacheTemplate *)templateFromString:(NSString *)templateString error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -/** - * Have the template repository reload its templates. - * - * A template repository *caches* the parsing of its templates. This speeds up - * the loading of already parsed templates. - * - * However, changes to the underlying template strings won't be visible until - * you explicitely ask for a reloading: - * - * ``` - * // May reuse a cached parsing: - * template = [repository templateNamed:@"profile" error:NULL]; - * - * // Forces the template reloading: - * [repository reloadTemplates]; - * template = [repository templateNamed:@"profile" error:NULL]; - * ``` - * - * @warning Previously created instances of GRMustacheTemplate are not reloaded. - * - * @see dataSource - * - * @since v7.0 - */ -- (void)reloadTemplates AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - -@end diff --git a/include/GRMustacheVersion.h b/include/GRMustacheVersion.h deleted file mode 100644 index 5d3d2494..00000000 --- a/include/GRMustacheVersion.h +++ /dev/null @@ -1,44 +0,0 @@ -// The MIT License -// -// Copyright (c) 2014 Gwendal Roué -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - - -/** - * The major component of GRMustache version - * - * @since v1.0 - */ -#define GRMUSTACHE_MAJOR_VERSION 7 - -/** - * The minor component of GRMustache version - * - * @since v1.0 - */ -#define GRMUSTACHE_MINOR_VERSION 3 - -/** - * The patch-level component of GRMustache version - * - * @since v1.0 - */ -#define GRMUSTACHE_PATCH_VERSION 2 - diff --git a/include/NSFormatter+GRMustache.h b/include/NSFormatter+GRMustache.h deleted file mode 100644 index b3ba1d55..00000000 --- a/include/NSFormatter+GRMustache.h +++ /dev/null @@ -1,70 +0,0 @@ -// The MIT License -// -// Copyright (c) 2014 Gwendal Roué -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import -#import "GRMustacheAvailabilityMacros.h" -#import "GRMustacheRendering.h" -#import "GRMustacheFilter.h" -#import "GRMustacheTagDelegate.h" - -/** - * A category on NSFormatter that allows them to be directly used in GRMustache - * templates. - * - * **Companion guide:** https://github.com/groue/GRMustache/blob/master/Guides/NSFormatter.md - * - * All NSFormatter subclasses such as NSDateFormatter, NSNumberFormatter, and - * your custom subclasses are concerned. - * - * ## Filter facet - * - * A formatter can be used as a filter, as in `{{ percent(value) }}`. Just have - * your `percent` key evaluate to a formatter. - * - * ## Formatting all values in a section - * - * A formatter can be used to format all values in a section of a template: - * - * ``` - * {{# percent }}...{{ value1 }}...{{ value2 }}...{{/ percent }} - * ``` - * - * The formatting then applies to all inner variable tags that evaluate to a - * value that can be processed by the filter (see - * [NSFormatter stringForObjectValue:] documentation). - * - * Inner loops and boolean sections are unaffected. However their inner variable - * tags are: - * - * ``` - * {{# percent }} - *   {{ value1 }}      {{! format applies }} - *   {{# condition }}  {{! format does not apply }} - *     {{ value2 }}    {{! format applies }} - *   {{/ condition }} - * {{/ percent }} - * ``` - * - * @since v6.4 - */ -@interface NSFormatter (GRMustache) -@end diff --git a/include/NSValueTransformer+GRMustache.h b/include/NSValueTransformer+GRMustache.h deleted file mode 100644 index 1e7ff34b..00000000 --- a/include/NSValueTransformer+GRMustache.h +++ /dev/null @@ -1,34 +0,0 @@ -// The MIT License -// -// Copyright (c) 2014 Gwendal Roué -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import -#import "GRMustacheAvailabilityMacros.h" -#import "GRMustacheFilter.h" - -/** - * A category on NSValueTransformer that allows them to be directly used as - * filters in GRMustache templates. - * - * @since v6.4 - */ -@interface NSValueTransformer (GRMustache) -@end diff --git a/lib/libGRMustache7-MacOS.a b/lib/libGRMustache7-MacOS.a deleted file mode 100644 index 3af5a0e274e534cfbd1d6d913588279de0463615..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1079672 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%0DYK+f?djze4|efDC^f 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%0AMxk2LKfEvW1x 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%0DFZyM%tH(7Zl#eoBR&17ttB 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

    {$&=81@OUf9Pr!a!*Gwn{RZxN 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�O;DA7@qQ&2HDjU+jtOjEj>X*@A>`VPJ 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Ãv+D|K8REKUVv{i^h3zm4{aZO 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 z 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%0D&jGq@OQt(^8x)MXYP08gLwMM&yoF|WI#I; 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

    Kx3 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 }@CRL!FG^K&lgB&A( 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 z%0D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 Date: Sat, 26 Sep 2015 11:46:56 +0200 Subject: [PATCH 11/81] One target per framework (iOS/OSX), two test targets by framework (one that links against the framework, another one that tests private APIs). --- src/GRMustache.xcodeproj/project.pbxproj | 484 ++++++++++++++++-- .../xcschemes/GRMustacheOSX (Shared).xcscheme | 6 +- .../xcschemes/GRMustacheiOS (Shared).xcscheme | 6 +- src/classes/GRMustache.h | 6 + .../Rendering/GRMustacheRendering_private.h | 2 +- ...TestBase.h => GRMustacheTestingDelegate.h} | 5 - ...TestBase.m => GRMustacheTestingDelegate.m} | 13 +- src/tests/Private/GRMustachePrivateAPITest.h | 4 +- src/tests/Public/GRMustachePublicAPITest.h | 4 +- src/tests/Public/GRMustachePublicAPITest.m | 3 +- ...stacheConfigurationExtendBaseContextTest.m | 1 + .../GRMustacheContextTest.m | 1 + .../GRMustacheContextTopMustacheObjectTest.m | 1 + .../v7.0/GRMustacheRenderingObjectTest.m | 1 + .../GRMustacheLocalizerTest.m | 3 +- .../GRMustacheTagDelegateTest.m | 76 +-- ...ustacheTemplateRepositoryWithBaseURLTest.m | 25 +- ...MustacheTemplateRepositoryWithBundleTest.m | 8 +- ...tacheTemplateRepositoryWithDirectoryTest.m | 24 +- .../GRMustacheTemplateExtendBaseContextTest.m | 1 + .../GRMustacheTemplateFromMethodsTest.m | 20 +- .../GRMustacheTemplateRenderMethodsTest.m | 2 +- .../mustache/spec/GRSpecificationSuitesTest.m | 3 +- .../mustache.java/GRMustacheJavaSuitesTest.m | 6 +- 24 files changed, 556 insertions(+), 149 deletions(-) rename src/tests/{GRMustacheTestBase.h => GRMustacheTestingDelegate.h} (93%) rename src/tests/{GRMustacheTestBase.m => GRMustacheTestingDelegate.m} (91%) diff --git a/src/GRMustache.xcodeproj/project.pbxproj b/src/GRMustache.xcodeproj/project.pbxproj index 9510e311..e0dc0c10 100644 --- a/src/GRMustache.xcodeproj/project.pbxproj +++ b/src/GRMustache.xcodeproj/project.pbxproj @@ -9,16 +9,6 @@ /* Begin PBXBuildFile section */ 56214B801BA1A4C50070C6CF /* GRMustache.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6586A05D1B9E2D720067C98E /* GRMustache.framework */; settings = {ASSET_TAGS = (); }; }; 56214B8F1BA1A4D50070C6CF /* GRMustache.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 56214B6F1BA1A34A0070C6CF /* GRMustache.framework */; settings = {ASSET_TAGS = (); }; }; - 56214B961BA1A51A0070C6CF /* GRMustacheTestBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC3B4152638E20031E8DC /* GRMustacheTestBase.m */; settings = {ASSET_TAGS = (); }; }; - 56214B971BA1A51A0070C6CF /* GRMustacheTestBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC3B4152638E20031E8DC /* GRMustacheTestBase.m */; settings = {ASSET_TAGS = (); }; }; - 56214B981BA1A5290070C6CF /* GRMustachePrivateAPITest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC3B0152638E20031E8DC /* GRMustachePrivateAPITest.m */; settings = {ASSET_TAGS = (); }; }; - 56214B991BA1A52A0070C6CF /* GRMustachePrivateAPITest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC3B0152638E20031E8DC /* GRMustachePrivateAPITest.m */; settings = {ASSET_TAGS = (); }; }; - 56214B9A1BA1A52E0070C6CF /* GRMustacheContextPrivateTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 563D66EC152649DF008628C5 /* GRMustacheContextPrivateTest.m */; settings = {ASSET_TAGS = (); }; }; - 56214B9B1BA1A52E0070C6CF /* GRMustacheExpressionParserTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 563D66EE152649DF008628C5 /* GRMustacheExpressionParserTest.m */; settings = {ASSET_TAGS = (); }; }; - 56214B9C1BA1A52E0070C6CF /* GRMustacheTemplateGeneratorTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56C88929190A349B0084FC5A /* GRMustacheTemplateGeneratorTest.m */; settings = {ASSET_TAGS = (); }; }; - 56214B9D1BA1A52F0070C6CF /* GRMustacheContextPrivateTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 563D66EC152649DF008628C5 /* GRMustacheContextPrivateTest.m */; settings = {ASSET_TAGS = (); }; }; - 56214B9E1BA1A52F0070C6CF /* GRMustacheExpressionParserTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 563D66EE152649DF008628C5 /* GRMustacheExpressionParserTest.m */; settings = {ASSET_TAGS = (); }; }; - 56214B9F1BA1A52F0070C6CF /* GRMustacheTemplateGeneratorTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56C88929190A349B0084FC5A /* GRMustacheTemplateGeneratorTest.m */; settings = {ASSET_TAGS = (); }; }; 56214BA01BA1A5350070C6CF /* GRMustachePublicAPITest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC3B2152638E20031E8DC /* GRMustachePublicAPITest.m */; settings = {ASSET_TAGS = (); }; }; 56214BA11BA1A5350070C6CF /* GRMustachePublicAPITest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC3B2152638E20031E8DC /* GRMustachePublicAPITest.m */; settings = {ASSET_TAGS = (); }; }; 56214BA21BA1A5440070C6CF /* GRMustacheSuites in Resources */ = {isa = PBXBuildFile; fileRef = 563D66F315264B40008628C5 /* GRMustacheSuites */; settings = {ASSET_TAGS = (); }; }; @@ -161,7 +151,7 @@ 56214C2B1BA1A5B90070C6CF /* GRMustacheRenderingObject_7_2_Test.m in Sources */ = {isa = PBXBuildFile; fileRef = 56C1FDF119A6721100006AB4 /* GRMustacheRenderingObject_7_2_Test.m */; settings = {ASSET_TAGS = (); }; }; 56214C2C1BA1A6870070C6CF /* GRMustache.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DEC292152631300031E8DC /* GRMustache.h */; settings = {ATTRIBUTES = (Public, ); }; }; 56214C2D1BA1A68E0070C6CF /* GRMustacheVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DEC2BB152631300031E8DC /* GRMustacheVersion.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56214C2F1BA1A6A70070C6CF /* GRMustache_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DEC294152631300031E8DC /* GRMustache_private.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 56214C2F1BA1A6A70070C6CF /* GRMustache_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DEC294152631300031E8DC /* GRMustache_private.h */; }; 56214C301BA1A6AD0070C6CF /* GRMustacheTranslateCharacters_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375D19B8EF2800854524 /* GRMustacheTranslateCharacters_private.h */; settings = {ASSET_TAGS = (); }; }; 56214C331BA1A6B50070C6CF /* GRMustacheError.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375A19B8EF2800854524 /* GRMustacheError.h */; settings = {ATTRIBUTES = (Public, ); }; }; 56214C341BA1A6BA0070C6CF /* GRMustacheContentType.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375919B8EF2800854524 /* GRMustacheContentType.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -257,6 +247,123 @@ 56214CB21BA1A7490070C6CF /* GRMustacheLocalizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF372B19B8EEC700854524 /* GRMustacheLocalizer.h */; settings = {ATTRIBUTES = (Public, ); }; }; 56214CB31BA1A8BE0070C6CF /* NSJSONSerialization+Comments.m in Sources */ = {isa = PBXBuildFile; fileRef = 56A7591319C173E6008D119F /* NSJSONSerialization+Comments.m */; settings = {ASSET_TAGS = (); }; }; 56214CB41BA1A8BE0070C6CF /* NSJSONSerialization+Comments.m in Sources */ = {isa = PBXBuildFile; fileRef = 56A7591319C173E6008D119F /* NSJSONSerialization+Comments.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CA01BA1F67D009E4319 /* GRMustachePrivateAPITest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC3B0152638E20031E8DC /* GRMustachePrivateAPITest.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CA11BA1F67D009E4319 /* GRMustacheContextPrivateTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 563D66EC152649DF008628C5 /* GRMustacheContextPrivateTest.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CA21BA1F67D009E4319 /* GRMustacheExpressionParserTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 563D66EE152649DF008628C5 /* GRMustacheExpressionParserTest.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CA31BA1F67D009E4319 /* GRMustacheTemplateGeneratorTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56C88929190A349B0084FC5A /* GRMustacheTemplateGeneratorTest.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CA41BA1F69B009E4319 /* GRMustacheConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF365819B8EE7A00854524 /* GRMustacheConfiguration.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CA51BA1F69B009E4319 /* GRMustacheExpressionParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF366119B8EE8B00854524 /* GRMustacheExpressionParser.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CA61BA1F69B009E4319 /* GRMustacheTemplateParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF366319B8EE8B00854524 /* GRMustacheTemplateParser.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CA71BA1F69B009E4319 /* GRMustacheToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF366519B8EE8B00854524 /* GRMustacheToken.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CA81BA1F69B009E4319 /* GRMustacheCompiler.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368019B8EE9D00854524 /* GRMustacheCompiler.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CA91BA1F69B009E4319 /* GRMustacheExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367519B8EE9D00854524 /* GRMustacheExpression.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CAA1BA1F69B009E4319 /* GRMustacheFilteredExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367819B8EE9D00854524 /* GRMustacheFilteredExpression.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CAB1BA1F69B009E4319 /* GRMustacheIdentifierExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367A19B8EE9D00854524 /* GRMustacheIdentifierExpression.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CAC1BA1F69B009E4319 /* GRMustacheImplicitIteratorExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367C19B8EE9D00854524 /* GRMustacheImplicitIteratorExpression.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CAD1BA1F69B009E4319 /* GRMustacheScopedExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367E19B8EE9D00854524 /* GRMustacheScopedExpression.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CAE1BA1F69B009E4319 /* GRMustacheInheritedPartialNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368319B8EE9D00854524 /* GRMustacheInheritedPartialNode.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CAF1BA1F69B009E4319 /* GRMustacheInheritableSectionNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368519B8EE9D00854524 /* GRMustacheInheritableSectionNode.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CB01BA1F69B009E4319 /* GRMustachePartialNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368719B8EE9D00854524 /* GRMustachePartialNode.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CB11BA1F69B009E4319 /* GRMustacheSectionTag.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368919B8EE9D00854524 /* GRMustacheSectionTag.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CB21BA1F69B009E4319 /* GRMustacheTag.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368C19B8EE9D00854524 /* GRMustacheTag.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CB31BA1F69B009E4319 /* GRMustacheTemplateAST.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368E19B8EE9D00854524 /* GRMustacheTemplateAST.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CB41BA1F69B009E4319 /* GRMustacheTextNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF369219B8EE9D00854524 /* GRMustacheTextNode.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CB51BA1F69B009E4319 /* GRMustacheVariableTag.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF369419B8EE9D00854524 /* GRMustacheVariableTag.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CB61BA1F69B009E4319 /* GRMustacheContext.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36D819B8EEAD00854524 /* GRMustacheContext.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CB71BA1F69B009E4319 /* GRMustacheExpressionInvocation.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36DA19B8EEAD00854524 /* GRMustacheExpressionInvocation.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CB81BA1F69B009E4319 /* GRMustacheFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36DD19B8EEAD00854524 /* GRMustacheFilter.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CB91BA1F69B009E4319 /* GRMustacheKeyAccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36DF19B8EEAE00854524 /* GRMustacheKeyAccess.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CBA1BA1F69B009E4319 /* GRMustacheRendering.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36E219B8EEAE00854524 /* GRMustacheRendering.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CBB1BA1F69B009E4319 /* GRMustacheRenderingEngine.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36E419B8EEAE00854524 /* GRMustacheRenderingEngine.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CBC1BA1F69B009E4319 /* GRMustacheTemplate.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF370C19B8EEB900854524 /* GRMustacheTemplate.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CBD1BA1F69B009E4319 /* GRMustacheTemplateRepository.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF370F19B8EEB900854524 /* GRMustacheTemplateRepository.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CBE1BA1F69B009E4319 /* GRMustacheExpressionGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 56B01A4B19C49AF5000439C7 /* GRMustacheExpressionGenerator.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CBF1BA1F69B009E4319 /* GRMustacheTemplateGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF371E19B8EEC700854524 /* GRMustacheTemplateGenerator.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CC01BA1F69B009E4319 /* NSFormatter+GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372119B8EEC700854524 /* NSFormatter+GRMustache.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CC11BA1F69B009E4319 /* NSValueTransformer+GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372319B8EEC700854524 /* NSValueTransformer+GRMustache.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CC21BA1F69B009E4319 /* GRMustacheEachFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372519B8EEC700854524 /* GRMustacheEachFilter.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CC31BA1F69B009E4319 /* GRMustacheHTMLLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372719B8EEC700854524 /* GRMustacheHTMLLibrary.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CC41BA1F69B009E4319 /* GRMustacheJavascriptLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372919B8EEC700854524 /* GRMustacheJavascriptLibrary.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CC51BA1F69B009E4319 /* GRMustacheLocalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372C19B8EEC700854524 /* GRMustacheLocalizer.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CC61BA1F69B009E4319 /* GRMustacheStandardLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372D19B8EEC700854524 /* GRMustacheStandardLibrary.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CC71BA1F69B009E4319 /* GRMustacheURLLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372F19B8EEC700854524 /* GRMustacheURLLibrary.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CC81BA1F69B009E4319 /* GRMustacheError.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF375B19B8EF2800854524 /* GRMustacheError.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CC91BA1F69B009E4319 /* GRMustacheTranslateCharacters.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF375C19B8EF2800854524 /* GRMustacheTranslateCharacters.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CCA1BA1F69B009E4319 /* GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC293152631300031E8DC /* GRMustache.m */; settings = {ASSET_TAGS = (); }; }; + 56DAC7131BB69DAC0010FE01 /* GRMustacheTestingDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DAC7111BB69DAC0010FE01 /* GRMustacheTestingDelegate.m */; settings = {ASSET_TAGS = (); }; }; + 56DAC7141BB69F160010FE01 /* GRMustacheTestingDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DAC7111BB69DAC0010FE01 /* GRMustacheTestingDelegate.m */; settings = {ASSET_TAGS = (); }; }; + 56DAC7151BB69F170010FE01 /* GRMustacheTestingDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DAC7111BB69DAC0010FE01 /* GRMustacheTestingDelegate.m */; settings = {ASSET_TAGS = (); }; }; + 56DAC7491BB69F6D0010FE01 /* GRMustacheTemplateRepositoryWithBundleTest.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 5682B49C152849FD00ADD123 /* GRMustacheTemplateRepositoryWithBundleTest.mustache */; settings = {ASSET_TAGS = (); }; }; + 56DAC74A1BB69F6D0010FE01 /* GRMustacheTemplateFromMethodsTest in Resources */ = {isa = PBXBuildFile; fileRef = 5682B46E1528370E00ADD123 /* GRMustacheTemplateFromMethodsTest */; settings = {ASSET_TAGS = (); }; }; + 56DAC74B1BB69F6D0010FE01 /* GRMustacheTemplateFromMethodsTest.json in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4671528324800ADD123 /* GRMustacheTemplateFromMethodsTest.json */; settings = {ASSET_TAGS = (); }; }; + 56DAC74C1BB69F6D0010FE01 /* GRMustacheTemplateRenderMethodsTest.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4731528371F00ADD123 /* GRMustacheTemplateRenderMethodsTest.mustache */; settings = {ASSET_TAGS = (); }; }; + 56DAC74D1BB69F6D0010FE01 /* GRHoganSuites in Resources */ = {isa = PBXBuildFile; fileRef = 56B4779918CF8D3300EFF629 /* GRHoganSuites */; settings = {ASSET_TAGS = (); }; }; + 56DAC74E1BB69F6D0010FE01 /* GRMustacheTemplateRepositoryWithBundleTest_partial in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4A815284AB600ADD123 /* GRMustacheTemplateRepositoryWithBundleTest_partial */; settings = {ASSET_TAGS = (); }; }; + 56DAC74F1BB69F6D0010FE01 /* GRMustacheTemplateRepositoryTest_ISOLatin1 in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4951528486900ADD123 /* GRMustacheTemplateRepositoryTest_ISOLatin1 */; settings = {ASSET_TAGS = (); }; }; + 56DAC7501BB69F6D0010FE01 /* GRMustacheTemplateRenderMethodsTest.json in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4721528371F00ADD123 /* GRMustacheTemplateRenderMethodsTest.json */; settings = {ASSET_TAGS = (); }; }; + 56DAC7511BB69F6D0010FE01 /* GRMustacheTemplateRepositoryWithBundleTest.text in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4A315284A9400ADD123 /* GRMustacheTemplateRepositoryWithBundleTest.text */; settings = {ASSET_TAGS = (); }; }; + 56DAC7521BB69F6D0010FE01 /* GRMustacheTemplateRenderMethodsTest in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4711528371F00ADD123 /* GRMustacheTemplateRenderMethodsTest */; settings = {ASSET_TAGS = (); }; }; + 56DAC7531BB69F6D0010FE01 /* GRMustacheSuites in Resources */ = {isa = PBXBuildFile; fileRef = 563D66F315264B40008628C5 /* GRMustacheSuites */; settings = {ASSET_TAGS = (); }; }; + 56DAC7541BB69F6D0010FE01 /* GRMustacheSuites_7_2 in Resources */ = {isa = PBXBuildFile; fileRef = 56C1FDEA19A66DC500006AB4 /* GRMustacheSuites_7_2 */; settings = {ASSET_TAGS = (); }; }; + 56DAC7551BB69F6D0010FE01 /* GRMustacheTagDelegateTest.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 56A8D4921527A23900D9C718 /* GRMustacheTagDelegateTest.mustache */; settings = {ASSET_TAGS = (); }; }; + 56DAC7561BB69F6D0010FE01 /* GRMustacheTemplateRepositoryWithBundleTest_partial.text in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4AB15284ABC00ADD123 /* GRMustacheTemplateRepositoryWithBundleTest_partial.text */; settings = {ASSET_TAGS = (); }; }; + 56DAC7571BB69F6D0010FE01 /* GRMustacheTemplateRepositoryWithBundleTest in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4A215284A9300ADD123 /* GRMustacheTemplateRepositoryWithBundleTest */; settings = {ASSET_TAGS = (); }; }; + 56DAC7581BB69F6D0010FE01 /* specs in Resources */ = {isa = PBXBuildFile; fileRef = 56B477A618D0E41A00EFF629 /* specs */; settings = {ASSET_TAGS = (); }; }; + 56DAC7591BB69F6D0010FE01 /* GRMustacheTemplateFromMethodsTest_parserError.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4B01528C69C00ADD123 /* GRMustacheTemplateFromMethodsTest_parserError.mustache */; settings = {ASSET_TAGS = (); }; }; + 56DAC75A1BB69F6D0010FE01 /* GRMustacheTemplateRepositoryTest in Resources */ = {isa = PBXBuildFile; fileRef = 568140DD16365CF500310B7F /* GRMustacheTemplateRepositoryTest */; settings = {ASSET_TAGS = (); }; }; + 56DAC75B1BB69F6D0010FE01 /* GRMustacheTagDelegateTest_wrapper.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 56A8D4951527A3CE00D9C718 /* GRMustacheTagDelegateTest_wrapper.mustache */; settings = {ASSET_TAGS = (); }; }; + 56DAC75C1BB69F6D0010FE01 /* GRMustacheTemplateFromMethodsTest.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 5682B46415282BC900ADD123 /* GRMustacheTemplateFromMethodsTest.mustache */; settings = {ASSET_TAGS = (); }; }; + 56DAC75D1BB69F6D0010FE01 /* GRMustacheLocalizerTestBundle in Resources */ = {isa = PBXBuildFile; fileRef = 56BA247318C7A5CB006DA5F3 /* GRMustacheLocalizerTestBundle */; settings = {ASSET_TAGS = (); }; }; + 56DAC75E1BB69F6D0010FE01 /* GRMustacheTemplateRepositoryWithBundleTestResources in Resources */ = {isa = PBXBuildFile; fileRef = 5688264C199DFCDF00922497 /* GRMustacheTemplateRepositoryWithBundleTestResources */; settings = {ASSET_TAGS = (); }; }; + 56DAC75F1BB69F6D0010FE01 /* GRMustacheJavaSuites in Resources */ = {isa = PBXBuildFile; fileRef = 56B477A318CF9F6E00EFF629 /* GRMustacheJavaSuites */; settings = {ASSET_TAGS = (); }; }; + 56DAC7601BB69F6D0010FE01 /* GRMustacheTemplateFromMethodsTest_compilerError.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4B61528D0F900ADD123 /* GRMustacheTemplateFromMethodsTest_compilerError.mustache */; settings = {ASSET_TAGS = (); }; }; + 56DAC7611BB69F6D0010FE01 /* GRMustacheTemplateFromMethodsTest_compilerErrorWrapper.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4B71528D0F900ADD123 /* GRMustacheTemplateFromMethodsTest_compilerErrorWrapper.mustache */; settings = {ASSET_TAGS = (); }; }; + 56DAC7621BB69F6D0010FE01 /* GRMustacheTemplateFromMethodsTest_parserErrorWrapper.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4B11528C69C00ADD123 /* GRMustacheTemplateFromMethodsTest_parserErrorWrapper.mustache */; settings = {ASSET_TAGS = (); }; }; + 56DAC7631BB69F6D0010FE01 /* GRMustacheTemplateRepositoryWithBundleTest_partial.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 5682B49D152849FD00ADD123 /* GRMustacheTemplateRepositoryWithBundleTest_partial.mustache */; settings = {ASSET_TAGS = (); }; }; + 56DAC7641BB69F6D0010FE01 /* GRMustacheTemplateRepositoryTest_UTF8 in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4961528486A00ADD123 /* GRMustacheTemplateRepositoryTest_UTF8 */; settings = {ASSET_TAGS = (); }; }; + 56DAC76A1BB69FC40010FE01 /* GRMustachePrivateAPITest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC3B0152638E20031E8DC /* GRMustachePrivateAPITest.m */; }; + 56DAC76B1BB69FC40010FE01 /* GRMustacheContextPrivateTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 563D66EC152649DF008628C5 /* GRMustacheContextPrivateTest.m */; }; + 56DAC76C1BB69FC40010FE01 /* GRMustacheExpressionParserTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 563D66EE152649DF008628C5 /* GRMustacheExpressionParserTest.m */; }; + 56DAC76D1BB69FC40010FE01 /* GRMustacheTemplateGeneratorTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56C88929190A349B0084FC5A /* GRMustacheTemplateGeneratorTest.m */; }; + 56DAC76E1BB6A0040010FE01 /* GRMustacheConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF365819B8EE7A00854524 /* GRMustacheConfiguration.m */; }; + 56DAC76F1BB6A0040010FE01 /* GRMustacheExpressionParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF366119B8EE8B00854524 /* GRMustacheExpressionParser.m */; }; + 56DAC7701BB6A0040010FE01 /* GRMustacheTemplateParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF366319B8EE8B00854524 /* GRMustacheTemplateParser.m */; }; + 56DAC7711BB6A0040010FE01 /* GRMustacheToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF366519B8EE8B00854524 /* GRMustacheToken.m */; }; + 56DAC7721BB6A0040010FE01 /* GRMustacheCompiler.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368019B8EE9D00854524 /* GRMustacheCompiler.m */; }; + 56DAC7731BB6A0040010FE01 /* GRMustacheExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367519B8EE9D00854524 /* GRMustacheExpression.m */; }; + 56DAC7741BB6A0040010FE01 /* GRMustacheFilteredExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367819B8EE9D00854524 /* GRMustacheFilteredExpression.m */; }; + 56DAC7751BB6A0040010FE01 /* GRMustacheIdentifierExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367A19B8EE9D00854524 /* GRMustacheIdentifierExpression.m */; }; + 56DAC7761BB6A0040010FE01 /* GRMustacheImplicitIteratorExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367C19B8EE9D00854524 /* GRMustacheImplicitIteratorExpression.m */; }; + 56DAC7771BB6A0040010FE01 /* GRMustacheScopedExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367E19B8EE9D00854524 /* GRMustacheScopedExpression.m */; }; + 56DAC7781BB6A0040010FE01 /* GRMustacheInheritedPartialNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368319B8EE9D00854524 /* GRMustacheInheritedPartialNode.m */; }; + 56DAC7791BB6A0040010FE01 /* GRMustacheInheritableSectionNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368519B8EE9D00854524 /* GRMustacheInheritableSectionNode.m */; }; + 56DAC77A1BB6A0040010FE01 /* GRMustachePartialNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368719B8EE9D00854524 /* GRMustachePartialNode.m */; }; + 56DAC77B1BB6A0040010FE01 /* GRMustacheSectionTag.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368919B8EE9D00854524 /* GRMustacheSectionTag.m */; }; + 56DAC77C1BB6A0040010FE01 /* GRMustacheTag.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368C19B8EE9D00854524 /* GRMustacheTag.m */; }; + 56DAC77D1BB6A0040010FE01 /* GRMustacheTemplateAST.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368E19B8EE9D00854524 /* GRMustacheTemplateAST.m */; }; + 56DAC77E1BB6A0040010FE01 /* GRMustacheTextNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF369219B8EE9D00854524 /* GRMustacheTextNode.m */; }; + 56DAC77F1BB6A0040010FE01 /* GRMustacheVariableTag.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF369419B8EE9D00854524 /* GRMustacheVariableTag.m */; }; + 56DAC7801BB6A0040010FE01 /* GRMustacheContext.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36D819B8EEAD00854524 /* GRMustacheContext.m */; }; + 56DAC7811BB6A0040010FE01 /* GRMustacheExpressionInvocation.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36DA19B8EEAD00854524 /* GRMustacheExpressionInvocation.m */; }; + 56DAC7821BB6A0040010FE01 /* GRMustacheFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36DD19B8EEAD00854524 /* GRMustacheFilter.m */; }; + 56DAC7831BB6A0040010FE01 /* GRMustacheKeyAccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36DF19B8EEAE00854524 /* GRMustacheKeyAccess.m */; }; + 56DAC7841BB6A0040010FE01 /* GRMustacheRendering.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36E219B8EEAE00854524 /* GRMustacheRendering.m */; }; + 56DAC7851BB6A0040010FE01 /* GRMustacheRenderingEngine.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36E419B8EEAE00854524 /* GRMustacheRenderingEngine.m */; }; + 56DAC7861BB6A0040010FE01 /* GRMustacheTemplate.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF370C19B8EEB900854524 /* GRMustacheTemplate.m */; }; + 56DAC7871BB6A0040010FE01 /* GRMustacheTemplateRepository.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF370F19B8EEB900854524 /* GRMustacheTemplateRepository.m */; }; + 56DAC7881BB6A0040010FE01 /* GRMustacheExpressionGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 56B01A4B19C49AF5000439C7 /* GRMustacheExpressionGenerator.m */; }; + 56DAC7891BB6A0040010FE01 /* GRMustacheTemplateGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF371E19B8EEC700854524 /* GRMustacheTemplateGenerator.m */; }; + 56DAC78A1BB6A0040010FE01 /* NSFormatter+GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372119B8EEC700854524 /* NSFormatter+GRMustache.m */; }; + 56DAC78B1BB6A0040010FE01 /* NSValueTransformer+GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372319B8EEC700854524 /* NSValueTransformer+GRMustache.m */; }; + 56DAC78C1BB6A0040010FE01 /* GRMustacheEachFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372519B8EEC700854524 /* GRMustacheEachFilter.m */; }; + 56DAC78D1BB6A0040010FE01 /* GRMustacheHTMLLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372719B8EEC700854524 /* GRMustacheHTMLLibrary.m */; }; + 56DAC78E1BB6A0040010FE01 /* GRMustacheJavascriptLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372919B8EEC700854524 /* GRMustacheJavascriptLibrary.m */; }; + 56DAC78F1BB6A0040010FE01 /* GRMustacheLocalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372C19B8EEC700854524 /* GRMustacheLocalizer.m */; }; + 56DAC7901BB6A0040010FE01 /* GRMustacheStandardLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372D19B8EEC700854524 /* GRMustacheStandardLibrary.m */; }; + 56DAC7911BB6A0040010FE01 /* GRMustacheURLLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372F19B8EEC700854524 /* GRMustacheURLLibrary.m */; }; + 56DAC7921BB6A0040010FE01 /* GRMustacheError.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF375B19B8EF2800854524 /* GRMustacheError.m */; }; + 56DAC7931BB6A0040010FE01 /* GRMustacheTranslateCharacters.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF375C19B8EF2800854524 /* GRMustacheTranslateCharacters.m */; }; + 56DAC7941BB6A0040010FE01 /* GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC293152631300031E8DC /* GRMustache.m */; }; 6586A0651B9E2DAD0067C98E /* GRMustache.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DEC292152631300031E8DC /* GRMustache.h */; settings = {ATTRIBUTES = (Public, ); }; }; 6586A0661B9E2DB30067C98E /* GRMustache_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DEC294152631300031E8DC /* GRMustache_private.h */; settings = {ASSET_TAGS = (); }; }; 6586A0671B9E2DB90067C98E /* GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC293152631300031E8DC /* GRMustache.m */; }; @@ -376,11 +483,7 @@ 560CE88E1526EEF4004F935E /* GRBooleanTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRBooleanTest.m; sourceTree = ""; }; 56214B6F1BA1A34A0070C6CF /* GRMustache.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = GRMustache.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 56214B7B1BA1A4C50070C6CF /* GRMustacheiOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = GRMustacheiOSTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 56214B7D1BA1A4C50070C6CF /* GRMustacheiOSTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GRMustacheiOSTests.m; sourceTree = ""; }; - 56214B7F1BA1A4C50070C6CF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 56214B8A1BA1A4D50070C6CF /* GRMustacheOSXTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = GRMustacheOSXTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 56214B8C1BA1A4D50070C6CF /* GRMustacheOSXTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GRMustacheOSXTests.m; sourceTree = ""; }; - 56214B8E1BA1A4D50070C6CF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 56214B951BA1A5100070C6CF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 5623853918CF365D0034D982 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; 5623B795152731B600DF16A6 /* GRMustacheParsingErrorsTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheParsingErrorsTest.m; sourceTree = ""; }; @@ -432,6 +535,7 @@ 56A8D4921527A23900D9C718 /* GRMustacheTagDelegateTest.mustache */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GRMustacheTagDelegateTest.mustache; sourceTree = ""; }; 56A8D4951527A3CE00D9C718 /* GRMustacheTagDelegateTest_wrapper.mustache */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GRMustacheTagDelegateTest_wrapper.mustache; sourceTree = ""; }; 56ABDBC218D23CF7009DF17A /* GRMustacheTemplateTemplateRepositoryTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheTemplateTemplateRepositoryTest.m; sourceTree = ""; }; + 56AC8C981BA1F637009E4319 /* GRMustacheOSXPrivateTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = GRMustacheOSXPrivateTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 56B01A4A19C49AF5000439C7 /* GRMustacheExpressionGenerator_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustacheExpressionGenerator_private.h; sourceTree = ""; }; 56B01A4B19C49AF5000439C7 /* GRMustacheExpressionGenerator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheExpressionGenerator.m; sourceTree = ""; }; 56B4778C18CF8A7600EFF629 /* GRMustacheKeyedSubscriptingTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheKeyedSubscriptingTest.m; sourceTree = ""; }; @@ -554,6 +658,9 @@ 56C1FDF119A6721100006AB4 /* GRMustacheRenderingObject_7_2_Test.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheRenderingObject_7_2_Test.m; sourceTree = ""; }; 56C1FDFC19A720B900006AB4 /* GRMustacheEachFilterTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheEachFilterTest.m; sourceTree = ""; }; 56C88929190A349B0084FC5A /* GRMustacheTemplateGeneratorTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheTemplateGeneratorTest.m; sourceTree = ""; }; + 56DAC7111BB69DAC0010FE01 /* GRMustacheTestingDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheTestingDelegate.m; sourceTree = ""; }; + 56DAC7121BB69DAC0010FE01 /* GRMustacheTestingDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustacheTestingDelegate.h; sourceTree = ""; }; + 56DAC7681BB69F6D0010FE01 /* GRMustacheiOSPrivateTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = GRMustacheiOSPrivateTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 56DEC1CB15262FF70031E8DC /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; 56DEC1F4152630710031E8DC /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; 56DEC292152631300031E8DC /* GRMustache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustache.h; sourceTree = ""; }; @@ -564,8 +671,6 @@ 56DEC3B0152638E20031E8DC /* GRMustachePrivateAPITest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustachePrivateAPITest.m; sourceTree = ""; }; 56DEC3B1152638E20031E8DC /* GRMustachePublicAPITest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustachePublicAPITest.h; sourceTree = ""; }; 56DEC3B2152638E20031E8DC /* GRMustachePublicAPITest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustachePublicAPITest.m; sourceTree = ""; }; - 56DEC3B3152638E20031E8DC /* GRMustacheTestBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustacheTestBase.h; sourceTree = ""; }; - 56DEC3B4152638E20031E8DC /* GRMustacheTestBase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheTestBase.m; sourceTree = ""; }; 56DEC3BF152639560031E8DC /* GRSpecificationSuitesTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRSpecificationSuitesTest.m; sourceTree = ""; }; 56E2F2E616BA49A500F01DC2 /* TODO.md */ = {isa = PBXFileReference; lastKnownFileType = text; name = TODO.md; path = ../TODO.md; sourceTree = ""; }; 6586A05D1B9E2D720067C98E /* GRMustache.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = GRMustache.framework; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -596,34 +701,30 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 6586A0591B9E2D720067C98E /* Frameworks */ = { + 56AC8C951BA1F637009E4319 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 56214B7C1BA1A4C50070C6CF /* GRMustacheiOSTests */ = { - isa = PBXGroup; - children = ( - 56214B7D1BA1A4C50070C6CF /* GRMustacheiOSTests.m */, - 56214B7F1BA1A4C50070C6CF /* Info.plist */, + 56DAC7461BB69F6D0010FE01 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( ); - path = GRMustacheiOSTests; - sourceTree = ""; + runOnlyForDeploymentPostprocessing = 0; }; - 56214B8B1BA1A4D50070C6CF /* GRMustacheOSXTests */ = { - isa = PBXGroup; - children = ( - 56214B8C1BA1A4D50070C6CF /* GRMustacheOSXTests.m */, - 56214B8E1BA1A4D50070C6CF /* Info.plist */, + 6586A0591B9E2D720067C98E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( ); - path = GRMustacheOSXTests; - sourceTree = ""; + runOnlyForDeploymentPostprocessing = 0; }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ 567AEC4E15278C9A0009CA61 /* GRMustache */ = { isa = PBXGroup; children = ( @@ -1042,8 +1143,6 @@ 56E2F2E616BA49A500F01DC2 /* TODO.md */, 567AEC4E15278C9A0009CA61 /* GRMustache */, 56DEC3AE152638CD0031E8DC /* Tests */, - 56214B7C1BA1A4C50070C6CF /* GRMustacheiOSTests */, - 56214B8B1BA1A4D50070C6CF /* GRMustacheOSXTests */, 56DEC1A615262FC90031E8DC /* Products */, ); sourceTree = ""; @@ -1055,6 +1154,8 @@ 56214B6F1BA1A34A0070C6CF /* GRMustache.framework */, 56214B7B1BA1A4C50070C6CF /* GRMustacheiOSTests.xctest */, 56214B8A1BA1A4D50070C6CF /* GRMustacheOSXTests.xctest */, + 56AC8C981BA1F637009E4319 /* GRMustacheOSXPrivateTests.xctest */, + 56DAC7681BB69F6D0010FE01 /* GRMustacheiOSPrivateTests.xctest */, ); name = Products; sourceTree = ""; @@ -1100,8 +1201,8 @@ isa = PBXGroup; children = ( 56214B951BA1A5100070C6CF /* Info.plist */, - 56DEC3B3152638E20031E8DC /* GRMustacheTestBase.h */, - 56DEC3B4152638E20031E8DC /* GRMustacheTestBase.m */, + 56DAC7111BB69DAC0010FE01 /* GRMustacheTestingDelegate.m */, + 56DAC7121BB69DAC0010FE01 /* GRMustacheTestingDelegate.h */, 56DEC3BB152638FB0031E8DC /* Private */, 56DEC3BC152639050031E8DC /* Public */, 56DEC34A152636000031E8DC /* vendor */, @@ -1343,6 +1444,40 @@ productReference = 56214B8A1BA1A4D50070C6CF /* GRMustacheOSXTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; + 56AC8C971BA1F637009E4319 /* GRMustacheOSXPrivateTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 56AC8C9D1BA1F637009E4319 /* Build configuration list for PBXNativeTarget "GRMustacheOSXPrivateTests" */; + buildPhases = ( + 56AC8C941BA1F637009E4319 /* Sources */, + 56AC8C951BA1F637009E4319 /* Frameworks */, + 56AC8C961BA1F637009E4319 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = GRMustacheOSXPrivateTests; + productName = GRMustacheOSXPrivateTests; + productReference = 56AC8C981BA1F637009E4319 /* GRMustacheOSXPrivateTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 56DAC7161BB69F6D0010FE01 /* GRMustacheiOSPrivateTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 56DAC7651BB69F6D0010FE01 /* Build configuration list for PBXNativeTarget "GRMustacheiOSPrivateTests" */; + buildPhases = ( + 56DAC7191BB69F6D0010FE01 /* Sources */, + 56DAC7461BB69F6D0010FE01 /* Frameworks */, + 56DAC7481BB69F6D0010FE01 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = GRMustacheiOSPrivateTests; + productName = GRMustacheiOSTests; + productReference = 56DAC7681BB69F6D0010FE01 /* GRMustacheiOSPrivateTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; 6586A05C1B9E2D720067C98E /* GRMustacheiOS */ = { isa = PBXNativeTarget; buildConfigurationList = 6586A0641B9E2D720067C98E /* Build configuration list for PBXNativeTarget "GRMustacheiOS" */; @@ -1378,6 +1513,9 @@ 56214B891BA1A4D50070C6CF = { CreatedOnToolsVersion = 7.0; }; + 56AC8C971BA1F637009E4319 = { + CreatedOnToolsVersion = 7.0; + }; 6586A05C1B9E2D720067C98E = { CreatedOnToolsVersion = 7.0; }; @@ -1397,8 +1535,10 @@ targets = ( 56214B6E1BA1A34A0070C6CF /* GRMustacheOSX */, 56214B891BA1A4D50070C6CF /* GRMustacheOSXTests */, + 56AC8C971BA1F637009E4319 /* GRMustacheOSXPrivateTests */, 6586A05C1B9E2D720067C98E /* GRMustacheiOS */, 56214B7A1BA1A4C50070C6CF /* GRMustacheiOSTests */, + 56DAC7161BB69F6D0010FE01 /* GRMustacheiOSPrivateTests */, ); }; /* End PBXProject section */ @@ -1481,6 +1621,48 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 56AC8C961BA1F637009E4319 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 56DAC7481BB69F6D0010FE01 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 56DAC7491BB69F6D0010FE01 /* GRMustacheTemplateRepositoryWithBundleTest.mustache in Resources */, + 56DAC74A1BB69F6D0010FE01 /* GRMustacheTemplateFromMethodsTest in Resources */, + 56DAC74B1BB69F6D0010FE01 /* GRMustacheTemplateFromMethodsTest.json in Resources */, + 56DAC74C1BB69F6D0010FE01 /* GRMustacheTemplateRenderMethodsTest.mustache in Resources */, + 56DAC74D1BB69F6D0010FE01 /* GRHoganSuites in Resources */, + 56DAC74E1BB69F6D0010FE01 /* GRMustacheTemplateRepositoryWithBundleTest_partial in Resources */, + 56DAC74F1BB69F6D0010FE01 /* GRMustacheTemplateRepositoryTest_ISOLatin1 in Resources */, + 56DAC7501BB69F6D0010FE01 /* GRMustacheTemplateRenderMethodsTest.json in Resources */, + 56DAC7511BB69F6D0010FE01 /* GRMustacheTemplateRepositoryWithBundleTest.text in Resources */, + 56DAC7521BB69F6D0010FE01 /* GRMustacheTemplateRenderMethodsTest in Resources */, + 56DAC7531BB69F6D0010FE01 /* GRMustacheSuites in Resources */, + 56DAC7541BB69F6D0010FE01 /* GRMustacheSuites_7_2 in Resources */, + 56DAC7551BB69F6D0010FE01 /* GRMustacheTagDelegateTest.mustache in Resources */, + 56DAC7561BB69F6D0010FE01 /* GRMustacheTemplateRepositoryWithBundleTest_partial.text in Resources */, + 56DAC7571BB69F6D0010FE01 /* GRMustacheTemplateRepositoryWithBundleTest in Resources */, + 56DAC7581BB69F6D0010FE01 /* specs in Resources */, + 56DAC7591BB69F6D0010FE01 /* GRMustacheTemplateFromMethodsTest_parserError.mustache in Resources */, + 56DAC75A1BB69F6D0010FE01 /* GRMustacheTemplateRepositoryTest in Resources */, + 56DAC75B1BB69F6D0010FE01 /* GRMustacheTagDelegateTest_wrapper.mustache in Resources */, + 56DAC75C1BB69F6D0010FE01 /* GRMustacheTemplateFromMethodsTest.mustache in Resources */, + 56DAC75D1BB69F6D0010FE01 /* GRMustacheLocalizerTestBundle in Resources */, + 56DAC75E1BB69F6D0010FE01 /* GRMustacheTemplateRepositoryWithBundleTestResources in Resources */, + 56DAC75F1BB69F6D0010FE01 /* GRMustacheJavaSuites in Resources */, + 56DAC7601BB69F6D0010FE01 /* GRMustacheTemplateFromMethodsTest_compilerError.mustache in Resources */, + 56DAC7611BB69F6D0010FE01 /* GRMustacheTemplateFromMethodsTest_compilerErrorWrapper.mustache in Resources */, + 56DAC7621BB69F6D0010FE01 /* GRMustacheTemplateFromMethodsTest_parserErrorWrapper.mustache in Resources */, + 56DAC7631BB69F6D0010FE01 /* GRMustacheTemplateRepositoryWithBundleTest_partial.mustache in Resources */, + 56DAC7641BB69F6D0010FE01 /* GRMustacheTemplateRepositoryTest_UTF8 in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 6586A05B1B9E2D720067C98E /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -1542,14 +1724,11 @@ buildActionMask = 2147483647; files = ( 56214BB71BA1A5560070C6CF /* GRHoganSuitesTest.m in Sources */, - 56214B9A1BA1A52E0070C6CF /* GRMustacheContextPrivateTest.m in Sources */, 56214BC41BA1A5690070C6CF /* GRMustacheConfigurationTagDelimitersTest.m in Sources */, + 56DAC7151BB69F170010FE01 /* GRMustacheTestingDelegate.m in Sources */, 56214BA51BA1A5480070C6CF /* GRMustacheSuitesTest.m in Sources */, 56214C071BA1A5920070C6CF /* GRMustacheTemplateRepositoryTest.m in Sources */, - 56214B991BA1A52A0070C6CF /* GRMustachePrivateAPITest.m in Sources */, 56214C271BA1A5B40070C6CF /* GRMustacheSuites_7_2_Test.m in Sources */, - 56214B9C1BA1A52E0070C6CF /* GRMustacheTemplateGeneratorTest.m in Sources */, - 56214B9B1BA1A52E0070C6CF /* GRMustacheExpressionParserTest.m in Sources */, 56214BEA1BA1A5850070C6CF /* GRMustacheTemplateExtendBaseContextTest.m in Sources */, 56214BD21BA1A56D0070C6CF /* GRMustacheContextValueForMustacheKeyTest.m in Sources */, 56214BD31BA1A56D0070C6CF /* GRMustacheContextKeyAccessTest.m in Sources */, @@ -1573,7 +1752,6 @@ 56214C2B1BA1A5B90070C6CF /* GRMustacheRenderingObject_7_2_Test.m in Sources */, 56214C0B1BA1A5970070C6CF /* GRMustacheTemplateRepositoryWithBundleTest.m in Sources */, 56214BCE1BA1A56D0070C6CF /* GRMustacheContextHasValueForMustacheExpressionTest.m in Sources */, - 56214B961BA1A51A0070C6CF /* GRMustacheTestBase.m in Sources */, 56214BC51BA1A5690070C6CF /* GRMustacheConfigurationTest.m in Sources */, 56214C2A1BA1A5B90070C6CF /* GRMustacheEachFilterTest.m in Sources */, 56214C081BA1A5920070C6CF /* GRMustacheTemplateRepositoryDataSourceTest.m in Sources */, @@ -1597,14 +1775,11 @@ buildActionMask = 2147483647; files = ( 56214BAE1BA1A5550070C6CF /* GRHoganSuitesTest.m in Sources */, - 56214B9D1BA1A52F0070C6CF /* GRMustacheContextPrivateTest.m in Sources */, 56214BC01BA1A5690070C6CF /* GRMustacheConfigurationTagDelimitersTest.m in Sources */, + 56DAC7141BB69F160010FE01 /* GRMustacheTestingDelegate.m in Sources */, 56214BA41BA1A5480070C6CF /* GRMustacheSuitesTest.m in Sources */, 56214C041BA1A5920070C6CF /* GRMustacheTemplateRepositoryTest.m in Sources */, - 56214B981BA1A5290070C6CF /* GRMustachePrivateAPITest.m in Sources */, 56214C261BA1A5B40070C6CF /* GRMustacheSuites_7_2_Test.m in Sources */, - 56214B9F1BA1A52F0070C6CF /* GRMustacheTemplateGeneratorTest.m in Sources */, - 56214B9E1BA1A52F0070C6CF /* GRMustacheExpressionParserTest.m in Sources */, 56214BE81BA1A5850070C6CF /* GRMustacheTemplateExtendBaseContextTest.m in Sources */, 56214BCB1BA1A56D0070C6CF /* GRMustacheContextValueForMustacheKeyTest.m in Sources */, 56214BCC1BA1A56D0070C6CF /* GRMustacheContextKeyAccessTest.m in Sources */, @@ -1628,7 +1803,6 @@ 56214C291BA1A5B80070C6CF /* GRMustacheRenderingObject_7_2_Test.m in Sources */, 56214C0A1BA1A5970070C6CF /* GRMustacheTemplateRepositoryWithBundleTest.m in Sources */, 56214BC71BA1A56D0070C6CF /* GRMustacheContextHasValueForMustacheExpressionTest.m in Sources */, - 56214B971BA1A51A0070C6CF /* GRMustacheTestBase.m in Sources */, 56214BC11BA1A5690070C6CF /* GRMustacheConfigurationTest.m in Sources */, 56214C281BA1A5B80070C6CF /* GRMustacheEachFilterTest.m in Sources */, 56214C051BA1A5920070C6CF /* GRMustacheTemplateRepositoryDataSourceTest.m in Sources */, @@ -1647,6 +1821,107 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 56AC8C941BA1F637009E4319 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 56AC8CBA1BA1F69B009E4319 /* GRMustacheRendering.m in Sources */, + 56AC8CAD1BA1F69B009E4319 /* GRMustacheScopedExpression.m in Sources */, + 56DAC7131BB69DAC0010FE01 /* GRMustacheTestingDelegate.m in Sources */, + 56AC8CB31BA1F69B009E4319 /* GRMustacheTemplateAST.m in Sources */, + 56AC8CC41BA1F69B009E4319 /* GRMustacheJavascriptLibrary.m in Sources */, + 56AC8CB91BA1F69B009E4319 /* GRMustacheKeyAccess.m in Sources */, + 56AC8CB61BA1F69B009E4319 /* GRMustacheContext.m in Sources */, + 56AC8CCA1BA1F69B009E4319 /* GRMustache.m in Sources */, + 56AC8CB11BA1F69B009E4319 /* GRMustacheSectionTag.m in Sources */, + 56AC8CC21BA1F69B009E4319 /* GRMustacheEachFilter.m in Sources */, + 56AC8CAC1BA1F69B009E4319 /* GRMustacheImplicitIteratorExpression.m in Sources */, + 56AC8CB01BA1F69B009E4319 /* GRMustachePartialNode.m in Sources */, + 56AC8CA81BA1F69B009E4319 /* GRMustacheCompiler.m in Sources */, + 56AC8CA71BA1F69B009E4319 /* GRMustacheToken.m in Sources */, + 56AC8CC71BA1F69B009E4319 /* GRMustacheURLLibrary.m in Sources */, + 56AC8CC31BA1F69B009E4319 /* GRMustacheHTMLLibrary.m in Sources */, + 56AC8CA41BA1F69B009E4319 /* GRMustacheConfiguration.m in Sources */, + 56AC8CA61BA1F69B009E4319 /* GRMustacheTemplateParser.m in Sources */, + 56AC8CBC1BA1F69B009E4319 /* GRMustacheTemplate.m in Sources */, + 56AC8CB51BA1F69B009E4319 /* GRMustacheVariableTag.m in Sources */, + 56AC8CC61BA1F69B009E4319 /* GRMustacheStandardLibrary.m in Sources */, + 56AC8CBF1BA1F69B009E4319 /* GRMustacheTemplateGenerator.m in Sources */, + 56AC8CBB1BA1F69B009E4319 /* GRMustacheRenderingEngine.m in Sources */, + 56AC8CC91BA1F69B009E4319 /* GRMustacheTranslateCharacters.m in Sources */, + 56AC8CAA1BA1F69B009E4319 /* GRMustacheFilteredExpression.m in Sources */, + 56AC8CBD1BA1F69B009E4319 /* GRMustacheTemplateRepository.m in Sources */, + 56AC8CB21BA1F69B009E4319 /* GRMustacheTag.m in Sources */, + 56AC8CAE1BA1F69B009E4319 /* GRMustacheInheritedPartialNode.m in Sources */, + 56AC8CA91BA1F69B009E4319 /* GRMustacheExpression.m in Sources */, + 56AC8CAB1BA1F69B009E4319 /* GRMustacheIdentifierExpression.m in Sources */, + 56AC8CC81BA1F69B009E4319 /* GRMustacheError.m in Sources */, + 56AC8CB71BA1F69B009E4319 /* GRMustacheExpressionInvocation.m in Sources */, + 56AC8CAF1BA1F69B009E4319 /* GRMustacheInheritableSectionNode.m in Sources */, + 56AC8CA51BA1F69B009E4319 /* GRMustacheExpressionParser.m in Sources */, + 56AC8CB81BA1F69B009E4319 /* GRMustacheFilter.m in Sources */, + 56AC8CB41BA1F69B009E4319 /* GRMustacheTextNode.m in Sources */, + 56AC8CA11BA1F67D009E4319 /* GRMustacheContextPrivateTest.m in Sources */, + 56AC8CA01BA1F67D009E4319 /* GRMustachePrivateAPITest.m in Sources */, + 56AC8CA31BA1F67D009E4319 /* GRMustacheTemplateGeneratorTest.m in Sources */, + 56AC8CC01BA1F69B009E4319 /* NSFormatter+GRMustache.m in Sources */, + 56AC8CBE1BA1F69B009E4319 /* GRMustacheExpressionGenerator.m in Sources */, + 56AC8CA21BA1F67D009E4319 /* GRMustacheExpressionParserTest.m in Sources */, + 56AC8CC51BA1F69B009E4319 /* GRMustacheLocalizer.m in Sources */, + 56AC8CC11BA1F69B009E4319 /* NSValueTransformer+GRMustache.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 56DAC7191BB69F6D0010FE01 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 56DAC76E1BB6A0040010FE01 /* GRMustacheConfiguration.m in Sources */, + 56DAC76F1BB6A0040010FE01 /* GRMustacheExpressionParser.m in Sources */, + 56DAC7701BB6A0040010FE01 /* GRMustacheTemplateParser.m in Sources */, + 56DAC7711BB6A0040010FE01 /* GRMustacheToken.m in Sources */, + 56DAC7721BB6A0040010FE01 /* GRMustacheCompiler.m in Sources */, + 56DAC7731BB6A0040010FE01 /* GRMustacheExpression.m in Sources */, + 56DAC7741BB6A0040010FE01 /* GRMustacheFilteredExpression.m in Sources */, + 56DAC7751BB6A0040010FE01 /* GRMustacheIdentifierExpression.m in Sources */, + 56DAC7761BB6A0040010FE01 /* GRMustacheImplicitIteratorExpression.m in Sources */, + 56DAC7771BB6A0040010FE01 /* GRMustacheScopedExpression.m in Sources */, + 56DAC7781BB6A0040010FE01 /* GRMustacheInheritedPartialNode.m in Sources */, + 56DAC7791BB6A0040010FE01 /* GRMustacheInheritableSectionNode.m in Sources */, + 56DAC77A1BB6A0040010FE01 /* GRMustachePartialNode.m in Sources */, + 56DAC77B1BB6A0040010FE01 /* GRMustacheSectionTag.m in Sources */, + 56DAC77C1BB6A0040010FE01 /* GRMustacheTag.m in Sources */, + 56DAC77D1BB6A0040010FE01 /* GRMustacheTemplateAST.m in Sources */, + 56DAC77E1BB6A0040010FE01 /* GRMustacheTextNode.m in Sources */, + 56DAC77F1BB6A0040010FE01 /* GRMustacheVariableTag.m in Sources */, + 56DAC7801BB6A0040010FE01 /* GRMustacheContext.m in Sources */, + 56DAC7811BB6A0040010FE01 /* GRMustacheExpressionInvocation.m in Sources */, + 56DAC7821BB6A0040010FE01 /* GRMustacheFilter.m in Sources */, + 56DAC7831BB6A0040010FE01 /* GRMustacheKeyAccess.m in Sources */, + 56DAC7841BB6A0040010FE01 /* GRMustacheRendering.m in Sources */, + 56DAC7851BB6A0040010FE01 /* GRMustacheRenderingEngine.m in Sources */, + 56DAC7861BB6A0040010FE01 /* GRMustacheTemplate.m in Sources */, + 56DAC7871BB6A0040010FE01 /* GRMustacheTemplateRepository.m in Sources */, + 56DAC7881BB6A0040010FE01 /* GRMustacheExpressionGenerator.m in Sources */, + 56DAC7891BB6A0040010FE01 /* GRMustacheTemplateGenerator.m in Sources */, + 56DAC78A1BB6A0040010FE01 /* NSFormatter+GRMustache.m in Sources */, + 56DAC78B1BB6A0040010FE01 /* NSValueTransformer+GRMustache.m in Sources */, + 56DAC78C1BB6A0040010FE01 /* GRMustacheEachFilter.m in Sources */, + 56DAC78D1BB6A0040010FE01 /* GRMustacheHTMLLibrary.m in Sources */, + 56DAC78E1BB6A0040010FE01 /* GRMustacheJavascriptLibrary.m in Sources */, + 56DAC78F1BB6A0040010FE01 /* GRMustacheLocalizer.m in Sources */, + 56DAC7901BB6A0040010FE01 /* GRMustacheStandardLibrary.m in Sources */, + 56DAC7911BB6A0040010FE01 /* GRMustacheURLLibrary.m in Sources */, + 56DAC7921BB6A0040010FE01 /* GRMustacheError.m in Sources */, + 56DAC7931BB6A0040010FE01 /* GRMustacheTranslateCharacters.m in Sources */, + 56DAC7941BB6A0040010FE01 /* GRMustache.m in Sources */, + 56DAC76A1BB69FC40010FE01 /* GRMustachePrivateAPITest.m in Sources */, + 56DAC76B1BB69FC40010FE01 /* GRMustacheContextPrivateTest.m in Sources */, + 56DAC76C1BB69FC40010FE01 /* GRMustacheExpressionParserTest.m in Sources */, + 56DAC76D1BB69FC40010FE01 /* GRMustacheTemplateGeneratorTest.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 6586A0581B9E2D720067C98E /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -1735,6 +2010,7 @@ MTL_ENABLE_DEBUG_INFO = YES; PRODUCT_BUNDLE_IDENTIFIER = com.github.groue.GRMustache; PRODUCT_NAME = GRMustache; + PUBLIC_HEADERS_FOLDER_PATH = "$(CONTENTS_FOLDER_PATH)/Headers"; SKIP_INSTALL = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -1768,6 +2044,7 @@ MTL_ENABLE_DEBUG_INFO = NO; PRODUCT_BUNDLE_IDENTIFIER = com.github.groue.GRMustache; PRODUCT_NAME = GRMustache; + PUBLIC_HEADERS_FOLDER_PATH = "$(CONTENTS_FOLDER_PATH)/Headers"; SKIP_INSTALL = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -1865,6 +2142,93 @@ }; name = Release; }; + 56AC8C9E1BA1F637009E4319 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + COMBINE_HIDPI_IMAGES = YES; + DEBUG_INFORMATION_FORMAT = dwarf; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + INFOPLIST_FILE = tests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 10.10; + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.github.groue.GRMustacheOSXPrivateTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 56AC8C9F1BA1F637009E4319 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + COMBINE_HIDPI_IMAGES = YES; + COPY_PHASE_STRIP = NO; + ENABLE_NS_ASSERTIONS = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + INFOPLIST_FILE = tests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 10.10; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_BUNDLE_IDENTIFIER = com.github.groue.GRMustacheOSXPrivateTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; + 56DAC7661BB69F6D0010FE01 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = NO; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + DEBUG_INFORMATION_FORMAT = dwarf; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + INFOPLIST_FILE = tests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.github.groue.GRMustacheiOSTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + }; + name = Debug; + }; + 56DAC7671BB69F6D0010FE01 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = NO; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + COPY_PHASE_STRIP = NO; + ENABLE_NS_ASSERTIONS = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + INFOPLIST_FILE = tests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_BUNDLE_IDENTIFIER = com.github.groue.GRMustacheiOSTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; 56DEC1B215262FC90031E8DC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1900,7 +2264,6 @@ IPHONEOS_DEPLOYMENT_TARGET = 4.3; MACOSX_DEPLOYMENT_TARGET = ""; ONLY_ACTIVE_ARCH = YES; - PUBLIC_HEADERS_FOLDER_PATH = include/GRMustache; SDKROOT = macosx; }; name = Debug; @@ -1932,7 +2295,6 @@ GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 4.3; MACOSX_DEPLOYMENT_TARGET = ""; - PUBLIC_HEADERS_FOLDER_PATH = include/GRMustache; SDKROOT = macosx; }; name = Release; @@ -2027,6 +2389,7 @@ 56214B851BA1A4C50070C6CF /* Release */, ); defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; }; 56214B921BA1A4D50070C6CF /* Build configuration list for PBXNativeTarget "GRMustacheOSXTests" */ = { isa = XCConfigurationList; @@ -2035,6 +2398,25 @@ 56214B941BA1A4D50070C6CF /* Release */, ); defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 56AC8C9D1BA1F637009E4319 /* Build configuration list for PBXNativeTarget "GRMustacheOSXPrivateTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 56AC8C9E1BA1F637009E4319 /* Debug */, + 56AC8C9F1BA1F637009E4319 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 56DAC7651BB69F6D0010FE01 /* Build configuration list for PBXNativeTarget "GRMustacheiOSPrivateTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 56DAC7661BB69F6D0010FE01 /* Debug */, + 56DAC7671BB69F6D0010FE01 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; }; 56DEC19F15262FC80031E8DC /* Build configuration list for PBXProject "GRMustache" */ = { isa = XCConfigurationList; diff --git a/src/GRMustache.xcodeproj/xcshareddata/xcschemes/GRMustacheOSX (Shared).xcscheme b/src/GRMustache.xcodeproj/xcshareddata/xcschemes/GRMustacheOSX (Shared).xcscheme index 9986a24e..5e47245c 100644 --- a/src/GRMustache.xcodeproj/xcshareddata/xcschemes/GRMustacheOSX (Shared).xcscheme +++ b/src/GRMustache.xcodeproj/xcshareddata/xcschemes/GRMustacheOSX (Shared).xcscheme @@ -15,7 +15,7 @@ @@ -46,7 +46,7 @@ @@ -64,7 +64,7 @@ diff --git a/src/GRMustache.xcodeproj/xcshareddata/xcschemes/GRMustacheiOS (Shared).xcscheme b/src/GRMustache.xcodeproj/xcshareddata/xcschemes/GRMustacheiOS (Shared).xcscheme index 8597a204..a8b761ba 100644 --- a/src/GRMustache.xcodeproj/xcshareddata/xcschemes/GRMustacheiOS (Shared).xcscheme +++ b/src/GRMustache.xcodeproj/xcshareddata/xcschemes/GRMustacheiOS (Shared).xcscheme @@ -15,7 +15,7 @@ @@ -46,7 +46,7 @@ @@ -64,7 +64,7 @@ diff --git a/src/classes/GRMustache.h b/src/classes/GRMustache.h index e926703e..e6b4e02b 100644 --- a/src/classes/GRMustache.h +++ b/src/classes/GRMustache.h @@ -23,6 +23,12 @@ #import #import "GRMustacheAvailabilityMacros.h" +//! Project version number for GRMustache. +FOUNDATION_EXPORT double GRMustacheVersionNumber; + +//! Project version string for GRMustache. +FOUNDATION_EXPORT const unsigned char GRMustacheVersionString[]; + @protocol GRMustacheRendering; @class GRMustacheTag; @class GRMustacheContext; diff --git a/src/classes/Rendering/GRMustacheRendering_private.h b/src/classes/Rendering/GRMustacheRendering_private.h index 9ff0b29d..5dd1a791 100644 --- a/src/classes/Rendering/GRMustacheRendering_private.h +++ b/src/classes/Rendering/GRMustacheRendering_private.h @@ -24,7 +24,7 @@ #import "GRMustacheAvailabilityMacros_private.h" #import "GRMustacheContentType.h" -// prevent GRMustacheFilter.h to load +// Prevent GRMustacheRendering.h from loading #define GRMUSTACHE_RENDERING diff --git a/src/tests/GRMustacheTestBase.h b/src/tests/GRMustacheTestingDelegate.h similarity index 93% rename from src/tests/GRMustacheTestBase.h rename to src/tests/GRMustacheTestingDelegate.h index 80ece4e2..774436dd 100644 --- a/src/tests/GRMustacheTestBase.h +++ b/src/tests/GRMustacheTestingDelegate.h @@ -20,13 +20,8 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -@import XCTest; #import "GRMustacheTagDelegate.h" -@interface GRMustacheTestBase: XCTestCase -@property (nonatomic, readonly) NSBundle *testBundle; -@end - @interface GRMustacheTestingDelegate : NSObject { id(^_mustacheTagWillRenderObjectBlock)(GRMustacheTag *tag, id object); void(^_mustacheTagDidRenderAsBlock)(GRMustacheTag *tag, id object, NSString *rendering); diff --git a/src/tests/GRMustacheTestBase.m b/src/tests/GRMustacheTestingDelegate.m similarity index 91% rename from src/tests/GRMustacheTestBase.m rename to src/tests/GRMustacheTestingDelegate.m index 03bb9e82..dad7635f 100644 --- a/src/tests/GRMustacheTestBase.m +++ b/src/tests/GRMustacheTestingDelegate.m @@ -20,18 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#import "GRMustacheTemplate_private.h" -#import "GRMustacheTestBase.h" - -@implementation GRMustacheTestBase -@dynamic testBundle; - -- (NSBundle *)testBundle -{ - return [NSBundle bundleForClass:[self class]]; -} - -@end +#import "GRMustacheTestingDelegate.h" @implementation GRMustacheTestingDelegate @synthesize mustacheTagWillRenderObjectBlock=_mustacheTagWillRenderObjectBlock; diff --git a/src/tests/Private/GRMustachePrivateAPITest.h b/src/tests/Private/GRMustachePrivateAPITest.h index 731aa480..3d0a3399 100644 --- a/src/tests/Private/GRMustachePrivateAPITest.h +++ b/src/tests/Private/GRMustachePrivateAPITest.h @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#import "GRMustacheTestBase.h" +#import -@interface GRMustachePrivateAPITest : GRMustacheTestBase +@interface GRMustachePrivateAPITest : XCTestCase @end diff --git a/src/tests/Public/GRMustachePublicAPITest.h b/src/tests/Public/GRMustachePublicAPITest.h index 0cb7b9e2..8d5bc05a 100644 --- a/src/tests/Public/GRMustachePublicAPITest.h +++ b/src/tests/Public/GRMustachePublicAPITest.h @@ -20,10 +20,10 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +@import XCTest; @import GRMustache; -#import "GRMustacheTestBase.h" -@interface GRMustachePublicAPITest: GRMustacheTestBase +@interface GRMustachePublicAPITest: XCTestCase @end @interface GRMustachePublicAPISuiteTest: GRMustachePublicAPITest diff --git a/src/tests/Public/GRMustachePublicAPITest.m b/src/tests/Public/GRMustachePublicAPITest.m index cbf7e651..895f73e2 100644 --- a/src/tests/Public/GRMustachePublicAPITest.m +++ b/src/tests/Public/GRMustachePublicAPITest.m @@ -57,7 +57,8 @@ @implementation GRMustachePublicAPISuiteTest - (void)runTestsFromResource:(NSString *)name subdirectory:(NSString *)subpath { - NSString *path = [[self.testBundle pathForResource:subpath ofType:nil] stringByAppendingPathComponent:name]; + NSBundle *testBundle = [NSBundle bundleForClass:[self class]]; + NSString *path = [[testBundle pathForResource:subpath ofType:nil] stringByAppendingPathComponent:name]; NSError *error; NSData *testSuiteData = [NSData dataWithContentsOfFile:path]; diff --git a/src/tests/Public/v7.0/GRMustacheConfigurationTest/GRMustacheConfigurationExtendBaseContextTest.m b/src/tests/Public/v7.0/GRMustacheConfigurationTest/GRMustacheConfigurationExtendBaseContextTest.m index 681ab7a2..e88a0614 100644 --- a/src/tests/Public/v7.0/GRMustacheConfigurationTest/GRMustacheConfigurationExtendBaseContextTest.m +++ b/src/tests/Public/v7.0/GRMustacheConfigurationTest/GRMustacheConfigurationExtendBaseContextTest.m @@ -22,6 +22,7 @@ #define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 #import "GRMustachePublicAPITest.h" +#import "GRMustacheTestingDelegate.h" @interface GRMustacheConfigurationExtendBaseContextTest : GRMustachePublicAPITest @end diff --git a/src/tests/Public/v7.0/GRMustacheContextTest/GRMustacheContextTest.m b/src/tests/Public/v7.0/GRMustacheContextTest/GRMustacheContextTest.m index 5dd694f5..0dc96bde 100644 --- a/src/tests/Public/v7.0/GRMustacheContextTest/GRMustacheContextTest.m +++ b/src/tests/Public/v7.0/GRMustacheContextTest/GRMustacheContextTest.m @@ -22,6 +22,7 @@ #define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 #import "GRMustachePublicAPITest.h" +#import "GRMustacheTestingDelegate.h" @interface GRMustacheContextTest : GRMustachePublicAPITest @end diff --git a/src/tests/Public/v7.0/GRMustacheContextTest/GRMustacheContextTopMustacheObjectTest.m b/src/tests/Public/v7.0/GRMustacheContextTest/GRMustacheContextTopMustacheObjectTest.m index c9c54814..1ff0cd4e 100644 --- a/src/tests/Public/v7.0/GRMustacheContextTest/GRMustacheContextTopMustacheObjectTest.m +++ b/src/tests/Public/v7.0/GRMustacheContextTest/GRMustacheContextTopMustacheObjectTest.m @@ -22,6 +22,7 @@ #define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 #import "GRMustachePublicAPITest.h" +#import "GRMustacheTestingDelegate.h" @interface GRMustacheContextTopMustacheObjectTest : GRMustachePublicAPITest @end diff --git a/src/tests/Public/v7.0/GRMustacheRenderingObjectTest.m b/src/tests/Public/v7.0/GRMustacheRenderingObjectTest.m index f1a82426..604244ca 100644 --- a/src/tests/Public/v7.0/GRMustacheRenderingObjectTest.m +++ b/src/tests/Public/v7.0/GRMustacheRenderingObjectTest.m @@ -22,6 +22,7 @@ #define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 #import "GRMustachePublicAPITest.h" +#import "GRMustacheTestingDelegate.h" @interface GRMustacheRenderingObjectTest : GRMustachePublicAPITest @end diff --git a/src/tests/Public/v7.0/GRMustacheServicesTest/GRMustacheLocalizerTest.m b/src/tests/Public/v7.0/GRMustacheServicesTest/GRMustacheLocalizerTest.m index 66457884..14c977c7 100644 --- a/src/tests/Public/v7.0/GRMustacheServicesTest/GRMustacheLocalizerTest.m +++ b/src/tests/Public/v7.0/GRMustacheServicesTest/GRMustacheLocalizerTest.m @@ -37,7 +37,8 @@ @implementation GRMustacheLocalizerTest - (void)setUp { - NSString *path = [[self testBundle] pathForResource:@"GRMustacheLocalizerTestBundle" ofType:nil]; + NSBundle *testBundle = [NSBundle bundleForClass:[self class]]; + NSString *path = [testBundle pathForResource:@"GRMustacheLocalizerTestBundle" ofType:nil]; self.localizableBundle = [NSBundle bundleWithPath:path]; self.localizer = [[[GRMustacheLocalizer alloc] initWithBundle:self.localizableBundle tableName:nil] autorelease]; } diff --git a/src/tests/Public/v7.0/GRMustacheTagDelegateTest/GRMustacheTagDelegateTest.m b/src/tests/Public/v7.0/GRMustacheTagDelegateTest/GRMustacheTagDelegateTest.m index 5b774f74..1eb1263a 100644 --- a/src/tests/Public/v7.0/GRMustacheTagDelegateTest/GRMustacheTagDelegateTest.m +++ b/src/tests/Public/v7.0/GRMustacheTagDelegateTest/GRMustacheTagDelegateTest.m @@ -22,6 +22,7 @@ #define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 #import "GRMustachePublicAPITest.h" +#import "GRMustacheTestingDelegate.h" @interface GRMustacheTagDelegateTest : GRMustachePublicAPITest @end @@ -463,12 +464,13 @@ - (void)testTagDescriptionContainsResourceBasedTemplatePath return object; }; - GRMustacheTemplate *template = [GRMustacheTemplate templateFromResource:@"GRMustacheTagDelegateTest" bundle:self.testBundle error:NULL]; + NSBundle *testBundle = [NSBundle bundleForClass:[self class]]; + GRMustacheTemplate *template = [GRMustacheTemplate templateFromResource:@"GRMustacheTagDelegateTest" bundle:testBundle error:NULL]; template.baseContext = [template.baseContext contextByAddingTagDelegate:delegate]; [template renderObject:nil error:NULL]; XCTAssertNotNil(description, @""); - NSRange range = [description rangeOfString:[self.testBundle pathForResource:@"GRMustacheTagDelegateTest" ofType:@"mustache"]]; + NSRange range = [description rangeOfString:[testBundle pathForResource:@"GRMustacheTagDelegateTest" ofType:@"mustache"]]; XCTAssertTrue(range.location != NSNotFound, @""); } { @@ -480,13 +482,14 @@ - (void)testTagDescriptionContainsResourceBasedTemplatePath return object; }; - GRMustacheTemplateRepository *repository = [GRMustacheTemplateRepository templateRepositoryWithBundle:self.testBundle]; + NSBundle *testBundle = [NSBundle bundleForClass:[self class]]; + GRMustacheTemplateRepository *repository = [GRMustacheTemplateRepository templateRepositoryWithBundle:testBundle]; GRMustacheTemplate *template = [repository templateNamed:@"GRMustacheTagDelegateTest" error:NULL]; template.baseContext = [template.baseContext contextByAddingTagDelegate:delegate]; [template renderObject:nil error:NULL]; XCTAssertNotNil(description, @""); - NSRange range = [description rangeOfString:[self.testBundle pathForResource:@"GRMustacheTagDelegateTest" ofType:@"mustache"]]; + NSRange range = [description rangeOfString:[testBundle pathForResource:@"GRMustacheTagDelegateTest" ofType:@"mustache"]]; XCTAssertTrue(range.location != NSNotFound, @""); } } @@ -502,12 +505,13 @@ - (void)testTagDescriptionContainsURLBasedTemplatePath return object; }; - GRMustacheTemplate *template = [GRMustacheTemplate templateFromContentsOfURL:[self.testBundle URLForResource:@"GRMustacheTagDelegateTest" withExtension:@"mustache"] error:NULL]; + NSBundle *testBundle = [NSBundle bundleForClass:[self class]]; + GRMustacheTemplate *template = [GRMustacheTemplate templateFromContentsOfURL:[testBundle URLForResource:@"GRMustacheTagDelegateTest" withExtension:@"mustache"] error:NULL]; template.baseContext = [template.baseContext contextByAddingTagDelegate:delegate]; [template renderObject:nil error:NULL]; XCTAssertNotNil(description, @""); - NSRange range = [description rangeOfString:[self.testBundle pathForResource:@"GRMustacheTagDelegateTest" ofType:@"mustache"]]; + NSRange range = [description rangeOfString:[testBundle pathForResource:@"GRMustacheTagDelegateTest" ofType:@"mustache"]]; XCTAssertTrue(range.location != NSNotFound, @""); } { @@ -519,13 +523,14 @@ - (void)testTagDescriptionContainsURLBasedTemplatePath return object; }; - GRMustacheTemplateRepository *repository = [GRMustacheTemplateRepository templateRepositoryWithBaseURL:[self.testBundle resourceURL]]; + NSBundle *testBundle = [NSBundle bundleForClass:[self class]]; + GRMustacheTemplateRepository *repository = [GRMustacheTemplateRepository templateRepositoryWithBaseURL:[testBundle resourceURL]]; GRMustacheTemplate *template = [repository templateNamed:@"GRMustacheTagDelegateTest" error:NULL]; template.baseContext = [template.baseContext contextByAddingTagDelegate:delegate]; [template renderObject:nil error:NULL]; XCTAssertNotNil(description, @""); - NSRange range = [description rangeOfString:[self.testBundle pathForResource:@"GRMustacheTagDelegateTest" ofType:@"mustache"]]; + NSRange range = [description rangeOfString:[testBundle pathForResource:@"GRMustacheTagDelegateTest" ofType:@"mustache"]]; XCTAssertTrue(range.location != NSNotFound, @""); } } @@ -541,12 +546,13 @@ - (void)testTagDescriptionContainsPathBasedTemplatePath return object; }; - GRMustacheTemplate *template = [GRMustacheTemplate templateFromContentsOfFile:[self.testBundle pathForResource:@"GRMustacheTagDelegateTest" ofType:@"mustache"] error:NULL]; + NSBundle *testBundle = [NSBundle bundleForClass:[self class]]; + GRMustacheTemplate *template = [GRMustacheTemplate templateFromContentsOfFile:[testBundle pathForResource:@"GRMustacheTagDelegateTest" ofType:@"mustache"] error:NULL]; template.baseContext = [template.baseContext contextByAddingTagDelegate:delegate]; [template renderObject:nil error:NULL]; XCTAssertNotNil(description, @""); - NSRange range = [description rangeOfString:[self.testBundle pathForResource:@"GRMustacheTagDelegateTest" ofType:@"mustache"]]; + NSRange range = [description rangeOfString:[testBundle pathForResource:@"GRMustacheTagDelegateTest" ofType:@"mustache"]]; XCTAssertTrue(range.location != NSNotFound, @""); } { @@ -558,13 +564,14 @@ - (void)testTagDescriptionContainsPathBasedTemplatePath return object; }; - GRMustacheTemplateRepository *repository = [GRMustacheTemplateRepository templateRepositoryWithDirectory:[self.testBundle resourcePath]]; + NSBundle *testBundle = [NSBundle bundleForClass:[self class]]; + GRMustacheTemplateRepository *repository = [GRMustacheTemplateRepository templateRepositoryWithDirectory:[testBundle resourcePath]]; GRMustacheTemplate *template = [repository templateNamed:@"GRMustacheTagDelegateTest" error:NULL]; template.baseContext = [template.baseContext contextByAddingTagDelegate:delegate]; [template renderObject:nil error:NULL]; XCTAssertNotNil(description, @""); - NSRange range = [description rangeOfString:[self.testBundle pathForResource:@"GRMustacheTagDelegateTest" ofType:@"mustache"]]; + NSRange range = [description rangeOfString:[testBundle pathForResource:@"GRMustacheTagDelegateTest" ofType:@"mustache"]]; XCTAssertTrue(range.location != NSNotFound, @""); } } @@ -580,12 +587,13 @@ - (void)testTagDescriptionContainsResourceBasedPartialPath return object; }; - GRMustacheTemplate *template = [GRMustacheTemplate templateFromResource:@"GRMustacheTagDelegateTest_wrapper" bundle:self.testBundle error:NULL]; + NSBundle *testBundle = [NSBundle bundleForClass:[self class]]; + GRMustacheTemplate *template = [GRMustacheTemplate templateFromResource:@"GRMustacheTagDelegateTest_wrapper" bundle:testBundle error:NULL]; template.baseContext = [template.baseContext contextByAddingTagDelegate:delegate]; [template renderObject:nil error:NULL]; XCTAssertNotNil(description, @""); - NSRange range = [description rangeOfString:[self.testBundle pathForResource:@"GRMustacheTagDelegateTest" ofType:@"mustache"]]; + NSRange range = [description rangeOfString:[testBundle pathForResource:@"GRMustacheTagDelegateTest" ofType:@"mustache"]]; XCTAssertTrue(range.location != NSNotFound, @""); } { @@ -597,13 +605,14 @@ - (void)testTagDescriptionContainsResourceBasedPartialPath return object; }; - GRMustacheTemplateRepository *repository = [GRMustacheTemplateRepository templateRepositoryWithBundle:self.testBundle]; + NSBundle *testBundle = [NSBundle bundleForClass:[self class]]; + GRMustacheTemplateRepository *repository = [GRMustacheTemplateRepository templateRepositoryWithBundle:testBundle]; GRMustacheTemplate *template = [repository templateNamed:@"GRMustacheTagDelegateTest_wrapper" error:NULL]; template.baseContext = [template.baseContext contextByAddingTagDelegate:delegate]; [template renderObject:nil error:NULL]; XCTAssertNotNil(description, @""); - NSRange range = [description rangeOfString:[self.testBundle pathForResource:@"GRMustacheTagDelegateTest" ofType:@"mustache"]]; + NSRange range = [description rangeOfString:[testBundle pathForResource:@"GRMustacheTagDelegateTest" ofType:@"mustache"]]; XCTAssertTrue(range.location != NSNotFound, @""); } { @@ -615,13 +624,14 @@ - (void)testTagDescriptionContainsResourceBasedPartialPath return object; }; - GRMustacheTemplateRepository *repository = [GRMustacheTemplateRepository templateRepositoryWithBundle:self.testBundle]; + NSBundle *testBundle = [NSBundle bundleForClass:[self class]]; + GRMustacheTemplateRepository *repository = [GRMustacheTemplateRepository templateRepositoryWithBundle:testBundle]; GRMustacheTemplate *template = [repository templateFromString:@"{{>GRMustacheTagDelegateTest}}" error:NULL]; template.baseContext = [template.baseContext contextByAddingTagDelegate:delegate]; [template renderObject:nil error:NULL]; XCTAssertNotNil(description, @""); - NSRange range = [description rangeOfString:[self.testBundle pathForResource:@"GRMustacheTagDelegateTest" ofType:@"mustache"]]; + NSRange range = [description rangeOfString:[testBundle pathForResource:@"GRMustacheTagDelegateTest" ofType:@"mustache"]]; XCTAssertTrue(range.location != NSNotFound, @""); } } @@ -637,12 +647,13 @@ - (void)testTagDescriptionContainsURLBasedPartialPath return object; }; - GRMustacheTemplate *template = [GRMustacheTemplate templateFromContentsOfURL:[self.testBundle URLForResource:@"GRMustacheTagDelegateTest_wrapper" withExtension:@"mustache"] error:NULL]; + NSBundle *testBundle = [NSBundle bundleForClass:[self class]]; + GRMustacheTemplate *template = [GRMustacheTemplate templateFromContentsOfURL:[testBundle URLForResource:@"GRMustacheTagDelegateTest_wrapper" withExtension:@"mustache"] error:NULL]; template.baseContext = [template.baseContext contextByAddingTagDelegate:delegate]; [template renderObject:nil error:NULL]; XCTAssertNotNil(description, @""); - NSRange range = [description rangeOfString:[self.testBundle pathForResource:@"GRMustacheTagDelegateTest" ofType:@"mustache"]]; + NSRange range = [description rangeOfString:[testBundle pathForResource:@"GRMustacheTagDelegateTest" ofType:@"mustache"]]; XCTAssertTrue(range.location != NSNotFound, @""); } { @@ -654,13 +665,14 @@ - (void)testTagDescriptionContainsURLBasedPartialPath return object; }; - GRMustacheTemplateRepository *repository = [GRMustacheTemplateRepository templateRepositoryWithBaseURL:[self.testBundle resourceURL]]; + NSBundle *testBundle = [NSBundle bundleForClass:[self class]]; + GRMustacheTemplateRepository *repository = [GRMustacheTemplateRepository templateRepositoryWithBaseURL:[testBundle resourceURL]]; GRMustacheTemplate *template = [repository templateNamed:@"GRMustacheTagDelegateTest_wrapper" error:NULL]; template.baseContext = [template.baseContext contextByAddingTagDelegate:delegate]; [template renderObject:nil error:NULL]; XCTAssertNotNil(description, @""); - NSRange range = [description rangeOfString:[self.testBundle pathForResource:@"GRMustacheTagDelegateTest" ofType:@"mustache"]]; + NSRange range = [description rangeOfString:[testBundle pathForResource:@"GRMustacheTagDelegateTest" ofType:@"mustache"]]; XCTAssertTrue(range.location != NSNotFound, @""); } { @@ -672,13 +684,14 @@ - (void)testTagDescriptionContainsURLBasedPartialPath return object; }; - GRMustacheTemplateRepository *repository = [GRMustacheTemplateRepository templateRepositoryWithBaseURL:[self.testBundle resourceURL]]; + NSBundle *testBundle = [NSBundle bundleForClass:[self class]]; + GRMustacheTemplateRepository *repository = [GRMustacheTemplateRepository templateRepositoryWithBaseURL:[testBundle resourceURL]]; GRMustacheTemplate *template = [repository templateFromString:@"{{>GRMustacheTagDelegateTest}}" error:NULL]; template.baseContext = [template.baseContext contextByAddingTagDelegate:delegate]; [template renderObject:nil error:NULL]; XCTAssertNotNil(description, @""); - NSRange range = [description rangeOfString:[self.testBundle pathForResource:@"GRMustacheTagDelegateTest" ofType:@"mustache"]]; + NSRange range = [description rangeOfString:[testBundle pathForResource:@"GRMustacheTagDelegateTest" ofType:@"mustache"]]; XCTAssertTrue(range.location != NSNotFound, @""); } } @@ -694,12 +707,13 @@ - (void)testTagDescriptionContainsPathBasedPartialPath return object; }; - GRMustacheTemplate *template = [GRMustacheTemplate templateFromContentsOfFile:[self.testBundle pathForResource:@"GRMustacheTagDelegateTest_wrapper" ofType:@"mustache"] error:NULL]; + NSBundle *testBundle = [NSBundle bundleForClass:[self class]]; + GRMustacheTemplate *template = [GRMustacheTemplate templateFromContentsOfFile:[testBundle pathForResource:@"GRMustacheTagDelegateTest_wrapper" ofType:@"mustache"] error:NULL]; template.baseContext = [template.baseContext contextByAddingTagDelegate:delegate]; [template renderObject:nil error:NULL]; XCTAssertNotNil(description, @""); - NSRange range = [description rangeOfString:[self.testBundle pathForResource:@"GRMustacheTagDelegateTest" ofType:@"mustache"]]; + NSRange range = [description rangeOfString:[testBundle pathForResource:@"GRMustacheTagDelegateTest" ofType:@"mustache"]]; XCTAssertTrue(range.location != NSNotFound, @""); } { @@ -711,13 +725,14 @@ - (void)testTagDescriptionContainsPathBasedPartialPath return object; }; - GRMustacheTemplateRepository *repository = [GRMustacheTemplateRepository templateRepositoryWithDirectory:[self.testBundle resourcePath]]; + NSBundle *testBundle = [NSBundle bundleForClass:[self class]]; + GRMustacheTemplateRepository *repository = [GRMustacheTemplateRepository templateRepositoryWithDirectory:[testBundle resourcePath]]; GRMustacheTemplate *template = [repository templateNamed:@"GRMustacheTagDelegateTest_wrapper" error:NULL]; template.baseContext = [template.baseContext contextByAddingTagDelegate:delegate]; [template renderObject:nil error:NULL]; XCTAssertNotNil(description, @""); - NSRange range = [description rangeOfString:[self.testBundle pathForResource:@"GRMustacheTagDelegateTest" ofType:@"mustache"]]; + NSRange range = [description rangeOfString:[testBundle pathForResource:@"GRMustacheTagDelegateTest" ofType:@"mustache"]]; XCTAssertTrue(range.location != NSNotFound, @""); } { @@ -729,13 +744,14 @@ - (void)testTagDescriptionContainsPathBasedPartialPath return object; }; - GRMustacheTemplateRepository *repository = [GRMustacheTemplateRepository templateRepositoryWithDirectory:[self.testBundle resourcePath]]; + NSBundle *testBundle = [NSBundle bundleForClass:[self class]]; + GRMustacheTemplateRepository *repository = [GRMustacheTemplateRepository templateRepositoryWithDirectory:[testBundle resourcePath]]; GRMustacheTemplate *template = [repository templateFromString:@"{{>GRMustacheTagDelegateTest}}" error:NULL]; template.baseContext = [template.baseContext contextByAddingTagDelegate:delegate]; [template renderObject:nil error:NULL]; XCTAssertNotNil(description, @""); - NSRange range = [description rangeOfString:[self.testBundle pathForResource:@"GRMustacheTagDelegateTest" ofType:@"mustache"]]; + NSRange range = [description rangeOfString:[testBundle pathForResource:@"GRMustacheTagDelegateTest" ofType:@"mustache"]]; XCTAssertTrue(range.location != NSNotFound, @""); } } diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBaseURLTest.m b/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBaseURLTest.m index 042d8bc3..05d39994 100644 --- a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBaseURLTest.m +++ b/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBaseURLTest.m @@ -36,7 +36,8 @@ - (void)testTemplateRepositoryWithBaseURL NSString *result; NSError *error; - URL = [self.testBundle URLForResource:@"GRMustacheTemplateRepositoryTest_UTF8" withExtension:nil]; + NSBundle *testBundle = [NSBundle bundleForClass:[self class]]; + URL = [testBundle URLForResource:@"GRMustacheTemplateRepositoryTest_UTF8" withExtension:nil]; repository = [GRMustacheTemplateRepository templateRepositoryWithBaseURL:URL]; template = [repository templateNamed:@"notFound" error:&error]; @@ -67,49 +68,51 @@ - (void)testTemplateRepositoryWithBaseURL_templateExtension_encoding GRMustacheTemplate *template; NSString *result; - URL = [self.testBundle URLForResource:@"GRMustacheTemplateRepositoryTest_UTF8" withExtension:nil]; + NSBundle *testBundle = [NSBundle bundleForClass:[self class]]; + + URL = [testBundle URLForResource:@"GRMustacheTemplateRepositoryTest_UTF8" withExtension:nil]; repository = [GRMustacheTemplateRepository templateRepositoryWithBaseURL:URL templateExtension:@"mustache" encoding:NSUTF8StringEncoding]; template = [repository templateNamed:@"file1" error:NULL]; result = [template renderObject:nil error:NULL]; XCTAssertEqualObjects(result, @"é1.mustache\ndir/é1.mustache\ndir/dir/é1.mustache\ndir/dir/é2.mustache\n\n\ndir/é2.mustache\n\n\né2.mustache\n\n", @""); - URL = [self.testBundle URLForResource:@"GRMustacheTemplateRepositoryTest_UTF8" withExtension:nil]; + URL = [testBundle URLForResource:@"GRMustacheTemplateRepositoryTest_UTF8" withExtension:nil]; repository = [GRMustacheTemplateRepository templateRepositoryWithBaseURL:URL templateExtension:@"txt" encoding:NSUTF8StringEncoding]; template = [repository templateNamed:@"file1" error:NULL]; result = [template renderObject:nil error:NULL]; XCTAssertEqualObjects(result, @"é1.txt\ndir/é1.txt\ndir/dir/é1.txt\ndir/dir/é2.txt\n\n\ndir/é2.txt\n\n\né2.txt\n\n", @""); - URL = [self.testBundle URLForResource:@"GRMustacheTemplateRepositoryTest_UTF8" withExtension:nil]; + URL = [testBundle URLForResource:@"GRMustacheTemplateRepositoryTest_UTF8" withExtension:nil]; repository = [GRMustacheTemplateRepository templateRepositoryWithBaseURL:URL templateExtension:@"" encoding:NSUTF8StringEncoding]; template = [repository templateNamed:@"file1" error:NULL]; result = [template renderObject:nil error:NULL]; XCTAssertEqualObjects(result, @"é1\ndir/é1\ndir/dir/é1\ndir/dir/é2\n\n\ndir/é2\n\n\né2\n\n", @""); - URL = [self.testBundle URLForResource:@"GRMustacheTemplateRepositoryTest_UTF8" withExtension:nil]; + URL = [testBundle URLForResource:@"GRMustacheTemplateRepositoryTest_UTF8" withExtension:nil]; repository = [GRMustacheTemplateRepository templateRepositoryWithBaseURL:URL templateExtension:nil encoding:NSUTF8StringEncoding]; template = [repository templateNamed:@"file1" error:NULL]; result = [template renderObject:nil error:NULL]; XCTAssertEqualObjects(result, @"é1\ndir/é1\ndir/dir/é1\ndir/dir/é2\n\n\ndir/é2\n\n\né2\n\n", @""); - URL = [self.testBundle URLForResource:@"GRMustacheTemplateRepositoryTest_ISOLatin1" withExtension:nil]; + URL = [testBundle URLForResource:@"GRMustacheTemplateRepositoryTest_ISOLatin1" withExtension:nil]; repository = [GRMustacheTemplateRepository templateRepositoryWithBaseURL:URL templateExtension:@"mustache" encoding:NSISOLatin1StringEncoding]; template = [repository templateNamed:@"file1" error:NULL]; result = [template renderObject:nil error:NULL]; XCTAssertEqualObjects(result, @"é1.mustache\ndir/é1.mustache\ndir/dir/é1.mustache\ndir/dir/é2.mustache\n\n\ndir/é2.mustache\n\n\né2.mustache\n\n", @""); - URL = [self.testBundle URLForResource:@"GRMustacheTemplateRepositoryTest_ISOLatin1" withExtension:nil]; + URL = [testBundle URLForResource:@"GRMustacheTemplateRepositoryTest_ISOLatin1" withExtension:nil]; repository = [GRMustacheTemplateRepository templateRepositoryWithBaseURL:URL templateExtension:@"txt" encoding:NSISOLatin1StringEncoding]; template = [repository templateNamed:@"file1" error:NULL]; result = [template renderObject:nil error:NULL]; XCTAssertEqualObjects(result, @"é1.txt\ndir/é1.txt\ndir/dir/é1.txt\ndir/dir/é2.txt\n\n\ndir/é2.txt\n\n\né2.txt\n\n", @""); - URL = [self.testBundle URLForResource:@"GRMustacheTemplateRepositoryTest_ISOLatin1" withExtension:nil]; + URL = [testBundle URLForResource:@"GRMustacheTemplateRepositoryTest_ISOLatin1" withExtension:nil]; repository = [GRMustacheTemplateRepository templateRepositoryWithBaseURL:URL templateExtension:@"" encoding:NSISOLatin1StringEncoding]; template = [repository templateNamed:@"file1" error:NULL]; result = [template renderObject:nil error:NULL]; XCTAssertEqualObjects(result, @"é1\ndir/é1\ndir/dir/é1\ndir/dir/é2\n\n\ndir/é2\n\n\né2\n\n", @""); - URL = [self.testBundle URLForResource:@"GRMustacheTemplateRepositoryTest_ISOLatin1" withExtension:nil]; + URL = [testBundle URLForResource:@"GRMustacheTemplateRepositoryTest_ISOLatin1" withExtension:nil]; repository = [GRMustacheTemplateRepository templateRepositoryWithBaseURL:URL templateExtension:nil encoding:NSISOLatin1StringEncoding]; template = [repository templateNamed:@"file1" error:NULL]; result = [template renderObject:nil error:NULL]; @@ -118,7 +121,9 @@ - (void)testTemplateRepositoryWithBaseURL_templateExtension_encoding - (void)testAbsolutePartialName { - NSURL *URL = [self.testBundle URLForResource:@"GRMustacheTemplateRepositoryTest" withExtension:nil]; + NSBundle *testBundle = [NSBundle bundleForClass:[self class]]; + + NSURL *URL = [testBundle URLForResource:@"GRMustacheTemplateRepositoryTest" withExtension:nil]; GRMustacheTemplateRepository *repository = [GRMustacheTemplateRepository templateRepositoryWithBaseURL:URL]; GRMustacheTemplate *template = [repository templateNamed:@"base" error:NULL]; NSString *rendering = [template renderObject:nil error:NULL]; diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest.m b/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest.m index 2a776b7c..e0017cb2 100644 --- a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest.m +++ b/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest.m @@ -31,7 +31,7 @@ @implementation GRMustacheTemplateRepositoryWithBundleTest - (void)testTemplateRepositoryWithBundle { NSError *error; - GRMustacheTemplateRepository *repository = [GRMustacheTemplateRepository templateRepositoryWithBundle:self.testBundle]; + GRMustacheTemplateRepository *repository = [GRMustacheTemplateRepository templateRepositoryWithBundle:[NSBundle bundleForClass:[self class]]]; { GRMustacheTemplate *template = [repository templateNamed:@"notFound" error:&error]; @@ -59,7 +59,7 @@ - (void)testTemplateRepositoryWithBundle_templateExtension_encoding { NSError *error; { - GRMustacheTemplateRepository *repository = [GRMustacheTemplateRepository templateRepositoryWithBundle:self.testBundle + GRMustacheTemplateRepository *repository = [GRMustacheTemplateRepository templateRepositoryWithBundle:[NSBundle bundleForClass:[self class]] templateExtension:@"text" encoding:NSUTF8StringEncoding]; { @@ -79,7 +79,7 @@ - (void)testTemplateRepositoryWithBundle_templateExtension_encoding } } { - GRMustacheTemplateRepository *repository = [GRMustacheTemplateRepository templateRepositoryWithBundle:self.testBundle + GRMustacheTemplateRepository *repository = [GRMustacheTemplateRepository templateRepositoryWithBundle:[NSBundle bundleForClass:[self class]] templateExtension:@"" encoding:NSUTF8StringEncoding]; { @@ -99,7 +99,7 @@ - (void)testTemplateRepositoryWithBundle_templateExtension_encoding } } { - GRMustacheTemplateRepository *repository = [GRMustacheTemplateRepository templateRepositoryWithBundle:self.testBundle + GRMustacheTemplateRepository *repository = [GRMustacheTemplateRepository templateRepositoryWithBundle:[NSBundle bundleForClass:[self class]] templateExtension:nil encoding:NSUTF8StringEncoding]; { diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithDirectoryTest.m b/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithDirectoryTest.m index 5d44e5e8..1e831ca9 100644 --- a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithDirectoryTest.m +++ b/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithDirectoryTest.m @@ -36,7 +36,8 @@ - (void)testTemplateRepositoryWithDirectory NSString *result; NSError *error; - directoryPath = [self.testBundle pathForResource:@"GRMustacheTemplateRepositoryTest_UTF8" ofType:nil]; + NSBundle *testBundle = [NSBundle bundleForClass:[self class]]; + directoryPath = [testBundle pathForResource:@"GRMustacheTemplateRepositoryTest_UTF8" ofType:nil]; repository = [GRMustacheTemplateRepository templateRepositoryWithDirectory:directoryPath]; template = [repository templateNamed:@"notFound" error:&error]; @@ -63,49 +64,51 @@ - (void)testTemplateRepositoryWithDirectory_templateExtension_encoding GRMustacheTemplate *template; NSString *result; - directoryPath = [self.testBundle pathForResource:@"GRMustacheTemplateRepositoryTest_UTF8" ofType:nil]; + NSBundle *testBundle = [NSBundle bundleForClass:[self class]]; + + directoryPath = [testBundle pathForResource:@"GRMustacheTemplateRepositoryTest_UTF8" ofType:nil]; repository = [GRMustacheTemplateRepository templateRepositoryWithDirectory:directoryPath templateExtension:@"mustache" encoding:NSUTF8StringEncoding]; template = [repository templateNamed:@"file1" error:NULL]; result = [template renderObject:nil error:NULL]; XCTAssertEqualObjects(result, @"é1.mustache\ndir/é1.mustache\ndir/dir/é1.mustache\ndir/dir/é2.mustache\n\n\ndir/é2.mustache\n\n\né2.mustache\n\n", @""); - directoryPath = [self.testBundle pathForResource:@"GRMustacheTemplateRepositoryTest_UTF8" ofType:nil]; + directoryPath = [testBundle pathForResource:@"GRMustacheTemplateRepositoryTest_UTF8" ofType:nil]; repository = [GRMustacheTemplateRepository templateRepositoryWithDirectory:directoryPath templateExtension:@"txt" encoding:NSUTF8StringEncoding]; template = [repository templateNamed:@"file1" error:NULL]; result = [template renderObject:nil error:NULL]; XCTAssertEqualObjects(result, @"é1.txt\ndir/é1.txt\ndir/dir/é1.txt\ndir/dir/é2.txt\n\n\ndir/é2.txt\n\n\né2.txt\n\n", @""); - directoryPath = [self.testBundle pathForResource:@"GRMustacheTemplateRepositoryTest_UTF8" ofType:nil]; + directoryPath = [testBundle pathForResource:@"GRMustacheTemplateRepositoryTest_UTF8" ofType:nil]; repository = [GRMustacheTemplateRepository templateRepositoryWithDirectory:directoryPath templateExtension:@"" encoding:NSUTF8StringEncoding]; template = [repository templateNamed:@"file1" error:NULL]; result = [template renderObject:nil error:NULL]; XCTAssertEqualObjects(result, @"é1\ndir/é1\ndir/dir/é1\ndir/dir/é2\n\n\ndir/é2\n\n\né2\n\n", @""); - directoryPath = [self.testBundle pathForResource:@"GRMustacheTemplateRepositoryTest_UTF8" ofType:nil]; + directoryPath = [testBundle pathForResource:@"GRMustacheTemplateRepositoryTest_UTF8" ofType:nil]; repository = [GRMustacheTemplateRepository templateRepositoryWithDirectory:directoryPath templateExtension:nil encoding:NSUTF8StringEncoding]; template = [repository templateNamed:@"file1" error:NULL]; result = [template renderObject:nil error:NULL]; XCTAssertEqualObjects(result, @"é1\ndir/é1\ndir/dir/é1\ndir/dir/é2\n\n\ndir/é2\n\n\né2\n\n", @""); - directoryPath = [self.testBundle pathForResource:@"GRMustacheTemplateRepositoryTest_ISOLatin1" ofType:nil]; + directoryPath = [testBundle pathForResource:@"GRMustacheTemplateRepositoryTest_ISOLatin1" ofType:nil]; repository = [GRMustacheTemplateRepository templateRepositoryWithDirectory:directoryPath templateExtension:@"mustache" encoding:NSISOLatin1StringEncoding]; template = [repository templateNamed:@"file1" error:NULL]; result = [template renderObject:nil error:NULL]; XCTAssertEqualObjects(result, @"é1.mustache\ndir/é1.mustache\ndir/dir/é1.mustache\ndir/dir/é2.mustache\n\n\ndir/é2.mustache\n\n\né2.mustache\n\n", @""); - directoryPath = [self.testBundle pathForResource:@"GRMustacheTemplateRepositoryTest_ISOLatin1" ofType:nil]; + directoryPath = [testBundle pathForResource:@"GRMustacheTemplateRepositoryTest_ISOLatin1" ofType:nil]; repository = [GRMustacheTemplateRepository templateRepositoryWithDirectory:directoryPath templateExtension:@"txt" encoding:NSISOLatin1StringEncoding]; template = [repository templateNamed:@"file1" error:NULL]; result = [template renderObject:nil error:NULL]; XCTAssertEqualObjects(result, @"é1.txt\ndir/é1.txt\ndir/dir/é1.txt\ndir/dir/é2.txt\n\n\ndir/é2.txt\n\n\né2.txt\n\n", @""); - directoryPath = [self.testBundle pathForResource:@"GRMustacheTemplateRepositoryTest_ISOLatin1" ofType:nil]; + directoryPath = [testBundle pathForResource:@"GRMustacheTemplateRepositoryTest_ISOLatin1" ofType:nil]; repository = [GRMustacheTemplateRepository templateRepositoryWithDirectory:directoryPath templateExtension:@"" encoding:NSISOLatin1StringEncoding]; template = [repository templateNamed:@"file1" error:NULL]; result = [template renderObject:nil error:NULL]; XCTAssertEqualObjects(result, @"é1\ndir/é1\ndir/dir/é1\ndir/dir/é2\n\n\ndir/é2\n\n\né2\n\n", @""); - directoryPath = [self.testBundle pathForResource:@"GRMustacheTemplateRepositoryTest_ISOLatin1" ofType:nil]; + directoryPath = [testBundle pathForResource:@"GRMustacheTemplateRepositoryTest_ISOLatin1" ofType:nil]; repository = [GRMustacheTemplateRepository templateRepositoryWithDirectory:directoryPath templateExtension:nil encoding:NSISOLatin1StringEncoding]; template = [repository templateNamed:@"file1" error:NULL]; result = [template renderObject:nil error:NULL]; @@ -114,7 +117,8 @@ - (void)testTemplateRepositoryWithDirectory_templateExtension_encoding - (void)testAbsolutePartialName { - NSString *directoryPath = [self.testBundle pathForResource:@"GRMustacheTemplateRepositoryTest" ofType:nil]; + NSBundle *testBundle = [NSBundle bundleForClass:[self class]]; + NSString *directoryPath = [testBundle pathForResource:@"GRMustacheTemplateRepositoryTest" ofType:nil]; GRMustacheTemplateRepository *repository = [GRMustacheTemplateRepository templateRepositoryWithDirectory:directoryPath]; GRMustacheTemplate *template = [repository templateNamed:@"base" error:NULL]; NSString *rendering = [template renderObject:nil error:NULL]; diff --git a/src/tests/Public/v7.0/GRMustacheTemplateTest/GRMustacheTemplateExtendBaseContextTest.m b/src/tests/Public/v7.0/GRMustacheTemplateTest/GRMustacheTemplateExtendBaseContextTest.m index a17642e4..952fce6a 100644 --- a/src/tests/Public/v7.0/GRMustacheTemplateTest/GRMustacheTemplateExtendBaseContextTest.m +++ b/src/tests/Public/v7.0/GRMustacheTemplateTest/GRMustacheTemplateExtendBaseContextTest.m @@ -22,6 +22,7 @@ #define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 #import "GRMustachePublicAPITest.h" +#import "GRMustacheTestingDelegate.h" @interface GRMustacheTemplateExtendBaseContextTest : GRMustachePublicAPITest @end diff --git a/src/tests/Public/v7.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest.m b/src/tests/Public/v7.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest.m index f0017dd4..7b49adb5 100644 --- a/src/tests/Public/v7.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest.m +++ b/src/tests/Public/v7.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest.m @@ -66,27 +66,27 @@ @interface GRMustacheTemplateFromMethodsTest() @implementation GRMustacheTemplateFromMethodsTest - (NSString *)templateName { return @"GRMustacheTemplateFromMethodsTest"; } -- (NSURL *)templateURL { return [self.testBundle URLForResource:self.templateName withExtension:@"mustache"]; } +- (NSURL *)templateURL { return [[NSBundle bundleForClass:[self class]] URLForResource:self.templateName withExtension:@"mustache"]; } - (NSString *)templatePath { return [self.templateURL path]; } - (NSString *)templateString { return [NSString stringWithContentsOfFile:self.templatePath encoding:NSUTF8StringEncoding error:NULL]; } - (NSString *)parserErrorTemplateName { return @"GRMustacheTemplateFromMethodsTest_parserError"; } -- (NSURL *)parserErrorTemplateURL { return [self.testBundle URLForResource:self.parserErrorTemplateName withExtension:@"mustache"]; } +- (NSURL *)parserErrorTemplateURL { return [[NSBundle bundleForClass:[self class]] URLForResource:self.parserErrorTemplateName withExtension:@"mustache"]; } - (NSString *)parserErrorTemplatePath { return [self.parserErrorTemplateURL path]; } - (NSString *)parserErrorTemplateString { return [NSString stringWithContentsOfFile:self.parserErrorTemplatePath encoding:NSUTF8StringEncoding error:NULL]; } - (NSString *)parserErrorTemplateWrapperName { return @"GRMustacheTemplateFromMethodsTest_parserErrorWrapper"; } -- (NSURL *)parserErrorTemplateWrapperURL { return [self.testBundle URLForResource:self.parserErrorTemplateWrapperName withExtension:@"mustache"]; } +- (NSURL *)parserErrorTemplateWrapperURL { return [[NSBundle bundleForClass:[self class]] URLForResource:self.parserErrorTemplateWrapperName withExtension:@"mustache"]; } - (NSString *)parserErrorTemplateWrapperPath { return [self.parserErrorTemplateWrapperURL path]; } - (NSString *)parserErrorTemplateWrapperString { return [NSString stringWithContentsOfFile:self.parserErrorTemplateWrapperPath encoding:NSUTF8StringEncoding error:NULL]; } - (NSString *)compilerErrorTemplateName { return @"GRMustacheTemplateFromMethodsTest_compilerError"; } -- (NSURL *)compilerErrorTemplateURL { return [self.testBundle URLForResource:self.compilerErrorTemplateName withExtension:@"mustache"]; } +- (NSURL *)compilerErrorTemplateURL { return [[NSBundle bundleForClass:[self class]] URLForResource:self.compilerErrorTemplateName withExtension:@"mustache"]; } - (NSString *)compilerErrorTemplatePath { return [self.compilerErrorTemplateURL path]; } - (NSString *)compilerErrorTemplateString { return [NSString stringWithContentsOfFile:self.compilerErrorTemplatePath encoding:NSUTF8StringEncoding error:NULL]; } - (NSString *)compilerErrorTemplateWrapperName { return @"GRMustacheTemplateFromMethodsTest_compilerErrorWrapper"; } -- (NSURL *)compilerErrorTemplateWrapperURL { return [self.testBundle URLForResource:self.compilerErrorTemplateWrapperName withExtension:@"mustache"]; } +- (NSURL *)compilerErrorTemplateWrapperURL { return [[NSBundle bundleForClass:[self class]] URLForResource:self.compilerErrorTemplateWrapperName withExtension:@"mustache"]; } - (NSString *)compilerErrorTemplateWrapperPath { return [self.compilerErrorTemplateWrapperURL path]; } - (NSString *)compilerErrorTemplateWrapperString { return [NSString stringWithContentsOfFile:self.compilerErrorTemplateWrapperPath encoding:NSUTF8StringEncoding error:NULL]; } @@ -177,7 +177,7 @@ - (void)test_templateFromContentsOfURL_error - (void)test_templateFromResource_bundle_error { GRMustacheTemplate *template = [GRMustacheTemplate templateFromResource:self.templateName - bundle:self.testBundle + bundle:[NSBundle bundleForClass:[self class]] error:NULL]; GRMustacheTemplateFromMethodsTestSupport *context = [[[GRMustacheTemplateFromMethodsTestSupport alloc] init] autorelease]; context.stringProperty = @"foo"; @@ -275,7 +275,7 @@ - (void)testParserError_templateFromResource_bundle_error { NSError *error; GRMustacheTemplate *template = [GRMustacheTemplate templateFromResource:self.parserErrorTemplateName - bundle:self.testBundle + bundle:[NSBundle bundleForClass:[self class]] error:&error]; XCTAssertNil(template, @""); XCTAssertNotNil(error, @""); @@ -292,7 +292,7 @@ - (void)testParserError_templateFromResource_bundle_error { NSError *error; GRMustacheTemplate *template = [GRMustacheTemplate templateFromResource:self.parserErrorTemplateWrapperName - bundle:self.testBundle + bundle:[NSBundle bundleForClass:[self class]] error:&error]; XCTAssertNil(template, @""); XCTAssertNotNil(error, @""); @@ -397,7 +397,7 @@ - (void)testCompilerError_templateFromResource_bundle_error { NSError *error; GRMustacheTemplate *template = [GRMustacheTemplate templateFromResource:self.compilerErrorTemplateName - bundle:self.testBundle + bundle:[NSBundle bundleForClass:[self class]] error:&error]; XCTAssertNil(template, @""); XCTAssertNotNil(error, @""); @@ -414,7 +414,7 @@ - (void)testCompilerError_templateFromResource_bundle_error { NSError *error; GRMustacheTemplate *template = [GRMustacheTemplate templateFromResource:self.compilerErrorTemplateWrapperName - bundle:self.testBundle + bundle:[NSBundle bundleForClass:[self class]] error:&error]; XCTAssertNil(template, @""); XCTAssertNotNil(error, @""); diff --git a/src/tests/Public/v7.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest.m b/src/tests/Public/v7.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest.m index b5075335..ecff6abb 100644 --- a/src/tests/Public/v7.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest.m +++ b/src/tests/Public/v7.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest.m @@ -50,7 +50,7 @@ @implementation GRMustacheTemplateRenderMethodsTest - (NSURL *)templateURL { - return [self.testBundle URLForResource:self.templateName withExtension:@"mustache"]; + return [[NSBundle bundleForClass:[self class]] URLForResource:self.templateName withExtension:@"mustache"]; } - (NSString *)templatePath diff --git a/src/tests/Public/v7.0/Suites/mustache/spec/GRSpecificationSuitesTest.m b/src/tests/Public/v7.0/Suites/mustache/spec/GRSpecificationSuitesTest.m index b28c7b2e..66ce341d 100644 --- a/src/tests/Public/v7.0/Suites/mustache/spec/GRSpecificationSuitesTest.m +++ b/src/tests/Public/v7.0/Suites/mustache/spec/GRSpecificationSuitesTest.m @@ -40,7 +40,8 @@ - (void)testSpecificationSuites - (void)runTestsFromResource:(NSString *)name subdirectory:(NSString *)subpath { - NSString *path = [[self.testBundle pathForResource:subpath ofType:nil] stringByAppendingPathComponent:name]; + NSBundle *testBundle = [NSBundle bundleForClass:[self class]]; + NSString *path = [[testBundle pathForResource:subpath ofType:nil] stringByAppendingPathComponent:name]; NSError *error; NSData *testSuiteData = [NSData dataWithContentsOfFile:path]; diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuitesTest.m b/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuitesTest.m index 797e56b5..5cd383b4 100644 --- a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuitesTest.m +++ b/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuitesTest.m @@ -35,14 +35,16 @@ @implementation GRMustacheJavaSuitesTest - (GRMustacheTemplate *)templateNamed:(NSString *)name { - NSString *directory = [self.testBundle pathForResource:@"GRMustacheJavaSuites" ofType:nil]; + NSBundle *testBundle = [NSBundle bundleForClass:[self class]]; + NSString *directory = [testBundle pathForResource:@"GRMustacheJavaSuites" ofType:nil]; GRMustacheTemplateRepository *repo = [GRMustacheTemplateRepository templateRepositoryWithDirectory:directory templateExtension:@"html" encoding:NSUTF8StringEncoding]; return [repo templateNamed:name error:NULL]; } - (NSString *)expectedRenderingNamed:(NSString *)name { - NSString *directory = [self.testBundle pathForResource:@"GRMustacheJavaSuites" ofType:nil]; + NSBundle *testBundle = [NSBundle bundleForClass:[self class]]; + NSString *directory = [testBundle pathForResource:@"GRMustacheJavaSuites" ofType:nil]; return [NSString stringWithContentsOfFile:[directory stringByAppendingPathComponent:name] encoding:NSUTF8StringEncoding error:NULL]; } From 0b337d05dde710cfaed98eacf5ac77f22e924285 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sat, 26 Sep 2015 11:54:28 +0200 Subject: [PATCH 12/81] Remove reference to obsolete Makefile in the project --- src/GRMustache.xcodeproj/project.pbxproj | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/GRMustache.xcodeproj/project.pbxproj b/src/GRMustache.xcodeproj/project.pbxproj index e0dc0c10..824068d0 100644 --- a/src/GRMustache.xcodeproj/project.pbxproj +++ b/src/GRMustache.xcodeproj/project.pbxproj @@ -526,7 +526,6 @@ 5682B4BF1528DF4900ADD123 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; 5682B4C41528E0C500ADD123 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/System/Library/Frameworks/CoreData.framework; sourceTree = DEVELOPER_DIR; }; 5688264C199DFCDF00922497 /* GRMustacheTemplateRepositoryWithBundleTestResources */ = {isa = PBXFileReference; lastKnownFileType = folder; path = GRMustacheTemplateRepositoryWithBundleTestResources; sourceTree = ""; }; - 56A731B818123F1900B8570A /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; name = Makefile; path = ../Makefile; sourceTree = ""; }; 56A7591119C173E6008D119F /* LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; 56A7591219C173E6008D119F /* NSJSONSerialization+Comments.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSJSONSerialization+Comments.h"; sourceTree = ""; }; 56A7591319C173E6008D119F /* NSJSONSerialization+Comments.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSJSONSerialization+Comments.m"; sourceTree = ""; }; @@ -1139,7 +1138,6 @@ isa = PBXGroup; children = ( 5662BA3E15A05268001FD2CA /* AppledocSettings.plist */, - 56A731B818123F1900B8570A /* Makefile */, 56E2F2E616BA49A500F01DC2 /* TODO.md */, 567AEC4E15278C9A0009CA61 /* GRMustache */, 56DEC3AE152638CD0031E8DC /* Tests */, From ea39d037dc8bdcf0061b1452fe59481e23363883 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sat, 26 Sep 2015 12:24:23 +0200 Subject: [PATCH 13/81] Move to shared groue/GRMustacheSpec test suite. --- .gitmodules | 3 + TODO.md | 2 + src/GRMustache.xcodeproj/project.pbxproj | 77 +--- .../GRMustache/GRMustacheSuites/comments.json | 31 -- .../GRMustacheSuites/compound_keys.json | 83 ---- .../GRMustacheSuites/delimiters.json | 53 --- .../expression_parsing_errors.json | 353 ---------------- .../GRMustache/GRMustacheSuites/filters.json | 26 -- .../GRMustache/GRMustacheSuites/general.json | 28 -- .../GRMustacheSuites/implicit_iterator.json | 46 -- .../inheritable_partials.json | 217 ---------- .../inheritable_sections.json | 34 -- .../GRMustacheSuites/inverted_sections.json | 309 -------------- .../GRMustache/GRMustacheSuites/partials.json | 397 ------------------ .../GRMustache/GRMustacheSuites/pragmas.json | 10 - .../GRMustache/GRMustacheSuites/sections.json | 384 ----------------- .../GRMustacheSuites/standard_library.json | 343 --------------- .../GRMustacheSuites/tag_parsing_errors.json | 228 ---------- .../GRMustacheSuites/text_rendering.json | 144 ------- .../GRMustacheSuites/variables.json | 122 ------ .../v7.2/GRMustacheRenderingObject_7_2_Test.m | 134 ------ .../standard_library.json | 124 ------ .../GRMustache/GRMustacheSuites_7_2_Test.m | 36 -- .../Public/{v7.0 => v8.0}/GRBooleanTest.m | 0 .../GRMustacheConfigurationBaseContextTest.m | 0 ...stacheConfigurationExtendBaseContextTest.m | 0 ...GRMustacheConfigurationTagDelimitersTest.m | 0 .../GRMustacheConfigurationTest.m | 0 ...ContextHasValueForMustacheExpressionTest.m | 0 .../GRMustacheContextKeyAccessTest.m | 0 .../GRMustacheContextProtectedObjectTest.m | 0 .../GRMustacheContextTest.m | 0 .../GRMustacheContextTopMustacheObjectTest.m | 0 ...GRMustacheContextValueForMustacheKeyTest.m | 0 .../GRMustacheKeyedSubscriptingTest.m | 0 .../GRMustacheErrorHandlingTest.m | 0 .../GRMustacheFilterTest.m | 0 .../GRMustacheVariadicFilterTest.m | 0 .../GRMustacheFoundationCollectionTest.m | 0 .../GRMustacheParsingErrorsTest.m | 0 .../GRMustachePositionFilterTest.m | 0 .../GRMustacheRenderingObjectTest.m | 95 +++++ .../GRMustacheEachFilterTest.m | 0 .../GRMustacheLocalizerTest.m | 0 .../Localizable.strings | 0 .../Table.strings | 0 .../GRMustacheNSFormatterTest.m | 0 .../GRMustacheNSValueTransformerTest.m | 0 .../GRMustacheStandardLibraryTest.m | 0 .../GRMustacheTagDelegateTest.m | 0 .../GRMustacheTagDelegateTest.mustache | 0 ...GRMustacheTagDelegateTest_wrapper.mustache | 0 ...MustacheTemplateRepositoryDataSourceTest.m | 0 .../GRMustacheTemplateRepositoryTest.m | 0 .../base.mustache | 0 .../partials/partial1.mustache | 0 .../partials/partial2.mustache | 0 .../dir/dir/file1 | 0 .../dir/dir/file1.mustache | 0 .../dir/dir/file1.txt | 0 .../dir/dir/file2 | 0 .../dir/dir/file2.mustache | 0 .../dir/dir/file2.txt | 0 .../dir/file1 | 0 .../dir/file1.mustache | 0 .../dir/file1.txt | 0 .../dir/file2 | 0 .../dir/file2.mustache | 0 .../dir/file2.txt | 0 .../file1 | 0 .../file1.mustache | 0 .../file1.txt | 0 .../file2 | 0 .../file2.mustache | 0 .../file2.txt | 0 .../dir/dir/file1 | 0 .../dir/dir/file1.mustache | 0 .../dir/dir/file1.txt | 0 .../dir/dir/file2 | 0 .../dir/dir/file2.mustache | 0 .../dir/dir/file2.txt | 0 .../dir/file1 | 0 .../dir/file1.mustache | 0 .../dir/file1.txt | 0 .../dir/file2 | 0 .../dir/file2.mustache | 0 .../dir/file2.txt | 0 .../file1 | 0 .../file1.mustache | 0 .../file1.txt | 0 .../file2 | 0 .../file2.mustache | 0 .../file2.txt | 0 ...ustacheTemplateRepositoryWithBaseURLTest.m | 0 ...GRMustacheTemplateRepositoryWithBundleTest | 0 ...MustacheTemplateRepositoryWithBundleTest.m | 0 ...eTemplateRepositoryWithBundleTest.mustache | 0 ...tacheTemplateRepositoryWithBundleTest.text | 0 .../partial.mustache | 0 .../sibling.mustache | 0 ...heTemplateRepositoryWithBundleTest_partial | 0 ...eRepositoryWithBundleTest_partial.mustache | 0 ...plateRepositoryWithBundleTest_partial.text | 0 ...acheTemplateRepositoryWithDictionaryTest.m | 0 ...tacheTemplateRepositoryWithDirectoryTest.m | 0 .../GRMustacheTemplateExtendBaseContextTest.m | 0 .../GRMustacheTemplateFromMethodsTest | 0 .../GRMustacheTemplateFromMethodsTest.json | 0 .../GRMustacheTemplateFromMethodsTest.m | 0 ...GRMustacheTemplateFromMethodsTest.mustache | 0 ...lateFromMethodsTest_compilerError.mustache | 0 ...mMethodsTest_compilerErrorWrapper.mustache | 0 ...mplateFromMethodsTest_parserError.mustache | 0 ...romMethodsTest_parserErrorWrapper.mustache | 0 .../GRMustacheTemplateRenderMethodsTest | 0 .../GRMustacheTemplateRenderMethodsTest.json | 0 .../GRMustacheTemplateRenderMethodsTest.m | 0 ...MustacheTemplateRenderMethodsTest.mustache | 0 ...GRMustacheTemplateTemplateRepositoryTest.m | 0 .../groue/GRMustache/GRMustacheSuitesTest.m | 34 +- .../mustache/spec/GRSpecificationSuitesTest.m | 0 .../GRMustacheJavaSuites/box.html | 0 .../GRMustacheJavaSuites/client.html | 0 .../GRMustacheJavaSuites/client.txt | 0 .../GRMustacheJavaSuites/div.html | 0 .../GRMustacheJavaSuites/follow.html | 0 .../GRMustacheJavaSuites/follownomenu.html | 0 .../GRMustacheJavaSuites/follownomenu.txt | 0 .../GRMustacheJavaSuites/main.html | 0 .../GRMustacheJavaSuites/method.html | 0 .../multipleextensions.html | 0 .../multipleextensions.txt | 0 .../nested_inheritance.html | 0 .../nested_inheritance.txt | 0 .../GRMustacheJavaSuites/parentreplace.html | 0 .../GRMustacheJavaSuites/partialsub.html | 0 .../partialsubpartial.html | 0 .../partialsubpartial.txt | 0 .../GRMustacheJavaSuites/partialsuper.html | 0 .../GRMustacheJavaSuites/recurse_base.html | 0 .../recursive_partial.html | 0 .../recursive_partial2.html | 0 .../recursive_partial3.html | 0 .../recursive_partial_inheritance.html | 0 .../recursive_partial_inheritance.txt | 0 .../GRMustacheJavaSuites/replace.html | 0 .../GRMustacheJavaSuites/replace.txt | 0 .../GRMustacheJavaSuites/singlereplace.html | 0 .../GRMustacheJavaSuites/sub.html | 0 .../GRMustacheJavaSuites/sub.txt | 0 .../GRMustacheJavaSuites/subblockchild1.html | 0 .../GRMustacheJavaSuites/subblockchild1.txt | 0 .../GRMustacheJavaSuites/subblockchild2.html | 0 .../GRMustacheJavaSuites/subblockchild2.txt | 0 .../GRMustacheJavaSuites/subblocksuper.html | 0 .../GRMustacheJavaSuites/subsub.html | 0 .../GRMustacheJavaSuites/subsub.txt | 0 .../GRMustacheJavaSuites/subsubchild1.html | 0 .../GRMustacheJavaSuites/subsubchild1.txt | 0 .../GRMustacheJavaSuites/subsubchild2.html | 0 .../GRMustacheJavaSuites/subsubchild2.txt | 0 .../GRMustacheJavaSuites/subsubchild3.html | 0 .../GRMustacheJavaSuites/subsubchild3.txt | 0 .../GRMustacheJavaSuites/subsubmiddle.html | 0 .../GRMustacheJavaSuites/subsubsuper.html | 0 .../GRMustacheJavaSuites/super.html | 0 .../GRMustacheJavaSuites/template.html | 0 .../GRMustacheJavaSuites/tweetbox.html | 0 .../mustache.java/GRMustacheJavaSuitesTest.m | 0 .../GRHoganSuites/inheritable_partials.json | 0 .../twitter/hogan.js/GRHoganSuitesTest.m | 0 src/tests/vendor/groue/GRMustacheSpec | 1 + 172 files changed, 133 insertions(+), 3181 deletions(-) delete mode 100644 src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/comments.json delete mode 100644 src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/compound_keys.json delete mode 100644 src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/delimiters.json delete mode 100644 src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/expression_parsing_errors.json delete mode 100644 src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/filters.json delete mode 100644 src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/general.json delete mode 100644 src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/implicit_iterator.json delete mode 100644 src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/inheritable_partials.json delete mode 100644 src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/inheritable_sections.json delete mode 100644 src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/inverted_sections.json delete mode 100644 src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/partials.json delete mode 100644 src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/pragmas.json delete mode 100644 src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/sections.json delete mode 100644 src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/standard_library.json delete mode 100644 src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/tag_parsing_errors.json delete mode 100644 src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/text_rendering.json delete mode 100644 src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/variables.json delete mode 100644 src/tests/Public/v7.2/GRMustacheRenderingObject_7_2_Test.m delete mode 100644 src/tests/Public/v7.2/Suites/groue/GRMustache/GRMustacheSuites_7_2/standard_library.json delete mode 100644 src/tests/Public/v7.2/Suites/groue/GRMustache/GRMustacheSuites_7_2_Test.m rename src/tests/Public/{v7.0 => v8.0}/GRBooleanTest.m (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheConfigurationTest/GRMustacheConfigurationBaseContextTest.m (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheConfigurationTest/GRMustacheConfigurationExtendBaseContextTest.m (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheConfigurationTest/GRMustacheConfigurationTagDelimitersTest.m (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheConfigurationTest/GRMustacheConfigurationTest.m (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheContextTest/GRMustacheContextHasValueForMustacheExpressionTest.m (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheContextTest/GRMustacheContextKeyAccessTest.m (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheContextTest/GRMustacheContextProtectedObjectTest.m (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheContextTest/GRMustacheContextTest.m (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheContextTest/GRMustacheContextTopMustacheObjectTest.m (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheContextTest/GRMustacheContextValueForMustacheKeyTest.m (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheContextTest/GRMustacheKeyedSubscriptingTest.m (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheErrorHandlingTest.m (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheFilterTest/GRMustacheFilterTest.m (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheFilterTest/GRMustacheVariadicFilterTest.m (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheFoundationCollectionTest.m (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheParsingErrorsTest.m (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustachePositionFilterTest.m (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheRenderingObjectTest.m (90%) rename src/tests/Public/{v7.2 => v8.0/GRMustacheServicesTest}/GRMustacheEachFilterTest.m (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheServicesTest/GRMustacheLocalizerTest.m (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheServicesTest/GRMustacheLocalizerTestBundle/Localizable.strings (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheServicesTest/GRMustacheLocalizerTestBundle/Table.strings (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheServicesTest/GRMustacheNSFormatterTest.m (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheServicesTest/GRMustacheNSValueTransformerTest.m (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheServicesTest/GRMustacheStandardLibraryTest.m (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTagDelegateTest/GRMustacheTagDelegateTest.m (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTagDelegateTest/GRMustacheTagDelegateTest.mustache (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTagDelegateTest/GRMustacheTagDelegateTest_wrapper.mustache (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryDataSourceTest.m (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest.m (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest/base.mustache (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest/partials/partial1.mustache (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest/partials/partial2.mustache (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file1 (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file1.mustache (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file1.txt (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file2 (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file2.mustache (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file2.txt (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file1 (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file1.mustache (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file1.txt (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file2 (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file2.mustache (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file2.txt (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file1 (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file1.mustache (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file1.txt (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file2 (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file2.mustache (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file2.txt (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file1 (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file1.mustache (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file1.txt (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file2 (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file2.mustache (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file2.txt (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file1 (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file1.mustache (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file1.txt (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file2 (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file2.mustache (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file2.txt (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file1 (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file1.mustache (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file1.txt (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file2 (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file2.mustache (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file2.txt (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBaseURLTest.m (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest.m (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest.mustache (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest.text (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTestResources/partial.mustache (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTestResources/sibling.mustache (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest_partial (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest_partial.mustache (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest_partial.text (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithDictionaryTest.m (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithDirectoryTest.m (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateTest/GRMustacheTemplateExtendBaseContextTest.m (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest.json (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest.m (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest.mustache (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest_compilerError.mustache (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest_compilerErrorWrapper.mustache (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest_parserError.mustache (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest_parserErrorWrapper.mustache (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest.json (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest.m (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest.mustache (100%) rename src/tests/Public/{v7.0 => v8.0}/GRMustacheTemplateTest/GRMustacheTemplateTemplateRepositoryTest.m (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/groue/GRMustache/GRMustacheSuitesTest.m (67%) rename src/tests/Public/{v7.0 => v8.0}/Suites/mustache/spec/GRSpecificationSuitesTest.m (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/box.html (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/client.html (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/client.txt (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/div.html (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/follow.html (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/follownomenu.html (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/follownomenu.txt (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/main.html (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/method.html (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/multipleextensions.html (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/multipleextensions.txt (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/nested_inheritance.html (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/nested_inheritance.txt (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/parentreplace.html (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/partialsub.html (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/partialsubpartial.html (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/partialsubpartial.txt (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/partialsuper.html (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/recurse_base.html (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial.html (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial2.html (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial3.html (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial_inheritance.html (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial_inheritance.txt (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/replace.html (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/replace.txt (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/singlereplace.html (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/sub.html (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/sub.txt (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblockchild1.html (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblockchild1.txt (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblockchild2.html (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblockchild2.txt (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblocksuper.html (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsub.html (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsub.txt (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild1.html (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild1.txt (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild2.html (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild2.txt (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild3.html (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild3.txt (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubmiddle.html (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubsuper.html (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/super.html (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/template.html (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuites/tweetbox.html (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/spullara/mustache.java/GRMustacheJavaSuitesTest.m (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/twitter/hogan.js/GRHoganSuites/inheritable_partials.json (100%) rename src/tests/Public/{v7.0 => v8.0}/Suites/twitter/hogan.js/GRHoganSuitesTest.m (100%) create mode 160000 src/tests/vendor/groue/GRMustacheSpec diff --git a/.gitmodules b/.gitmodules index 5063bde4..59bba764 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "src/tests/vendor/mustache/spec"] path = src/tests/vendor/mustache/spec url = https://github.com/mustache/spec.git +[submodule "src/tests/vendor/groue/GRMustacheSpec"] + path = src/tests/vendor/groue/GRMustacheSpec + url = https://github.com/groue/GRMustacheSpec.git diff --git a/TODO.md b/TODO.md index 9bfda1ec..abb1ac79 100644 --- a/TODO.md +++ b/TODO.md @@ -4,3 +4,5 @@ - [ ] Compatibility with GRMustache.swift on Arrays, Sets, and other standard collections. - [ ] ARC. Since GRMustache 8 is all about framework and targetting iOS8+ and OSX10.9+, there is no longer any reason for manual memory management. - [ ] Share JSON tests suite with GRMustache.swift. + - [ ] Arrays should only have "count", "first" and "last" keys. + - [ ] Sets should only have "count", and "first" keys. diff --git a/src/GRMustache.xcodeproj/project.pbxproj b/src/GRMustache.xcodeproj/project.pbxproj index 824068d0..6c4da972 100644 --- a/src/GRMustache.xcodeproj/project.pbxproj +++ b/src/GRMustache.xcodeproj/project.pbxproj @@ -11,8 +11,8 @@ 56214B8F1BA1A4D50070C6CF /* GRMustache.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 56214B6F1BA1A34A0070C6CF /* GRMustache.framework */; settings = {ASSET_TAGS = (); }; }; 56214BA01BA1A5350070C6CF /* GRMustachePublicAPITest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC3B2152638E20031E8DC /* GRMustachePublicAPITest.m */; settings = {ASSET_TAGS = (); }; }; 56214BA11BA1A5350070C6CF /* GRMustachePublicAPITest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC3B2152638E20031E8DC /* GRMustachePublicAPITest.m */; settings = {ASSET_TAGS = (); }; }; - 56214BA21BA1A5440070C6CF /* GRMustacheSuites in Resources */ = {isa = PBXBuildFile; fileRef = 563D66F315264B40008628C5 /* GRMustacheSuites */; settings = {ASSET_TAGS = (); }; }; - 56214BA31BA1A5450070C6CF /* GRMustacheSuites in Resources */ = {isa = PBXBuildFile; fileRef = 563D66F315264B40008628C5 /* GRMustacheSuites */; settings = {ASSET_TAGS = (); }; }; + 56214BA21BA1A5440070C6CF /* Tests in Resources */ = {isa = PBXBuildFile; fileRef = 563D66F315264B40008628C5 /* Tests */; settings = {ASSET_TAGS = (); }; }; + 56214BA31BA1A5450070C6CF /* Tests in Resources */ = {isa = PBXBuildFile; fileRef = 563D66F315264B40008628C5 /* Tests */; settings = {ASSET_TAGS = (); }; }; 56214BA41BA1A5480070C6CF /* GRMustacheSuitesTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 563D66E81526497E008628C5 /* GRMustacheSuitesTest.m */; settings = {ASSET_TAGS = (); }; }; 56214BA51BA1A5480070C6CF /* GRMustacheSuitesTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 563D66E81526497E008628C5 /* GRMustacheSuitesTest.m */; settings = {ASSET_TAGS = (); }; }; 56214BA61BA1A54C0070C6CF /* specs in Resources */ = {isa = PBXBuildFile; fileRef = 56B477A618D0E41A00EFF629 /* specs */; settings = {ASSET_TAGS = (); }; }; @@ -141,14 +141,6 @@ 56214C211BA1A5AB0070C6CF /* GRMustacheTemplateRepositoryTest in Resources */ = {isa = PBXBuildFile; fileRef = 568140DD16365CF500310B7F /* GRMustacheTemplateRepositoryTest */; settings = {ASSET_TAGS = (); }; }; 56214C221BA1A5AB0070C6CF /* GRMustacheTemplateRepositoryTest_ISOLatin1 in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4951528486900ADD123 /* GRMustacheTemplateRepositoryTest_ISOLatin1 */; settings = {ASSET_TAGS = (); }; }; 56214C231BA1A5AB0070C6CF /* GRMustacheTemplateRepositoryTest_UTF8 in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4961528486A00ADD123 /* GRMustacheTemplateRepositoryTest_UTF8 */; settings = {ASSET_TAGS = (); }; }; - 56214C241BA1A5B00070C6CF /* GRMustacheSuites_7_2 in Resources */ = {isa = PBXBuildFile; fileRef = 56C1FDEA19A66DC500006AB4 /* GRMustacheSuites_7_2 */; settings = {ASSET_TAGS = (); }; }; - 56214C251BA1A5B10070C6CF /* GRMustacheSuites_7_2 in Resources */ = {isa = PBXBuildFile; fileRef = 56C1FDEA19A66DC500006AB4 /* GRMustacheSuites_7_2 */; settings = {ASSET_TAGS = (); }; }; - 56214C261BA1A5B40070C6CF /* GRMustacheSuites_7_2_Test.m in Sources */ = {isa = PBXBuildFile; fileRef = 56C1FDE719A66DBE00006AB4 /* GRMustacheSuites_7_2_Test.m */; settings = {ASSET_TAGS = (); }; }; - 56214C271BA1A5B40070C6CF /* GRMustacheSuites_7_2_Test.m in Sources */ = {isa = PBXBuildFile; fileRef = 56C1FDE719A66DBE00006AB4 /* GRMustacheSuites_7_2_Test.m */; settings = {ASSET_TAGS = (); }; }; - 56214C281BA1A5B80070C6CF /* GRMustacheEachFilterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56C1FDFC19A720B900006AB4 /* GRMustacheEachFilterTest.m */; settings = {ASSET_TAGS = (); }; }; - 56214C291BA1A5B80070C6CF /* GRMustacheRenderingObject_7_2_Test.m in Sources */ = {isa = PBXBuildFile; fileRef = 56C1FDF119A6721100006AB4 /* GRMustacheRenderingObject_7_2_Test.m */; settings = {ASSET_TAGS = (); }; }; - 56214C2A1BA1A5B90070C6CF /* GRMustacheEachFilterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56C1FDFC19A720B900006AB4 /* GRMustacheEachFilterTest.m */; settings = {ASSET_TAGS = (); }; }; - 56214C2B1BA1A5B90070C6CF /* GRMustacheRenderingObject_7_2_Test.m in Sources */ = {isa = PBXBuildFile; fileRef = 56C1FDF119A6721100006AB4 /* GRMustacheRenderingObject_7_2_Test.m */; settings = {ASSET_TAGS = (); }; }; 56214C2C1BA1A6870070C6CF /* GRMustache.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DEC292152631300031E8DC /* GRMustache.h */; settings = {ATTRIBUTES = (Public, ); }; }; 56214C2D1BA1A68E0070C6CF /* GRMustacheVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DEC2BB152631300031E8DC /* GRMustacheVersion.h */; settings = {ATTRIBUTES = (Public, ); }; }; 56214C2F1BA1A6A70070C6CF /* GRMustache_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DEC294152631300031E8DC /* GRMustache_private.h */; }; @@ -303,8 +295,6 @@ 56DAC7501BB69F6D0010FE01 /* GRMustacheTemplateRenderMethodsTest.json in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4721528371F00ADD123 /* GRMustacheTemplateRenderMethodsTest.json */; settings = {ASSET_TAGS = (); }; }; 56DAC7511BB69F6D0010FE01 /* GRMustacheTemplateRepositoryWithBundleTest.text in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4A315284A9400ADD123 /* GRMustacheTemplateRepositoryWithBundleTest.text */; settings = {ASSET_TAGS = (); }; }; 56DAC7521BB69F6D0010FE01 /* GRMustacheTemplateRenderMethodsTest in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4711528371F00ADD123 /* GRMustacheTemplateRenderMethodsTest */; settings = {ASSET_TAGS = (); }; }; - 56DAC7531BB69F6D0010FE01 /* GRMustacheSuites in Resources */ = {isa = PBXBuildFile; fileRef = 563D66F315264B40008628C5 /* GRMustacheSuites */; settings = {ASSET_TAGS = (); }; }; - 56DAC7541BB69F6D0010FE01 /* GRMustacheSuites_7_2 in Resources */ = {isa = PBXBuildFile; fileRef = 56C1FDEA19A66DC500006AB4 /* GRMustacheSuites_7_2 */; settings = {ASSET_TAGS = (); }; }; 56DAC7551BB69F6D0010FE01 /* GRMustacheTagDelegateTest.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 56A8D4921527A23900D9C718 /* GRMustacheTagDelegateTest.mustache */; settings = {ASSET_TAGS = (); }; }; 56DAC7561BB69F6D0010FE01 /* GRMustacheTemplateRepositoryWithBundleTest_partial.text in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4AB15284ABC00ADD123 /* GRMustacheTemplateRepositoryWithBundleTest_partial.text */; settings = {ASSET_TAGS = (); }; }; 56DAC7571BB69F6D0010FE01 /* GRMustacheTemplateRepositoryWithBundleTest in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4A215284A9300ADD123 /* GRMustacheTemplateRepositoryWithBundleTest */; settings = {ASSET_TAGS = (); }; }; @@ -364,6 +354,8 @@ 56DAC7921BB6A0040010FE01 /* GRMustacheError.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF375B19B8EF2800854524 /* GRMustacheError.m */; }; 56DAC7931BB6A0040010FE01 /* GRMustacheTranslateCharacters.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF375C19B8EF2800854524 /* GRMustacheTranslateCharacters.m */; }; 56DAC7941BB6A0040010FE01 /* GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC293152631300031E8DC /* GRMustache.m */; }; + 56DAC7961BB6A7DC0010FE01 /* GRMustacheEachFilterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DAC7951BB6A7DC0010FE01 /* GRMustacheEachFilterTest.m */; settings = {ASSET_TAGS = (); }; }; + 56DAC7971BB6A7DC0010FE01 /* GRMustacheEachFilterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DAC7951BB6A7DC0010FE01 /* GRMustacheEachFilterTest.m */; settings = {ASSET_TAGS = (); }; }; 6586A0651B9E2DAD0067C98E /* GRMustache.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DEC292152631300031E8DC /* GRMustache.h */; settings = {ATTRIBUTES = (Public, ); }; }; 6586A0661B9E2DB30067C98E /* GRMustache_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DEC294152631300031E8DC /* GRMustache_private.h */; settings = {ASSET_TAGS = (); }; }; 6586A0671B9E2DB90067C98E /* GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC293152631300031E8DC /* GRMustache.m */; }; @@ -491,7 +483,7 @@ 563D66E81526497E008628C5 /* GRMustacheSuitesTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheSuitesTest.m; sourceTree = ""; }; 563D66EC152649DF008628C5 /* GRMustacheContextPrivateTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheContextPrivateTest.m; sourceTree = ""; }; 563D66EE152649DF008628C5 /* GRMustacheExpressionParserTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheExpressionParserTest.m; sourceTree = ""; }; - 563D66F315264B40008628C5 /* GRMustacheSuites */ = {isa = PBXFileReference; lastKnownFileType = folder; path = GRMustacheSuites; sourceTree = ""; }; + 563D66F315264B40008628C5 /* Tests */ = {isa = PBXFileReference; lastKnownFileType = folder; name = Tests; path = tests/vendor/groue/GRMustacheSpec/Tests; sourceTree = SOURCE_ROOT; }; 5648F1B618998BC5001F4B83 /* GRMustacheTemplateRepositoryTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheTemplateRepositoryTest.m; sourceTree = ""; }; 5662BA3E15A05268001FD2CA /* AppledocSettings.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = AppledocSettings.plist; path = ../AppledocSettings.plist; sourceTree = ""; }; 568140D7163659CB00310B7F /* GRMustacheRenderingObjectTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheRenderingObjectTest.m; sourceTree = ""; }; @@ -652,14 +644,11 @@ 56BF375B19B8EF2800854524 /* GRMustacheError.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheError.m; sourceTree = ""; }; 56BF375C19B8EF2800854524 /* GRMustacheTranslateCharacters.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheTranslateCharacters.m; sourceTree = ""; }; 56BF375D19B8EF2800854524 /* GRMustacheTranslateCharacters_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustacheTranslateCharacters_private.h; sourceTree = ""; }; - 56C1FDE719A66DBE00006AB4 /* GRMustacheSuites_7_2_Test.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheSuites_7_2_Test.m; sourceTree = ""; }; - 56C1FDEA19A66DC500006AB4 /* GRMustacheSuites_7_2 */ = {isa = PBXFileReference; lastKnownFileType = folder; path = GRMustacheSuites_7_2; sourceTree = ""; }; - 56C1FDF119A6721100006AB4 /* GRMustacheRenderingObject_7_2_Test.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheRenderingObject_7_2_Test.m; sourceTree = ""; }; - 56C1FDFC19A720B900006AB4 /* GRMustacheEachFilterTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheEachFilterTest.m; sourceTree = ""; }; 56C88929190A349B0084FC5A /* GRMustacheTemplateGeneratorTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheTemplateGeneratorTest.m; sourceTree = ""; }; 56DAC7111BB69DAC0010FE01 /* GRMustacheTestingDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheTestingDelegate.m; sourceTree = ""; }; 56DAC7121BB69DAC0010FE01 /* GRMustacheTestingDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustacheTestingDelegate.h; sourceTree = ""; }; 56DAC7681BB69F6D0010FE01 /* GRMustacheiOSPrivateTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = GRMustacheiOSPrivateTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 56DAC7951BB6A7DC0010FE01 /* GRMustacheEachFilterTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheEachFilterTest.m; sourceTree = ""; }; 56DEC1CB15262FF70031E8DC /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; 56DEC1F4152630710031E8DC /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; 56DEC292152631300031E8DC /* GRMustache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustache.h; sourceTree = ""; }; @@ -737,7 +726,7 @@ 5682B47A1528392300ADD123 /* groue/GRMustache */ = { isa = PBXGroup; children = ( - 563D66F315264B40008628C5 /* GRMustacheSuites */, + 563D66F315264B40008628C5 /* Tests */, 563D66E81526497E008628C5 /* GRMustacheSuitesTest.m */, ); path = groue/GRMustache; @@ -909,6 +898,7 @@ 56BA245318C7A5BE006DA5F3 /* GRMustacheServicesTest */ = { isa = PBXGroup; children = ( + 56DAC7951BB6A7DC0010FE01 /* GRMustacheEachFilterTest.m */, 56BA245418C7A5BE006DA5F3 /* GRMustacheLocalizerTest.m */, 56BA247318C7A5CB006DA5F3 /* GRMustacheLocalizerTestBundle */, 56BA245818C7A5BE006DA5F3 /* GRMustacheNSFormatterTest.m */, @@ -1106,34 +1096,6 @@ path = Shared; sourceTree = ""; }; - 56C1FDD419A4BE3D00006AB4 /* v7.2 */ = { - isa = PBXGroup; - children = ( - 56C1FDE519A66D8E00006AB4 /* Suites */, - 56C1FDFC19A720B900006AB4 /* GRMustacheEachFilterTest.m */, - 56C1FDF119A6721100006AB4 /* GRMustacheRenderingObject_7_2_Test.m */, - ); - path = v7.2; - sourceTree = ""; - }; - 56C1FDE519A66D8E00006AB4 /* Suites */ = { - isa = PBXGroup; - children = ( - 56C1FDE619A66D9F00006AB4 /* groue:GRMustache */, - ); - path = Suites; - sourceTree = ""; - }; - 56C1FDE619A66D9F00006AB4 /* groue:GRMustache */ = { - isa = PBXGroup; - children = ( - 56C1FDEA19A66DC500006AB4 /* GRMustacheSuites_7_2 */, - 56C1FDE719A66DBE00006AB4 /* GRMustacheSuites_7_2_Test.m */, - ); - name = "groue:GRMustache"; - path = groue/GRMustache; - sourceTree = ""; - }; 56DEC19A15262FC80031E8DC = { isa = PBXGroup; children = ( @@ -1227,13 +1189,12 @@ children = ( 56DEC3B1152638E20031E8DC /* GRMustachePublicAPITest.h */, 56DEC3B2152638E20031E8DC /* GRMustachePublicAPITest.m */, - 56DEC3BD152639420031E8DC /* v7.0 */, - 56C1FDD419A4BE3D00006AB4 /* v7.2 */, + 56DEC3BD152639420031E8DC /* v8.0 */, ); path = Public; sourceTree = ""; }; - 56DEC3BD152639420031E8DC /* v7.0 */ = { + 56DEC3BD152639420031E8DC /* v8.0 */ = { isa = PBXGroup; children = ( 56B477A918D0E55A00EFF629 /* Suites */, @@ -1251,7 +1212,7 @@ 56B4779318CF8BB500EFF629 /* GRMustacheTemplateTest */, 5682B49B1528487700ADD123 /* GRMustacheTemplateRepositoryTest */, ); - path = v7.0; + path = v8.0; sourceTree = ""; }; /* End PBXGroup section */ @@ -1563,8 +1524,7 @@ 56214C021BA1A58E0070C6CF /* GRMustacheTemplateRenderMethodsTest.json in Resources */, 56214C161BA1A59E0070C6CF /* GRMustacheTemplateRepositoryWithBundleTest.text in Resources */, 56214C011BA1A58E0070C6CF /* GRMustacheTemplateRenderMethodsTest in Resources */, - 56214BA31BA1A5450070C6CF /* GRMustacheSuites in Resources */, - 56214C251BA1A5B10070C6CF /* GRMustacheSuites_7_2 in Resources */, + 56214BA31BA1A5450070C6CF /* Tests in Resources */, 56214BE61BA1A5800070C6CF /* GRMustacheTagDelegateTest.mustache in Resources */, 56214C191BA1A59E0070C6CF /* GRMustacheTemplateRepositoryWithBundleTest_partial.text in Resources */, 56214C141BA1A59E0070C6CF /* GRMustacheTemplateRepositoryWithBundleTest in Resources */, @@ -1598,8 +1558,7 @@ 56214BFE1BA1A58D0070C6CF /* GRMustacheTemplateRenderMethodsTest.json in Resources */, 56214C101BA1A59D0070C6CF /* GRMustacheTemplateRepositoryWithBundleTest.text in Resources */, 56214BFD1BA1A58D0070C6CF /* GRMustacheTemplateRenderMethodsTest in Resources */, - 56214BA21BA1A5440070C6CF /* GRMustacheSuites in Resources */, - 56214C241BA1A5B00070C6CF /* GRMustacheSuites_7_2 in Resources */, + 56214BA21BA1A5440070C6CF /* Tests in Resources */, 56214BE31BA1A5800070C6CF /* GRMustacheTagDelegateTest.mustache in Resources */, 56214C131BA1A59D0070C6CF /* GRMustacheTemplateRepositoryWithBundleTest_partial.text in Resources */, 56214C0E1BA1A59D0070C6CF /* GRMustacheTemplateRepositoryWithBundleTest in Resources */, @@ -1640,8 +1599,6 @@ 56DAC7501BB69F6D0010FE01 /* GRMustacheTemplateRenderMethodsTest.json in Resources */, 56DAC7511BB69F6D0010FE01 /* GRMustacheTemplateRepositoryWithBundleTest.text in Resources */, 56DAC7521BB69F6D0010FE01 /* GRMustacheTemplateRenderMethodsTest in Resources */, - 56DAC7531BB69F6D0010FE01 /* GRMustacheSuites in Resources */, - 56DAC7541BB69F6D0010FE01 /* GRMustacheSuites_7_2 in Resources */, 56DAC7551BB69F6D0010FE01 /* GRMustacheTagDelegateTest.mustache in Resources */, 56DAC7561BB69F6D0010FE01 /* GRMustacheTemplateRepositoryWithBundleTest_partial.text in Resources */, 56DAC7571BB69F6D0010FE01 /* GRMustacheTemplateRepositoryWithBundleTest in Resources */, @@ -1726,7 +1683,6 @@ 56DAC7151BB69F170010FE01 /* GRMustacheTestingDelegate.m in Sources */, 56214BA51BA1A5480070C6CF /* GRMustacheSuitesTest.m in Sources */, 56214C071BA1A5920070C6CF /* GRMustacheTemplateRepositoryTest.m in Sources */, - 56214C271BA1A5B40070C6CF /* GRMustacheSuites_7_2_Test.m in Sources */, 56214BEA1BA1A5850070C6CF /* GRMustacheTemplateExtendBaseContextTest.m in Sources */, 56214BD21BA1A56D0070C6CF /* GRMustacheContextValueForMustacheKeyTest.m in Sources */, 56214BD31BA1A56D0070C6CF /* GRMustacheContextKeyAccessTest.m in Sources */, @@ -1747,13 +1703,12 @@ 56214BDE1BA1A57C0070C6CF /* GRMustacheLocalizerTest.m in Sources */, 56214BC31BA1A5690070C6CF /* GRMustacheConfigurationExtendBaseContextTest.m in Sources */, 56214BE11BA1A57C0070C6CF /* GRMustacheStandardLibraryTest.m in Sources */, - 56214C2B1BA1A5B90070C6CF /* GRMustacheRenderingObject_7_2_Test.m in Sources */, 56214C0B1BA1A5970070C6CF /* GRMustacheTemplateRepositoryWithBundleTest.m in Sources */, 56214BCE1BA1A56D0070C6CF /* GRMustacheContextHasValueForMustacheExpressionTest.m in Sources */, 56214BC51BA1A5690070C6CF /* GRMustacheConfigurationTest.m in Sources */, - 56214C2A1BA1A5B90070C6CF /* GRMustacheEachFilterTest.m in Sources */, 56214C081BA1A5920070C6CF /* GRMustacheTemplateRepositoryDataSourceTest.m in Sources */, 56214BE01BA1A57C0070C6CF /* GRMustacheNSValueTransformerTest.m in Sources */, + 56DAC7971BB6A7DC0010FE01 /* GRMustacheEachFilterTest.m in Sources */, 56214BBD1BA1A5560070C6CF /* GRMustacheRenderingObjectTest.m in Sources */, 56214BB51BA1A5560070C6CF /* GRSpecificationSuitesTest.m in Sources */, 56214BE51BA1A5800070C6CF /* GRMustacheTagDelegateTest.m in Sources */, @@ -1777,7 +1732,6 @@ 56DAC7141BB69F160010FE01 /* GRMustacheTestingDelegate.m in Sources */, 56214BA41BA1A5480070C6CF /* GRMustacheSuitesTest.m in Sources */, 56214C041BA1A5920070C6CF /* GRMustacheTemplateRepositoryTest.m in Sources */, - 56214C261BA1A5B40070C6CF /* GRMustacheSuites_7_2_Test.m in Sources */, 56214BE81BA1A5850070C6CF /* GRMustacheTemplateExtendBaseContextTest.m in Sources */, 56214BCB1BA1A56D0070C6CF /* GRMustacheContextValueForMustacheKeyTest.m in Sources */, 56214BCC1BA1A56D0070C6CF /* GRMustacheContextKeyAccessTest.m in Sources */, @@ -1798,13 +1752,12 @@ 56214BDA1BA1A57C0070C6CF /* GRMustacheLocalizerTest.m in Sources */, 56214BBF1BA1A5690070C6CF /* GRMustacheConfigurationExtendBaseContextTest.m in Sources */, 56214BDD1BA1A57C0070C6CF /* GRMustacheStandardLibraryTest.m in Sources */, - 56214C291BA1A5B80070C6CF /* GRMustacheRenderingObject_7_2_Test.m in Sources */, 56214C0A1BA1A5970070C6CF /* GRMustacheTemplateRepositoryWithBundleTest.m in Sources */, 56214BC71BA1A56D0070C6CF /* GRMustacheContextHasValueForMustacheExpressionTest.m in Sources */, 56214BC11BA1A5690070C6CF /* GRMustacheConfigurationTest.m in Sources */, - 56214C281BA1A5B80070C6CF /* GRMustacheEachFilterTest.m in Sources */, 56214C051BA1A5920070C6CF /* GRMustacheTemplateRepositoryDataSourceTest.m in Sources */, 56214BDC1BA1A57C0070C6CF /* GRMustacheNSValueTransformerTest.m in Sources */, + 56DAC7961BB6A7DC0010FE01 /* GRMustacheEachFilterTest.m in Sources */, 56214BB41BA1A5550070C6CF /* GRMustacheRenderingObjectTest.m in Sources */, 56214BAC1BA1A5550070C6CF /* GRSpecificationSuitesTest.m in Sources */, 56214BE21BA1A5800070C6CF /* GRMustacheTagDelegateTest.m in Sources */, diff --git a/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/comments.json b/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/comments.json deleted file mode 100644 index 84138089..00000000 --- a/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/comments.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "tests": [ - { - "name": "Single line comment block should be removed from the template.", - "data": { }, - "template": "<{{! Comment Block! }}>", - "expected": "<>" - }, - { - "name": "Multiline comment block should be removed from the template.", - "data": { }, - "template": "<{{!\nThis is a\nmulti-line comment...\n}}>", - "expected": "<>" - }, - - // Whitespace Sensitivity - - { - "name": "Single left outer whitespace should be honored.", - "data": { }, - "template": "< {{! Comment block}}>", - "expected": "< >" - }, - { - "name": "Single right outer whitespace should be honored.", - "data": { }, - "template": "<{{! Comment block}} >", - "expected": "< >" - } - ] -} diff --git a/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/compound_keys.json b/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/compound_keys.json deleted file mode 100644 index b0e776e8..00000000 --- a/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/compound_keys.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "tests": [ - { - "name": "3rd assertion of test 'zeros' of handlebars.js (c54cadcf8f2a13607888fd78fc5505caceb4bdd2)", - "data": { "num1" : { "num2" : 0 }}, - "template": "num: {{num1.num2}}", - "expected": "num: 0" - }, - { - "name": "1st assertion of test 'nested paths' of handlebars.js (c54cadcf8f2a13607888fd78fc5505caceb4bdd2)", - "data": { "alan": { "expression": "beautiful" } }, - "template": "Goodbye {{alan.expression}} world!", - "expected": "Goodbye beautiful world!" - }, - { - "name": "1st assertion of test 'nested paths with empty string value' of handlebars.js (c54cadcf8f2a13607888fd78fc5505caceb4bdd2)", - "data": { "alan": { "expression": "" } }, - "template": "Goodbye {{alan.expression}} world!", - "expected": "Goodbye world!" - }, - { - "name": "1st assertion of test 'complex but empty paths' of handlebars.js (c54cadcf8f2a13607888fd78fc5505caceb4bdd2)", - "data": { "person": { "name": null } }, - "template": "{{person.name}}", - "expected": "" - }, - { - "name": "2nd assertion of test 'complex but empty paths' of handlebars.js (c54cadcf8f2a13607888fd78fc5505caceb4bdd2)", - "data": { "person": { } }, - "template": "{{person.name}}", - "expected": "" - }, - { - "name": "key lookup is anchored", - "data": { "b": "b", "a": { } }, - "template": "-{{#a}}{{b}}{{/a}}-{{a.b}}-", - "expected": "-b--" - }, - { - "name": "key lookup is anchored", - "data": { "c": "c", "b": { "c" : "cb" } }, - "template": "-{{a.b.c}}-", - "expected": "--" - }, - { - "name": "key lookup is anchored", - "data": { "c": "c", "b": { "c" : "cb" }, "a": { } }, - "template": "-{{a.b.c}}-", - "expected": "--" - }, - { - "name": "key lookup is anchored", - "data": { "c": "c", "b": { "c" : "cb" }, "a": { "b": { } } }, - "template": "-{{a.b.c}}-", - "expected": "--" - }, - { - "name": "key lookup is anchored", - "data": { "c": "c", "b": { "c" : "cb" }, "a": { "b": { "c": "ca" } } }, - "template": "-{{a.b.c}}-", - "expected": "-ca-" - }, - { - "name": "key lookup is anchored", - "data": { "b": "b", "a": { } }, - "template": "-{{#a}}{{b}}{{/a}}-{{#a}}{{.b}}{{/a}}-{{a.b}}-", - "expected": "-b---" - }, - { - "name": "key lookup is anchored", - "data": { "b": "b", "a": { "b": "ba"} }, - "template": "-{{#a}}{{b}}{{/a}}-{{#a}}{{.b}}{{/a}}-{{a.b}}-", - "expected": "-ba-ba-ba-" - }, - { - "name": "anchored key should not extract properties inside an array", - "data": { "persons": [ { "name": "Alice" }, { "name": "Bob" } ] }, - "template": "-{{#persons}}{{name}},{{/persons}}-{{#persons.name}}{{.}},{{/persons.name}}-", - "expected":"-Alice,Bob,--" - } - ] -} - diff --git a/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/delimiters.json b/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/delimiters.json deleted file mode 100644 index 6f79a659..00000000 --- a/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/delimiters.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "tests": [ - { - "name": "Non-symetric delimiters should be honored.", - "data": { "text": "---" }, - "template": "<{{=<% %>=}}<%text%>>", - "expected": "<--->" - }, - { - "name": "Symetric delimiters should be honored.", - "data": { "text": "---" }, - "template": "<{{=| |=}}|text|>", - "expected": "<--->" - }, - { - "name": "Delimiters changes should chain.", - "data": { "start": "1", "middle": [ { "item": "2" }, { "item": "3" } ], "final": "4" }, - "template": "<{{=<% %>=}}<% start %><%=| |=%>|# middle || item ||/ middle ||={{ }}=|{{ final }}>", - "expected": "<1234>" - }, - { - // Test for https://github.com/groue/GRMustache/issues/38 - "name": "Delimiters can be set to current delimiters", - "data": { "text": "---" }, - "template": "<{{={{ }}=}}{{text}}>{{=| |=}}<|=| |=||text|>|=<% %>=|<<%=<% %>=%><%text%>>", - "expected": "<---><---><--->" - }, - - // Whitespace Insensitivity - - { - "name": "Whitespace in tag should be ignored.", - "data": { "text": "---" }, - "template": "<{{= \r\n\t@ \r\n\t@ \r\n\t=}}@text@>", - "expected": "<--->" - }, - - // Whitespace Sensitivity - - { - "name": "Single left outer whitespace should be honored.", - "data": { }, - "template": "< {{=<% %>=}}>", - "expected": "< >" - }, - { - "name": "Single right outer whitespace should be honored.", - "data": { }, - "template": "<{{=<% %>=}} >", - "expected": "< >" - } - ] -} diff --git a/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/expression_parsing_errors.json b/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/expression_parsing_errors.json deleted file mode 100644 index 3ea40eaf..00000000 --- a/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/expression_parsing_errors.json +++ /dev/null @@ -1,353 +0,0 @@ -{ - "tests": [ - - { - "name": "Expression can not end with a dot", - "data": null, - "template": "{{a.}}", - "expected_error": "Invalid expression" - }, - { - "name": "Expression can not be made of two dots", - "data": null, - "template": "{{..}}", - "expected_error": "Invalid expression" - }, - { - "name": "Expression can not be made of three dots", - "data": null, - "template": "{{...}}", - "expected_error": "Invalid expression" - }, - { - "name": "Expression can not be made of two indentifiers separated by a space", - "data": null, - "template": "{{a b}}", - "expected_error": "Invalid expression" - }, - { - "name": "White space can not follow the dot of a scoped expression", - "data": null, - "template": "{{a. b}}", - "expected_error": "Invalid expression" - }, - { - "name": "White space can not lead the dot of a scoped expression", - "data": null, - "template": "{{a .b}}", - "expected_error": "Invalid expression" - }, - { - "name": "Comma can not be found outside of filter arguments", - "data": null, - "template": "{{a,b}}", - "expected_error": "Invalid expression" - }, - { - "name": "Comma can not be found outside of filter arguments", - "data": null, - "template": "{{a,}}", - "expected_error": "Invalid expression" - }, - { - "name": "Comma can not be found outside of filter arguments", - "data": null, - "template": "{{,a}}", - "expected_error": "Invalid expression" - }, - { - "name": "Comma can not follow filter arguments", - "data": null, - "template": "{{a(b,)}}", - "expected_error": "Invalid expression" - }, - { - "name": "Comma can not lead filter arguments", - "data": null, - "template": "{{a(,b)}}", - "expected_error": "Invalid expression" - }, - { - "name": "Comma can not follow comma", - "data": null, - "template": "{{a(b,,c)}}", - "expected_error": "Invalid expression" - }, - { - "name": "Comma can not follow comma", - "data": null, - "template": "{{a(b, ,c)}}", - "expected_error": "Invalid expression" - }, - { - "name": "Identifier can not be `{`", - "data": null, - "template": "{{ { }}", - "expected_error": "Invalid expression" - }, - { - "name": "Identifier can not start with `{`", - "data": null, - "template": "{{ {a }}", - "expected_error": "Invalid expression" - }, - { - "name": "Identifier can not start with `{` (in dot-prefixed expression)", - "data": null, - "template": "{{ .{a }}", - "expected_error": "Invalid expression" - }, - { - "name": "Identifier can not start with `{` (in compound expression)", - "data": null, - "template": "{{ a.{a }}", - "expected_error": "Invalid expression" - }, - { - "name": "Identifier can not start with `{` (as filter argument)", - "data": null, - "template": "{{ a({a) }}", - "expected_error": "Invalid expression" - }, - { - "name": "Identifier can not be `}`", - "data": null, - "template": "{{ } }}", - "expected_error": "Invalid expression" - }, - { - "name": "Identifier can not start with `}`", - "data": null, - "template": "{{ }a }}", - "expected_error": "Invalid expression" - }, - { - "name": "Identifier can not start with `}` (in dot-prefixed expression)", - "data": null, - "template": "{{ .}a }}", - "expected_error": "Invalid expression" - }, - { - "name": "Identifier can not start with `}` (in compound expression)", - "data": null, - "template": "{{ a.}a }}", - "expected_error": "Invalid expression" - }, - { - "name": "Identifier can not start with `}` (as filter argument)", - "data": null, - "template": "{{ a(}a) }}", - "expected_error": "Invalid expression" - }, - { - "name": "Identifier can not be `<`", - "data": null, - "template": "{{ < }}", - "expected_error": "Invalid expression" - }, - { - "name": "Identifier can not start with `<`", - "data": null, - "template": "{{ `", - "data": null, - "template": "{{ > }}", - "expected_error": "Invalid expression" - }, - { - "name": "Identifier can not start with `>`", - "data": null, - "template": "{{ >a }}", - "expected_error": "Invalid expression" - }, - { - "name": "Identifier can not start with `>` (in dot-prefixed expression)", - "data": null, - "template": "{{ .>a }}", - "expected_error": "Invalid expression" - }, - { - "name": "Identifier can not start with `>` (in compound expression)", - "data": null, - "template": "{{ a.>a }}", - "expected_error": "Invalid expression" - }, - { - "name": "Identifier can not start with `>` (as filter argument)", - "data": null, - "template": "{{ a(>a) }}", - "expected_error": "Invalid expression" - }, - { - "name": "Identifier can not be `&`", - "data": null, - "template": "{{ & }}", - "expected_error": "Invalid expression" - }, - { - "name": "Identifier can not start with `&`", - "data": null, - "template": "{{ &a }}", - "expected_error": "Invalid expression" - }, - { - "name": "Identifier can not start with `&` (in dot-prefixed expression)", - "data": null, - "template": "{{ .&a }}", - "expected_error": "Invalid expression" - }, - { - "name": "Identifier can not start with `&` (in compound expression)", - "data": null, - "template": "{{ a.&a }}", - "expected_error": "Invalid expression" - }, - { - "name": "Identifier can not start with `&` (as filter argument)", - "data": null, - "template": "{{ a(&a) }}", - "expected_error": "Invalid expression" - }, - { - "name": "Identifier can not be `#`", - "data": null, - "template": "{{ # }}", - "expected_error": "Invalid expression" - }, - { - "name": "Identifier can not start with `#`", - "data": null, - "template": "{{ #a }}", - "expected_error": "Invalid expression" - }, - { - "name": "Identifier can not start with `#` (in dot-prefixed expression)", - "data": null, - "template": "{{ .#a }}", - "expected_error": "Invalid expression" - }, - { - "name": "Identifier can not start with `#` (in compound expression)", - "data": null, - "template": "{{ a.#a }}", - "expected_error": "Invalid expression" - }, - { - "name": "Identifier can not start with `#` (as filter argument)", - "data": null, - "template": "{{ a(#a) }}", - "expected_error": "Invalid expression" - }, - { - "name": "Identifier can not be `^`", - "data": null, - "template": "{{ ^ }}", - "expected_error": "Invalid expression" - }, - { - "name": "Identifier can not start with `^`", - "data": null, - "template": "{{ ^a }}", - "expected_error": "Invalid expression" - }, - { - "name": "Identifier can not start with `^` (in dot-prefixed expression)", - "data": null, - "template": "{{ .^a }}", - "expected_error": "Invalid expression" - }, - { - "name": "Identifier can not start with `^` (in compound expression)", - "data": null, - "template": "{{ a.^a }}", - "expected_error": "Invalid expression" - }, - { - "name": "Identifier can not start with `^` (as filter argument)", - "data": null, - "template": "{{ a(^a) }}", - "expected_error": "Invalid expression" - }, - { - "name": "Identifier can not be `$`", - "data": null, - "template": "{{ $ }}", - "expected_error": "Invalid expression" - }, - { - "name": "Identifier can not start with `$`", - "data": null, - "template": "{{ $a }}", - "expected_error": "Invalid expression" - }, - { - "name": "Identifier can not start with `$` (in dot-prefixed expression)", - "data": null, - "template": "{{ .$a }}", - "expected_error": "Invalid expression" - }, - { - "name": "Identifier can not start with `$` (in compound expression)", - "data": null, - "template": "{{ a.$a }}", - "expected_error": "Invalid expression" - }, - { - "name": "Identifier can not start with `$` (as filter argument)", - "data": null, - "template": "{{ a($a) }}", - "expected_error": "Invalid expression" - }, - { - "name": "Identifier can not be `/`", - "data": null, - "template": "{{ / }}", - "expected_error": "Invalid expression" - }, - { - "name": "Identifier can not start with `/`", - "data": null, - "template": "{{ /a }}", - "expected_error": "Invalid expression" - }, - { - "name": "Identifier can not start with `/` (in dot-prefixed expression)", - "data": null, - "template": "{{ ./a }}", - "expected_error": "Invalid expression" - }, - { - "name": "Identifier can not start with `/` (in compound expression)", - "data": null, - "template": "{{ a./a }}", - "expected_error": "Invalid expression" - }, - { - "name": "Identifier can not start with `/` (as filter argument)", - "data": null, - "template": "{{ a(/a) }}", - "expected_error": "Invalid expression" - } - ] -} diff --git a/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/filters.json b/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/filters.json deleted file mode 100644 index 96e7e501..00000000 --- a/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/filters.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "tests": [ - { - "name": "Filter should render.", - "data": { "name": "EDGAR allan poE" }, - "template": "{{ capitalized(name) }}", - "expected": "Edgar Allan Poe" - }, - { - "name": "Implicit iterator can be filtered.", - "data": "EDGAR allan poE", - "template": "{{ capitalized(.) }}", - "expected": "Edgar Allan Poe" - }, - - // Whitespace Insensitivity - - { - "name": "Whitespace in filter expressions should be ignored.", - "data": { "name": "EDGAR allan poE" }, - "template": "{{ capitalized \r\n\t( \r\n\tname \r\n\t) }}", - "expected": "Edgar Allan Poe" - - } - ] -} diff --git a/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/general.json b/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/general.json deleted file mode 100644 index f696a1fa..00000000 --- a/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/general.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "tests": [ - { - "name": "The empty template should be rendered as the empty string.", - "data": { }, - "template": "", - "expected": "" - }, - { - "name": "The single whitespace template should be rendered as a single whitespace.", - "data": { }, - "template": " ", - "expected": " " - }, - { - "name": "A word template should be rendered as is.", - "data": { }, - "template": "Hello", - "expected": "Hello" - }, - { - "name": "A multi-line template should be rendered as is.", - "data": { }, - "template": "\n\n \n Hello \n\n", - "expected": "\n\n \n Hello \n\n" - } - ] -} diff --git a/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/implicit_iterator.json b/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/implicit_iterator.json deleted file mode 100644 index 94679458..00000000 --- a/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/implicit_iterator.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "tests": [ - { - "name": "The implicit iterator should render the root context.", - "data": "---", - "template": "<{{.}}>", - "expected": "<--->" - }, - { - "name": "The implicit iterator should render the current context.", - "data": { "subject": "---" }, - "template": "<{{#subject}}{{.}}{{/subject}}>", - "expected": "<--->" - }, - { - "name": "The implicit iterator should render the current list item.", - "data": { "list": [ "1", "2", "3" ] }, - "template": "<{{#list}}{{.}}{{/list}}>", - "expected": "<123>" - }, - { - "name": "Lists should be iterated.", - "data": [ "1", "2", "3" ], - "template": "<{{#.}}-{{/.}}>", - "expected": "<--->" - }, - { - "name": "List items should become the current context.", - "data": [ "1", "2", "3" ], - "template": "<{{#.}}{{.}}{{/.}}>", - "expected": "<123>" - }, - { - "name": "True should trigger the section rendering.", - "data": true, - "template": "<{{#.}}---{{/.}}>", - "expected": "<--->" - }, - { - "name": "Object should become the current context.", - "data": "---", - "template": "<{{#.}}{{.}}{{/.}}>", - "expected": "<--->" - } - ] -} \ No newline at end of file diff --git a/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/inheritable_partials.json b/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/inheritable_partials.json deleted file mode 100644 index 91fe5cb7..00000000 --- a/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/inheritable_partials.json +++ /dev/null @@ -1,217 +0,0 @@ -{ - "tests": [ - { - "name": "Template can embed an inherited partial", - "data": { }, - "template": "before {{partial1}} after1", - "partials": { - "partial1": "before2 {{partial2}} after2", - "partial2": "partial2" }, - "expected": "before1 before2 partial2 after2 after1" - }, - { - "name": "Templates can override top level inheritable sections in inherited partials", - "data": { }, - "template": "{{partial2}}{{$inheritable}}4{{/inheritable}}{{/partial1}}", - "partials": { - "partial1": "{{$inheritable}}ignored{{/inheritable}}", - "partial2": "{{$inheritable}}2{{/inheritable}}{{$inheritable}}3{{/inheritable}}" }, - "expected": "4" - }, - { - "name": "The content of the last inheritable sections in partials is rendered in the inherited section", - "data": { }, - "template": "{{partial2}}{{/partial1}}", - "partials": { - "partial1": "{{$inheritable}}ignored{{/inheritable}}", - "partial2": "{{$inheritable}}2{{/inheritable}}{{$inheritable}}3{{/inheritable}}" }, - "expected": "3" - }, - { - "name": "Inherited partials can override inheritable sections in their own inherited partials", - "data": { }, - "template": "{{partial1}}{{/partial2}}", - "partials": { - "partial1": "{{$inheritable}}partial1{{/inheritable}}", - "partial2": "{{$inheritable}}ignored{{/inheritable}}" }, - "expected": "partial1" - }, - { - "name": "Partials can override inheritable sections in their own inherited partials", - "data": { }, - "template": "{{>partial1}}", - "partials": { - "partial1": "{{partial1}}", - "partials": { - "partial1": "{{partial2}}", - "partial2": "{{$inheritable}}ignored{{/inheritable}}" }, - "expected": "inherited" - }, - { - "name": "Templates can override inheritable sections in inherited partials embedded in inherited partials", - "data": { }, - "template": "{{", - "partials": { - "node": "{{content}}<{{#nodes}}{{>node}}{{/nodes}}>" - }, - "expected": ">>" - }, - { - "name": "Templates can override inheritable sections in recursive partials", - "data": { "content": "X", "nodes": [ { "content": "Y", "nodes": [] } ] }, - "template": "<{{node}}{{/value}}{{/node}}>", - "partials": { "node": "{{content}}<{{#nodes}}{{$value}}overriden{{/value}}{{/nodes}}>" }, - "expected": ">>" - }, - { - "name": "Inheritable section context is cleaned after inherited partial rendering.", - "data": { }, - "template": "{{$section}}rendered{{/section}}|{{partial2}}{{/partial}}", - "partials": { - "partial": "{{$inheritable}}ignored{{/inheritable}}", - "partial2": "{{$inheritable}}inherited{{/inheritable}}" }, - "expected": "inherited" - }, - { - "name": "Two levels of inheritance: inherited partial with overriding content containing another inherited partial", - "data": { }, - "template": "{{", - "expected": "" - }, - { - "name": "Inheritable sections are not tied to rendered data: they render for empty lists.", - "data": { "inheritable": [] }, - "template": "<{{$inheritable}}rendered{{/inheritable}}>", - "expected": "" - }, - { - "name": "Inheritable sections are not tied to rendered data: they do not open new contexts.", - "data": { "subject": "rendered", "inheritable": { "subject": "ignored" } }, - "template": "<{{$inheritable}}{{subject}}{{/inheritable}}>", - "expected": "" - }, - { - "name": "Inheritable sections are not tied to rendered data: they do not render multiple times.", - "data": { "inheritable": [0,1,2,3] }, - "template": "<{{$inheritable}}rendered{{/inheritable}}>", - "expected": "" - } - ] -} diff --git a/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/inverted_sections.json b/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/inverted_sections.json deleted file mode 100644 index b39294b4..00000000 --- a/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/inverted_sections.json +++ /dev/null @@ -1,309 +0,0 @@ -{ - "tests": [ - { - "name": "Multiple inverted sections per template should be permitted.", - "data": { "t": false, "two": "2" }, - "template": "<{{^t}}1{{/t}}{{two}}{{^t}}3{{/t}}>", - "expected": "<123>" - }, - - // Boolean interpretation - - { - "name": "Missing key should trigger the inverted section rendering.", - "data": { }, - "template": "<{{^subject}}---{{/subject}}>", - "expected": "<--->" - }, - { - "name": "Missing key should trigger the inverted section rendering without altering the top of the context stack.", - "data": { "object": "---" }, - "template": "<{{#object}}{{^subject}}{{.}}{{/subject}}{{/object}}>", - "expected": "<--->" - }, - { - "name": "Null should trigger the inverted section rendering.", - "data": { "subject": null }, - "template": "<{{^subject}}---{{/subject}}>", - "expected": "<--->" - }, - { - "name": "Null should trigger the inverted section rendering without altering the top of the context stack.", - "data": { "subject": null, "object": "---" }, - "template": "<{{#object}}{{^subject}}{{.}}{{/subject}}{{/object}}>", - "expected": "<--->" - }, - { - "name": "False should trigger the inverted section rendering.", - "data": { "subject": false }, - "template": "<{{^subject}}---{{/subject}}>", - "expected": "<--->" - }, - { - "name": "False should trigger the inverted section rendering without altering the top of the context stack.", - "data": { "subject": false, "object": "---" }, - "template": "<{{#object}}{{^subject}}{{.}}{{/subject}}{{/object}}>", - "expected": "<--->" - }, - { - "name": "Empty string should trigger the inverted section rendering.", - "data": { "subject": "" }, - "template": "<{{^subject}}---{{/subject}}>", - "expected": "<--->" - }, - { - "name": "Empty string should trigger the inverted section rendering without altering the top of the context stack.", - "data": { "subject": "", "object": "---" }, - "template": "<{{#object}}{{^subject}}{{.}}{{/subject}}{{/object}}>", - "expected": "<--->" - }, - { - "name": "Empty list should trigger the inverted section rendering.", - "data": { "subject": [] }, - "template": "<{{^subject}}---{{/subject}}>", - "expected": "<--->" - }, - { - "name": "Empty list should trigger the inverted section rendering without altering the top of the context stack.", - "data": { "subject": [], "object": "---" }, - "template": "<{{#object}}{{^subject}}{{.}}{{/subject}}{{/object}}>", - "expected": "<--->" - }, - { - "name": "Zero should trigger the inverted section rendering.", - "data": { "subject": 0 }, - "template": "<{{^subject}}---{{/subject}}>", - "expected": "<--->" - }, - { - "name": "Zero should trigger the inverted section rendering without altering the top of the context stack.", - "data": { "subject": 0, "object": "---" }, - "template": "<{{#object}}{{^subject}}{{.}}{{/subject}}{{/object}}>", - "expected": "<--->" - }, - { - "name": "True should trigger the inverted section omission.", - "data": { "subject": true }, - "template": "<{{^subject}}---{{/subject}}>", - "expected": "<>" - }, - { - "name": "Object should trigger the inverted section omission.", - "data": { "subject": { } }, - "template": "<{{^subject}}---{{/subject}}>", - "expected": "<>" - }, - { - "name": "Non-empty string should trigger the inverted section omission.", - "data": { "subject": "---" }, - "template": "<{{^subject}}---{{/subject}}>", - "expected": "<>" - }, - { - "name": "Non-empty blank string should trigger the inverted section omission.", - "data": { "subject": " " }, - "template": "<{{^subject}}---{{/subject}}>", - "expected": "<>" - }, - { - "name": "Non-empty list should trigger the inverted section omission.", - "data": { "subject": [ { "n": 1 }, { "n": 2 }, { "n": 3 } ] }, - "template": "<{{^subject}}---{{/subject}}>", - "expected": "<>" - }, - { - "name": "List made of an empty list should trigger the section omission.", - "data": { "subject": [[]] }, - "template": "<{{^subject}}---{{/subject}}>", - "expected": "<>" - }, - - // 'else' sections - - { - "name": "Missing key should trigger the inverted section rendering, and the omission of the 'else' section.", - "data": { }, - "template": "<{{^subject}}---{{#subject}}+++{{/subject}}>", - "expected": "<--->" - }, - { - "name": "Null should trigger the inverted section rendering, and the omission of the 'else' section.", - "data": { "subject": null }, - "template": "<{{^subject}}---{{#subject}}+++{{/subject}}>", - "expected": "<--->" - }, - { - "name": "False should trigger the inverted section rendering, and the omission of the 'else' section.", - "data": { "subject": false }, - "template": "<{{^subject}}---{{#subject}}+++{{/subject}}>", - "expected": "<--->" - }, - { - "name": "Empty string should trigger the inverted section rendering, and the omission of the 'else' section.", - "data": { "subject": "" }, - "template": "<{{^subject}}---{{#subject}}+++{{/subject}}>", - "expected": "<--->" - }, - { - "name": "Empty list should trigger the inverted section rendering, and the omission of the 'else' section.", - "data": { "subject": [] }, - "template": "<{{^subject}}---{{#subject}}+++{{/subject}}>", - "expected": "<--->" - }, - { - "name": "Zero should trigger the inverted section rendering, and the omission of the 'else' section.", - "data": { "subject": 0 }, - "template": "<{{^subject}}---{{#subject}}+++{{/subject}}>", - "expected": "<--->" - }, - { - "name": "True should trigger the inverted section omission, and the rendering of the 'else' section.", - "data": { "subject": true }, - "template": "<{{^subject}}---{{#subject}}+++{{/subject}}>", - "expected": "<+++>" - }, - { - "name": "Object should trigger the inverted section omission, and the rendering of the 'else' section.", - "data": { "subject": { } }, - "template": "<{{^subject}}---{{#subject}}+++{{/subject}}>", - "expected": "<+++>" - }, - { - "name": "Non-empty string should trigger the inverted section omission, and the rendering of the 'else' section.", - "data": { "subject": "---" }, - "template": "<{{^subject}}---{{#subject}}+++{{/subject}}>", - "expected": "<+++>" - }, - { - "name": "Non-empty blank string should trigger the inverted section omission, and the rendering of the 'else' section.", - "data": { "subject": " " }, - "template": "<{{^subject}}---{{#subject}}+++{{/subject}}>", - "expected": "<+++>" - }, - { - "name": "Non-empty list should trigger the inverted section omission, and the rendering of the 'else' section.", - "data": { "subject": [ { "n": 1 }, { "n": 2 }, { "n": 3 } ] }, - "template": "<{{^subject}}---{{#subject}}{{n}}{{/subject}}>", - "expected": "<123>" - }, - { - "name": "List made of an empty list should trigger the section omission, and the rendering of the 'else' section.", - "data": { "subject": [[]] }, - "template": "<{{^subject}}---{{#subject}}+++{{/subject}}>", - "expected": "<+++>" - }, - - // Empty 'else' and closing tags - - { - "name": "Closing tag may be empty.", - "data": { "subject": false }, - "template": "<{{^subject}}---{{/}}>", - "expected": "<--->" - }, - - { - "name": "Closing tag may be blank.", - "data": { "subject": false }, - "template": "<{{^subject}}---{{/ }}>", - "expected": "<--->" - }, - - { - "name": "Closing tag after 'else' tag may be empty.", - "data": { "subject": true }, - "template": "<{{^subject}}---{{#subject}}+++{{/}}>", - "expected": "<+++>" - }, - - { - "name": "Closing tag after 'else' tag may be blank.", - "data": { "subject": true }, - "template": "<{{^subject}}---{{#subject}}+++{{/ }}>", - "expected": "<+++>" - }, - - { - "name": "'Else' tag may be empty.", - "data": { "subject": true }, - "template": "<{{^subject}}---{{#}}+++{{/subject}}>", - "expected": "<+++>" - }, - - { - "name": "'Else' tag may be blank.", - "data": { "subject": true }, - "template": "<{{^subject}}---{{# }}+++{{/subject}}>", - "expected": "<+++>" - }, - - { - "name": "Both 'else' and closing tags may be empty.", - "data": { "subject": true }, - "template": "<{{^subject}}---{{#}}+++{{/}}>", - "expected": "<+++>" - }, - - { - "name": "Both 'else' and closing tags may be blank.", - "data": { "subject": true }, - "template": "<{{^subject}}---{{# }}+++{{/ }}>", - "expected": "<+++>" - }, - - { - "name": "Empty 'else' and closing tags can be nested.", - "data": { "subject1": true, "subject2": true }, - "template": "<{{^subject1}}{{^foo}}---{{# }}+++{{/ }}{{# }}{{^subject2}}---{{# }}+++{{/ }}{{/ }}>", - "expected": "<+++>" - }, - - // Whitespace Insensitivity - - { - "name": "Whitespace in tag should be ignored.", - "data": { "subject": false }, - "template": "<{{^ \r\n\tsubject \r\n\t}}---{{/ \r\n\tsubject \r\n\t}}>", - "expected": "<--->" - }, - - // Whitespace Sensitivity - - { - "name": "Single left outer whitespace should be honored when inverted section is rendered.", - "data": { }, - "template": "< {{^subject}}---{{/subject}}>", - "expected": "< --->" - }, - { - "name": "Single right outer whitespace should be honored when inverted section is rendered.", - "data": { }, - "template": "<{{^subject}}---{{/subject}} >", - "expected": "<--- >" - }, - { - "name": "Single left inner whitespace should be honored when inverted section is rendered.", - "data": { }, - "template": "<{{^subject}} ---{{/subject}}>", - "expected": "< --->" - }, - { - "name": "Single right inner whitespace should be honored when inverted section is rendered.", - "data": { }, - "template": "<{{^subject}}--- {{/subject}}>", - "expected": "<--- >" - }, - { - "name": "Single left outer whitespace should be honored when inverted section is omitted.", - "data": { "subject": true }, - "template": "< {{^subject}}---{{/subject}}--->", - "expected": "< --->" - }, - { - "name": "Single right outer whitespace should be honored when inverted section is omitted.", - "data": { "subject": true }, - "template": "<---{{^subject}}---{{/subject}} >", - "expected": "<--- >" - } - ] -} diff --git a/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/partials.json b/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/partials.json deleted file mode 100644 index 5fd9be1a..00000000 --- a/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/partials.json +++ /dev/null @@ -1,397 +0,0 @@ -{ - "tests": [ - { - "name": "Partial should be rendered.", - "data": { }, - "template": "<{{>text}}>", - "partials": { "text": "from partial" }, - "expected": "" - }, - { - "name": "Partial should be rendered in the current context.", - "data": { "text": "content" }, - "template": "<{{>partial}}>", - "partials": { "partial": "*{{text}}*" }, - "expected": "<*content*>" - }, - { - "name": "Recursive partials should be rendered.", - "data": { "content": "X", "nodes": [ { "content": "Y", "nodes": [] } ] }, - "template": "<{{>node}}>", - "partials": { "node": "{{content}}<{{#nodes}}{{>node}}{{/nodes}}>" }, - "expected": ">>" - }, - { - "name": "Partial names can contain dots.", - "data": null, - "template": "<{{>partial.html}}>", - "partials": { "partial.html": "---" }, - "expected": "<--->" - }, - - // File system - - { - "name": "Partials loaded from a template with .mustache extension should have the extension .mustache", - "data": { }, - "template_name": "template.mustache", - "partials": { - "template.mustache": "<{{>partial}}>", - "partial": "partial", - "partial.html": "partial.html", - "partial.html.txt": "partial.html.txt", - "partial.html.mustache": "partial.html.mustache", - "partial.mustache": "partial.mustache", - "partial.mustache.txt": "partial.mustache.txt", - "partial.mustache.mustache": "partial.mustache.mustache", - "partial.txt": "partial.txt", - "partial.txt.txt": "partial.txt.txt", - "partial.txt.mustache": "partial.txt.mustache" - }, - "expected": "" - }, - { - "name": "Partials loaded from a template with .mustache extension should have the extension .mustache", - "data": { }, - "template_name": "template.mustache", - "partials": { - "template.mustache": "<{{>partial.mustache}}>", - "partial": "partial", - "partial.html": "partial.html", - "partial.html.txt": "partial.html.txt", - "partial.html.mustache": "partial.html.mustache", - "partial.mustache": "partial.mustache", - "partial.mustache.txt": "partial.mustache.txt", - "partial.mustache.mustache": "partial.mustache.mustache", - "partial.txt": "partial.txt", - "partial.txt.txt": "partial.txt.txt", - "partial.txt.mustache": "partial.txt.mustache" - }, - "expected": "" - }, - { - "name": "Partials loaded from a template with .mustache extension should have the extension .mustache", - "data": { }, - "template_name": "template.mustache", - "partials": { - "template.mustache": "<{{>partial.html}}>", - "partial": "partial", - "partial.html": "partial.html", - "partial.html.txt": "partial.html.txt", - "partial.html.mustache": "partial.html.mustache", - "partial.mustache": "partial.mustache", - "partial.mustache.txt": "partial.mustache.txt", - "partial.mustache.mustache": "partial.mustache.mustache", - "partial.txt": "partial.txt", - "partial.txt.txt": "partial.txt.txt", - "partial.txt.mustache": "partial.txt.mustache" - }, - "expected": "" - }, - { - "name": "Partials loaded from a template with .txt extension should have the extension .txt", - "data": { }, - "template_name": "template.txt", - "partials": { - "template.txt": "<{{>partial}}>", - "partial": "partial", - "partial.html": "partial.html", - "partial.html.txt": "partial.html.txt", - "partial.html.mustache": "partial.html.mustache", - "partial.mustache": "partial.mustache", - "partial.mustache.txt": "partial.mustache.txt", - "partial.mustache.mustache": "partial.mustache.mustache", - "partial.txt": "partial.txt", - "partial.txt.txt": "partial.txt.txt", - "partial.txt.mustache": "partial.txt.mustache" - }, - "expected": "" - }, - { - "name": "Partials loaded from a template with .txt extension should have the extension .txt", - "data": { }, - "template_name": "template.txt", - "partials": { - "template.txt": "<{{>partial.txt}}>", - "partial": "partial", - "partial.html": "partial.html", - "partial.html.txt": "partial.html.txt", - "partial.html.mustache": "partial.html.mustache", - "partial.mustache": "partial.mustache", - "partial.mustache.txt": "partial.mustache.txt", - "partial.mustache.mustache": "partial.mustache.mustache", - "partial.txt": "partial.txt", - "partial.txt.txt": "partial.txt.txt", - "partial.txt.mustache": "partial.txt.mustache" - }, - "expected": "" - }, - { - "name": "Partials loaded from a template with .txt extension should have the extension .txt", - "data": { }, - "template_name": "template.txt", - "partials": { - "template.txt": "<{{>partial.html}}>", - "partial": "partial", - "partial.html": "partial.html", - "partial.html.txt": "partial.html.txt", - "partial.html.mustache": "partial.html.mustache", - "partial.mustache": "partial.mustache", - "partial.mustache.txt": "partial.mustache.txt", - "partial.mustache.mustache": "partial.mustache.mustache", - "partial.txt": "partial.txt", - "partial.txt.txt": "partial.txt.txt", - "partial.txt.mustache": "partial.txt.mustache" - }, - "expected": "" - }, - { - "name": "Partials loaded from a template without extension should have no extension", - "data": { }, - "template_name": "template", - "partials": { - "template": "<{{>partial}}>", - "partial": "partial", - "partial.html": "partial.html", - "partial.html.txt": "partial.html.txt", - "partial.html.mustache": "partial.html.mustache", - "partial.mustache": "partial.mustache", - "partial.mustache.txt": "partial.mustache.txt", - "partial.mustache.mustache": "partial.mustache.mustache", - "partial.txt": "partial.txt", - "partial.txt.txt": "partial.txt.txt", - "partial.txt.mustache": "partial.txt.mustache" - }, - "expected": "" - }, - { - "name": "Partials loaded from a template without extension should have no extension", - "data": { }, - "template_name": "template", - "partials": { - "template": "<{{>partial.html}}>", - "partial": "partial", - "partial.html": "partial.html", - "partial.html.txt": "partial.html.txt", - "partial.html.mustache": "partial.html.mustache", - "partial.mustache": "partial.mustache", - "partial.mustache.txt": "partial.mustache.txt", - "partial.mustache.mustache": "partial.mustache.mustache", - "partial.txt": "partial.txt", - "partial.txt.txt": "partial.txt.txt", - "partial.txt.mustache": "partial.txt.mustache" - }, - "expected": "" - }, - { - "name": "Deep partials loaded from a template with .mustache extension should have the extension .mustache", - "data": { }, - "template_name": "template.mustache", - "partials": { - "template.mustache": "<{{>partial}}>", - "partial": "{{>deep_partial}}", - "partial.mustache": "{{>deep_partial}}", - "partial.txt": "{{>deep_partial}}", - "deep_partial": "none", - "deep_partial.mustache": "mustache", - "deep_partial.txt": "text" - }, - "expected": "" - }, - { - "name": "Deep partials loaded from a template with .txt extension should have the extension .txt", - "data": { }, - "template_name": "template.txt", - "partials": { - "template.txt": "<{{>partial}}>", - "partial": "{{>deep_partial}}", - "partial.mustache": "{{>deep_partial}}", - "partial.txt": "{{>deep_partial}}", - "deep_partial": "none", - "deep_partial.mustache": "mustache", - "deep_partial.txt": "text" - }, - "expected": "" - }, - { - "name": "Deep partials loaded from a template without extension should have no extension", - "data": { }, - "template_name": "template", - "partials": { - "template": "<{{>partial}}>", - "partial": "{{>deep_partial}}", - "partial.mustache": "{{>deep_partial}}", - "partial.txt": "{{>deep_partial}}", - "deep_partial": "none", - "deep_partial.mustache": "mustache", - "deep_partial.txt": "text" - }, - "expected": "" - }, - { - "name": "Posix relative path should navigate the file system", - "data": { }, - "template_name": "template.mustache", - "partials": { - "template.mustache": "<{{>partials/partial}}>", - "partials/partial.mustache": "---" - }, - "expected": "<--->" - }, - { - "name": "Posix relative path should navigate the file system", - "data": { }, - "template_name": "template.mustache", - "partials": { - "template.mustache": "<{{>partials/partial}}>", - "partials/partial.mustache": "{{>deep_partial}}", - "partials/deep_partial.mustache": "---" - }, - "expected": "<--->" - }, - { - "name": "Posix relative path should navigate the file system", - "data": { }, - "template_name": "template.mustache", - "partials": { - "template.mustache": "<{{>partials/partial}}>", - "partials/partial.mustache": "{{>../other_partials/deep_partial}}", - "other_partials/deep_partial.mustache": "---" - }, - "expected": "<--->" - }, - { - "name": "Posix relative path should navigate the file system", - "data": { }, - "template_name": "partials/template.mustache", - "partials": { - "partials/template.mustache": "<{{>partial}}>", - "partials/partial.mustache": "{{>../other_partials/deep_partial}}", - "other_partials/deep_partial.mustache": "---" - }, - "expected": "<--->" - }, - { - "name": "Posix relative path should navigate the file system", - "data": { }, - "template_name": "file1", - "partials": { - "file1": "file1 {{>dir/file1}}{{>file2}}", - "file1.mustache": "file1.mustache {{>dir/file1}}{{>file2}}", - "file1.txt": "file1.txt {{>dir/file1}}{{>file2}}", - "file2": "file2 ", - "file2.mustache": "file2.mustache ", - "file2.txt": "file2.txt ", - "dir/file1": "dir/file1 {{>dir/file1}}{{>file2}}", - "dir/file1.mustache": "dir/file1.mustache {{>dir/file1}}{{>file2}}", - "dir/file1.txt": "dir/file1.txt {{>dir/file1}}{{>file2}}", - "dir/file2": "dir/file2 ", - "dir/file2.mustache": "dir/file2.mustache ", - "dir/file2.txt": "dir/file2.txt ", - "dir/dir/file2.txt": "dir/dir/file2.txt ", - "dir/dir/file1": "dir/dir/file1 {{>file2}}", - "dir/dir/file1.mustache": "dir/dir/file1.mustache {{>file2}}", - "dir/dir/file1.txt": "dir/dir/file1.txt {{>file2}}", - "dir/dir/file2": "dir/dir/file2 ", - "dir/dir/file2.mustache": "dir/dir/file2.mustache ", - "dir/dir/file2.txt": "dir/dir/file2.txt " - }, - "expected": "file1 dir/file1 dir/dir/file1 dir/dir/file2 dir/file2 file2 " - }, - { - "name": "Posix relative path should navigate the file system", - "data": { }, - "template_name": "file1.mustache", - "partials": { - "file1": "file1 {{>dir/file1}}{{>file2}}", - "file1.mustache": "file1.mustache {{>dir/file1}}{{>file2}}", - "file1.txt": "file1.txt {{>dir/file1}}{{>file2}}", - "file2": "file2 ", - "file2.mustache": "file2.mustache ", - "file2.txt": "file2.txt ", - "dir/file1": "dir/file1 {{>dir/file1}}{{>file2}}", - "dir/file1.mustache": "dir/file1.mustache {{>dir/file1}}{{>file2}}", - "dir/file1.txt": "dir/file1.txt {{>dir/file1}}{{>file2}}", - "dir/file2": "dir/file2 ", - "dir/file2.mustache": "dir/file2.mustache ", - "dir/file2.txt": "dir/file2.txt ", - "dir/dir/file2.txt": "dir/dir/file2.txt ", - "dir/dir/file1": "dir/dir/file1 {{>file2}}", - "dir/dir/file1.mustache": "dir/dir/file1.mustache {{>file2}}", - "dir/dir/file1.txt": "dir/dir/file1.txt {{>file2}}", - "dir/dir/file2": "dir/dir/file2 ", - "dir/dir/file2.mustache": "dir/dir/file2.mustache ", - "dir/dir/file2.txt": "dir/dir/file2.txt " - }, - "expected": "file1.mustache dir/file1.mustache dir/dir/file1.mustache dir/dir/file2.mustache dir/file2.mustache file2.mustache " - }, - { - "name": "Posix relative path should navigate the file system", - "data": { }, - "template_name": "file1.txt", - "partials": { - "file1": "file1 {{>dir/file1}}{{>file2}}", - "file1.mustache": "file1.mustache {{>dir/file1}}{{>file2}}", - "file1.txt": "file1.txt {{>dir/file1}}{{>file2}}", - "file2": "file2 ", - "file2.mustache": "file2.mustache ", - "file2.txt": "file2.txt ", - "dir/file1": "dir/file1 {{>dir/file1}}{{>file2}}", - "dir/file1.mustache": "dir/file1.mustache {{>dir/file1}}{{>file2}}", - "dir/file1.txt": "dir/file1.txt {{>dir/file1}}{{>file2}}", - "dir/file2": "dir/file2 ", - "dir/file2.mustache": "dir/file2.mustache ", - "dir/file2.txt": "dir/file2.txt ", - "dir/dir/file2.txt": "dir/dir/file2.txt ", - "dir/dir/file1": "dir/dir/file1 {{>file2}}", - "dir/dir/file1.mustache": "dir/dir/file1.mustache {{>file2}}", - "dir/dir/file1.txt": "dir/dir/file1.txt {{>file2}}", - "dir/dir/file2": "dir/dir/file2 ", - "dir/dir/file2.mustache": "dir/dir/file2.mustache ", - "dir/dir/file2.txt": "dir/dir/file2.txt " - }, - "expected": "file1.txt dir/file1.txt dir/dir/file1.txt dir/dir/file2.txt dir/file2.txt file2.txt " - }, - - // Whitespace Insensitivity - - { - "name": "Whitespace in tag should be ignored.", - "data": { "boolean": true }, - "template": "<{{> \r\n\tpartial \r\n\t}}>", - "partials": { "partial": "=" }, - "expected": "<=>" - }, - - // Whitespace Sensitivity - - { - "name": "Single left outer whitespace should be honored.", - "data": { "subject": "---" }, - "template": "< {{>partial}}>", - "partials": { "partial": "---" }, - "expected": "< --->" - }, - { - "name": "Single right outer whitespace should be honored.", - "data": { "subject": "---" }, - "template": "<{{>partial}} >", - "partials": { "partial": "---" }, - "expected": "<--- >" - }, - { - "name": "Single left inner whitespace should be honored.", - "data": { "subject": "---" }, - "template": "<{{>partial}}>", - "partials": { "partial": " ---" }, - "expected": "< --->" - }, - { - "name": "Single right inner whitespace should be honored.", - "data": { "subject": "---" }, - "template": "<{{>partial}}>", - "partials": { "partial": "--- " }, - "expected": "<--- >" - } - ] -} diff --git a/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/pragmas.json b/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/pragmas.json deleted file mode 100644 index 9032616d..00000000 --- a/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/pragmas.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "tests": [ - { - "name": "Pragmas tags are not rendered.", - "data": { }, - "template": "<{{% PRAGMA }}>", - "expected": "<>" - } - ] -} diff --git a/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/sections.json b/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/sections.json deleted file mode 100644 index 24f40ff0..00000000 --- a/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/sections.json +++ /dev/null @@ -1,384 +0,0 @@ -{ - "tests": [ - { - "name": "Multiple sections per template should be permitted.", - "data": { "t": true, "two": "2" }, - "template": "<{{#t}}1{{/t}}{{two}}{{#t}}3{{/t}}>", - "expected": "<123>" - }, - - // Boolean interpretation - - { - "name": "Missing key should trigger the section omission.", - "data": { }, - "template": "<{{#subject}}---{{/subject}}>", - "expected": "<>" - }, - { - "name": "Null should trigger the section omission.", - "data": { "subject": null }, - "template": "<{{#subject}}---{{/subject}}>", - "expected": "<>" - }, - { - "name": "False should trigger the section omission.", - "data": { "subject": false }, - "template": "<{{#subject}}---{{/subject}}>", - "expected": "<>" - }, - { - "name": "Empty string should trigger the section omission.", - "data": { "subject": "" }, - "template": "<{{#subject}}---{{/subject}}>", - "expected": "<>" - }, - { - "name": "Empty list should trigger the section omission.", - "data": { "subject": [] }, - "template": "<{{#subject}}---{{/subject}}>", - "expected": "<>" - }, - { - "name": "Zero should trigger the section omission.", - "data": { "subject": 0 }, - "template": "<{{#subject}}---{{/subject}}>", - "expected": "<>" - }, - { - "name": "True should trigger the section rendering.", - "data": { "subject": true }, - "template": "<{{#subject}}---{{/subject}}>", - "expected": "<--->" - }, - { - // Regression test for https://github.com/groue/GRMustache/issues/83 - "name": "True should trigger the section rendering without altering the top of the context stack.", - "data": { "subject": true, "object": "---" }, - "template": "<{{#object}}{{#subject}}{{.}}{{/subject}}{{/object}}>", - "expected": "<--->" - }, - { - "name": "Non-zero number should trigger the section rendering.", - "data": { "subject": 1 }, - "template": "<{{#subject}}---{{/subject}}>", - "expected": "<--->" - }, - { - // Regression test for https://github.com/groue/GRMustache/issues/83 - "name": "Non-zero number should trigger the section rendering without altering the top of the context stack.", - "data": { "subject": 1, "object": "---" }, - "template": "<{{#object}}{{#subject}}{{.}}{{/subject}}{{/object}}>", - "expected": "<--->" - }, - { - "name": "Object should trigger the section rendering.", - "data": { "subject": { } }, - "template": "<{{#subject}}---{{/subject}}>", - "expected": "<--->" - }, - { - "name": "Object should trigger the section rendering and enter the top of the context stack.", - "data": { "subject": { "object": "---" } }, - "template": "<{{#subject}}{{object}}{{/subject}}>", - "expected": "<--->" - }, - { - "name": "Non-empty string should trigger the section rendering.", - "data": { "subject": "---" }, - "template": "<{{#subject}}---{{/subject}}>", - "expected": "<--->" - }, - { - "name": "Non-empty string should trigger the section rendering and enter the top of the context stack.", - "data": { "subject": "---" }, - "template": "<{{#subject}}{{.}}{{/subject}}>", - "expected": "<--->" - }, - { - "name": "Non-empty blank string should trigger the section rendering.", - "data": { "subject": " " }, - "template": "<{{#subject}}---{{/subject}}>", - "expected": "<--->" - }, - { - "name": "Non-empty blank string should trigger the section rendering and enter the top of the context stack.", - "data": { "subject": " " }, - "template": "<{{#subject}}{{.}}{{/subject}}>", - "expected": "< >" - }, - { - "name": "List made of an empty list should trigger the section rendering.", - "data": { "subject": [[]] }, - "template": "<{{#subject}}---{{/subject}}>", - "expected": "<--->" - }, - { - "name": "List made of lists should render each of them independently.", - "data": { "subject": [["a", "b"], [], [0, 1]] }, - "template": "<{{#subject}}({{#.}}{{.}}{{^}}-{{/}}){{/subject}}>", - "expected": "<(ab)(-)(01)>" - }, - - // Context stack - - { - "name": "Object should become the current context.", - "data": { "context": { "subject": "---" } }, - "template": "<{{#context}}{{subject}}{{/context}}>", - "expected": "<--->" - }, - { - "name": "A key miss should look in including context.", - "data": { "subject": "---", "context": { } }, - "template": "<{{#context}}{{subject}}{{/context}}>", - "expected": "<--->" - }, - { - "name": "Nested sections with same name should be isolated.", - "data": { "context": { "subject": "1", "context": { "subject": "a" }}}, - "template": "<{{#context}}{{subject}}{{#context}}{{subject}}{{/context}}{{/context}}>", - "expected": "<1a>" - }, - - // Lists - - { - "name": "Lists should be iterated.", - "data": { "list": [ 1, 2, 3 ] }, - "template": "<{{#list}}-{{/list}}>", - "expected": "<--->" - }, - { - "name": "List items should become the current context.", - "data": { "list": [ { "n": 1 }, { "n": 2 }, { "n": 3 } ] }, - "template": "<{{#list}}{{n}}{{/list}}>", - "expected": "<123>" - }, - { - "name": "A key miss should look in including context.", - "data": { "subject": "---", "list": [ { "n": 1 }, { "n": 2 }, { "n": 3 } ] }, - "template": "<{{#list}}{{subject}}{{n}}{{/list}}>", - "expected": "<---1---2---3>" - }, - { - "name": "Nested sections with same name should be isolated.", - "data": { "context": [ { "subject": "1", "context": [ { "subject": "a" }, { "subject": "b" }, { "subject": "c" } ] } ] }, - "template": "<{{#context}}{{subject}}{{#context}}{{subject}}{{/context}}{{/context}}>", - "expected": "<1abc>" - }, - - // 'else' sections - - { - "name": "Missing key should trigger the section omission, and the rendering of the 'else' section.", - "data": { }, - "template": "<{{#subject}}---{{^subject}}+++{{/subject}}>", - "expected": "<+++>" - }, - { - "name": "Null should trigger the section omission, and the rendering of the 'else' section.", - "data": { "subject": null }, - "template": "<{{#subject}}---{{^subject}}+++{{/subject}}>", - "expected": "<+++>" - }, - { - "name": "False should trigger the section omission, and the rendering of the 'else' section.", - "data": { "subject": false }, - "template": "<{{#subject}}---{{^subject}}+++{{/subject}}>", - "expected": "<+++>" - }, - { - "name": "Empty string should trigger the section omission, and the rendering of the 'else' section.", - "data": { "subject": "" }, - "template": "<{{#subject}}---{{^subject}}+++{{/subject}}>", - "expected": "<+++>" - }, - { - "name": "Empty list should trigger the section omission, and the rendering of the 'else' section.", - "data": { "subject": [] }, - "template": "<{{#subject}}---{{^subject}}+++{{/subject}}>", - "expected": "<+++>" - }, - { - "name": "Zero should trigger the section omission, and the rendering of the 'else' section.", - "data": { "subject": 0 }, - "template": "<{{#subject}}---{{^subject}}+++{{/subject}}>", - "expected": "<+++>" - }, - { - "name": "True should trigger the section rendering, and the omission of the 'else' section.", - "data": { "subject": true }, - "template": "<{{#subject}}---{{^subject}}+++{{/subject}}>", - "expected": "<--->" - }, - { - "name": "Object should trigger the section rendering, and the omission of the 'else' section.", - "data": { "subject": { } }, - "template": "<{{#subject}}---{{^subject}}+++{{/subject}}>", - "expected": "<--->" - }, - { - "name": "Non-empty string should trigger the section rendering, and the omission of the 'else' section.", - "data": { "subject": "---" }, - "template": "<{{#subject}}---{{^subject}}+++{{/subject}}>", - "expected": "<--->" - }, - { - "name": "Non-empty blank string should trigger the section rendering, and the omission of the 'else' section.", - "data": { "subject": " " }, - "template": "<{{#subject}}---{{^subject}}+++{{/subject}}>", - "expected": "<--->" - }, - { - "name": "List made of an empty list should trigger the section rendering, and the omission of the 'else' section.", - "data": { "subject": [[]] }, - "template": "<{{#subject}}---{{^subject}}+++{{/subject}}>", - "expected": "<--->" - }, - - { - "name": "Non-empty lists should be iterated and the 'else' section omitted", - "data": { "list": [ 1, 2, 3 ] }, - "template": "<{{#list}}-{{^list}}+{{/list}}>", - "expected": "<--->" - }, - - // Empty 'else' and closing tags - - { - "name": "Closing tag may be empty.", - "data": { "subject": true }, - "template": "<{{#subject}}---{{/}}>", - "expected": "<--->" - }, - - { - "name": "Closing tag may be blank.", - "data": { "subject": true }, - "template": "<{{#subject}}---{{/ }}>", - "expected": "<--->" - }, - - { - "name": "Closing tag after 'else' tag may be empty.", - "data": { "subject": false }, - "template": "<{{#subject}}---{{^subject}}+++{{/}}>", - "expected": "<+++>" - }, - - { - "name": "Closing tag after 'else' tag may be blank.", - "data": { "subject": false }, - "template": "<{{#subject}}---{{^subject}}+++{{/ }}>", - "expected": "<+++>" - }, - - { - "name": "'Else' tag may be empty.", - "data": { "subject": false }, - "template": "<{{#subject}}---{{^}}+++{{/subject}}>", - "expected": "<+++>" - }, - - { - "name": "'Else' tag may be blank.", - "data": { "subject": false }, - "template": "<{{#subject}}---{{^ }}+++{{/subject}}>", - "expected": "<+++>" - }, - - { - "name": "Both 'else' and closing tags may be empty.", - "data": { "subject": false }, - "template": "<{{#subject}}---{{^}}+++{{/}}>", - "expected": "<+++>" - }, - - { - "name": "Both 'else' and closing tags may be blank.", - "data": { "subject": false }, - "template": "<{{#subject}}---{{^ }}+++{{/ }}>", - "expected": "<+++>" - }, - - { - "name": "Empty 'else' and closing tags can be nested.", - "data": { "subject1": false, "subject2": false }, - "template": "<{{#subject1}}{{#foo}}---{{^ }}+++{{/ }}{{^ }}{{#subject2}}---{{^ }}+++{{/ }}{{/ }}>", - "expected": "<+++>" - }, - - // Whitespace Insensitivity - - { - "name": "Whitespace in tag should be ignored.", - "data": { "subject": true }, - "template": "<{{# \r\n\tsubject \r\n\t}}---{{/ \r\n\tsubject \r\n\t}}>", - "expected": "<--->" - }, - - // Whitespace Sensitivity - - { - "name": "Single left outer whitespace should be honored when section is rendered.", - "data": { "subject": true }, - "template": "< {{#subject}}---{{/subject}}>", - "expected": "< --->" - }, - { - "name": "Single right outer whitespace should be honored when section is rendered.", - "data": { "subject": true }, - "template": "<{{#subject}}---{{/subject}} >", - "expected": "<--- >" - }, - { - "name": "Single left inner whitespace should be honored when section is rendered.", - "data": { "subject": true }, - "template": "<{{#subject}} ---{{/subject}}>", - "expected": "< --->" - }, - { - "name": "Single right inner whitespace should be honored when section is rendered.", - "data": { "subject": true }, - "template": "<{{#subject}}--- {{/subject}}>", - "expected": "<--- >" - }, - { - "name": "Single left outer whitespace should be honored.", - "data": { "list": [ 1, 2, 3 ] }, - "template": "< {{#list}}-{{/list}}>", - "expected": "< --->" - }, - { - "name": "Single right outer whitespace should be honored.", - "data": { "list": [ 1, 2, 3] }, - "template": "<{{#list}}-{{/list}} >", - "expected": "<--- >" - }, - { - "name": "Single left inner whitespace should be honored.", - "data": { "list": [ 1, 2, 3 ] }, - "template": "<{{#list}} -{{/list}}>", - "expected": "< - - ->" - }, - { - "name": "Single right inner whitespace should be honored.", - "data": { "list": [ 1, 2, 3] }, - "template": "<{{#list}}- {{/list}}>", - "expected": "<- - - >" - }, - { - "name": "Single left outer whitespace should be honored when section is omitted.", - "data": { }, - "template": "< {{#subject}}---{{/subject}}--->", - "expected": "< --->" - }, - { - "name": "Single right outer whitespace should be honored when section is omitted.", - "data": { }, - "template": "<---{{#subject}}---{{/subject}} >", - "expected": "<--- >" - } - ] -} diff --git a/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/standard_library.json b/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/standard_library.json deleted file mode 100644 index 11288fa8..00000000 --- a/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/standard_library.json +++ /dev/null @@ -1,343 +0,0 @@ -{ - "tests": [ - // capitalized - { - "name": "`capitalized` filter should change the first character from each word to its corresponding uppercase value, and all remaining characters to their corresponding lowercase values.", - "data": "EDGAR allan poE", - "template": "{{ capitalized(.) }}", - "expected": "Edgar Allan Poe" - }, - { - "name": "`capitalized` filter should not mess with HTML escaping.", - "data": "<&lT;>", - "template": "{{ capitalized(.) }}", - "expected": "<&Lt;>" - }, - { - "name": "`capitalized` filter should be unicode-aware.", - "data": "éÉ πΠ ßß fifi œŒ ΣΣ ıI", - "template": "{{ capitalized(.) }}", - "expected": "Éé Ππ Ssß Fifi Œœ Σς Ii" - }, - - // lowercase - { - "name": "`lowercase` filter should change the all characters to their corresponding lowercase values.", - "data": "EDGAR allan poE", - "template": "{{ lowercase(.) }}", - "expected": "edgar allan poe" - }, - { - "name": "`lowercase` filter should not mess with HTML escaping.", - "data": "<&lT;>", - "template": "{{ lowercase(.) }}", - "expected": "<&lt;>" - }, - { - "name": "`lowercase` filter should be unicode-aware.", - "data": "ΣÉΠŒIΣ", - "template": "{{ lowercase(.) }}", - "expected": "σéπœiς" - }, - - // uppercase - { - "name": "`uppercase` filter should change the all characters to their corresponding lowercase values.", - "data": "EDGAR allan poE", - "template": "{{ uppercase(.) }}", - "expected": "EDGAR ALLAN POE" - }, - { - "name": "`uppercase` filter should not mess with HTML escaping.", - "data": "<&lT;>", - "template": "{{ uppercase(.) }}", - "expected": "<&LT;>" - }, - { - "name": "`uppercase` filter should be unicode-aware.", - "data": "σéπßfiœıς", - "template": "{{ uppercase(.) }}", - "expected": "ΣÉΠSSFIŒIΣ" - }, - - // isBlank - { - "name": "`isBlank` filter should match missing keys.", - "data": {}, - "template": "{{# isBlank(object) }}success{{/ isBlank(object) }}", - "expected": "success" - }, - { - "name": "`isBlank` filter should match null.", - "data": { "object": null }, - "template": "{{# isBlank(object) }}success{{/ isBlank(object) }}", - "expected": "success" - }, - { - "name": "`isBlank` filter should match empty string.", - "data": { "object": "" }, - "template": "{{# isBlank(object) }}success{{/ isBlank(object) }}", - "expected": "success" - }, - { - "name": "`isBlank` filter should match string containing only white spaces, tabs and new lines.", - "data": { "object": " \t\n" }, - "template": "{{# isBlank(object) }}success{{/ isBlank(object) }}", - "expected": "success" - }, - { - "name": "`isBlank` filter should match empty list.", - "data": { "object": [] }, - "template": "{{# isBlank(object) }}success{{/ isBlank(object) }}", - "expected": "success" - }, - { - "name": "`isBlank` filter should not match string containing non space character.", - "data": { "object": " \t\nX \t\n" }, - "template": "{{^ isBlank(object) }}success{{/ isBlank(object) }}", - "expected": "success" - }, - { - "name": "`isBlank` filter should not match non-empty list.", - "data": { "object": [0,1,2,3] }, - "template": "{{^ isBlank(object) }}success{{/ isBlank(object) }}", - "expected": "success" - }, - { - "name": "`isBlank` filter should not match non-empty list, even lists made of false values.", - "data": { "object": [null] }, - "template": "{{^ isBlank(object) }}success{{/ isBlank(object) }}", - "expected": "success" - }, - { - "name": "`isBlank` filter should not match any object.", - "data": { "object": { "foo": "bar" } }, - "template": "{{^ isBlank(object) }}success{{/ isBlank(object) }}", - "expected": "success" - }, - { - "name": "`isBlank` filter should not match any object, even objects without any key.", - "data": { "object": {} }, - "template": "{{^ isBlank(object) }}success{{/ isBlank(object) }}", - "expected": "success" - }, - - // isEmpty - { - "name": "`isEmpty` filter should match missing keys.", - "data": {}, - "template": "{{# isEmpty(object) }}success{{/ isEmpty(object) }}", - "expected": "success" - }, - { - "name": "`isEmpty` filter should match null.", - "data": { "object": null }, - "template": "{{# isEmpty(object) }}success{{/ isEmpty(object) }}", - "expected": "success" - }, - { - "name": "`isEmpty` filter should match empty string.", - "data": { "object": "" }, - "template": "{{# isEmpty(object) }}success{{/ isEmpty(object) }}", - "expected": "success" - }, - { - "name": "`isEmpty` filter should match empty list.", - "data": { "object": [] }, - "template": "{{# isEmpty(object) }}success{{/ isEmpty(object) }}", - "expected": "success" - }, - { - "name": "`isEmpty` filter should not match string containing only white spaces, tabs and new lines.", - "data": { "object": " \t\n" }, - "template": "{{^ isEmpty(object) }}success{{/ isEmpty(object) }}", - "expected": "success" - }, - { - "name": "`isEmpty` filter should not match string containing non space character.", - "data": { "object": " \t\nX \t\n" }, - "template": "{{^ isEmpty(object) }}success{{/ isEmpty(object) }}", - "expected": "success" - }, - { - "name": "`isEmpty` filter should not match non-empty list.", - "data": { "object": [0,1,2,3] }, - "template": "{{^ isEmpty(object) }}success{{/ isEmpty(object) }}", - "expected": "success" - }, - { - "name": "`isEmpty` filter should not match non-empty list, even lists made of false values.", - "data": { "object": [null] }, - "template": "{{^ isEmpty(object) }}success{{/ isEmpty(object) }}", - "expected": "success" - }, - { - "name": "`isEmpty` filter should not match any object.", - "data": { "object": { "foo": "bar" } }, - "template": "{{^ isEmpty(object) }}success{{/ isEmpty(object) }}", - "expected": "success" - }, - { - "name": "`isEmpty` filter should not match any object, even objects without any key.", - "data": { "object": {} }, - "template": "{{^ isEmpty(object) }}success{{/ isEmpty(object) }}", - "expected": "success" - }, - - // HTML.escape - { - "name": "`HTML.escape` escapes nil as empty string.", - "data": {}, - "template": "<{{HTML.escape(missing)}}>", - "expected": "<>" - }, - { - "name": "`HTML.escape` escapes null as empty string.", - "data": { "null": null }, - "template": "<{{HTML.escape(null)}}>", - "expected": "<>" - }, - { - "name": "`HTML.escape` escapes any value, including numbers.", - "data": 1, - "template": "<{{HTML.escape(.)}}>", - "expected": "<1>" - }, - { - "name": "`HTML.escape` escapes HTML characters of strings.", - "data": "foo&\"'<>", - "template": "{{{.}}} {{{HTML.escape(.)}}} {{HTML.escape(.)}}", - "expected": "foo&\"'<> foo&"'<> foo&amp;&quot;&apos;&lt;&gt;" - }, - { - "name": "`HTML.escape` escapes all inner variable tags in a section.", - "data": { "subject1": "<", "subject2": ">" }, - "template": "{{#HTML.escape}}{{subject1}}{{subject2}}{{{subject1}}}{{{subject2}}}{{/HTML.escape}}", - "expected": "&lt;&gt;<>" - }, - { - "name": "`HTML.escape` does not escape inner section tags.", - "data": { "subject1": "<" }, - "template": "{{#HTML.escape}}{{#subject1}}{{{subject1}}}{{/subject1}}{{^subject1}}-{{/subject1}}{{#subject2}}{{{subject2}}}{{/subject2}}{{^subject2}}-{{/subject2}}{{/HTML.escape}}", - "expected": "<-" - }, - - // javascript.escape - { - "name": "`javascript.escape` escapes nil as empty string.", - "data": {}, - "template": "<{{javascript.escape(missing)}}>", - "expected": "<>" - }, - { - "name": "`javascript.escape` escapes null as empty string.", - "data": { "null": null }, - "template": "<{{javascript.escape(null)}}>", - "expected": "<>" - }, - { - "name": "`javascript.escape` escapes any value, including numbers.", - "data": 1, - "template": "<{{javascript.escape(.)}}>", - "expected": "<1>" - }, - { - // Inspired by https://github.com/django/django/blob/master/tests/regressiontests/defaultfilters/tests.py - "name": "`javascript.escape` escapes any value", - "data": "\"double quotes\" and 'single quotes'", - "template": "{{javascript.escape(.)}}", - "expected": "\\u0022double quotes\\u0022 and \\u0027single quotes\\u0027" - }, - { - // Inspired by https://github.com/django/django/blob/master/tests/regressiontests/defaultfilters/tests.py - "name": "`javascript.escape` escapes double and single quotes", - "data": "\"double quotes\" and 'single quotes'", - "template": "{{javascript.escape(.)}}", - "expected": "\\u0022double quotes\\u0022 and \\u0027single quotes\\u0027" - }, - { - // Inspired by https://github.com/django/django/blob/master/tests/regressiontests/defaultfilters/tests.py - "name": "`javascript.escape` escapes backslashes", - "data": "\\ : backslashes, too", - "template": "{{javascript.escape(.)}}", - "expected": "\\u005C : backslashes, too" - }, - { - // Inspired by https://github.com/django/django/blob/master/tests/regressiontests/defaultfilters/tests.py - "name": "`javascript.escape` escapes control characters", - "data": "and lots of whitespace: \r\n\t\f\b", - "template": "{{javascript.escape(.)}}", - "expected": "and lots of whitespace: \\u000D\\u000A\\u0009\\u000C\\u0008" - }, - { - // Inspired by https://github.com/django/django/blob/master/tests/regressiontests/defaultfilters/tests.py - "name": "`javascript.escape` escapes HTML tags", - "data": "", - "template": "{{javascript.escape(.)}}", - "expected": "\\u003Cscript\\u003Eand this\\u003C/script\\u003E" - }, - { - // Inspired by https://github.com/django/django/blob/master/tests/regressiontests/defaultfilters/tests.py - "name": "`javascript.escape` escapes PARAGRAPH SEPARATOR U+2029 and LINE SEPARATOR U+2028", - "data": "paragraph separator:\u2029and line separator:\u2028", - "template": "{{javascript.escape(.)}}", - "expected": "paragraph separator:\\u2029and line separator:\\u2028" - }, - { - "name": "`javascript.escape` escapes all inner variable tags in a section.", - "data": { "subject1": "'subject1'", "subject2": "'subject2'" }, - "template": "{{#javascript.escape}}{\"subject1\":\"{{subject1}}\",\"subject2\":\"{{subject2}}\"}{{/javascript.escape}}", - "expected": "{\"subject1\":\"\\u0027subject1\\u0027\",\"subject2\":\"\\u0027subject2\\u0027\"}" - }, - { - "name": "`javascript.escape` does not escape inner section tags.", - "data": { "subject1": "'subject1'" }, - "template": "{{#javascript.escape}}{\"subject1\":{{#subject1}}\"{{subject1}}\"{{/subject1}}{{^subject1}}null{{/subject1}},\"subject2\":{{#subject2}}\"{{subject2}}\"{{/subject2}}{{^subject2}}null{{/subject2}}}{{/javascript.escape}}", - "expected": "{\"subject1\":\"\\u0027subject1\\u0027\",\"subject2\":null}" - }, - - // URL.escape - { - "name": "`URL.escape` escapes nil as empty string.", - "data": {}, - "template": "<{{URL.escape(missing)}}>", - "expected": "<>" - }, - { - "name": "`URL.escape` escapes null as empty string.", - "data": { "null": null }, - "template": "<{{URL.escape(null)}}>", - "expected": "<>" - }, - { - "name": "`URL.escape` escapes any value, including numbers.", - "data": 1, - "template": "<{{URL.escape(.)}}>", - "expected": "<1>" - }, - { - "name": "`URL.escape` escapes strings with UTF8 encoding.", - "data": "?&=\r\n\t\f\b<>\"[]{}", - "template": "{{URL.escape(.)}}", - "expected": "%3F%26%3D%0D%0A%09%0C%08%3C%3E%22%5B%5D%7B%7D" - }, - { - "name": "`URL.escape` escapes unicode strings with UTF8 encoding.", - "data": "éı\ud83d\ude04", - "template": "{{URL.escape(.)}}", - "expected": "%C3%A9%C4%B1%F0%9F%98%84" - }, - { - "name": "`URL.escape` escapes all inner variable tags in a section.", - "data": { "subject1": " ", "subject2": "&" }, - "template": "{{#URL.escape}}subject1={{subject1}}&subject2={{subject2}}{{/URL.escape}}", - "expected": "subject1=%20&subject2=%26" - }, - { - "name": "`URL.escape` does not escape inner section tags.", - "data": { "subject1": " " }, - "template": "{{#URL.escape}}subject1={{subject1}}&subject2={{#subject2}}{{subject2}}{{/subject2}}{{^subject2}}0{{/subject2}}{{/URL.escape}}", - "expected": "subject1=%20&subject2=0" - } - ] -} diff --git a/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/tag_parsing_errors.json b/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/tag_parsing_errors.json deleted file mode 100644 index 31c9dc1c..00000000 --- a/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/tag_parsing_errors.json +++ /dev/null @@ -1,228 +0,0 @@ -{ - "tests": [ - { - "name": "Variable tags must be closed.", - "data": null, - "template": "\n{{\n", - "expected_error": "Parse error.*line 2\\b.*Unclosed Mustache tag" - }, - { - // Regression test: parser used to choke on '}' at the end of the - // template string. - "name": "Variable tags must be closed.", - "data": null, - "template": "\n{{\n}", - "expected_error": "Parse error.*line 2\\b.*Unclosed Mustache tag" - }, - { - "name": "Triple mustache tags must be closed.", - "data": null, - "template": "\n{{{#\n", - "expected_error": "Parse error.*line 2\\b.*Unclosed Mustache tag" - }, - { - "name": "Unescaped variable tags must be closed.", - "data": null, - "template": "\n{{&\n", - "expected_error": "Parse error.*line 2\\b.*Unclosed Mustache tag" - }, - { - "name": "Section tags must be closed.", - "data": null, - "template": "\n{{#\n", - "expected_error": "Parse error.*line 2\\b.*Unclosed Mustache tag" - }, - { - "name": "Inverted section tags must be closed.", - "data": null, - "template": "\n{{^\n", - "expected_error": "Parse error.*line 2\\b.*Unclosed Mustache tag" - }, - { - "name": "Inheritable section tags must be closed.", - "data": null, - "template": "\n{{$\n", - "expected_error": "Parse error.*line 2\\b.*Unclosed Mustache tag" - }, - { - "name": "Partial tags must be closed.", - "data": null, - "template": "\n{{>\n", - "expected_error": "Parse error.*line 2\\b.*Unclosed Mustache tag" - }, - { - "name": "Comment tags must be closed.", - "data": null, - "template": "\n{{!\n", - "expected_error": "Parse error.*line 2\\b.*Unclosed Mustache tag" - }, - { - "name": "Set delimiter tags must be closed.", - "data": null, - "template": "\n{{=\n", - "expected_error": "Parse error.*line 2\\b.*Unclosed Mustache tag" - }, - { - "name": "Pragma tags must be closed.", - "data": null, - "template": "\n{{%\n", - "expected_error": "Parse error.*line 2\\b.*Unclosed Mustache tag" - }, - { - "name": "Variable tags can not be empty.", - "data": null, - "template": "\n{{}}", - "expected_error": "Parse error.*line 2\\b.*Missing expression" - }, - { - "name": "Variable tags can not be blank.", - "data": null, - "template": "\n{{ \n\t}}", - "expected_error": "Parse error.*line 2\\b.*Missing expression" - }, - { - "name": "Triple mustache tags can not be empty.", - "data": null, - "template": "\n{{{}}}", - "expected_error": "Parse error.*line 2\\b.*Missing expression" - }, - { - "name": "Triple mustache tags can not be blank.", - "data": null, - "template": "\n{{{ \n\t}}}", - "expected_error": "Parse error.*line 2\\b.*Missing expression" - }, - { - "name": "Unescaped variable tags can not be empty.", - "data": null, - "template": "\n{{&}}", - "expected_error": "Parse error.*line 2\\b.*Missing expression" - }, - { - "name": "Unescaped variable tags can not be blank.", - "data": null, - "template": "\n{{& \n\t}}", - "expected_error": "Parse error.*line 2\\b.*Missing expression" - }, - { - "name": "Section tags can not be empty.", - "data": null, - "template": "\n{{#}}\n{{/}}", - "expected_error": "Parse error.*line 2\\b.*Missing expression" - }, - { - "name": "Section tags can not be blank.", - "data": null, - "template": "\n{{# \n\t}}\n{{/ \n\t}}", - "expected_error": "Parse error.*line 2\\b.*Missing expression" - }, - { - "name": "Inverted section tags can not be empty.", - "data": null, - "template": "\n{{^}}\n{{/}}", - "expected_error": "Parse error.*line 2\\b.*Missing expression" - }, - { - "name": "Inverted section can not be blank.", - "data": null, - "template": "\n{{^ \n\t}}\n{{/ \n\t}}", - "expected_error": "Parse error.*line 2\\b.*Missing expression" - }, - { - "name": "Inheritable section names can not be empty.", - "data": null, - "template": "\n{{$}}\n{{/}}", - "expected_error": "Parse error.*line 2\\b.*Missing inheritable section name" - }, - { - "name": "Inheritable section names can not contain white space.", - "data": null, - "template": "\n{{$ a b }}\n{{/ a b }}", - "expected_error": "Parse error.*line 2\\b.*Invalid inheritable section name" - }, - { - "name": "Inheritable section names can not be blank.", - "data": null, - "template": "\n{{$ \n\t}}\n{{/ \n\t}}", - "expected_error": "Parse error.*line 2\\b.*Missing inheritable section name" - }, - { - "name": "Partial tags can not be empty.", - "data": null, - "template": "\n{{>}}", - "expected_error": "Parse error.*line 2\\b.*Missing template name" - }, - { - "name": "Partial can not be blank.", - "data": null, - "template": "\n{{> \n\t}}", - "expected_error": "Parse error.*line 2\\b.*Missing template name" - }, - { - "name": "Quadruple mustaches yield a parse error.", - "data": null, - "template": "\n{{{{foo}}}}", - "expected_error": "Parse error.*line 2\\b" - }, - { - "name": "Section tag must be closed.", - "data": null, - "template": "\n{{#a}}", - "expected_error": "Parse error.*line 2\\b" - }, - { - "name": "Closing section tag which contain an expression must match the opening tag.", - "data": null, - "template": "\n{{#a}}\n{{/b}}", - "expected_error": "Parse error.*line 3\\b" - }, - { - "name": "Closing section tag which contain an expression must match the opening tag.", - "data": null, - "template": "\n{{#a(b)}}\n{{/a}}", - "expected_error": "Parse error.*line 3\\b" - }, - { - "name": "Closing section tag which contain an expression must match the opening tag.", - "data": null, - "template": "\n{{#a}}\n{{/a(b)}}", - "expected_error": "Parse error.*line 3\\b" - }, - { - "name": "Closing section tag which contain an expression must match the opening tag.", - "data": null, - "template": "\n{{#a.b}}\n{{/a}}", - "expected_error": "Parse error.*line 3\\b" - }, - { - "name": "Closing section tag which contain an expression must match the opening tag.", - "data": null, - "template": "\n{{#a}}\n{{/a.b}}", - "expected_error": "Parse error.*line 3\\b" - }, - { - "name": "Partial name must not contain any white space character.", - "data": null, - "template": "{{> a b }}", - "expected_error": "Parse error.*line 1\\b" - }, - { - "name": "Partial name must not contain any white space character.", - "data": null, - "template": "{{> a\rb }}", - "expected_error": "Parse error.*line 1\\b" - }, - { - "name": "Partial name must not contain any white space character.", - "data": null, - "template": "{{> a\nb }}", - "expected_error": "Parse error.*line 1\\b" - }, - { - "name": "Partial name must not contain any white space character.", - "data": null, - "template": "{{> a\tb }}", - "expected_error": "Parse error.*line 1\\b" - } - ] -} diff --git a/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/text_rendering.json b/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/text_rendering.json deleted file mode 100644 index 9dabbe57..00000000 --- a/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuites/text_rendering.json +++ /dev/null @@ -1,144 +0,0 @@ -{ - "tests": [ - { - "name": "CONTENT_TYPE:HTML pragma has no particular effect", - "data": { "subject" : "&" }, - "template": "{{% CONTENT_TYPE:HTML }}[{{subject}}{{{subject}}}]", - "expected": "[&&]" - }, - { - "name": "CONTENT_TYPE:TEXT pragma disables HTML-escaping", - "data": { "subject" : "&" }, - "template": "{{% CONTENT_TYPE:TEXT }}[{{subject}}{{{subject}}}]", - "expected": "[&&]" - }, - { - "name": "CONTENT_TYPE:HTML pragma following CONTENT_TYPE:TEXT pragma enables HTML-escaping", - "data": { "subject" : "&" }, - "template": "{{% CONTENT_TYPE:TEXT }}{{% CONTENT_TYPE:HTML }}[{{subject}}{{{subject}}}]", - "expected": "[&&]" - }, - { - "name": "CONTENT_TYPE:TEXT pragma following CONTENT_TYPE:HTML pragma disables HTML-escaping", - "data": { "subject" : "&" }, - "template": "{{% CONTENT_TYPE:HTML }}{{% CONTENT_TYPE:TEXT }}[{{subject}}{{{subject}}}]", - "expected": "[&&]" - }, - { - "name": "CONTENT_TYPE:TEXT pragma can follow text", - "data": { "subject" : "&" }, - "template": "hey {{% CONTENT_TYPE:TEXT }}[{{subject}}{{{subject}}}]", - "expected": "hey [&&]" - }, - { - "name": "CONTENT_TYPE:TEXT pragma can follow comment", - "data": { "subject" : "&" }, - "template": "{{! a text template }}{{% CONTENT_TYPE:TEXT }}[{{subject}}{{{subject}}}]", - "expected": "[&&]" - }, - { - "name": "CONTENT_TYPE:TEXT pragma can follow set delimiters tag", - "data": { "subject" : "&" }, - "template": "{{=< >=}}<% CONTENT_TYPE:TEXT >[<&subject>]", - "expected": "[&&]" - }, - { - "name": "CONTENT_TYPE:TEXT pragma can not follow variable tag.", - "data": null, - "template": "{{subject}}{{% CONTENT_TYPE:TEXT }}", - "expected_error": "Parse error" - }, - { - "name": "CONTENT_TYPE:TEXT pragma can not follow section tag.", - "data": null, - "template": "{{#foo}}{{/foo}}{{% CONTENT_TYPE:TEXT }}", - "expected_error": "Parse error" - }, - { - "name": "CONTENT_TYPE:TEXT pragma can not follow inverted section tag.", - "data": null, - "template": "{{^foo}}{{/foo}}{{% CONTENT_TYPE:TEXT }}", - "expected_error": "Parse error" - }, - { - "name": "CONTENT_TYPE:TEXT pragma can not follow inheritable section tag.", - "data": null, - "template": "{{$foo}}{{/foo}}{{% CONTENT_TYPE:TEXT }}", - "expected_error": "Parse error" - }, - { - "name": "CONTENT_TYPE:TEXT pragma can not enter section tag.", - "data": null, - "template": "{{#foo}}{{% CONTENT_TYPE:TEXT }}{{/foo}}", - "expected_error": "Parse error" - }, - { - "name": "CONTENT_TYPE:TEXT pragma can not enter inverted section tag.", - "data": null, - "template": "{{^foo}}{{% CONTENT_TYPE:TEXT }}{{/foo}}", - "expected_error": "Parse error" - }, - { - "name": "CONTENT_TYPE:TEXT pragma can not enter inheritable section tag.", - "data": null, - "template": "{{$foo}}{{% CONTENT_TYPE:TEXT }}{{/foo}}", - "expected_error": "Parse error" - }, - { - "name": "CONTENT_TYPE:TEXT pragma can not follow partial tag.", - "data": null, - "template": "{{>partial}}{{% CONTENT_TYPE:TEXT }}", - "partials": { "partial": "" }, - "expected_error": "Parse error" - }, - { - "name": "CONTENT_TYPE:TEXT pragma can not enter inherited partial tag.", - "data": null, - "template": "{{partial}}", - "partials": { "partial": "{{% CONTENT_TYPE:TEXT }}[{{subject}}{{{subject}}}]" }, - "expected": "[&&]" - }, - { - "name": "Template containing CONTENT_TYPE:TEXT pragma does not process HTML partials.", - "data": { "subject" : "&" }, - "template": "{{% CONTENT_TYPE:TEXT }}{{>partial}}", - "partials": { "partial": "[{{subject}}{{{subject}}}]" }, - "expected": "[&&]" - }, - { - "name": "HTML template can override HTML template", - "data": { "subject" : "&" }, - "template": "{{", - "expected": "<--->" - }, - { - "name": "Integers should be rendered in their natural fashion.", - "data": { "subject": 123 }, - "template": "<{{subject}}>", - "expected": "<123>" - }, - { - "name": "Zero should be rendered in its natural fashion.", - "data": { "subject": 0 }, - "template": "<{{subject}}>", - "expected": "<0>" - }, - { - "name": "Basic interpolation should be HTML escaped.", - "data": { "forbidden": "& \" < >" }, - "template": "<{{forbidden}}>", - "expected": "<& " < >>" - }, - { - "name": "Triple mustaches should interpolate without HTML escaping.", - "data": { "forbidden": "& \" < >" }, - "template": "<{{{forbidden}}}>", - "expected": "<& \" < >>" - }, - { - "name": "Ampersand should interpolate without HTML escaping.", - "data": { "forbidden": "& \" < >" }, - "template": "<{{&forbidden}}>", - "expected": "<& \" < >>" - }, - { - "name": "Liberal tag names should be accepted.", - "data": { "first-subject": "1", "middle_subject!": "2", "lastSubject?": "3" }, - "template": "<{{first-subject}}{{middle_subject!}}{{lastSubject?}}>", - "expected": "<123>" - }, - { - "name": "Enumeration is rendered as the concatenation of the rendering of items.", - "data": { "subject": ["&","\"","<",">",0,1,2] }, - "template": "<{{subject}}>", - "expected": "<&"<>012>" - }, - { - "name": "Triple mustaches should interpolate enumerations without HTML escaping", - "data": { "subject": ["&","\"","<",">",0,1,2] }, - "template": "<{{{subject}}}>", - "expected": "<&\"<>012>" - }, - - // Boolean interpretation - - { - "name": "Missing key should not be rendered.", - "data": { }, - "template": "<{{subject}}>", - "expected": "<>" - }, - { - "name": "Null should not be rendered.", - "data": { "subject": null }, - "template": "<{{subject}}>", - "expected": "<>" - }, - - // Whitespace Insensitivity - - { - "name": "Whitespace in double mustache tag should be ignored.", - "data": { "subject": "---" }, - "template": "<{{ \r\n\tsubject \r\n\t}}>", - "expected": "<--->" - }, - { - "name": "Whitespace in triple mustache tag should be ignored.", - "data": { "subject": "---" }, - "template": "<{{{ \r\n\tsubject \r\n\t}}}>", - "expected": "<--->" - }, - { - "name": "Whitespace in ampersand tag should be ignored.", - "data": { "subject": "---" }, - "template": "<{{& \r\n\tsubject \r\n\t}}>", - "expected": "<--->" - }, - - // Whitespace Sensitivity - - { - "name": "Single left outer whitespace should be honored.", - "data": { "subject": "---" }, - "template": "< {{subject}}>", - "expected": "< --->" - }, - { - "name": "Single right outer whitespace should be honored.", - "data": { "subject": "---" }, - "template": "<{{subject}} >", - "expected": "<--- >" - }, - { - "name": "Single left inner whitespace should be honored.", - "data": { "subject": " ---" }, - "template": "<{{subject}}>", - "expected": "< --->" - }, - { - "name": "Single right inner whitespace should be honored.", - "data": { "subject": "--- " }, - "template": "<{{subject}}>", - "expected": "<--- >" - } - ] -} diff --git a/src/tests/Public/v7.2/GRMustacheRenderingObject_7_2_Test.m b/src/tests/Public/v7.2/GRMustacheRenderingObject_7_2_Test.m deleted file mode 100644 index 94c424e6..00000000 --- a/src/tests/Public/v7.2/GRMustacheRenderingObject_7_2_Test.m +++ /dev/null @@ -1,134 +0,0 @@ -// The MIT License -// -// Copyright (c) 2014 Gwendal Roué -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_2 -#import "GRMustachePublicAPITest.h" - - -// ============================================================================= -#pragma mark - GRMustacheImplicitTrueRenderingObject - -@interface GRMustacheImplicitTrueRenderingObject : NSObject -@end - -@implementation GRMustacheImplicitTrueRenderingObject - -- (NSString *)renderForMustacheTag:(GRMustacheTag *)tag context:(GRMustacheContext *)context HTMLSafe:(BOOL *)HTMLSafe error:(NSError **)error -{ - switch (tag.type) { - case GRMustacheTagTypeVariable: - return @"variable"; - break; - - case GRMustacheTagTypeSection: - return @"section"; - break; - } -} - -@end - - -// ============================================================================= -#pragma mark - GRMustacheRenderingObject_7_2_Test - -@interface GRMustacheRenderingObject_7_2_Test : GRMustachePublicAPITest - -@end - -@implementation GRMustacheRenderingObject_7_2_Test - -- (void)testImplicitTrueRenderingObjects -{ - id object = [[[GRMustacheImplicitTrueRenderingObject alloc] init] autorelease]; - - { - NSString *rendering = [GRMustacheTemplate renderObject:@{ @"object": object } - fromString:@"<{{ object }}>" - error:NULL]; - XCTAssertEqualObjects(rendering, @""); - } - { - NSString *rendering = [GRMustacheTemplate renderObject:@{ @"object": object } - fromString:@"<{{# object }}...{{/ }}>" - error:NULL]; - XCTAssertEqualObjects(rendering, @"

    "); - } - { - NSString *rendering = [GRMustacheTemplate renderObject:@{ @"object": object } - fromString:@"<{{^ object }}...{{/ }}>" - error:NULL]; - XCTAssertEqualObjects(rendering, @"<>"); - } -} - -- (void)testImplicitTrueRenderingObjectsWithBlocks -{ - id object = [GRMustacheRendering renderingObjectWithBlock:^NSString *(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error) { - switch (tag.type) { - case GRMustacheTagTypeVariable: - return @"variable"; - break; - - case GRMustacheTagTypeSection: - return @"section"; - break; - } - }]; - - { - NSString *rendering = [GRMustacheTemplate renderObject:@{ @"object": object } - fromString:@"<{{ object }}>" - error:NULL]; - XCTAssertEqualObjects(rendering, @""); - } - { - NSString *rendering = [GRMustacheTemplate renderObject:@{ @"object": object } - fromString:@"<{{# object }}...{{/ }}>" - error:NULL]; - XCTAssertEqualObjects(rendering, @"
    "); - } - { - NSString *rendering = [GRMustacheTemplate renderObject:@{ @"object": object } - fromString:@"<{{^ object }}...{{/ }}>" - error:NULL]; - XCTAssertEqualObjects(rendering, @"<>"); - } -} - -- (void)testArrayOfRenderingObjectsInSectionTagDoesNotNeedExplicitInvocation -{ - id object1 = [GRMustacheRendering renderingObjectWithBlock:^NSString *(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error) { - NSString *tagRendering = [tag renderContentWithContext:context HTMLSafe:HTMLSafe error:error]; - return [NSString stringWithFormat:@"[1:%@]", tagRendering]; - }]; - id object2 = [GRMustacheRendering renderingObjectWithBlock:^NSString *(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error) { - NSString *tagRendering = [tag renderContentWithContext:context HTMLSafe:HTMLSafe error:error]; - return [NSString stringWithFormat:@"[2:%@]", tagRendering]; - }]; - - id items = @{@"items": @[object1, object2, @YES, @NO] }; - NSString *rendering = [[GRMustacheTemplate templateFromString:@"{{#items}}---{{/items}},{{#items}}{{#.}}---{{/.}}{{/items}}" error:NULL] renderObject:items error:NULL]; - XCTAssertEqualObjects(rendering, @"[1:---][2:---]------,[1:---][2:---]---", @""); -} - -@end diff --git a/src/tests/Public/v7.2/Suites/groue/GRMustache/GRMustacheSuites_7_2/standard_library.json b/src/tests/Public/v7.2/Suites/groue/GRMustache/GRMustacheSuites_7_2/standard_library.json deleted file mode 100644 index 573fe5bc..00000000 --- a/src/tests/Public/v7.2/Suites/groue/GRMustache/GRMustacheSuites_7_2/standard_library.json +++ /dev/null @@ -1,124 +0,0 @@ -{ - "tests": [ - - // each(array) - - { - "name": "`each` filter iterates its array argument and makes the `@first`, `@last` keys available for rendering.", - "data": { - "array": ["a", "b", "c", "d"] - }, - "template": "{{# each(array) }}{{^ @first }}{{# @last }} and {{^}}, {{/}}{{/}}{{.}}{{/}}", - "expected": "a, b, c and d" - }, - { - "name": "`each` filter iterates its array argument and makes the `@index` key available for rendering.", - "data": { - "array": ["a", "b", "c", "d"] - }, - "template": "{{# each(array) }}{{ @index }}{{/}}", - "expected": "0123" - }, - { - "name": "`each` filter iterates its array argument and makes the `@indexPlusOne` key available for rendering.", - "data": { - "array": ["a", "b", "c", "d"] - }, - "template": "{{# each(array) }}{{ @indexPlusOne }}{{/}}", - "expected": "1234" - }, - { - "name": "`each` filter iterates its array argument and makes the `@indexIsEven` key available for rendering.", - "data": { - "array": ["a", "b", "c", "d"] - }, - "template": "{{# each(array) }}{{# @indexIsEven }}e{{^}}o{{/}}{{/}}", - "expected": "eoeo" - }, - { - "name": "`each` filter does not render for empty arrays.", - "data": { - "array": [] - }, - "template": "{{# each(array) }}---{{^}}+++{{/}}", - "expected": "+++" - }, - { - "name": "`each` filter does not alter context access.", - "data": { "array": [{ "name": "foo" }, { "name": "bar" }] }, - "template": "{{# each(array) }}<{{@index}}:{{name}}>{{/}}", - "expected": "<0:foo><1:bar>" - }, - { - "name": "`each` filter should render independently all lists of an array.", - "data": { "array": [["a", "b"], [], [0, 1]] }, - "template": "<{{# each(array) }}{{@index}}:({{#.}}{{.}}{{^}}-{{/}}){{/}}>", - "expected": "<0:(ab)1:(-)2:(01)>" - }, - - // each(dictionary) - - { - "name": "`each` filter iterates its dictionary argument and make the `@key` key available for rendering.", - "data": { - // Because dictionaries are fundamentally unordered, we can render only a single key. - "dictionary": { "key": "value" } - }, - "template": "{{# each(dictionary) }}{{ @key }}:{{.}}{{/}}", - "expected": "key:value" - }, - { - "name": "`each` filter iterates its dictionary argument and make the `@first`, `@last` keys available for rendering.", - "data": { - // Because dictionaries are fundamentally unordered, we can only render a single unique value. - "dictionary": { "key1": "value", "key2": "value", "key3": "value" } - }, - "template": "{{# each(dictionary) }}{{^ @first }}{{# @last }} and {{^}}, {{/}}{{/}}{{.}}{{/}}", - "expected": "value, value and value" - }, - { - "name": "`each` filter iterates its dictionary argument and makes the `@index` key available for rendering.", - "data": { - "dictionary": { "key1": "value1", "key2": "value2", "key3": "value3" } - }, - "template": "{{# each(dictionary) }}{{ @indexPlusOne }}{{/}}", - "expected": "123" - }, - { - "name": "`each` filter iterates its dictionary argument and makes the `@indexPlusOne` key available for rendering.", - "data": { - "dictionary": { "key1": "value1", "key2": "value2", "key3": "value3" } - }, - "template": "{{# each(dictionary) }}{{ @indexPlusOne }}{{/}}", - "expected": "123" - }, - { - "name": "`each` filter iterates its dictionary argument and makes the `@indexIsEven` key available for rendering.", - "data": { - "dictionary": { "key1": "value", "key2": "value", "key3": "value" } - }, - "template": "{{# each(dictionary) }}{{# @indexIsEven }}e{{^}}o{{/}}{{/}}", - "expected": "eoe" - }, - { - "name": "`each` filter does not render for empty dictionaries.", - "data": { - "dictionary": {} - }, - "template": "{{# each(dictionary) }}---{{^}}+++{{/}}", - "expected": "+++" - }, - { - "name": "`each` filter does not alter context access.", - "data": { "dictionary": { "key": { "name": "foo" } } }, - "template": "{{# each(dictionary) }}<{{@key}}:{{name}}>{{/}}", - "expected": "" - }, - { - "name": "`each` filter should render independently all lists of a dictionary.", - "data": { "dictionary": { "key": [ "a", "b" ] } }, - "template": "{{# each(dictionary) }}{{ @key }}:{{#.}}{{.}}{{/}}{{/}}", - "expected": "key:ab" - } - ] -} diff --git a/src/tests/Public/v7.2/Suites/groue/GRMustache/GRMustacheSuites_7_2_Test.m b/src/tests/Public/v7.2/Suites/groue/GRMustache/GRMustacheSuites_7_2_Test.m deleted file mode 100644 index 17bf4cc0..00000000 --- a/src/tests/Public/v7.2/Suites/groue/GRMustache/GRMustacheSuites_7_2_Test.m +++ /dev/null @@ -1,36 +0,0 @@ -// The MIT License -// -// Copyright (c) 2014 Gwendal Roué -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_2 -#import "GRMustachePublicAPITest.h" - -@interface GRMustacheSuites_7_2_Test : GRMustachePublicAPISuiteTest -@end - -@implementation GRMustacheSuites_7_2_Test - -- (void)testGRMustacheSuites -{ - [self runTestsFromResource:@"standard_library.json" subdirectory:@"GRMustacheSuites_7_2"]; -} - -@end diff --git a/src/tests/Public/v7.0/GRBooleanTest.m b/src/tests/Public/v8.0/GRBooleanTest.m similarity index 100% rename from src/tests/Public/v7.0/GRBooleanTest.m rename to src/tests/Public/v8.0/GRBooleanTest.m diff --git a/src/tests/Public/v7.0/GRMustacheConfigurationTest/GRMustacheConfigurationBaseContextTest.m b/src/tests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationBaseContextTest.m similarity index 100% rename from src/tests/Public/v7.0/GRMustacheConfigurationTest/GRMustacheConfigurationBaseContextTest.m rename to src/tests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationBaseContextTest.m diff --git a/src/tests/Public/v7.0/GRMustacheConfigurationTest/GRMustacheConfigurationExtendBaseContextTest.m b/src/tests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationExtendBaseContextTest.m similarity index 100% rename from src/tests/Public/v7.0/GRMustacheConfigurationTest/GRMustacheConfigurationExtendBaseContextTest.m rename to src/tests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationExtendBaseContextTest.m diff --git a/src/tests/Public/v7.0/GRMustacheConfigurationTest/GRMustacheConfigurationTagDelimitersTest.m b/src/tests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationTagDelimitersTest.m similarity index 100% rename from src/tests/Public/v7.0/GRMustacheConfigurationTest/GRMustacheConfigurationTagDelimitersTest.m rename to src/tests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationTagDelimitersTest.m diff --git a/src/tests/Public/v7.0/GRMustacheConfigurationTest/GRMustacheConfigurationTest.m b/src/tests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationTest.m similarity index 100% rename from src/tests/Public/v7.0/GRMustacheConfigurationTest/GRMustacheConfigurationTest.m rename to src/tests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationTest.m diff --git a/src/tests/Public/v7.0/GRMustacheContextTest/GRMustacheContextHasValueForMustacheExpressionTest.m b/src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheContextHasValueForMustacheExpressionTest.m similarity index 100% rename from src/tests/Public/v7.0/GRMustacheContextTest/GRMustacheContextHasValueForMustacheExpressionTest.m rename to src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheContextHasValueForMustacheExpressionTest.m diff --git a/src/tests/Public/v7.0/GRMustacheContextTest/GRMustacheContextKeyAccessTest.m b/src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheContextKeyAccessTest.m similarity index 100% rename from src/tests/Public/v7.0/GRMustacheContextTest/GRMustacheContextKeyAccessTest.m rename to src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheContextKeyAccessTest.m diff --git a/src/tests/Public/v7.0/GRMustacheContextTest/GRMustacheContextProtectedObjectTest.m b/src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheContextProtectedObjectTest.m similarity index 100% rename from src/tests/Public/v7.0/GRMustacheContextTest/GRMustacheContextProtectedObjectTest.m rename to src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheContextProtectedObjectTest.m diff --git a/src/tests/Public/v7.0/GRMustacheContextTest/GRMustacheContextTest.m b/src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheContextTest.m similarity index 100% rename from src/tests/Public/v7.0/GRMustacheContextTest/GRMustacheContextTest.m rename to src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheContextTest.m diff --git a/src/tests/Public/v7.0/GRMustacheContextTest/GRMustacheContextTopMustacheObjectTest.m b/src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheContextTopMustacheObjectTest.m similarity index 100% rename from src/tests/Public/v7.0/GRMustacheContextTest/GRMustacheContextTopMustacheObjectTest.m rename to src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheContextTopMustacheObjectTest.m diff --git a/src/tests/Public/v7.0/GRMustacheContextTest/GRMustacheContextValueForMustacheKeyTest.m b/src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheContextValueForMustacheKeyTest.m similarity index 100% rename from src/tests/Public/v7.0/GRMustacheContextTest/GRMustacheContextValueForMustacheKeyTest.m rename to src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheContextValueForMustacheKeyTest.m diff --git a/src/tests/Public/v7.0/GRMustacheContextTest/GRMustacheKeyedSubscriptingTest.m b/src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheKeyedSubscriptingTest.m similarity index 100% rename from src/tests/Public/v7.0/GRMustacheContextTest/GRMustacheKeyedSubscriptingTest.m rename to src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheKeyedSubscriptingTest.m diff --git a/src/tests/Public/v7.0/GRMustacheErrorHandlingTest.m b/src/tests/Public/v8.0/GRMustacheErrorHandlingTest.m similarity index 100% rename from src/tests/Public/v7.0/GRMustacheErrorHandlingTest.m rename to src/tests/Public/v8.0/GRMustacheErrorHandlingTest.m diff --git a/src/tests/Public/v7.0/GRMustacheFilterTest/GRMustacheFilterTest.m b/src/tests/Public/v8.0/GRMustacheFilterTest/GRMustacheFilterTest.m similarity index 100% rename from src/tests/Public/v7.0/GRMustacheFilterTest/GRMustacheFilterTest.m rename to src/tests/Public/v8.0/GRMustacheFilterTest/GRMustacheFilterTest.m diff --git a/src/tests/Public/v7.0/GRMustacheFilterTest/GRMustacheVariadicFilterTest.m b/src/tests/Public/v8.0/GRMustacheFilterTest/GRMustacheVariadicFilterTest.m similarity index 100% rename from src/tests/Public/v7.0/GRMustacheFilterTest/GRMustacheVariadicFilterTest.m rename to src/tests/Public/v8.0/GRMustacheFilterTest/GRMustacheVariadicFilterTest.m diff --git a/src/tests/Public/v7.0/GRMustacheFoundationCollectionTest.m b/src/tests/Public/v8.0/GRMustacheFoundationCollectionTest.m similarity index 100% rename from src/tests/Public/v7.0/GRMustacheFoundationCollectionTest.m rename to src/tests/Public/v8.0/GRMustacheFoundationCollectionTest.m diff --git a/src/tests/Public/v7.0/GRMustacheParsingErrorsTest.m b/src/tests/Public/v8.0/GRMustacheParsingErrorsTest.m similarity index 100% rename from src/tests/Public/v7.0/GRMustacheParsingErrorsTest.m rename to src/tests/Public/v8.0/GRMustacheParsingErrorsTest.m diff --git a/src/tests/Public/v7.0/GRMustachePositionFilterTest.m b/src/tests/Public/v8.0/GRMustachePositionFilterTest.m similarity index 100% rename from src/tests/Public/v7.0/GRMustachePositionFilterTest.m rename to src/tests/Public/v8.0/GRMustachePositionFilterTest.m diff --git a/src/tests/Public/v7.0/GRMustacheRenderingObjectTest.m b/src/tests/Public/v8.0/GRMustacheRenderingObjectTest.m similarity index 90% rename from src/tests/Public/v7.0/GRMustacheRenderingObjectTest.m rename to src/tests/Public/v8.0/GRMustacheRenderingObjectTest.m index 604244ca..ebe31f39 100644 --- a/src/tests/Public/v7.0/GRMustacheRenderingObjectTest.m +++ b/src/tests/Public/v8.0/GRMustacheRenderingObjectTest.m @@ -24,6 +24,26 @@ #import "GRMustachePublicAPITest.h" #import "GRMustacheTestingDelegate.h" +@interface GRMustacheImplicitTrueRenderingObject : NSObject +@end + +@implementation GRMustacheImplicitTrueRenderingObject + +- (NSString *)renderForMustacheTag:(GRMustacheTag *)tag context:(GRMustacheContext *)context HTMLSafe:(BOOL *)HTMLSafe error:(NSError **)error +{ + switch (tag.type) { + case GRMustacheTagTypeVariable: + return @"variable"; + break; + + case GRMustacheTagTypeSection: + return @"section"; + break; + } +} + +@end + @interface GRMustacheRenderingObjectTest : GRMustachePublicAPITest @end @@ -777,4 +797,79 @@ - (void)testCurrentContentTypeIsUpdatedByDynamicPartials XCTAssertEqualObjects(rendering, @"&|&"); } + +- (void)testImplicitTrueRenderingObjects +{ + id object = [[[GRMustacheImplicitTrueRenderingObject alloc] init] autorelease]; + + { + NSString *rendering = [GRMustacheTemplate renderObject:@{ @"object": object } + fromString:@"<{{ object }}>" + error:NULL]; + XCTAssertEqualObjects(rendering, @""); + } + { + NSString *rendering = [GRMustacheTemplate renderObject:@{ @"object": object } + fromString:@"<{{# object }}...{{/ }}>" + error:NULL]; + XCTAssertEqualObjects(rendering, @"
    "); + } + { + NSString *rendering = [GRMustacheTemplate renderObject:@{ @"object": object } + fromString:@"<{{^ object }}...{{/ }}>" + error:NULL]; + XCTAssertEqualObjects(rendering, @"<>"); + } +} + +- (void)testImplicitTrueRenderingObjectsWithBlocks +{ + id object = [GRMustacheRendering renderingObjectWithBlock:^NSString *(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error) { + switch (tag.type) { + case GRMustacheTagTypeVariable: + return @"variable"; + break; + + case GRMustacheTagTypeSection: + return @"section"; + break; + } + }]; + + { + NSString *rendering = [GRMustacheTemplate renderObject:@{ @"object": object } + fromString:@"<{{ object }}>" + error:NULL]; + XCTAssertEqualObjects(rendering, @""); + } + { + NSString *rendering = [GRMustacheTemplate renderObject:@{ @"object": object } + fromString:@"<{{# object }}...{{/ }}>" + error:NULL]; + XCTAssertEqualObjects(rendering, @"
    "); + } + { + NSString *rendering = [GRMustacheTemplate renderObject:@{ @"object": object } + fromString:@"<{{^ object }}...{{/ }}>" + error:NULL]; + XCTAssertEqualObjects(rendering, @"<>"); + } +} + +- (void)testArrayOfRenderingObjectsInSectionTagDoesNotNeedExplicitInvocation +{ + id object1 = [GRMustacheRendering renderingObjectWithBlock:^NSString *(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error) { + NSString *tagRendering = [tag renderContentWithContext:context HTMLSafe:HTMLSafe error:error]; + return [NSString stringWithFormat:@"[1:%@]", tagRendering]; + }]; + id object2 = [GRMustacheRendering renderingObjectWithBlock:^NSString *(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error) { + NSString *tagRendering = [tag renderContentWithContext:context HTMLSafe:HTMLSafe error:error]; + return [NSString stringWithFormat:@"[2:%@]", tagRendering]; + }]; + + id items = @{@"items": @[object1, object2, @YES, @NO] }; + NSString *rendering = [[GRMustacheTemplate templateFromString:@"{{#items}}---{{/items}},{{#items}}{{#.}}---{{/.}}{{/items}}" error:NULL] renderObject:items error:NULL]; + XCTAssertEqualObjects(rendering, @"[1:---][2:---]------,[1:---][2:---]---", @""); +} + @end diff --git a/src/tests/Public/v7.2/GRMustacheEachFilterTest.m b/src/tests/Public/v8.0/GRMustacheServicesTest/GRMustacheEachFilterTest.m similarity index 100% rename from src/tests/Public/v7.2/GRMustacheEachFilterTest.m rename to src/tests/Public/v8.0/GRMustacheServicesTest/GRMustacheEachFilterTest.m diff --git a/src/tests/Public/v7.0/GRMustacheServicesTest/GRMustacheLocalizerTest.m b/src/tests/Public/v8.0/GRMustacheServicesTest/GRMustacheLocalizerTest.m similarity index 100% rename from src/tests/Public/v7.0/GRMustacheServicesTest/GRMustacheLocalizerTest.m rename to src/tests/Public/v8.0/GRMustacheServicesTest/GRMustacheLocalizerTest.m diff --git a/src/tests/Public/v7.0/GRMustacheServicesTest/GRMustacheLocalizerTestBundle/Localizable.strings b/src/tests/Public/v8.0/GRMustacheServicesTest/GRMustacheLocalizerTestBundle/Localizable.strings similarity index 100% rename from src/tests/Public/v7.0/GRMustacheServicesTest/GRMustacheLocalizerTestBundle/Localizable.strings rename to src/tests/Public/v8.0/GRMustacheServicesTest/GRMustacheLocalizerTestBundle/Localizable.strings diff --git a/src/tests/Public/v7.0/GRMustacheServicesTest/GRMustacheLocalizerTestBundle/Table.strings b/src/tests/Public/v8.0/GRMustacheServicesTest/GRMustacheLocalizerTestBundle/Table.strings similarity index 100% rename from src/tests/Public/v7.0/GRMustacheServicesTest/GRMustacheLocalizerTestBundle/Table.strings rename to src/tests/Public/v8.0/GRMustacheServicesTest/GRMustacheLocalizerTestBundle/Table.strings diff --git a/src/tests/Public/v7.0/GRMustacheServicesTest/GRMustacheNSFormatterTest.m b/src/tests/Public/v8.0/GRMustacheServicesTest/GRMustacheNSFormatterTest.m similarity index 100% rename from src/tests/Public/v7.0/GRMustacheServicesTest/GRMustacheNSFormatterTest.m rename to src/tests/Public/v8.0/GRMustacheServicesTest/GRMustacheNSFormatterTest.m diff --git a/src/tests/Public/v7.0/GRMustacheServicesTest/GRMustacheNSValueTransformerTest.m b/src/tests/Public/v8.0/GRMustacheServicesTest/GRMustacheNSValueTransformerTest.m similarity index 100% rename from src/tests/Public/v7.0/GRMustacheServicesTest/GRMustacheNSValueTransformerTest.m rename to src/tests/Public/v8.0/GRMustacheServicesTest/GRMustacheNSValueTransformerTest.m diff --git a/src/tests/Public/v7.0/GRMustacheServicesTest/GRMustacheStandardLibraryTest.m b/src/tests/Public/v8.0/GRMustacheServicesTest/GRMustacheStandardLibraryTest.m similarity index 100% rename from src/tests/Public/v7.0/GRMustacheServicesTest/GRMustacheStandardLibraryTest.m rename to src/tests/Public/v8.0/GRMustacheServicesTest/GRMustacheStandardLibraryTest.m diff --git a/src/tests/Public/v7.0/GRMustacheTagDelegateTest/GRMustacheTagDelegateTest.m b/src/tests/Public/v8.0/GRMustacheTagDelegateTest/GRMustacheTagDelegateTest.m similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTagDelegateTest/GRMustacheTagDelegateTest.m rename to src/tests/Public/v8.0/GRMustacheTagDelegateTest/GRMustacheTagDelegateTest.m diff --git a/src/tests/Public/v7.0/GRMustacheTagDelegateTest/GRMustacheTagDelegateTest.mustache b/src/tests/Public/v8.0/GRMustacheTagDelegateTest/GRMustacheTagDelegateTest.mustache similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTagDelegateTest/GRMustacheTagDelegateTest.mustache rename to src/tests/Public/v8.0/GRMustacheTagDelegateTest/GRMustacheTagDelegateTest.mustache diff --git a/src/tests/Public/v7.0/GRMustacheTagDelegateTest/GRMustacheTagDelegateTest_wrapper.mustache b/src/tests/Public/v8.0/GRMustacheTagDelegateTest/GRMustacheTagDelegateTest_wrapper.mustache similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTagDelegateTest/GRMustacheTagDelegateTest_wrapper.mustache rename to src/tests/Public/v8.0/GRMustacheTagDelegateTest/GRMustacheTagDelegateTest_wrapper.mustache diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryDataSourceTest.m b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryDataSourceTest.m similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryDataSourceTest.m rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryDataSourceTest.m diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest.m b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest.m similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest.m rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest.m diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest/base.mustache b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest/base.mustache similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest/base.mustache rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest/base.mustache diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest/partials/partial1.mustache b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest/partials/partial1.mustache similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest/partials/partial1.mustache rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest/partials/partial1.mustache diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest/partials/partial2.mustache b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest/partials/partial2.mustache similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest/partials/partial2.mustache rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest/partials/partial2.mustache diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file1 b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file1 similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file1 rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file1 diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file1.mustache b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file1.mustache similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file1.mustache rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file1.mustache diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file1.txt b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file1.txt similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file1.txt rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file1.txt diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file2 b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file2 similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file2 rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file2 diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file2.mustache b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file2.mustache similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file2.mustache rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file2.mustache diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file2.txt b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file2.txt similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file2.txt rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file2.txt diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file1 b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file1 similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file1 rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file1 diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file1.mustache b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file1.mustache similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file1.mustache rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file1.mustache diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file1.txt b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file1.txt similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file1.txt rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file1.txt diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file2 b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file2 similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file2 rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file2 diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file2.mustache b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file2.mustache similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file2.mustache rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file2.mustache diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file2.txt b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file2.txt similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file2.txt rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file2.txt diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file1 b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file1 similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file1 rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file1 diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file1.mustache b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file1.mustache similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file1.mustache rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file1.mustache diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file1.txt b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file1.txt similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file1.txt rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file1.txt diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file2 b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file2 similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file2 rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file2 diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file2.mustache b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file2.mustache similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file2.mustache rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file2.mustache diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file2.txt b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file2.txt similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file2.txt rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file2.txt diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file1 b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file1 similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file1 rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file1 diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file1.mustache b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file1.mustache similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file1.mustache rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file1.mustache diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file1.txt b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file1.txt similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file1.txt rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file1.txt diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file2 b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file2 similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file2 rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file2 diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file2.mustache b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file2.mustache similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file2.mustache rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file2.mustache diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file2.txt b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file2.txt similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file2.txt rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file2.txt diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file1 b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file1 similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file1 rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file1 diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file1.mustache b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file1.mustache similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file1.mustache rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file1.mustache diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file1.txt b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file1.txt similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file1.txt rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file1.txt diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file2 b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file2 similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file2 rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file2 diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file2.mustache b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file2.mustache similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file2.mustache rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file2.mustache diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file2.txt b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file2.txt similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file2.txt rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file2.txt diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file1 b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file1 similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file1 rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file1 diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file1.mustache b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file1.mustache similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file1.mustache rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file1.mustache diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file1.txt b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file1.txt similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file1.txt rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file1.txt diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file2 b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file2 similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file2 rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file2 diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file2.mustache b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file2.mustache similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file2.mustache rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file2.mustache diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file2.txt b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file2.txt similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file2.txt rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file2.txt diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBaseURLTest.m b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBaseURLTest.m similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBaseURLTest.m rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBaseURLTest.m diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest.m b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest.m similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest.m rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest.m diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest.mustache b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest.mustache similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest.mustache rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest.mustache diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest.text b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest.text similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest.text rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest.text diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTestResources/partial.mustache b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTestResources/partial.mustache similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTestResources/partial.mustache rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTestResources/partial.mustache diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTestResources/sibling.mustache b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTestResources/sibling.mustache similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTestResources/sibling.mustache rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTestResources/sibling.mustache diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest_partial b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest_partial similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest_partial rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest_partial diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest_partial.mustache b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest_partial.mustache similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest_partial.mustache rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest_partial.mustache diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest_partial.text b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest_partial.text similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest_partial.text rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest_partial.text diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithDictionaryTest.m b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithDictionaryTest.m similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithDictionaryTest.m rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithDictionaryTest.m diff --git a/src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithDirectoryTest.m b/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithDirectoryTest.m similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithDirectoryTest.m rename to src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithDirectoryTest.m diff --git a/src/tests/Public/v7.0/GRMustacheTemplateTest/GRMustacheTemplateExtendBaseContextTest.m b/src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateExtendBaseContextTest.m similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateTest/GRMustacheTemplateExtendBaseContextTest.m rename to src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateExtendBaseContextTest.m diff --git a/src/tests/Public/v7.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest b/src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest rename to src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest diff --git a/src/tests/Public/v7.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest.json b/src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest.json similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest.json rename to src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest.json diff --git a/src/tests/Public/v7.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest.m b/src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest.m similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest.m rename to src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest.m diff --git a/src/tests/Public/v7.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest.mustache b/src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest.mustache similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest.mustache rename to src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest.mustache diff --git a/src/tests/Public/v7.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest_compilerError.mustache b/src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest_compilerError.mustache similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest_compilerError.mustache rename to src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest_compilerError.mustache diff --git a/src/tests/Public/v7.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest_compilerErrorWrapper.mustache b/src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest_compilerErrorWrapper.mustache similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest_compilerErrorWrapper.mustache rename to src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest_compilerErrorWrapper.mustache diff --git a/src/tests/Public/v7.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest_parserError.mustache b/src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest_parserError.mustache similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest_parserError.mustache rename to src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest_parserError.mustache diff --git a/src/tests/Public/v7.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest_parserErrorWrapper.mustache b/src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest_parserErrorWrapper.mustache similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest_parserErrorWrapper.mustache rename to src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest_parserErrorWrapper.mustache diff --git a/src/tests/Public/v7.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest b/src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest rename to src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest diff --git a/src/tests/Public/v7.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest.json b/src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest.json similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest.json rename to src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest.json diff --git a/src/tests/Public/v7.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest.m b/src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest.m similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest.m rename to src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest.m diff --git a/src/tests/Public/v7.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest.mustache b/src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest.mustache similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest.mustache rename to src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest.mustache diff --git a/src/tests/Public/v7.0/GRMustacheTemplateTest/GRMustacheTemplateTemplateRepositoryTest.m b/src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateTemplateRepositoryTest.m similarity index 100% rename from src/tests/Public/v7.0/GRMustacheTemplateTest/GRMustacheTemplateTemplateRepositoryTest.m rename to src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateTemplateRepositoryTest.m diff --git a/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuitesTest.m b/src/tests/Public/v8.0/Suites/groue/GRMustache/GRMustacheSuitesTest.m similarity index 67% rename from src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuitesTest.m rename to src/tests/Public/v8.0/Suites/groue/GRMustache/GRMustacheSuitesTest.m index e44953d2..a6c513bc 100644 --- a/src/tests/Public/v7.0/Suites/groue/GRMustache/GRMustacheSuitesTest.m +++ b/src/tests/Public/v8.0/Suites/groue/GRMustache/GRMustacheSuitesTest.m @@ -30,23 +30,23 @@ @implementation GRMustacheSuitesTest - (void)testGRMustacheSuites { - [self runTestsFromResource:@"comments.json" subdirectory:@"GRMustacheSuites"]; - [self runTestsFromResource:@"compound_keys.json" subdirectory:@"GRMustacheSuites"]; - [self runTestsFromResource:@"delimiters.json" subdirectory:@"GRMustacheSuites"]; - [self runTestsFromResource:@"filters.json" subdirectory:@"GRMustacheSuites"]; - [self runTestsFromResource:@"standard_library.json" subdirectory:@"GRMustacheSuites"]; - [self runTestsFromResource:@"general.json" subdirectory:@"GRMustacheSuites"]; - [self runTestsFromResource:@"implicit_iterator.json" subdirectory:@"GRMustacheSuites"]; - [self runTestsFromResource:@"inverted_sections.json" subdirectory:@"GRMustacheSuites"]; - [self runTestsFromResource:@"inheritable_partials.json" subdirectory:@"GRMustacheSuites"]; - [self runTestsFromResource:@"inheritable_sections.json" subdirectory:@"GRMustacheSuites"]; - [self runTestsFromResource:@"partials.json" subdirectory:@"GRMustacheSuites"]; - [self runTestsFromResource:@"sections.json" subdirectory:@"GRMustacheSuites"]; - [self runTestsFromResource:@"variables.json" subdirectory:@"GRMustacheSuites"]; - [self runTestsFromResource:@"pragmas.json" subdirectory:@"GRMustacheSuites"]; - [self runTestsFromResource:@"text_rendering.json" subdirectory:@"GRMustacheSuites"]; - [self runTestsFromResource:@"tag_parsing_errors.json" subdirectory:@"GRMustacheSuites"]; - [self runTestsFromResource:@"expression_parsing_errors.json" subdirectory:@"GRMustacheSuites"]; + [self runTestsFromResource:@"blocks.json" subdirectory:@"Tests"]; + [self runTestsFromResource:@"comments.json" subdirectory:@"Tests"]; + [self runTestsFromResource:@"compound_keys.json" subdirectory:@"Tests"]; + [self runTestsFromResource:@"delimiters.json" subdirectory:@"Tests"]; + [self runTestsFromResource:@"expression_parsing_errors.json" subdirectory:@"Tests"]; + [self runTestsFromResource:@"filters.json" subdirectory:@"Tests"]; + [self runTestsFromResource:@"general.json" subdirectory:@"Tests"]; + [self runTestsFromResource:@"implicit_iterator.json" subdirectory:@"Tests"]; + [self runTestsFromResource:@"inverted_sections.json" subdirectory:@"Tests"]; + [self runTestsFromResource:@"partial_overrides.json" subdirectory:@"Tests"]; + [self runTestsFromResource:@"partials.json" subdirectory:@"Tests"]; + [self runTestsFromResource:@"pragmas.json" subdirectory:@"Tests"]; + [self runTestsFromResource:@"sections.json" subdirectory:@"Tests"]; + [self runTestsFromResource:@"standard_library.json" subdirectory:@"Tests"]; + [self runTestsFromResource:@"tag_parsing_errors.json" subdirectory:@"Tests"]; + [self runTestsFromResource:@"text_rendering.json" subdirectory:@"Tests"]; + [self runTestsFromResource:@"variables.json" subdirectory:@"Tests"]; } @end diff --git a/src/tests/Public/v7.0/Suites/mustache/spec/GRSpecificationSuitesTest.m b/src/tests/Public/v8.0/Suites/mustache/spec/GRSpecificationSuitesTest.m similarity index 100% rename from src/tests/Public/v7.0/Suites/mustache/spec/GRSpecificationSuitesTest.m rename to src/tests/Public/v8.0/Suites/mustache/spec/GRSpecificationSuitesTest.m diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/box.html b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/box.html similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/box.html rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/box.html diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/client.html b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/client.html similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/client.html rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/client.html diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/client.txt b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/client.txt similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/client.txt rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/client.txt diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/div.html b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/div.html similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/div.html rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/div.html diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/follow.html b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/follow.html similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/follow.html rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/follow.html diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/follownomenu.html b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/follownomenu.html similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/follownomenu.html rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/follownomenu.html diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/follownomenu.txt b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/follownomenu.txt similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/follownomenu.txt rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/follownomenu.txt diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/main.html b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/main.html similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/main.html rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/main.html diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/method.html b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/method.html similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/method.html rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/method.html diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/multipleextensions.html b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/multipleextensions.html similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/multipleextensions.html rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/multipleextensions.html diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/multipleextensions.txt b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/multipleextensions.txt similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/multipleextensions.txt rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/multipleextensions.txt diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/nested_inheritance.html b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/nested_inheritance.html similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/nested_inheritance.html rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/nested_inheritance.html diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/nested_inheritance.txt b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/nested_inheritance.txt similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/nested_inheritance.txt rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/nested_inheritance.txt diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/parentreplace.html b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/parentreplace.html similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/parentreplace.html rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/parentreplace.html diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/partialsub.html b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/partialsub.html similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/partialsub.html rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/partialsub.html diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/partialsubpartial.html b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/partialsubpartial.html similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/partialsubpartial.html rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/partialsubpartial.html diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/partialsubpartial.txt b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/partialsubpartial.txt similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/partialsubpartial.txt rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/partialsubpartial.txt diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/partialsuper.html b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/partialsuper.html similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/partialsuper.html rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/partialsuper.html diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recurse_base.html b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recurse_base.html similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recurse_base.html rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recurse_base.html diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial.html b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial.html similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial.html rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial.html diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial2.html b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial2.html similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial2.html rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial2.html diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial3.html b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial3.html similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial3.html rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial3.html diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial_inheritance.html b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial_inheritance.html similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial_inheritance.html rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial_inheritance.html diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial_inheritance.txt b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial_inheritance.txt similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial_inheritance.txt rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial_inheritance.txt diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/replace.html b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/replace.html similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/replace.html rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/replace.html diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/replace.txt b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/replace.txt similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/replace.txt rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/replace.txt diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/singlereplace.html b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/singlereplace.html similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/singlereplace.html rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/singlereplace.html diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/sub.html b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/sub.html similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/sub.html rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/sub.html diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/sub.txt b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/sub.txt similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/sub.txt rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/sub.txt diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblockchild1.html b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblockchild1.html similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblockchild1.html rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblockchild1.html diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblockchild1.txt b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblockchild1.txt similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblockchild1.txt rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblockchild1.txt diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblockchild2.html b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblockchild2.html similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblockchild2.html rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblockchild2.html diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblockchild2.txt b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblockchild2.txt similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblockchild2.txt rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblockchild2.txt diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblocksuper.html b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblocksuper.html similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblocksuper.html rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblocksuper.html diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsub.html b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsub.html similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsub.html rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsub.html diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsub.txt b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsub.txt similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsub.txt rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsub.txt diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild1.html b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild1.html similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild1.html rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild1.html diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild1.txt b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild1.txt similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild1.txt rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild1.txt diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild2.html b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild2.html similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild2.html rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild2.html diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild2.txt b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild2.txt similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild2.txt rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild2.txt diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild3.html b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild3.html similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild3.html rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild3.html diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild3.txt b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild3.txt similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild3.txt rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild3.txt diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubmiddle.html b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubmiddle.html similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubmiddle.html rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubmiddle.html diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubsuper.html b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubsuper.html similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubsuper.html rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubsuper.html diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/super.html b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/super.html similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/super.html rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/super.html diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/template.html b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/template.html similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/template.html rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/template.html diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/tweetbox.html b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/tweetbox.html similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/tweetbox.html rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/tweetbox.html diff --git a/src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuitesTest.m b/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuitesTest.m similarity index 100% rename from src/tests/Public/v7.0/Suites/spullara/mustache.java/GRMustacheJavaSuitesTest.m rename to src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuitesTest.m diff --git a/src/tests/Public/v7.0/Suites/twitter/hogan.js/GRHoganSuites/inheritable_partials.json b/src/tests/Public/v8.0/Suites/twitter/hogan.js/GRHoganSuites/inheritable_partials.json similarity index 100% rename from src/tests/Public/v7.0/Suites/twitter/hogan.js/GRHoganSuites/inheritable_partials.json rename to src/tests/Public/v8.0/Suites/twitter/hogan.js/GRHoganSuites/inheritable_partials.json diff --git a/src/tests/Public/v7.0/Suites/twitter/hogan.js/GRHoganSuitesTest.m b/src/tests/Public/v8.0/Suites/twitter/hogan.js/GRHoganSuitesTest.m similarity index 100% rename from src/tests/Public/v7.0/Suites/twitter/hogan.js/GRHoganSuitesTest.m rename to src/tests/Public/v8.0/Suites/twitter/hogan.js/GRHoganSuitesTest.m diff --git a/src/tests/vendor/groue/GRMustacheSpec b/src/tests/vendor/groue/GRMustacheSpec new file mode 160000 index 00000000..03466226 --- /dev/null +++ b/src/tests/vendor/groue/GRMustacheSpec @@ -0,0 +1 @@ +Subproject commit 034662267576e2d32f10a4dacf257680edbd3f93 From b334d4d09e83928981eec3f4025fcad4bf684351 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sat, 26 Sep 2015 14:07:18 +0200 Subject: [PATCH 14/81] Pass all groue/GRMustacheSpec tests, and stop including standard library by default. --- TODO.md | 3 + src/GRMustache.xcodeproj/project.pbxproj | 112 +++++------- src/classes/Compiling/GRMustacheCompiler.m | 24 +++ .../Configuration/GRMustacheConfiguration.m | 2 +- src/classes/GRMustache.h | 42 ++++- src/classes/GRMustache.m | 169 ++++++++++++------ src/classes/GRMustache_private.h | 14 +- .../Parsing/GRMustacheTemplateParser.m | 4 +- .../GRMustacheEachFilter_private.h | 3 +- ...Library.m => GRMustacheHTMLEscapeFilter.m} | 2 +- ...h => GRMustacheHTMLEscapeFilter_private.h} | 2 +- ...y.m => GRMustacheJavascriptEscapeFilter.m} | 6 +- ...RMustacheJavascriptEscapeFilter_private.h} | 6 +- .../StandardLibrary/GRMustacheLocalizer.m | 5 + .../GRMustacheStandardLibrary.m | 149 --------------- .../GRMustacheStandardLibrary_private.h | 60 ------- ...LLibrary.m => GRMustacheURLEscapeFilter.m} | 2 +- ....h => GRMustacheURLEscapeFilter_private.h} | 2 +- src/tests/Public/GRMustachePublicAPITest.m | 15 ++ .../GRMustacheConfigurationBaseContextTest.m | 10 -- ...ContextHasValueForMustacheExpressionTest.m | 2 +- .../GRMustacheContextTest.m | 20 --- ...GRMustacheContextValueForMustacheKeyTest.m | 7 +- .../GRMustacheFilterTest.m | 3 + .../GRMustacheEachFilterTest.m | 6 +- .../GRMustacheLocalizerTest.m | 21 ++- .../GRMustacheStandardLibraryTest.m | 42 ++--- 27 files changed, 315 insertions(+), 418 deletions(-) rename src/classes/Services/StandardLibrary/{GRMustacheHTMLLibrary.m => GRMustacheHTMLEscapeFilter.m} (98%) rename src/classes/Services/StandardLibrary/{GRMustacheHTMLLibrary_private.h => GRMustacheHTMLEscapeFilter_private.h} (97%) rename src/classes/Services/StandardLibrary/{GRMustacheJavascriptLibrary.m => GRMustacheJavascriptEscapeFilter.m} (98%) rename src/classes/Services/StandardLibrary/{GRMustacheJavascriptLibrary_private.h => GRMustacheJavascriptEscapeFilter_private.h} (87%) delete mode 100644 src/classes/Services/StandardLibrary/GRMustacheStandardLibrary.m delete mode 100644 src/classes/Services/StandardLibrary/GRMustacheStandardLibrary_private.h rename src/classes/Services/StandardLibrary/{GRMustacheURLLibrary.m => GRMustacheURLEscapeFilter.m} (99%) rename src/classes/Services/StandardLibrary/{GRMustacheURLLibrary_private.h => GRMustacheURLEscapeFilter_private.h} (97%) diff --git a/TODO.md b/TODO.md index abb1ac79..f117626b 100644 --- a/TODO.md +++ b/TODO.md @@ -4,5 +4,8 @@ - [ ] Compatibility with GRMustache.swift on Arrays, Sets, and other standard collections. - [ ] ARC. Since GRMustache 8 is all about framework and targetting iOS8+ and OSX10.9+, there is no longer any reason for manual memory management. - [ ] Share JSON tests suite with GRMustache.swift. + - [X] Use submodule - [ ] Arrays should only have "count", "first" and "last" keys. - [ ] Sets should only have "count", and "first" keys. +- [ ] Remove standard library from default context. +- [ ] Drop +[GRMustache standardLibrary] diff --git a/src/GRMustache.xcodeproj/project.pbxproj b/src/GRMustache.xcodeproj/project.pbxproj index 6c4da972..a73ec27a 100644 --- a/src/GRMustache.xcodeproj/project.pbxproj +++ b/src/GRMustache.xcodeproj/project.pbxproj @@ -150,7 +150,7 @@ 56214C351BA1A6BE0070C6CF /* GRMustacheBuffer_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375819B8EF2800854524 /* GRMustacheBuffer_private.h */; settings = {ASSET_TAGS = (); }; }; 56214C361BA1A6C20070C6CF /* GRMustacheAvailabilityMacros_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375719B8EF2800854524 /* GRMustacheAvailabilityMacros_private.h */; settings = {ASSET_TAGS = (); }; }; 56214C371BA1A6C50070C6CF /* GRMustacheAvailabilityMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375619B8EF2800854524 /* GRMustacheAvailabilityMacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56214C381BA1A6CD0070C6CF /* GRMustacheURLLibrary_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF373019B8EEC700854524 /* GRMustacheURLLibrary_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214C381BA1A6CD0070C6CF /* GRMustacheURLEscapeFilter_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF373019B8EEC700854524 /* GRMustacheURLEscapeFilter_private.h */; settings = {ASSET_TAGS = (); }; }; 56214C5D1BA1A6F20070C6CF /* GRMustacheConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF365819B8EE7A00854524 /* GRMustacheConfiguration.m */; settings = {ASSET_TAGS = (); }; }; 56214C5E1BA1A6F20070C6CF /* GRMustacheExpressionParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF366119B8EE8B00854524 /* GRMustacheExpressionParser.m */; settings = {ASSET_TAGS = (); }; }; 56214C5F1BA1A6F20070C6CF /* GRMustacheTemplateParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF366319B8EE8B00854524 /* GRMustacheTemplateParser.m */; settings = {ASSET_TAGS = (); }; }; @@ -182,11 +182,10 @@ 56214C791BA1A6F20070C6CF /* NSFormatter+GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372119B8EEC700854524 /* NSFormatter+GRMustache.m */; settings = {ASSET_TAGS = (); }; }; 56214C7A1BA1A6F20070C6CF /* NSValueTransformer+GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372319B8EEC700854524 /* NSValueTransformer+GRMustache.m */; settings = {ASSET_TAGS = (); }; }; 56214C7B1BA1A6F20070C6CF /* GRMustacheEachFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372519B8EEC700854524 /* GRMustacheEachFilter.m */; settings = {ASSET_TAGS = (); }; }; - 56214C7C1BA1A6F20070C6CF /* GRMustacheHTMLLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372719B8EEC700854524 /* GRMustacheHTMLLibrary.m */; settings = {ASSET_TAGS = (); }; }; - 56214C7D1BA1A6F20070C6CF /* GRMustacheJavascriptLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372919B8EEC700854524 /* GRMustacheJavascriptLibrary.m */; settings = {ASSET_TAGS = (); }; }; + 56214C7C1BA1A6F20070C6CF /* GRMustacheHTMLEscapeFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372719B8EEC700854524 /* GRMustacheHTMLEscapeFilter.m */; settings = {ASSET_TAGS = (); }; }; + 56214C7D1BA1A6F20070C6CF /* GRMustacheJavascriptEscapeFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372919B8EEC700854524 /* GRMustacheJavascriptEscapeFilter.m */; settings = {ASSET_TAGS = (); }; }; 56214C7E1BA1A6F20070C6CF /* GRMustacheLocalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372C19B8EEC700854524 /* GRMustacheLocalizer.m */; settings = {ASSET_TAGS = (); }; }; - 56214C7F1BA1A6F20070C6CF /* GRMustacheStandardLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372D19B8EEC700854524 /* GRMustacheStandardLibrary.m */; settings = {ASSET_TAGS = (); }; }; - 56214C801BA1A6F20070C6CF /* GRMustacheURLLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372F19B8EEC700854524 /* GRMustacheURLLibrary.m */; settings = {ASSET_TAGS = (); }; }; + 56214C801BA1A6F20070C6CF /* GRMustacheURLEscapeFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372F19B8EEC700854524 /* GRMustacheURLEscapeFilter.m */; settings = {ASSET_TAGS = (); }; }; 56214C811BA1A6F20070C6CF /* GRMustacheError.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF375B19B8EF2800854524 /* GRMustacheError.m */; settings = {ASSET_TAGS = (); }; }; 56214C821BA1A6F20070C6CF /* GRMustacheTranslateCharacters.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF375C19B8EF2800854524 /* GRMustacheTranslateCharacters.m */; settings = {ASSET_TAGS = (); }; }; 56214C831BA1A6F20070C6CF /* GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC293152631300031E8DC /* GRMustache.m */; settings = {ASSET_TAGS = (); }; }; @@ -222,9 +221,8 @@ 56214CA11BA1A70D0070C6CF /* GRMustacheExpressionGenerator_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56B01A4A19C49AF5000439C7 /* GRMustacheExpressionGenerator_private.h */; settings = {ASSET_TAGS = (); }; }; 56214CA21BA1A70D0070C6CF /* GRMustacheTemplateGenerator_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF371F19B8EEC700854524 /* GRMustacheTemplateGenerator_private.h */; settings = {ASSET_TAGS = (); }; }; 56214CA31BA1A70D0070C6CF /* GRMustacheEachFilter_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF372619B8EEC700854524 /* GRMustacheEachFilter_private.h */; settings = {ASSET_TAGS = (); }; }; - 56214CA41BA1A70D0070C6CF /* GRMustacheHTMLLibrary_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF372819B8EEC700854524 /* GRMustacheHTMLLibrary_private.h */; settings = {ASSET_TAGS = (); }; }; - 56214CA51BA1A70D0070C6CF /* GRMustacheJavascriptLibrary_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF372A19B8EEC700854524 /* GRMustacheJavascriptLibrary_private.h */; settings = {ASSET_TAGS = (); }; }; - 56214CA61BA1A70D0070C6CF /* GRMustacheStandardLibrary_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF372E19B8EEC700854524 /* GRMustacheStandardLibrary_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214CA41BA1A70D0070C6CF /* GRMustacheHTMLEscapeFilter_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF372819B8EEC700854524 /* GRMustacheHTMLEscapeFilter_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214CA51BA1A70D0070C6CF /* GRMustacheJavascriptEscapeFilter_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF372A19B8EEC700854524 /* GRMustacheJavascriptEscapeFilter_private.h */; settings = {ASSET_TAGS = (); }; }; 56214CA71BA1A7240070C6CF /* GRMustacheConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF365719B8EE7A00854524 /* GRMustacheConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; 56214CA81BA1A7300070C6CF /* GRMustacheTag.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368B19B8EE9D00854524 /* GRMustacheTag.h */; settings = {ATTRIBUTES = (Public, ); }; }; 56214CA91BA1A7490070C6CF /* GRMustacheContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36D719B8EEAD00854524 /* GRMustacheContext.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -274,11 +272,10 @@ 56AC8CC01BA1F69B009E4319 /* NSFormatter+GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372119B8EEC700854524 /* NSFormatter+GRMustache.m */; settings = {ASSET_TAGS = (); }; }; 56AC8CC11BA1F69B009E4319 /* NSValueTransformer+GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372319B8EEC700854524 /* NSValueTransformer+GRMustache.m */; settings = {ASSET_TAGS = (); }; }; 56AC8CC21BA1F69B009E4319 /* GRMustacheEachFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372519B8EEC700854524 /* GRMustacheEachFilter.m */; settings = {ASSET_TAGS = (); }; }; - 56AC8CC31BA1F69B009E4319 /* GRMustacheHTMLLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372719B8EEC700854524 /* GRMustacheHTMLLibrary.m */; settings = {ASSET_TAGS = (); }; }; - 56AC8CC41BA1F69B009E4319 /* GRMustacheJavascriptLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372919B8EEC700854524 /* GRMustacheJavascriptLibrary.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CC31BA1F69B009E4319 /* GRMustacheHTMLEscapeFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372719B8EEC700854524 /* GRMustacheHTMLEscapeFilter.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CC41BA1F69B009E4319 /* GRMustacheJavascriptEscapeFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372919B8EEC700854524 /* GRMustacheJavascriptEscapeFilter.m */; settings = {ASSET_TAGS = (); }; }; 56AC8CC51BA1F69B009E4319 /* GRMustacheLocalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372C19B8EEC700854524 /* GRMustacheLocalizer.m */; settings = {ASSET_TAGS = (); }; }; - 56AC8CC61BA1F69B009E4319 /* GRMustacheStandardLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372D19B8EEC700854524 /* GRMustacheStandardLibrary.m */; settings = {ASSET_TAGS = (); }; }; - 56AC8CC71BA1F69B009E4319 /* GRMustacheURLLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372F19B8EEC700854524 /* GRMustacheURLLibrary.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CC71BA1F69B009E4319 /* GRMustacheURLEscapeFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372F19B8EEC700854524 /* GRMustacheURLEscapeFilter.m */; settings = {ASSET_TAGS = (); }; }; 56AC8CC81BA1F69B009E4319 /* GRMustacheError.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF375B19B8EF2800854524 /* GRMustacheError.m */; settings = {ASSET_TAGS = (); }; }; 56AC8CC91BA1F69B009E4319 /* GRMustacheTranslateCharacters.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF375C19B8EF2800854524 /* GRMustacheTranslateCharacters.m */; settings = {ASSET_TAGS = (); }; }; 56AC8CCA1BA1F69B009E4319 /* GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC293152631300031E8DC /* GRMustache.m */; settings = {ASSET_TAGS = (); }; }; @@ -346,11 +343,10 @@ 56DAC78A1BB6A0040010FE01 /* NSFormatter+GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372119B8EEC700854524 /* NSFormatter+GRMustache.m */; }; 56DAC78B1BB6A0040010FE01 /* NSValueTransformer+GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372319B8EEC700854524 /* NSValueTransformer+GRMustache.m */; }; 56DAC78C1BB6A0040010FE01 /* GRMustacheEachFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372519B8EEC700854524 /* GRMustacheEachFilter.m */; }; - 56DAC78D1BB6A0040010FE01 /* GRMustacheHTMLLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372719B8EEC700854524 /* GRMustacheHTMLLibrary.m */; }; - 56DAC78E1BB6A0040010FE01 /* GRMustacheJavascriptLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372919B8EEC700854524 /* GRMustacheJavascriptLibrary.m */; }; + 56DAC78D1BB6A0040010FE01 /* GRMustacheHTMLEscapeFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372719B8EEC700854524 /* GRMustacheHTMLEscapeFilter.m */; }; + 56DAC78E1BB6A0040010FE01 /* GRMustacheJavascriptEscapeFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372919B8EEC700854524 /* GRMustacheJavascriptEscapeFilter.m */; }; 56DAC78F1BB6A0040010FE01 /* GRMustacheLocalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372C19B8EEC700854524 /* GRMustacheLocalizer.m */; }; - 56DAC7901BB6A0040010FE01 /* GRMustacheStandardLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372D19B8EEC700854524 /* GRMustacheStandardLibrary.m */; }; - 56DAC7911BB6A0040010FE01 /* GRMustacheURLLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372F19B8EEC700854524 /* GRMustacheURLLibrary.m */; }; + 56DAC7911BB6A0040010FE01 /* GRMustacheURLEscapeFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372F19B8EEC700854524 /* GRMustacheURLEscapeFilter.m */; }; 56DAC7921BB6A0040010FE01 /* GRMustacheError.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF375B19B8EF2800854524 /* GRMustacheError.m */; }; 56DAC7931BB6A0040010FE01 /* GRMustacheTranslateCharacters.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF375C19B8EF2800854524 /* GRMustacheTranslateCharacters.m */; }; 56DAC7941BB6A0040010FE01 /* GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC293152631300031E8DC /* GRMustache.m */; }; @@ -378,16 +374,14 @@ 6586A0781B9E2E310067C98E /* NSValueTransformer+GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372319B8EEC700854524 /* NSValueTransformer+GRMustache.m */; }; 6586A0791B9E2E360067C98E /* GRMustacheEachFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372519B8EEC700854524 /* GRMustacheEachFilter.m */; }; 6586A07A1B9E2E360067C98E /* GRMustacheEachFilter_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF372619B8EEC700854524 /* GRMustacheEachFilter_private.h */; settings = {ASSET_TAGS = (); }; }; - 6586A07B1B9E2E360067C98E /* GRMustacheHTMLLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372719B8EEC700854524 /* GRMustacheHTMLLibrary.m */; }; - 6586A07C1B9E2E360067C98E /* GRMustacheHTMLLibrary_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF372819B8EEC700854524 /* GRMustacheHTMLLibrary_private.h */; settings = {ASSET_TAGS = (); }; }; - 6586A07D1B9E2E360067C98E /* GRMustacheJavascriptLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372919B8EEC700854524 /* GRMustacheJavascriptLibrary.m */; }; - 6586A07E1B9E2E360067C98E /* GRMustacheJavascriptLibrary_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF372A19B8EEC700854524 /* GRMustacheJavascriptLibrary_private.h */; settings = {ASSET_TAGS = (); }; }; + 6586A07B1B9E2E360067C98E /* GRMustacheHTMLEscapeFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372719B8EEC700854524 /* GRMustacheHTMLEscapeFilter.m */; }; + 6586A07C1B9E2E360067C98E /* GRMustacheHTMLEscapeFilter_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF372819B8EEC700854524 /* GRMustacheHTMLEscapeFilter_private.h */; settings = {ASSET_TAGS = (); }; }; + 6586A07D1B9E2E360067C98E /* GRMustacheJavascriptEscapeFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372919B8EEC700854524 /* GRMustacheJavascriptEscapeFilter.m */; }; + 6586A07E1B9E2E360067C98E /* GRMustacheJavascriptEscapeFilter_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF372A19B8EEC700854524 /* GRMustacheJavascriptEscapeFilter_private.h */; settings = {ASSET_TAGS = (); }; }; 6586A07F1B9E2E360067C98E /* GRMustacheLocalizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF372B19B8EEC700854524 /* GRMustacheLocalizer.h */; settings = {ATTRIBUTES = (Public, ); }; }; 6586A0801B9E2E360067C98E /* GRMustacheLocalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372C19B8EEC700854524 /* GRMustacheLocalizer.m */; }; - 6586A0811B9E2E360067C98E /* GRMustacheStandardLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372D19B8EEC700854524 /* GRMustacheStandardLibrary.m */; }; - 6586A0821B9E2E360067C98E /* GRMustacheStandardLibrary_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF372E19B8EEC700854524 /* GRMustacheStandardLibrary_private.h */; settings = {ASSET_TAGS = (); }; }; - 6586A0831B9E2E360067C98E /* GRMustacheURLLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372F19B8EEC700854524 /* GRMustacheURLLibrary.m */; }; - 6586A0841B9E2E360067C98E /* GRMustacheURLLibrary_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF373019B8EEC700854524 /* GRMustacheURLLibrary_private.h */; settings = {ASSET_TAGS = (); }; }; + 6586A0831B9E2E360067C98E /* GRMustacheURLEscapeFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372F19B8EEC700854524 /* GRMustacheURLEscapeFilter.m */; }; + 6586A0841B9E2E360067C98E /* GRMustacheURLEscapeFilter_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF373019B8EEC700854524 /* GRMustacheURLEscapeFilter_private.h */; settings = {ASSET_TAGS = (); }; }; 6586A0851B9E2E4A0067C98E /* GRMustacheTemplate.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF370B19B8EEB900854524 /* GRMustacheTemplate.h */; settings = {ATTRIBUTES = (Public, ); }; }; 6586A0861B9E2E4A0067C98E /* GRMustacheTemplate.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF370C19B8EEB900854524 /* GRMustacheTemplate.m */; }; 6586A0871B9E2E4A0067C98E /* GRMustacheTemplate_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF370D19B8EEB900854524 /* GRMustacheTemplate_private.h */; settings = {ASSET_TAGS = (); }; }; @@ -626,16 +620,14 @@ 56BF372319B8EEC700854524 /* NSValueTransformer+GRMustache.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSValueTransformer+GRMustache.m"; sourceTree = ""; }; 56BF372519B8EEC700854524 /* GRMustacheEachFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheEachFilter.m; sourceTree = ""; }; 56BF372619B8EEC700854524 /* GRMustacheEachFilter_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustacheEachFilter_private.h; sourceTree = ""; }; - 56BF372719B8EEC700854524 /* GRMustacheHTMLLibrary.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheHTMLLibrary.m; sourceTree = ""; }; - 56BF372819B8EEC700854524 /* GRMustacheHTMLLibrary_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustacheHTMLLibrary_private.h; sourceTree = ""; }; - 56BF372919B8EEC700854524 /* GRMustacheJavascriptLibrary.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheJavascriptLibrary.m; sourceTree = ""; }; - 56BF372A19B8EEC700854524 /* GRMustacheJavascriptLibrary_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustacheJavascriptLibrary_private.h; sourceTree = ""; }; + 56BF372719B8EEC700854524 /* GRMustacheHTMLEscapeFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheHTMLEscapeFilter.m; sourceTree = ""; }; + 56BF372819B8EEC700854524 /* GRMustacheHTMLEscapeFilter_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustacheHTMLEscapeFilter_private.h; sourceTree = ""; }; + 56BF372919B8EEC700854524 /* GRMustacheJavascriptEscapeFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheJavascriptEscapeFilter.m; sourceTree = ""; }; + 56BF372A19B8EEC700854524 /* GRMustacheJavascriptEscapeFilter_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustacheJavascriptEscapeFilter_private.h; sourceTree = ""; }; 56BF372B19B8EEC700854524 /* GRMustacheLocalizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustacheLocalizer.h; sourceTree = ""; }; 56BF372C19B8EEC700854524 /* GRMustacheLocalizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheLocalizer.m; sourceTree = ""; }; - 56BF372D19B8EEC700854524 /* GRMustacheStandardLibrary.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheStandardLibrary.m; sourceTree = ""; }; - 56BF372E19B8EEC700854524 /* GRMustacheStandardLibrary_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustacheStandardLibrary_private.h; sourceTree = ""; }; - 56BF372F19B8EEC700854524 /* GRMustacheURLLibrary.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheURLLibrary.m; sourceTree = ""; }; - 56BF373019B8EEC700854524 /* GRMustacheURLLibrary_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustacheURLLibrary_private.h; sourceTree = ""; }; + 56BF372F19B8EEC700854524 /* GRMustacheURLEscapeFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheURLEscapeFilter.m; sourceTree = ""; }; + 56BF373019B8EEC700854524 /* GRMustacheURLEscapeFilter_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustacheURLEscapeFilter_private.h; sourceTree = ""; }; 56BF375619B8EF2800854524 /* GRMustacheAvailabilityMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustacheAvailabilityMacros.h; sourceTree = ""; }; 56BF375719B8EF2800854524 /* GRMustacheAvailabilityMacros_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustacheAvailabilityMacros_private.h; sourceTree = ""; }; 56BF375819B8EF2800854524 /* GRMustacheBuffer_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustacheBuffer_private.h; sourceTree = ""; }; @@ -1067,16 +1059,14 @@ children = ( 56BF372519B8EEC700854524 /* GRMustacheEachFilter.m */, 56BF372619B8EEC700854524 /* GRMustacheEachFilter_private.h */, - 56BF372719B8EEC700854524 /* GRMustacheHTMLLibrary.m */, - 56BF372819B8EEC700854524 /* GRMustacheHTMLLibrary_private.h */, - 56BF372919B8EEC700854524 /* GRMustacheJavascriptLibrary.m */, - 56BF372A19B8EEC700854524 /* GRMustacheJavascriptLibrary_private.h */, + 56BF372719B8EEC700854524 /* GRMustacheHTMLEscapeFilter.m */, + 56BF372819B8EEC700854524 /* GRMustacheHTMLEscapeFilter_private.h */, + 56BF372919B8EEC700854524 /* GRMustacheJavascriptEscapeFilter.m */, + 56BF372A19B8EEC700854524 /* GRMustacheJavascriptEscapeFilter_private.h */, 56BF372B19B8EEC700854524 /* GRMustacheLocalizer.h */, 56BF372C19B8EEC700854524 /* GRMustacheLocalizer.m */, - 56BF372D19B8EEC700854524 /* GRMustacheStandardLibrary.m */, - 56BF372E19B8EEC700854524 /* GRMustacheStandardLibrary_private.h */, - 56BF372F19B8EEC700854524 /* GRMustacheURLLibrary.m */, - 56BF373019B8EEC700854524 /* GRMustacheURLLibrary_private.h */, + 56BF372F19B8EEC700854524 /* GRMustacheURLEscapeFilter.m */, + 56BF373019B8EEC700854524 /* GRMustacheURLEscapeFilter_private.h */, ); path = StandardLibrary; sourceTree = ""; @@ -1258,12 +1248,11 @@ 56214C8D1BA1A70D0070C6CF /* GRMustacheImplicitIteratorExpression_private.h in Headers */, 56214C9C1BA1A70D0070C6CF /* GRMustacheKeyAccess_private.h in Headers */, 56214C981BA1A70D0070C6CF /* GRMustacheVariableTag_private.h in Headers */, - 56214CA61BA1A70D0070C6CF /* GRMustacheStandardLibrary_private.h in Headers */, 56214CAE1BA1A7490070C6CF /* GRMustacheTemplate.h in Headers */, - 56214CA51BA1A70D0070C6CF /* GRMustacheJavascriptLibrary_private.h in Headers */, + 56214CA51BA1A70D0070C6CF /* GRMustacheJavascriptEscapeFilter_private.h in Headers */, 56214C9B1BA1A70D0070C6CF /* GRMustacheFilter_private.h in Headers */, 56214CAD1BA1A7490070C6CF /* GRMustacheTagDelegate.h in Headers */, - 56214CA41BA1A70D0070C6CF /* GRMustacheHTMLLibrary_private.h in Headers */, + 56214CA41BA1A70D0070C6CF /* GRMustacheHTMLEscapeFilter_private.h in Headers */, 56214CAC1BA1A7490070C6CF /* GRMustacheSafeKeyAccess.h in Headers */, 56214C2C1BA1A6870070C6CF /* GRMustache.h in Headers */, 56214C9D1BA1A70D0070C6CF /* GRMustacheRendering_private.h in Headers */, @@ -1271,7 +1260,7 @@ 56214C971BA1A70D0070C6CF /* GRMustacheTextNode_private.h in Headers */, 56214C8A1BA1A70D0070C6CF /* GRMustacheExpressionVisitor_private.h in Headers */, 56214C8E1BA1A70D0070C6CF /* GRMustacheScopedExpression_private.h in Headers */, - 56214C381BA1A6CD0070C6CF /* GRMustacheURLLibrary_private.h in Headers */, + 56214C381BA1A6CD0070C6CF /* GRMustacheURLEscapeFilter_private.h in Headers */, 56214C921BA1A70D0070C6CF /* GRMustacheSectionTag_private.h in Headers */, 56214C911BA1A70D0070C6CF /* GRMustachePartialNode_private.h in Headers */, 56214C841BA1A70D0070C6CF /* GRMustacheConfiguration_private.h in Headers */, @@ -1290,7 +1279,7 @@ 6586A0971B9E2E4F0067C98E /* GRMustacheRendering_private.h in Headers */, 6586A0B01B9E2E5B0067C98E /* GRMustacheVariableTag_private.h in Headers */, 6586A08B1B9E2E4F0067C98E /* GRMustacheContext.h in Headers */, - 6586A07C1B9E2E360067C98E /* GRMustacheHTMLLibrary_private.h in Headers */, + 6586A07C1B9E2E360067C98E /* GRMustacheHTMLEscapeFilter_private.h in Headers */, 6586A09D1B9E2E550067C98E /* GRMustacheCompiler_private.h in Headers */, 6586A0681B9E2DBC0067C98E /* GRMustacheVersion.h in Headers */, 6586A0901B9E2E4F0067C98E /* GRMustacheFilter.h in Headers */, @@ -1299,7 +1288,7 @@ 6586A0C41B9E2E6A0067C98E /* GRMustacheConfiguration_private.h in Headers */, 6586A0661B9E2DB30067C98E /* GRMustache_private.h in Headers */, 6586A0951B9E2E4F0067C98E /* GRMustacheRendering.h in Headers */, - 6586A07E1B9E2E360067C98E /* GRMustacheJavascriptLibrary_private.h in Headers */, + 6586A07E1B9E2E360067C98E /* GRMustacheJavascriptEscapeFilter_private.h in Headers */, 6586A0BD1B9E2E660067C98E /* GRMustacheExpressionParser_private.h in Headers */, 6586A0941B9E2E4F0067C98E /* GRMustacheKeyAccess_private.h in Headers */, 6586A0991B9E2E4F0067C98E /* GRMustacheRenderingEngine_private.h in Headers */, @@ -1311,13 +1300,12 @@ 6586A06A1B9E2E100067C98E /* GRMustacheAvailabilityMacros_private.h in Headers */, 6586A0B91B9E2E600067C98E /* GRMustacheImplicitIteratorExpression_private.h in Headers */, 6586A0751B9E2E310067C98E /* NSFormatter+GRMustache.h in Headers */, - 6586A0841B9E2E360067C98E /* GRMustacheURLLibrary_private.h in Headers */, + 6586A0841B9E2E360067C98E /* GRMustacheURLEscapeFilter_private.h in Headers */, 6586A0851B9E2E4A0067C98E /* GRMustacheTemplate.h in Headers */, 6586A0921B9E2E4F0067C98E /* GRMustacheFilter_private.h in Headers */, 6586A06D1B9E2E100067C98E /* GRMustacheError.h in Headers */, 6586A0691B9E2E100067C98E /* GRMustacheAvailabilityMacros.h in Headers */, 6586A0BF1B9E2E660067C98E /* GRMustacheTemplateParser_private.h in Headers */, - 6586A0821B9E2E360067C98E /* GRMustacheStandardLibrary_private.h in Headers */, 6586A0721B9E2E310067C98E /* GRMustacheExpressionGenerator_private.h in Headers */, 6586A09A1B9E2E4F0067C98E /* GRMustacheSafeKeyAccess.h in Headers */, 6586A09F1B9E2E5B0067C98E /* GRMustacheInheritedPartialNode_private.h in Headers */, @@ -1637,10 +1625,9 @@ 56214C671BA1A6F20070C6CF /* GRMustacheInheritedPartialNode.m in Sources */, 56214C6B1BA1A6F20070C6CF /* GRMustacheTag.m in Sources */, 56214C621BA1A6F20070C6CF /* GRMustacheExpression.m in Sources */, - 56214C801BA1A6F20070C6CF /* GRMustacheURLLibrary.m in Sources */, + 56214C801BA1A6F20070C6CF /* GRMustacheURLEscapeFilter.m in Sources */, 56214C761BA1A6F20070C6CF /* GRMustacheTemplateRepository.m in Sources */, 56214C601BA1A6F20070C6CF /* GRMustacheToken.m in Sources */, - 56214C7F1BA1A6F20070C6CF /* GRMustacheStandardLibrary.m in Sources */, 56214C7E1BA1A6F20070C6CF /* GRMustacheLocalizer.m in Sources */, 56214C781BA1A6F20070C6CF /* GRMustacheTemplateGenerator.m in Sources */, 56214C741BA1A6F20070C6CF /* GRMustacheRenderingEngine.m in Sources */, @@ -1652,7 +1639,7 @@ 56214C811BA1A6F20070C6CF /* GRMustacheError.m in Sources */, 56214C5F1BA1A6F20070C6CF /* GRMustacheTemplateParser.m in Sources */, 56214C651BA1A6F20070C6CF /* GRMustacheImplicitIteratorExpression.m in Sources */, - 56214C7C1BA1A6F20070C6CF /* GRMustacheHTMLLibrary.m in Sources */, + 56214C7C1BA1A6F20070C6CF /* GRMustacheHTMLEscapeFilter.m in Sources */, 56214C711BA1A6F20070C6CF /* GRMustacheFilter.m in Sources */, 56214C701BA1A6F20070C6CF /* GRMustacheExpressionInvocation.m in Sources */, 56214C6D1BA1A6F20070C6CF /* GRMustacheTextNode.m in Sources */, @@ -1668,7 +1655,7 @@ 56214C681BA1A6F20070C6CF /* GRMustacheInheritableSectionNode.m in Sources */, 56214C791BA1A6F20070C6CF /* NSFormatter+GRMustache.m in Sources */, 56214C7A1BA1A6F20070C6CF /* NSValueTransformer+GRMustache.m in Sources */, - 56214C7D1BA1A6F20070C6CF /* GRMustacheJavascriptLibrary.m in Sources */, + 56214C7D1BA1A6F20070C6CF /* GRMustacheJavascriptEscapeFilter.m in Sources */, 56214C5E1BA1A6F20070C6CF /* GRMustacheExpressionParser.m in Sources */, 56214C691BA1A6F20070C6CF /* GRMustachePartialNode.m in Sources */, ); @@ -1780,7 +1767,7 @@ 56AC8CAD1BA1F69B009E4319 /* GRMustacheScopedExpression.m in Sources */, 56DAC7131BB69DAC0010FE01 /* GRMustacheTestingDelegate.m in Sources */, 56AC8CB31BA1F69B009E4319 /* GRMustacheTemplateAST.m in Sources */, - 56AC8CC41BA1F69B009E4319 /* GRMustacheJavascriptLibrary.m in Sources */, + 56AC8CC41BA1F69B009E4319 /* GRMustacheJavascriptEscapeFilter.m in Sources */, 56AC8CB91BA1F69B009E4319 /* GRMustacheKeyAccess.m in Sources */, 56AC8CB61BA1F69B009E4319 /* GRMustacheContext.m in Sources */, 56AC8CCA1BA1F69B009E4319 /* GRMustache.m in Sources */, @@ -1790,13 +1777,12 @@ 56AC8CB01BA1F69B009E4319 /* GRMustachePartialNode.m in Sources */, 56AC8CA81BA1F69B009E4319 /* GRMustacheCompiler.m in Sources */, 56AC8CA71BA1F69B009E4319 /* GRMustacheToken.m in Sources */, - 56AC8CC71BA1F69B009E4319 /* GRMustacheURLLibrary.m in Sources */, - 56AC8CC31BA1F69B009E4319 /* GRMustacheHTMLLibrary.m in Sources */, + 56AC8CC71BA1F69B009E4319 /* GRMustacheURLEscapeFilter.m in Sources */, + 56AC8CC31BA1F69B009E4319 /* GRMustacheHTMLEscapeFilter.m in Sources */, 56AC8CA41BA1F69B009E4319 /* GRMustacheConfiguration.m in Sources */, 56AC8CA61BA1F69B009E4319 /* GRMustacheTemplateParser.m in Sources */, 56AC8CBC1BA1F69B009E4319 /* GRMustacheTemplate.m in Sources */, 56AC8CB51BA1F69B009E4319 /* GRMustacheVariableTag.m in Sources */, - 56AC8CC61BA1F69B009E4319 /* GRMustacheStandardLibrary.m in Sources */, 56AC8CBF1BA1F69B009E4319 /* GRMustacheTemplateGenerator.m in Sources */, 56AC8CBB1BA1F69B009E4319 /* GRMustacheRenderingEngine.m in Sources */, 56AC8CC91BA1F69B009E4319 /* GRMustacheTranslateCharacters.m in Sources */, @@ -1858,11 +1844,10 @@ 56DAC78A1BB6A0040010FE01 /* NSFormatter+GRMustache.m in Sources */, 56DAC78B1BB6A0040010FE01 /* NSValueTransformer+GRMustache.m in Sources */, 56DAC78C1BB6A0040010FE01 /* GRMustacheEachFilter.m in Sources */, - 56DAC78D1BB6A0040010FE01 /* GRMustacheHTMLLibrary.m in Sources */, - 56DAC78E1BB6A0040010FE01 /* GRMustacheJavascriptLibrary.m in Sources */, + 56DAC78D1BB6A0040010FE01 /* GRMustacheHTMLEscapeFilter.m in Sources */, + 56DAC78E1BB6A0040010FE01 /* GRMustacheJavascriptEscapeFilter.m in Sources */, 56DAC78F1BB6A0040010FE01 /* GRMustacheLocalizer.m in Sources */, - 56DAC7901BB6A0040010FE01 /* GRMustacheStandardLibrary.m in Sources */, - 56DAC7911BB6A0040010FE01 /* GRMustacheURLLibrary.m in Sources */, + 56DAC7911BB6A0040010FE01 /* GRMustacheURLEscapeFilter.m in Sources */, 56DAC7921BB6A0040010FE01 /* GRMustacheError.m in Sources */, 56DAC7931BB6A0040010FE01 /* GRMustacheTranslateCharacters.m in Sources */, 56DAC7941BB6A0040010FE01 /* GRMustache.m in Sources */, @@ -1880,7 +1865,7 @@ 6586A0781B9E2E310067C98E /* NSValueTransformer+GRMustache.m in Sources */, 6586A0961B9E2E4F0067C98E /* GRMustacheRendering.m in Sources */, 6586A0891B9E2E4A0067C98E /* GRMustacheTemplateRepository.m in Sources */, - 6586A0831B9E2E360067C98E /* GRMustacheURLLibrary.m in Sources */, + 6586A0831B9E2E360067C98E /* GRMustacheURLEscapeFilter.m in Sources */, 6586A0761B9E2E310067C98E /* NSFormatter+GRMustache.m in Sources */, 6586A0801B9E2E360067C98E /* GRMustacheLocalizer.m in Sources */, 6586A0861B9E2E4A0067C98E /* GRMustacheTemplate.m in Sources */, @@ -1888,7 +1873,7 @@ 6586A09C1B9E2E550067C98E /* GRMustacheCompiler.m in Sources */, 6586A08C1B9E2E4F0067C98E /* GRMustacheContext.m in Sources */, 6586A0AF1B9E2E5B0067C98E /* GRMustacheVariableTag.m in Sources */, - 6586A07B1B9E2E360067C98E /* GRMustacheHTMLLibrary.m in Sources */, + 6586A07B1B9E2E360067C98E /* GRMustacheHTMLEscapeFilter.m in Sources */, 6586A0B41B9E2E600067C98E /* GRMustacheFilteredExpression.m in Sources */, 6586A0A01B9E2E5B0067C98E /* GRMustacheInheritableSectionNode.m in Sources */, 6586A0A21B9E2E5B0067C98E /* GRMustachePartialNode.m in Sources */, @@ -1898,7 +1883,7 @@ 6586A0A91B9E2E5B0067C98E /* GRMustacheTemplateAST.m in Sources */, 6586A0BC1B9E2E660067C98E /* GRMustacheExpressionParser.m in Sources */, 6586A0BE1B9E2E660067C98E /* GRMustacheTemplateParser.m in Sources */, - 6586A07D1B9E2E360067C98E /* GRMustacheJavascriptLibrary.m in Sources */, + 6586A07D1B9E2E360067C98E /* GRMustacheJavascriptEscapeFilter.m in Sources */, 6586A0711B9E2E310067C98E /* GRMustacheExpressionGenerator.m in Sources */, 6586A0791B9E2E360067C98E /* GRMustacheEachFilter.m in Sources */, 6586A0B81B9E2E600067C98E /* GRMustacheImplicitIteratorExpression.m in Sources */, @@ -1914,7 +1899,6 @@ 6586A0A41B9E2E5B0067C98E /* GRMustacheSectionTag.m in Sources */, 6586A0731B9E2E310067C98E /* GRMustacheTemplateGenerator.m in Sources */, 6586A06E1B9E2E100067C98E /* GRMustacheError.m in Sources */, - 6586A0811B9E2E360067C98E /* GRMustacheStandardLibrary.m in Sources */, 6586A0981B9E2E4F0067C98E /* GRMustacheRenderingEngine.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/src/classes/Compiling/GRMustacheCompiler.m b/src/classes/Compiling/GRMustacheCompiler.m index 8c56bfe4..5fd91d90 100644 --- a/src/classes/Compiling/GRMustacheCompiler.m +++ b/src/classes/Compiling/GRMustacheCompiler.m @@ -215,6 +215,12 @@ - (BOOL)templateParser:(GRMustacheTemplateParser *)parser shouldContinueAfterPar case GRMustacheTokenTypeEscapedVariable: { + // Context validation + if (_currentOpeningToken && _currentOpeningToken.type == GRMustacheTokenTypeInheritedPartial) { + [self failWithFatalError:[self parseErrorAtToken:token description:@"Illegal tag inside a partial override tag."]]; + return NO; + } + // Expression validation NSError *error; GRMustacheExpressionParser *expressionParser = [[[GRMustacheExpressionParser alloc] init] autorelease]; @@ -234,6 +240,12 @@ - (BOOL)templateParser:(GRMustacheTemplateParser *)parser shouldContinueAfterPar case GRMustacheTokenTypeUnescapedVariable: { + // Context validation + if (_currentOpeningToken && _currentOpeningToken.type == GRMustacheTokenTypeInheritedPartial) { + [self failWithFatalError:[self parseErrorAtToken:token description:@"Illegal tag inside a partial override tag."]]; + return NO; + } + // Expression validation NSError *error; GRMustacheExpressionParser *expressionParser = [[[GRMustacheExpressionParser alloc] init] autorelease]; @@ -253,6 +265,12 @@ - (BOOL)templateParser:(GRMustacheTemplateParser *)parser shouldContinueAfterPar case GRMustacheTokenTypeSectionOpening: { + // Context validation + if (_currentOpeningToken && _currentOpeningToken.type == GRMustacheTokenTypeInheritedPartial) { + [self failWithFatalError:[self parseErrorAtToken:token description:@"Illegal tag inside a partial override tag."]]; + return NO; + } + // Expression validation NSError *error; BOOL empty; @@ -316,6 +334,12 @@ - (BOOL)templateParser:(GRMustacheTemplateParser *)parser shouldContinueAfterPar case GRMustacheTokenTypeInvertedSectionOpening: { + // Context validation + if (_currentOpeningToken && _currentOpeningToken.type == GRMustacheTokenTypeInheritedPartial) { + [self failWithFatalError:[self parseErrorAtToken:token description:@"Illegal tag inside a partial override tag."]]; + return NO; + } + // Expression validation NSError *error; BOOL empty; diff --git a/src/classes/Configuration/GRMustacheConfiguration.m b/src/classes/Configuration/GRMustacheConfiguration.m index 0f09254c..a8caca54 100644 --- a/src/classes/Configuration/GRMustacheConfiguration.m +++ b/src/classes/Configuration/GRMustacheConfiguration.m @@ -61,7 +61,7 @@ - (instancetype)init _contentType = GRMustacheContentTypeHTML; _tagStartDelimiter = [@"{{" retain]; // useless retain that matches the release in dealloc _tagEndDelimiter = [@"}}" retain]; // useless retain that matches the release in dealloc - _baseContext = [[GRMustacheContext contextWithObject:[GRMustache standardLibrary]] retain]; + _baseContext = [[GRMustacheContext context] retain]; } return self; } diff --git a/src/classes/GRMustache.h b/src/classes/GRMustache.h index e6b4e02b..d7d432b4 100644 --- a/src/classes/GRMustache.h +++ b/src/classes/GRMustache.h @@ -70,13 +70,49 @@ typedef struct { //////////////////////////////////////////////////////////////////////////////// /** - * @return The GRMustache standard library. + * @return The GRMustache standard `each`. * * **Companion guide:** https://github.com/groue/GRMustache/blob/master/Guides/standard_library.md * - * @since v6.4 + * @since v8.0 */ -+ (NSObject *)standardLibrary AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; ++ (NSObject *)standardEach AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; + +/** + * @return The GRMustache standard `HTMLEscape`. + * + * **Companion guide:** https://github.com/groue/GRMustache/blob/master/Guides/standard_library.md + * + * @since v8.0 + */ ++ (NSObject *)standardHTMLEscape AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; + +/** + * @return The GRMustache standard `URLEscape`. + * + * **Companion guide:** https://github.com/groue/GRMustache/blob/master/Guides/standard_library.md + * + * @since v8.0 + */ ++ (NSObject *)standardURLEscape AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; + +/** + * @return The GRMustache standard `javascriptEscape`. + * + * **Companion guide:** https://github.com/groue/GRMustache/blob/master/Guides/standard_library.md + * + * @since v8.0 + */ ++ (NSObject *)standardJavascriptEscape AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; + +/** + * @return The GRMustache standard `zip`. + * + * **Companion guide:** https://github.com/groue/GRMustache/blob/master/Guides/standard_library.md + * + * @since v8.0 + */ ++ (NSObject *)standardZip AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; //////////////////////////////////////////////////////////////////////////////// diff --git a/src/classes/GRMustache.m b/src/classes/GRMustache.m index 66dce36f..c61bb16e 100644 --- a/src/classes/GRMustache.m +++ b/src/classes/GRMustache.m @@ -24,12 +24,14 @@ #import "GRMustacheKeyAccess_private.h" #import "GRMustacheVersion.h" #import "GRMustacheRendering_private.h" -#import "GRMustacheStandardLibrary_private.h" -#import "GRMustacheJavascriptLibrary_private.h" -#import "GRMustacheHTMLLibrary_private.h" -#import "GRMustacheURLLibrary_private.h" +#import "GRMustacheJavascriptEscapeFilter_private.h" +#import "GRMustacheHTMLEscapeFilter_private.h" +#import "GRMustacheURLEscapeFilter_private.h" #import "GRMustacheEachFilter_private.h" #import "GRMustacheLocalizer.h" +#import "GRMustacheContext_private.h" +#import "GRMustacheError.h" +#import "GRMustacheTag_private.h" // ============================================================================= #pragma mark - GRMustache @@ -47,60 +49,117 @@ + (GRMustacheVersion)libraryVersion .patch = GRMUSTACHE_PATCH_VERSION }; } -+ (NSObject *)standardLibrary +// Documented in GRMustache.h ++ (NSObject *)standardEach { - static NSObject *standardLibrary = nil; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - standardLibrary = [[NSDictionary dictionaryWithObjectsAndKeys: - // {{ capitalized(value) }} - [[[GRMustacheCapitalizedFilter alloc] init] autorelease], @"capitalized", - - // {{ lowercase(value) }} - [[[GRMustacheLowercaseFilter alloc] init] autorelease], @"lowercase", - - // {{ uppercase(value) }} - [[[GRMustacheUppercaseFilter alloc] init] autorelease], @"uppercase", - - // {{# isBlank(value) }}...{{/}} - [[[GRMustacheBlankFilter alloc] init] autorelease], @"isBlank", - - // {{# isEmpty(value) }}...{{/}} - [[[GRMustacheEmptyFilter alloc] init] autorelease], @"isEmpty", - - // {{ localize(value) }} - // {{# localize }}...{{/}} - [[[GRMustacheLocalizer alloc] initWithBundle:nil tableName:nil] autorelease], @"localize", - - // {{# each(collection) }}...{{/}} - [[[GRMustacheEachFilter alloc] init] autorelease], @"each", - - [NSDictionary dictionaryWithObjectsAndKeys: - - // {{ HTML.escape(value) }} - // {{# HTML.escape }}...{{/}} - [[[GRMustacheHTMLEscapeFilter alloc] init] autorelease], @"escape", - nil], @"HTML", - - [NSDictionary dictionaryWithObjectsAndKeys: - - // {{ javascript.escape(value) }} - // {{# javascript.escape }}...{{/}} - [[[GRMustacheJavascriptEscaper alloc] init] autorelease], @"escape", - nil], @"javascript", - - [NSDictionary dictionaryWithObjectsAndKeys: - - // {{ URL.escape(value) }} - // {{# URL.escape }}...{{/}} - [[[GRMustacheURLEscapeFilter alloc] init] autorelease], @"escape", - nil], @"URL", - nil] retain]; - }); - - return standardLibrary; + return [[[GRMustacheEachFilter alloc] init] autorelease]; } +// Documented in GRMustache.h ++ (NSObject *)standardHTMLEscape +{ + return [[[GRMustacheHTMLEscapeFilter alloc] init] autorelease]; +} + +// Documented in GRMustache.h ++ (NSObject *)standardURLEscape +{ + return [[[GRMustacheURLEscapeFilter alloc] init] autorelease]; +} + +// Documented in GRMustache.h ++ (NSObject *)standardJavascriptEscape +{ + return [[[GRMustacheJavascriptEscapeFilter alloc] init] autorelease]; +} + +// Documented in GRMustache.h ++ (NSObject *)standardZip +{ + return [GRMustacheFilter variadicFilterWithBlock:^id(NSArray *arguments) { + + // GRMustache generally identifies collections as objects conforming + // to NSFastEnumeration, excluding NSDictionary. + // + // Let's validate our arguments first. + + for (id argument in arguments) { + if (![argument respondsToSelector:@selector(countByEnumeratingWithState:objects:count:)] || [argument isKindOfClass:[NSDictionary class]]) { + return [GRMustacheRendering renderingObjectWithBlock:^NSString *(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error) { + if (error) { + *error = [NSError errorWithDomain:GRMustacheErrorDomain code:GRMustacheErrorCodeRenderingError userInfo:@{ NSLocalizedDescriptionKey: [NSString stringWithFormat:@"Tag %@: Non-enumerable argument in zip filter: %@", tag, argument] }]; + } + return nil; + }]; + } + } + + + // Turn NSFastEnumeration arguments into enumerators. This is + // because enumerators can be iterated all together, when + // NSFastEnumeration objects can not. + + NSMutableArray *enumerators = [NSMutableArray array]; + for (id argument in arguments) { + if ([argument respondsToSelector:@selector(objectEnumerator)]) { + // Assume objectEnumerator method returns what we need. + [enumerators addObject:[argument objectEnumerator]]; + } else { + // Turn NSFastEnumeration argument into an array, + // and extract enumerator from the array. + NSMutableArray *array = [NSMutableArray array]; + for (id object in argument) { + [array addObject:object]; + } + [enumerators addObject:[array objectEnumerator]]; + } + } + + + // Build an array of objects which will perform custom rendering. + + NSMutableArray *renderingObjects = [NSMutableArray array]; + while (YES) { + + // Extract from all iterators the objects that should enter the + // rendering context at each iteration. + // + // Given the [1,2,3], [a,b,c] input collections, those objects + // would be [1,a] then [2,b] and finally [3,c]. + + NSMutableArray *objects = [NSMutableArray array]; + for (NSEnumerator *enumerator in enumerators) { + id object = [enumerator nextObject]; + if (object) { + [objects addObject:object]; + } + } + + + // All iterators have been enumerated: stop + + if (objects.count == 0) { + break; + } + + + // Build a rendering object which extends the rendering context + // before rendering the tag. + + id renderingObject = [GRMustacheRendering renderingObjectWithBlock:^NSString *(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error) { + for (id object in objects) { + context = [context contextByAddingObject:object]; + } + return [tag renderContentWithContext:context HTMLSafe:HTMLSafe error:error]; + }]; + [renderingObjects addObject:renderingObject]; + } + + return renderingObjects; + }]; +} + + + (id)renderingObjectForObject:(id)object { return [GRMustacheRendering renderingObjectForObject:object]; diff --git a/src/classes/GRMustache_private.h b/src/classes/GRMustache_private.h index fb9d4cff..1a9fc9a1 100644 --- a/src/classes/GRMustache_private.h +++ b/src/classes/GRMustache_private.h @@ -40,7 +40,19 @@ typedef struct { + (GRMustacheVersion)libraryVersion GRMUSTACHE_API_PUBLIC; // Documented in GRMustache.h -+ (NSObject *)standardLibrary GRMUSTACHE_API_PUBLIC; ++ (NSObject *)standardEach GRMUSTACHE_API_PUBLIC; + +// Documented in GRMustache.h ++ (NSObject *)standardHTMLEscape GRMUSTACHE_API_PUBLIC; + +// Documented in GRMustache.h ++ (NSObject *)standardURLEscape GRMUSTACHE_API_PUBLIC; + +// Documented in GRMustache.h ++ (NSObject *)standardJavascriptEscape GRMUSTACHE_API_PUBLIC; + +// Documented in GRMustache.h ++ (NSObject *)standardZip GRMUSTACHE_API_PUBLIC; // Documented in GRMustache.h + (id)renderingObjectForObject:(id)object GRMUSTACHE_API_PUBLIC_BUT_DEPRECATED; diff --git a/src/classes/Parsing/GRMustacheTemplateParser.m b/src/classes/Parsing/GRMustacheTemplateParser.m index 491d9c02..58abe565 100644 --- a/src/classes/Parsing/GRMustacheTemplateParser.m +++ b/src/classes/Parsing/GRMustacheTemplateParser.m @@ -422,7 +422,7 @@ - (NSString *)parseInheritableSectionName:(NSString *)string empty:(BOOL *)empty if (error != NULL) { *error = [NSError errorWithDomain:GRMustacheErrorDomain code:GRMustacheErrorCodeParseError - userInfo:[NSDictionary dictionaryWithObject:@"Missing inheritable section name" + userInfo:[NSDictionary dictionaryWithObject:@"Missing block name" forKey:NSLocalizedDescriptionKey]]; } return nil; @@ -434,7 +434,7 @@ - (NSString *)parseInheritableSectionName:(NSString *)string empty:(BOOL *)empty if (error != NULL) { *error = [NSError errorWithDomain:GRMustacheErrorDomain code:GRMustacheErrorCodeParseError - userInfo:[NSDictionary dictionaryWithObject:@"Invalid inheritable section name" + userInfo:[NSDictionary dictionaryWithObject:@"Invalid block name" forKey:NSLocalizedDescriptionKey]]; } return nil; diff --git a/src/classes/Services/StandardLibrary/GRMustacheEachFilter_private.h b/src/classes/Services/StandardLibrary/GRMustacheEachFilter_private.h index a0261a05..c084c3c9 100644 --- a/src/classes/Services/StandardLibrary/GRMustacheEachFilter_private.h +++ b/src/classes/Services/StandardLibrary/GRMustacheEachFilter_private.h @@ -20,8 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#import "GRMustacheFilter_private.h" +#import "GRMustacheFilter.h" @interface GRMustacheEachFilter : NSObject - @end diff --git a/src/classes/Services/StandardLibrary/GRMustacheHTMLLibrary.m b/src/classes/Services/StandardLibrary/GRMustacheHTMLEscapeFilter.m similarity index 98% rename from src/classes/Services/StandardLibrary/GRMustacheHTMLLibrary.m rename to src/classes/Services/StandardLibrary/GRMustacheHTMLEscapeFilter.m index cce13c11..42a448a9 100644 --- a/src/classes/Services/StandardLibrary/GRMustacheHTMLLibrary.m +++ b/src/classes/Services/StandardLibrary/GRMustacheHTMLEscapeFilter.m @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#import "GRMustacheHTMLLibrary_private.h" +#import "GRMustacheHTMLEscapeFilter_private.h" #import "GRMustacheTag_private.h" #import "GRMustacheContext_private.h" #import "GRMustacheTranslateCharacters_private.h" diff --git a/src/classes/Services/StandardLibrary/GRMustacheHTMLLibrary_private.h b/src/classes/Services/StandardLibrary/GRMustacheHTMLEscapeFilter_private.h similarity index 97% rename from src/classes/Services/StandardLibrary/GRMustacheHTMLLibrary_private.h rename to src/classes/Services/StandardLibrary/GRMustacheHTMLEscapeFilter_private.h index 2a973ffb..c2ef98f9 100644 --- a/src/classes/Services/StandardLibrary/GRMustacheHTMLLibrary_private.h +++ b/src/classes/Services/StandardLibrary/GRMustacheHTMLEscapeFilter_private.h @@ -22,7 +22,7 @@ #import #import "GRMustacheRendering_private.h" -#import "GRMustacheFilter_private.h" +#import "GRMustacheFilter.h" #import "GRMustacheTagDelegate.h" diff --git a/src/classes/Services/StandardLibrary/GRMustacheJavascriptLibrary.m b/src/classes/Services/StandardLibrary/GRMustacheJavascriptEscapeFilter.m similarity index 98% rename from src/classes/Services/StandardLibrary/GRMustacheJavascriptLibrary.m rename to src/classes/Services/StandardLibrary/GRMustacheJavascriptEscapeFilter.m index 0bf3ccc1..b926bc80 100644 --- a/src/classes/Services/StandardLibrary/GRMustacheJavascriptLibrary.m +++ b/src/classes/Services/StandardLibrary/GRMustacheJavascriptEscapeFilter.m @@ -20,15 +20,15 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#import "GRMustacheJavascriptLibrary_private.h" +#import "GRMustacheJavascriptEscapeFilter_private.h" #import "GRMustacheTag_private.h" #import "GRMustacheContext_private.h" // ============================================================================= -#pragma mark - GRMustacheJavascriptEscaper +#pragma mark - GRMustacheJavascriptEscapeFilter -@implementation GRMustacheJavascriptEscaper +@implementation GRMustacheJavascriptEscapeFilter #pragma mark diff --git a/src/classes/Services/StandardLibrary/GRMustacheJavascriptLibrary_private.h b/src/classes/Services/StandardLibrary/GRMustacheJavascriptEscapeFilter_private.h similarity index 87% rename from src/classes/Services/StandardLibrary/GRMustacheJavascriptLibrary_private.h rename to src/classes/Services/StandardLibrary/GRMustacheJavascriptEscapeFilter_private.h index ce00d243..8cef2986 100644 --- a/src/classes/Services/StandardLibrary/GRMustacheJavascriptLibrary_private.h +++ b/src/classes/Services/StandardLibrary/GRMustacheJavascriptEscapeFilter_private.h @@ -22,12 +22,12 @@ #import #import "GRMustacheRendering_private.h" -#import "GRMustacheFilter_private.h" +#import "GRMustacheFilter.h" #import "GRMustacheTagDelegate.h" // ============================================================================= -#pragma mark - GRMustacheJavascriptEscaper +#pragma mark - GRMustacheJavascriptEscapeFilter -@interface GRMustacheJavascriptEscaper: NSObject +@interface GRMustacheJavascriptEscapeFilter: NSObject @end diff --git a/src/classes/Services/StandardLibrary/GRMustacheLocalizer.m b/src/classes/Services/StandardLibrary/GRMustacheLocalizer.m index d1623384..3f7fb2b7 100644 --- a/src/classes/Services/StandardLibrary/GRMustacheLocalizer.m +++ b/src/classes/Services/StandardLibrary/GRMustacheLocalizer.m @@ -45,6 +45,11 @@ - (void)dealloc [super dealloc]; } +- (instancetype)init +{ + return [self initWithBundle:nil tableName:nil]; +} + - (instancetype)initWithBundle:(NSBundle *)bundle tableName:(NSString *)tableName { self = [super init]; diff --git a/src/classes/Services/StandardLibrary/GRMustacheStandardLibrary.m b/src/classes/Services/StandardLibrary/GRMustacheStandardLibrary.m deleted file mode 100644 index 751f42c9..00000000 --- a/src/classes/Services/StandardLibrary/GRMustacheStandardLibrary.m +++ /dev/null @@ -1,149 +0,0 @@ -// The MIT License -// -// Copyright (c) 2014 Gwendal Roué -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import "GRMustacheStandardLibrary_private.h" - - -// ============================================================================= -#pragma mark - GRMustacheCapitalizedFilter - -@implementation GRMustacheCapitalizedFilter - -#pragma mark - -- (id)transformedValue:(id)object -{ - // Specific case for [NSNull null] - - if (object == [NSNull null]) { - return @""; - } - - // Turns other objects into strings, and transform - - NSString *string = [object description]; - return [string capitalizedString]; -} - -@end - - -// ============================================================================= -#pragma mark - GRMustacheLowercaseFilter - -@implementation GRMustacheLowercaseFilter - -#pragma mark - -- (id)transformedValue:(id)object -{ - // Specific case for [NSNull null] - - if (object == [NSNull null]) { - return @""; - } - - // Turns other objects into strings, and transform - - NSString *string = [object description]; - return [string lowercaseString]; -} - -@end - - -// ============================================================================= -#pragma mark - GRMustacheUppercaseFilter - -@implementation GRMustacheUppercaseFilter - -#pragma mark - -- (id)transformedValue:(id)object -{ - // Specific case for [NSNull null] - - if (object == [NSNull null]) { - return @""; - } - - // Turns other objects into strings, and transform - - NSString *string = [object description]; - return [string uppercaseString]; -} - -@end - - -// ============================================================================= -#pragma mark - GRMustacheBlankFilter - -@implementation GRMustacheBlankFilter - -#pragma mark - -- (id)transformedValue:(id)object -{ - if (object == nil || [object isKindOfClass:[NSNull class]]) { - return [NSNumber numberWithBool:YES]; - } - - if (![object isKindOfClass:[NSDictionary class]] && [object respondsToSelector:@selector(countByEnumeratingWithState:objects:count:)]) { - for (id _ __attribute__((unused)) in object) { - return [NSNumber numberWithBool:NO]; - } - return [NSNumber numberWithBool:YES]; - } - - NSString *trimmedDescription = [[object description] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; - return [NSNumber numberWithBool:trimmedDescription.length == 0]; -} - -@end - - -// ============================================================================= -#pragma mark - GRMustacheEmptyFilter - -@implementation GRMustacheEmptyFilter - -#pragma mark - -- (id)transformedValue:(id)object -{ - if (object == nil || [object isKindOfClass:[NSNull class]]) { - return [NSNumber numberWithBool:YES]; - } - - if (![object isKindOfClass:[NSDictionary class]] && [object respondsToSelector:@selector(countByEnumeratingWithState:objects:count:)]) { - for (id _ __attribute__((unused)) in object) { - return [NSNumber numberWithBool:NO]; - } - return [NSNumber numberWithBool:YES]; - } - - NSString *description = [object description]; - return [NSNumber numberWithBool:description.length == 0]; -} - -@end diff --git a/src/classes/Services/StandardLibrary/GRMustacheStandardLibrary_private.h b/src/classes/Services/StandardLibrary/GRMustacheStandardLibrary_private.h deleted file mode 100644 index 9d1b3716..00000000 --- a/src/classes/Services/StandardLibrary/GRMustacheStandardLibrary_private.h +++ /dev/null @@ -1,60 +0,0 @@ -// The MIT License -// -// Copyright (c) 2014 Gwendal Roué -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import -#import "GRMustacheFilter_private.h" - - -// ============================================================================= -#pragma mark - GRMustacheCapitalizedFilter - -@interface GRMustacheCapitalizedFilter: NSObject -@end - - -// ============================================================================= -#pragma mark - GRMustacheLowercaseFilter - -@interface GRMustacheLowercaseFilter: NSObject -@end - - -// ============================================================================= -#pragma mark - GRMustacheUppercaseFilter - -@interface GRMustacheUppercaseFilter: NSObject -@end - - -// ============================================================================= -#pragma mark - GRMustacheBlankFilter - -@interface GRMustacheBlankFilter: NSObject -@end - - -// ============================================================================= -#pragma mark - GRMustacheEmptyFilter - -@interface GRMustacheEmptyFilter: NSObject -@end - diff --git a/src/classes/Services/StandardLibrary/GRMustacheURLLibrary.m b/src/classes/Services/StandardLibrary/GRMustacheURLEscapeFilter.m similarity index 99% rename from src/classes/Services/StandardLibrary/GRMustacheURLLibrary.m rename to src/classes/Services/StandardLibrary/GRMustacheURLEscapeFilter.m index b0725ca9..44a253d5 100644 --- a/src/classes/Services/StandardLibrary/GRMustacheURLLibrary.m +++ b/src/classes/Services/StandardLibrary/GRMustacheURLEscapeFilter.m @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#import "GRMustacheURLLibrary_private.h" +#import "GRMustacheURLEscapeFilter_private.h" #import "GRMustacheTag_private.h" #import "GRMustacheContext_private.h" #import "GRMustacheTranslateCharacters_private.h" diff --git a/src/classes/Services/StandardLibrary/GRMustacheURLLibrary_private.h b/src/classes/Services/StandardLibrary/GRMustacheURLEscapeFilter_private.h similarity index 97% rename from src/classes/Services/StandardLibrary/GRMustacheURLLibrary_private.h rename to src/classes/Services/StandardLibrary/GRMustacheURLEscapeFilter_private.h index d9284590..e5c3ac14 100644 --- a/src/classes/Services/StandardLibrary/GRMustacheURLLibrary_private.h +++ b/src/classes/Services/StandardLibrary/GRMustacheURLEscapeFilter_private.h @@ -22,7 +22,7 @@ #import #import "GRMustacheRendering_private.h" -#import "GRMustacheFilter_private.h" +#import "GRMustacheFilter.h" #import "GRMustacheTagDelegate.h" diff --git a/src/tests/Public/GRMustachePublicAPITest.m b/src/tests/Public/GRMustachePublicAPITest.m index 895f73e2..5ffceb79 100644 --- a/src/tests/Public/GRMustachePublicAPITest.m +++ b/src/tests/Public/GRMustachePublicAPITest.m @@ -248,6 +248,21 @@ - (void)runTestsFromResource:(NSString *)name subdirectory:(NSString *)subpath - (GRMustacheTemplate *)templateForTemplateString:(NSString *)templateString partialsDictionary:(NSDictionary *)partialsDictionary error:(NSError **)error { GRMustacheTemplateRepository *repository = [GRMustacheTemplateRepository templateRepositoryWithDictionary:partialsDictionary]; + NSDictionary *library = @{ + // Standard Library + @"each": [GRMustache standardEach], + // @"zip": [[[GRMustacheZipFilter alloc] init] autorelease], + @"localize": [[[GRMustacheLocalizer alloc] initWithBundle:nil tableName:nil] autorelease], + @"HTMLEscape": [GRMustache standardHTMLEscape], + @"URLEscape": [GRMustache standardURLEscape], + @"javascriptEscape": [GRMustache standardJavascriptEscape], + @"zip": [GRMustache standardZip], + + // Support for filters.json + @"capitalized": [GRMustacheFilter filterWithBlock:^id(id value) { + return [(NSString *)value capitalizedString]; + }]}; + [repository.configuration extendBaseContextWithObject:library]; return [repository templateFromString:templateString error:error]; } diff --git a/src/tests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationBaseContextTest.m b/src/tests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationBaseContextTest.m index 50fd26f5..51d33d3a 100644 --- a/src/tests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationBaseContextTest.m +++ b/src/tests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationBaseContextTest.m @@ -36,16 +36,6 @@ - (void)tearDown [GRMustacheConfiguration defaultConfiguration].baseContext = [GRMustacheConfiguration configuration].baseContext; } -- (void)testFactoryConfigurationHasStandardLibraryInBaseContextRegardlessOfDefaultConfiguration -{ - [GRMustacheConfiguration defaultConfiguration].baseContext = [GRMustacheContext contextWithObject:[NSDictionary dictionaryWithObject:@"success" forKey:@"foo"]]; - GRMustacheTemplateRepository *repo = [GRMustacheTemplateRepository templateRepository]; - repo.configuration = [GRMustacheConfiguration configuration]; - GRMustacheTemplate *template = [repo templateFromString:@"{{uppercase(foo)}}" error:NULL]; - NSString *rendering = [template renderObject:[NSDictionary dictionaryWithObject:@"success" forKey:@"foo"] error:NULL]; - XCTAssertEqualObjects(rendering, @"SUCCESS", @""); -} - - (void)testDefaultConfigurationMustacheBaseContext { [GRMustacheConfiguration defaultConfiguration].baseContext = [GRMustacheContext contextWithObject:[NSDictionary dictionaryWithObject:@"success" forKey:@"foo"]]; diff --git a/src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheContextHasValueForMustacheExpressionTest.m b/src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheContextHasValueForMustacheExpressionTest.m index c0b0bf0f..c077e2d2 100644 --- a/src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheContextHasValueForMustacheExpressionTest.m +++ b/src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheContextHasValueForMustacheExpressionTest.m @@ -30,7 +30,7 @@ @implementation GRMustacheContextHasValueForMustacheExpressionTest - (void)testHasValueForMustacheExpression { - GRMustacheContext *context = [GRMustacheContext contextWithObject:[GRMustache standardLibrary]]; + GRMustacheContext *context = [GRMustacheContext context]; id filter = [GRMustacheFilter filterWithBlock:^id(id value) { return [[value description] uppercaseString]; }]; diff --git a/src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheContextTest.m b/src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheContextTest.m index 0dc96bde..b81e276a 100644 --- a/src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheContextTest.m +++ b/src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheContextTest.m @@ -29,26 +29,6 @@ @interface GRMustacheContextTest : GRMustachePublicAPITest @implementation GRMustacheContextTest -- (void)testContextConstructor -{ - GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"{{uppercase(foo)}}" error:NULL]; - id data = @{ @"foo": @"bar" }; - - { - NSString *rendering = [template renderObject:data error:NULL]; - XCTAssertEqualObjects(rendering, @"BAR", @""); - } - { - template.baseContext = [GRMustacheContext context]; - NSError *error; - NSString *rendering = [template renderObject:data error:&error]; - XCTAssertNil(rendering, @""); - XCTAssertNotNil(error, @""); - XCTAssertEqualObjects(error.domain, GRMustacheErrorDomain, @""); - XCTAssertEqual(error.code, GRMustacheErrorCodeRenderingError, @""); - } -} - - (void)testContextWithObjectConstructor { GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"{{foo}}" error:NULL]; diff --git a/src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheContextValueForMustacheKeyTest.m b/src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheContextValueForMustacheKeyTest.m index cce9d72f..456c51ac 100644 --- a/src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheContextValueForMustacheKeyTest.m +++ b/src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheContextValueForMustacheKeyTest.m @@ -30,7 +30,7 @@ @implementation GRMustacheContextValueForMustacheKeyTest - (void)testValueForMustacheKey { - GRMustacheContext *context = [GRMustacheContext contextWithObject:[GRMustache standardLibrary]]; + GRMustacheContext *context = [GRMustacheContext context]; id data = @{ @"name": @"name1", @"a": @{ @"name": @"name2" }}; context = [context contextByAddingObject:data]; { @@ -48,11 +48,6 @@ - (void)testValueForMustacheKey id value = [context valueForMustacheKey:@"a.name"]; XCTAssertNil(value, @""); } - { - // 'uppercase' is a key - id value = [context valueForMustacheKey:@"uppercase"]; - XCTAssertTrue([value conformsToProtocol:@protocol(GRMustacheFilter)], @""); - } } @end diff --git a/src/tests/Public/v8.0/GRMustacheFilterTest/GRMustacheFilterTest.m b/src/tests/Public/v8.0/GRMustacheFilterTest/GRMustacheFilterTest.m index 5bc3b329..21774006 100644 --- a/src/tests/Public/v8.0/GRMustacheFilterTest/GRMustacheFilterTest.m +++ b/src/tests/Public/v8.0/GRMustacheFilterTest/GRMustacheFilterTest.m @@ -122,6 +122,9 @@ - (void)testFilteredSectionClosingTagCanBeBlank NSString *templateString = @"<{{#uppercase(.)}}{{.}}{{/}}> <{{#uppercase(.)}}{{.}}{{/ }}>"; GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:templateString error:NULL]; XCTAssertNotNil(template); + [template extendBaseContextWithObject:@{ @"uppercase": [GRMustacheFilter filterWithBlock:^(id object) { + return [[object description] uppercaseString]; + }]}]; NSString *rendering = [template renderObject:@"foo" error:NULL]; XCTAssertEqualObjects(rendering, @" "); } diff --git a/src/tests/Public/v8.0/GRMustacheServicesTest/GRMustacheEachFilterTest.m b/src/tests/Public/v8.0/GRMustacheServicesTest/GRMustacheEachFilterTest.m index db642384..e3851731 100644 --- a/src/tests/Public/v8.0/GRMustacheServicesTest/GRMustacheEachFilterTest.m +++ b/src/tests/Public/v8.0/GRMustacheServicesTest/GRMustacheEachFilterTest.m @@ -34,7 +34,8 @@ - (void)testGRMustacheEachFilterTriggersRenderingObjectItemsInArray id renderingObject = [GRMustacheRendering renderingObjectWithBlock:^NSString *(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error) { return [NSString stringWithFormat:@"<%@>", [tag renderContentWithContext:context HTMLSafe:HTMLSafe error:error]]; }]; - id data = @{ @"array": @[renderingObject] }; + id data = @{ @"array": @[renderingObject], + @"each": [GRMustache standardEach] }; NSString *rendering = [[GRMustacheTemplate templateFromString:@"{{#each(array)}}{{@index}}{{/}}" error:NULL] renderObject:data error:NULL]; XCTAssertEqualObjects(rendering, @"<0>", @""); } @@ -44,7 +45,8 @@ - (void)testGRMustacheEachFilterTriggersRenderingObjectItemsInDictionary id renderingObject = [GRMustacheRendering renderingObjectWithBlock:^NSString *(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error) { return [NSString stringWithFormat:@"<%@>", [tag renderContentWithContext:context HTMLSafe:HTMLSafe error:error]]; }]; - id data = @{ @"dictionary": @{ @"a": renderingObject } }; + id data = @{ @"dictionary": @{ @"a": renderingObject }, + @"each": [GRMustache standardEach] }; NSString *rendering = [[GRMustacheTemplate templateFromString:@"{{#each(dictionary)}}{{@key}}{{/}}" error:NULL] renderObject:data error:NULL]; XCTAssertEqualObjects(rendering, @"", @""); } diff --git a/src/tests/Public/v8.0/GRMustacheServicesTest/GRMustacheLocalizerTest.m b/src/tests/Public/v8.0/GRMustacheServicesTest/GRMustacheLocalizerTest.m index 14c977c7..75b0161d 100644 --- a/src/tests/Public/v8.0/GRMustacheServicesTest/GRMustacheLocalizerTest.m +++ b/src/tests/Public/v8.0/GRMustacheServicesTest/GRMustacheLocalizerTest.m @@ -78,7 +78,8 @@ - (void)testDefaultLocalizerAsFilter { NSString *templateString = @"{{localize(foo)}}"; GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:templateString error:NULL]; - id data = @{ @"foo": @"bar" }; + id data = @{ @"foo": @"bar", + @"localize": [[[GRMustacheLocalizer alloc] init] autorelease] }; NSString *rendering = [template renderObject:data error:NULL]; XCTAssertEqualObjects(rendering, @"bar", @""); } @@ -87,7 +88,8 @@ - (void)testDefaultLocalizerAsRenderingObject { NSString *templateString = @"{{#localize}}...{{/}}"; GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:templateString error:NULL]; - NSString *rendering = [template renderObject:nil error:NULL]; + id data = @{ @"localize": [[[GRMustacheLocalizer alloc] init] autorelease] }; + NSString *rendering = [template renderObject:data error:NULL]; XCTAssertEqualObjects(rendering, @"...", @""); } @@ -95,7 +97,8 @@ - (void)testDefaultLocalizerAsRenderingObjectWithArgument { NSString *templateString = @"{{#localize}}..{{foo}}..{{/}}"; GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:templateString error:NULL]; - id data = @{ @"foo": @"bar" }; + id data = @{ @"foo": @"bar", + @"localize": [[[GRMustacheLocalizer alloc] init] autorelease] }; NSString *rendering = [template renderObject:data error:NULL]; XCTAssertEqualObjects(rendering, @"..bar..", @""); } @@ -104,7 +107,9 @@ - (void)testDefaultLocalizerAsRenderingObjectWithArgumentAndConditions { NSString *templateString = @"{{#localize}}.{{foo}}.{{^false}}{{baz}}{{/}}.{{/}}"; GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:templateString error:NULL]; - id data = @{ @"foo": @"bar", @"baz": @"truc" }; + id data = @{ @"foo": @"bar", + @"baz": @"truc", + @"localize": [[[GRMustacheLocalizer alloc] init] autorelease] }; NSString *rendering = [template renderObject:data error:NULL]; XCTAssertEqualObjects(rendering, @".bar.truc.", @""); } @@ -231,14 +236,14 @@ - (void)testLocalizerRendersHTMLEscapedValuesOfHTMLTemplates { NSString *templateString = @"{{#localize}}..{{foo}}..{{/}}"; GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:templateString error:NULL]; - id data = @{ @"foo": @"&" }; + id data = @{ @"foo": @"&", @"localize": [[[GRMustacheLocalizer alloc] init] autorelease] }; NSString *rendering = [template renderObject:data error:NULL]; XCTAssertEqualObjects(rendering, @"..&..", @""); } { NSString *templateString = @"{{#localize}}..{{{foo}}}..{{/}}"; GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:templateString error:NULL]; - id data = @{ @"foo": @"&" }; + id data = @{ @"foo": @"&", @"localize": [[[GRMustacheLocalizer alloc] init] autorelease] }; NSString *rendering = [template renderObject:data error:NULL]; XCTAssertEqualObjects(rendering, @"..&..", @""); } @@ -249,14 +254,14 @@ - (void)testLocalizerRendersUnescapedValuesOfTextTemplates { NSString *templateString = @"{{% CONTENT_TYPE:TEXT }}{{#localize}}..{{foo}}..{{/}}"; GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:templateString error:NULL]; - id data = @{ @"foo": @"&" }; + id data = @{ @"foo": @"&", @"localize": [[[GRMustacheLocalizer alloc] init] autorelease] }; NSString *rendering = [template renderObject:data error:NULL]; XCTAssertEqualObjects(rendering, @"..&..", @""); } { NSString *templateString = @"{{% CONTENT_TYPE:TEXT }}{{#localize}}..{{{foo}}}..{{/}}"; GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:templateString error:NULL]; - id data = @{ @"foo": @"&" }; + id data = @{ @"foo": @"&", @"localize": [[[GRMustacheLocalizer alloc] init] autorelease] }; NSString *rendering = [template renderObject:data error:NULL]; XCTAssertEqualObjects(rendering, @"..&..", @""); } diff --git a/src/tests/Public/v8.0/GRMustacheServicesTest/GRMustacheStandardLibraryTest.m b/src/tests/Public/v8.0/GRMustacheServicesTest/GRMustacheStandardLibraryTest.m index 6d932b54..836d3cbd 100644 --- a/src/tests/Public/v8.0/GRMustacheServicesTest/GRMustacheStandardLibraryTest.m +++ b/src/tests/Public/v8.0/GRMustacheServicesTest/GRMustacheStandardLibraryTest.m @@ -28,18 +28,6 @@ @interface GRMustacheStandardLibraryTest : GRMustachePublicAPITest @implementation GRMustacheStandardLibraryTest -- (void)testStandardLibraryExists -{ - XCTAssertNotNil([GRMustache standardLibrary], @""); -} - -- (void)testStandardLibraryHasUppercaseKey -{ - id filter = [[GRMustache standardLibrary] valueForKey:@"uppercase"]; - XCTAssertNotNil(filter, @""); - XCTAssertTrue([filter conformsToProtocol:@protocol(GRMustacheFilter)], @""); -} - - (void)testStandardLibraryHTMLEscapeDoesEscapeNonHTMLSafeRenderingObjects { { @@ -47,8 +35,9 @@ - (void)testStandardLibraryHTMLEscapeDoesEscapeNonHTMLSafeRenderingObjects *HTMLSafe = NO; return @"<"; }]; - id data = @{ @"object": object }; - NSString *rendering = [GRMustacheTemplate renderObject:data fromString:@"{{# HTML.escape }}{{ object }}{{/ }}" error:NULL]; + id data = @{ @"object": object, + @"HTMLEscape": [GRMustache standardHTMLEscape] }; + NSString *rendering = [GRMustacheTemplate renderObject:data fromString:@"{{# HTMLEscape }}{{ object }}{{/ }}" error:NULL]; XCTAssertEqualObjects(rendering, @"&lt;", @""); } { @@ -56,8 +45,9 @@ - (void)testStandardLibraryHTMLEscapeDoesEscapeNonHTMLSafeRenderingObjects *HTMLSafe = NO; return @"<"; }]; - id data = @{ @"object": object }; - NSString *rendering = [GRMustacheTemplate renderObject:data fromString:@"{{# HTML.escape }}{{{ object }}}{{/ }}" error:NULL]; + id data = @{ @"object": object, + @"HTMLEscape": [GRMustache standardHTMLEscape] }; + NSString *rendering = [GRMustacheTemplate renderObject:data fromString:@"{{# HTMLEscape }}{{{ object }}}{{/ }}" error:NULL]; XCTAssertEqualObjects(rendering, @"<", @""); } } @@ -69,8 +59,9 @@ - (void)testStandardLibraryHTMLEscapeDoesEscapeHTMLSafeRenderingObjects *HTMLSafe = YES; return @"
    "; }]; - id data = @{ @"object": object }; - NSString *rendering = [GRMustacheTemplate renderObject:data fromString:@"{{# HTML.escape }}{{ object }}{{/ }}" error:NULL]; + id data = @{ @"object": object, + @"HTMLEscape": [GRMustache standardHTMLEscape] }; + NSString *rendering = [GRMustacheTemplate renderObject:data fromString:@"{{# HTMLEscape }}{{ object }}{{/ }}" error:NULL]; XCTAssertEqualObjects(rendering, @"<br>", @""); } { @@ -78,8 +69,9 @@ - (void)testStandardLibraryHTMLEscapeDoesEscapeHTMLSafeRenderingObjects *HTMLSafe = YES; return @"
    "; }]; - id data = @{ @"object": object }; - NSString *rendering = [GRMustacheTemplate renderObject:data fromString:@"{{# HTML.escape }}{{{ object }}}{{/ }}" error:NULL]; + id data = @{ @"object": object, + @"HTMLEscape": [GRMustache standardHTMLEscape] }; + NSString *rendering = [GRMustacheTemplate renderObject:data fromString:@"{{# HTMLEscape }}{{{ object }}}{{/ }}" error:NULL]; XCTAssertEqualObjects(rendering, @"<br>", @""); } } @@ -89,8 +81,9 @@ - (void)testStandardLibraryJavascriptEscapeDoesEscapeRenderingObjects id object = [GRMustacheRendering renderingObjectWithBlock:^NSString *(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error) { return @"\"double quotes\" and 'single quotes'"; }]; - id data = @{ @"object": object }; - NSString *rendering = [GRMustacheTemplate renderObject:data fromString:@"{{# javascript.escape }}{{ object }}{{/ }}" error:NULL]; + id data = @{ @"object": object, + @"javascriptEscape": [GRMustache standardJavascriptEscape] }; + NSString *rendering = [GRMustacheTemplate renderObject:data fromString:@"{{# javascriptEscape }}{{ object }}{{/ }}" error:NULL]; XCTAssertEqualObjects(rendering, @"\\u0022double quotes\\u0022 and \\u0027single quotes\\u0027", @""); } @@ -99,8 +92,9 @@ - (void)testStandardLibraryURLEscapeDoesEscapeRenderingObjects id object = [GRMustacheRendering renderingObjectWithBlock:^NSString *(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error) { return @"&"; }]; - id data = @{ @"object": object }; - NSString *rendering = [GRMustacheTemplate renderObject:data fromString:@"{{# URL.escape }}{{ object }}{{/ }}" error:NULL]; + id data = @{ @"object": object, + @"URLEscape": [GRMustache standardURLEscape] }; + NSString *rendering = [GRMustacheTemplate renderObject:data fromString:@"{{# URLEscape }}{{ object }}{{/ }}" error:NULL]; XCTAssertEqualObjects(rendering, @"%26", @""); } From 5d98f0b3ae0804fb0bd39f8a43a8029457c09ff0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sat, 26 Sep 2015 14:07:55 +0200 Subject: [PATCH 15/81] Less TODO.md --- TODO.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/TODO.md b/TODO.md index f117626b..4a846aae 100644 --- a/TODO.md +++ b/TODO.md @@ -7,5 +7,5 @@ - [X] Use submodule - [ ] Arrays should only have "count", "first" and "last" keys. - [ ] Sets should only have "count", and "first" keys. -- [ ] Remove standard library from default context. -- [ ] Drop +[GRMustache standardLibrary] +- [X] Remove standard library from default context. +- [X] Drop +[GRMustache standardLibrary] From ce1a0ec3d3a2cb244d822b8ad8459f12267d4cc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sat, 26 Sep 2015 15:29:47 +0200 Subject: [PATCH 16/81] Replace GRMustacheSafeKeyAccess with GRMustacheKeyValueCoding GRMustache now uses valueForKey: for safe keys (properties and Core Data attributes). objectForKeyedSubscript: is no longer tried first. Classes can override this behavior by implementing the valueForMustacheKey: of the GRMustacheKeyValueCoding protocol. In all cases, NSUndefinedKeyException is caught and swallowed. This commit provides a definitive answer to issue #66. --- TODO.md | 15 +- src/GRMustache.xcodeproj/project.pbxproj | 34 +- src/classes/GRMustache.h | 2 +- src/classes/Rendering/GRMustacheContext.m | 5 +- .../GRMustacheExpressionInvocation.m | 3 +- src/classes/Rendering/GRMustacheKeyAccess.m | 433 +----------------- .../Rendering/GRMustacheKeyAccess_private.h | 24 +- .../Rendering/GRMustacheKeyValueCoding.h | 28 ++ .../NSObject+GRMustacheKeyValueCoding.m | 127 +++++ ...Object+GRMustacheKeyValueCoding_private.h} | 37 +- .../Private/GRMustacheContextPrivateTest.m | 20 +- src/tests/Public/v8.0/GRBooleanTest.m | 33 +- .../GRMustacheContextKeyAccessTest.m | 137 ++---- .../GRMustacheKeyedSubscriptingTest.m | 94 ---- .../v8.0/GRMustacheFoundationCollectionTest.m | 6 +- .../groue/GRMustache/GRMustacheSuitesTest.m | 1 + src/tests/vendor/groue/GRMustacheSpec | 2 +- 17 files changed, 259 insertions(+), 742 deletions(-) create mode 100644 src/classes/Rendering/GRMustacheKeyValueCoding.h create mode 100644 src/classes/Rendering/NSObject+GRMustacheKeyValueCoding.m rename src/classes/Rendering/{GRMustacheSafeKeyAccess.h => NSObject+GRMustacheKeyValueCoding_private.h} (55%) delete mode 100644 src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheKeyedSubscriptingTest.m diff --git a/TODO.md b/TODO.md index 4a846aae..6e368156 100644 --- a/TODO.md +++ b/TODO.md @@ -1,11 +1,14 @@ - [ ] #97: In commit 65a6593229ae8bad1630a82ccebb327fb4a9f1e3, Daniel removes a few tests based on Core Data. Make sure that we still have tests for Core Data: attributes are safe keys, and they should be rendered. -- [ ] See if dropping GRMustacheSafeKeyAccess and introducing GRMustacheObject could not solve two issues at the same time: - - [ ] #66 - - [ ] Compatibility with GRMustache.swift on Arrays, Sets, and other standard collections. +- [X] See if dropping GRMustacheSafeKeyAccess and introducing GRMustacheObject could not solve two issues at the same time: + - [X] #66 + - [X] Compatibility with GRMustache.swift on Arrays, Sets, and other standard collections. + - [X] Drop GRMustacheSafeKeyAccess + - [X] Drop default support for objectForKeyedSubscript: + - [X] Add GRMustacheKeyValueCoding - [ ] ARC. Since GRMustache 8 is all about framework and targetting iOS8+ and OSX10.9+, there is no longer any reason for manual memory management. -- [ ] Share JSON tests suite with GRMustache.swift. +- [X] Share JSON tests suite with GRMustache.swift. - [X] Use submodule - - [ ] Arrays should only have "count", "first" and "last" keys. - - [ ] Sets should only have "count", and "first" keys. + - [X] Arrays should only have "count", "first" and "last" keys. + - [X] Sets should only have "count", and "first" keys. - [X] Remove standard library from default context. - [X] Drop +[GRMustache standardLibrary] diff --git a/src/GRMustache.xcodeproj/project.pbxproj b/src/GRMustache.xcodeproj/project.pbxproj index a73ec27a..6cde6139 100644 --- a/src/GRMustache.xcodeproj/project.pbxproj +++ b/src/GRMustache.xcodeproj/project.pbxproj @@ -47,14 +47,12 @@ 56214BC31BA1A5690070C6CF /* GRMustacheConfigurationExtendBaseContextTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA24A218C7A6B2006DA5F3 /* GRMustacheConfigurationExtendBaseContextTest.m */; settings = {ASSET_TAGS = (); }; }; 56214BC41BA1A5690070C6CF /* GRMustacheConfigurationTagDelimitersTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA243618C7A550006DA5F3 /* GRMustacheConfigurationTagDelimitersTest.m */; settings = {ASSET_TAGS = (); }; }; 56214BC51BA1A5690070C6CF /* GRMustacheConfigurationTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA243718C7A550006DA5F3 /* GRMustacheConfigurationTest.m */; settings = {ASSET_TAGS = (); }; }; - 56214BC61BA1A56D0070C6CF /* GRMustacheKeyedSubscriptingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56B4778C18CF8A7600EFF629 /* GRMustacheKeyedSubscriptingTest.m */; settings = {ASSET_TAGS = (); }; }; 56214BC71BA1A56D0070C6CF /* GRMustacheContextHasValueForMustacheExpressionTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA249818C7A65E006DA5F3 /* GRMustacheContextHasValueForMustacheExpressionTest.m */; settings = {ASSET_TAGS = (); }; }; 56214BC81BA1A56D0070C6CF /* GRMustacheContextProtectedObjectTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56B4779018CF8AD100EFF629 /* GRMustacheContextProtectedObjectTest.m */; settings = {ASSET_TAGS = (); }; }; 56214BC91BA1A56D0070C6CF /* GRMustacheContextTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA248518C7A62E006DA5F3 /* GRMustacheContextTest.m */; settings = {ASSET_TAGS = (); }; }; 56214BCA1BA1A56D0070C6CF /* GRMustacheContextTopMustacheObjectTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA249318C7A648006DA5F3 /* GRMustacheContextTopMustacheObjectTest.m */; settings = {ASSET_TAGS = (); }; }; 56214BCB1BA1A56D0070C6CF /* GRMustacheContextValueForMustacheKeyTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA248618C7A62E006DA5F3 /* GRMustacheContextValueForMustacheKeyTest.m */; settings = {ASSET_TAGS = (); }; }; 56214BCC1BA1A56D0070C6CF /* GRMustacheContextKeyAccessTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA24B218C9A2EE006DA5F3 /* GRMustacheContextKeyAccessTest.m */; settings = {ASSET_TAGS = (); }; }; - 56214BCD1BA1A56D0070C6CF /* GRMustacheKeyedSubscriptingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56B4778C18CF8A7600EFF629 /* GRMustacheKeyedSubscriptingTest.m */; settings = {ASSET_TAGS = (); }; }; 56214BCE1BA1A56D0070C6CF /* GRMustacheContextHasValueForMustacheExpressionTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA249818C7A65E006DA5F3 /* GRMustacheContextHasValueForMustacheExpressionTest.m */; settings = {ASSET_TAGS = (); }; }; 56214BCF1BA1A56D0070C6CF /* GRMustacheContextProtectedObjectTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56B4779018CF8AD100EFF629 /* GRMustacheContextProtectedObjectTest.m */; settings = {ASSET_TAGS = (); }; }; 56214BD01BA1A56D0070C6CF /* GRMustacheContextTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BA248518C7A62E006DA5F3 /* GRMustacheContextTest.m */; settings = {ASSET_TAGS = (); }; }; @@ -228,7 +226,6 @@ 56214CA91BA1A7490070C6CF /* GRMustacheContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36D719B8EEAD00854524 /* GRMustacheContext.h */; settings = {ATTRIBUTES = (Public, ); }; }; 56214CAA1BA1A7490070C6CF /* GRMustacheFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36DC19B8EEAD00854524 /* GRMustacheFilter.h */; settings = {ATTRIBUTES = (Public, ); }; }; 56214CAB1BA1A7490070C6CF /* GRMustacheRendering.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36E119B8EEAE00854524 /* GRMustacheRendering.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56214CAC1BA1A7490070C6CF /* GRMustacheSafeKeyAccess.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36E619B8EEAE00854524 /* GRMustacheSafeKeyAccess.h */; settings = {ATTRIBUTES = (Public, ); }; }; 56214CAD1BA1A7490070C6CF /* GRMustacheTagDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36E719B8EEAE00854524 /* GRMustacheTagDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; 56214CAE1BA1A7490070C6CF /* GRMustacheTemplate.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF370B19B8EEB900854524 /* GRMustacheTemplate.h */; settings = {ATTRIBUTES = (Public, ); }; }; 56214CAF1BA1A7490070C6CF /* GRMustacheTemplateRepository.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF370E19B8EEB900854524 /* GRMustacheTemplateRepository.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -352,6 +349,14 @@ 56DAC7941BB6A0040010FE01 /* GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC293152631300031E8DC /* GRMustache.m */; }; 56DAC7961BB6A7DC0010FE01 /* GRMustacheEachFilterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DAC7951BB6A7DC0010FE01 /* GRMustacheEachFilterTest.m */; settings = {ASSET_TAGS = (); }; }; 56DAC7971BB6A7DC0010FE01 /* GRMustacheEachFilterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DAC7951BB6A7DC0010FE01 /* GRMustacheEachFilterTest.m */; settings = {ASSET_TAGS = (); }; }; + 56DAC7A41BB6C8DD0010FE01 /* GRMustacheKeyValueCoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DAC7A21BB6C8DD0010FE01 /* GRMustacheKeyValueCoding.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 56DAC7A51BB6C8DD0010FE01 /* GRMustacheKeyValueCoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DAC7A21BB6C8DD0010FE01 /* GRMustacheKeyValueCoding.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 56DAC7AC1BB6C9040010FE01 /* NSObject+GRMustacheKeyValueCoding_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DAC7AA1BB6C9040010FE01 /* NSObject+GRMustacheKeyValueCoding_private.h */; settings = {ASSET_TAGS = (); }; }; + 56DAC7AD1BB6C9040010FE01 /* NSObject+GRMustacheKeyValueCoding_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DAC7AA1BB6C9040010FE01 /* NSObject+GRMustacheKeyValueCoding_private.h */; settings = {ASSET_TAGS = (); }; }; + 56DAC7AE1BB6C9040010FE01 /* NSObject+GRMustacheKeyValueCoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DAC7AB1BB6C9040010FE01 /* NSObject+GRMustacheKeyValueCoding.m */; settings = {ASSET_TAGS = (); }; }; + 56DAC7AF1BB6C9040010FE01 /* NSObject+GRMustacheKeyValueCoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DAC7AB1BB6C9040010FE01 /* NSObject+GRMustacheKeyValueCoding.m */; settings = {ASSET_TAGS = (); }; }; + 56DAC7B01BB6C9040010FE01 /* NSObject+GRMustacheKeyValueCoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DAC7AB1BB6C9040010FE01 /* NSObject+GRMustacheKeyValueCoding.m */; settings = {ASSET_TAGS = (); }; }; + 56DAC7B11BB6C9040010FE01 /* NSObject+GRMustacheKeyValueCoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DAC7AB1BB6C9040010FE01 /* NSObject+GRMustacheKeyValueCoding.m */; settings = {ASSET_TAGS = (); }; }; 6586A0651B9E2DAD0067C98E /* GRMustache.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DEC292152631300031E8DC /* GRMustache.h */; settings = {ATTRIBUTES = (Public, ); }; }; 6586A0661B9E2DB30067C98E /* GRMustache_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DEC294152631300031E8DC /* GRMustache_private.h */; settings = {ASSET_TAGS = (); }; }; 6586A0671B9E2DB90067C98E /* GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC293152631300031E8DC /* GRMustache.m */; }; @@ -403,7 +408,6 @@ 6586A0971B9E2E4F0067C98E /* GRMustacheRendering_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36E319B8EEAE00854524 /* GRMustacheRendering_private.h */; settings = {ASSET_TAGS = (); }; }; 6586A0981B9E2E4F0067C98E /* GRMustacheRenderingEngine.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF36E419B8EEAE00854524 /* GRMustacheRenderingEngine.m */; }; 6586A0991B9E2E4F0067C98E /* GRMustacheRenderingEngine_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36E519B8EEAE00854524 /* GRMustacheRenderingEngine_private.h */; settings = {ASSET_TAGS = (); }; }; - 6586A09A1B9E2E4F0067C98E /* GRMustacheSafeKeyAccess.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36E619B8EEAE00854524 /* GRMustacheSafeKeyAccess.h */; settings = {ATTRIBUTES = (Public, ); }; }; 6586A09B1B9E2E4F0067C98E /* GRMustacheTagDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36E719B8EEAE00854524 /* GRMustacheTagDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; 6586A09C1B9E2E550067C98E /* GRMustacheCompiler.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368019B8EE9D00854524 /* GRMustacheCompiler.m */; }; 6586A09D1B9E2E550067C98E /* GRMustacheCompiler_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368119B8EE9D00854524 /* GRMustacheCompiler_private.h */; settings = {ASSET_TAGS = (); }; }; @@ -523,7 +527,6 @@ 56AC8C981BA1F637009E4319 /* GRMustacheOSXPrivateTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = GRMustacheOSXPrivateTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 56B01A4A19C49AF5000439C7 /* GRMustacheExpressionGenerator_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustacheExpressionGenerator_private.h; sourceTree = ""; }; 56B01A4B19C49AF5000439C7 /* GRMustacheExpressionGenerator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheExpressionGenerator.m; sourceTree = ""; }; - 56B4778C18CF8A7600EFF629 /* GRMustacheKeyedSubscriptingTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheKeyedSubscriptingTest.m; sourceTree = ""; }; 56B4779018CF8AD100EFF629 /* GRMustacheContextProtectedObjectTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheContextProtectedObjectTest.m; sourceTree = ""; }; 56B4779618CF8D2A00EFF629 /* GRHoganSuitesTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRHoganSuitesTest.m; sourceTree = ""; }; 56B4779918CF8D3300EFF629 /* GRHoganSuites */ = {isa = PBXFileReference; lastKnownFileType = folder; path = GRHoganSuites; sourceTree = ""; }; @@ -604,7 +607,6 @@ 56BF36E319B8EEAE00854524 /* GRMustacheRendering_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustacheRendering_private.h; sourceTree = ""; }; 56BF36E419B8EEAE00854524 /* GRMustacheRenderingEngine.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheRenderingEngine.m; sourceTree = ""; }; 56BF36E519B8EEAE00854524 /* GRMustacheRenderingEngine_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustacheRenderingEngine_private.h; sourceTree = ""; }; - 56BF36E619B8EEAE00854524 /* GRMustacheSafeKeyAccess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustacheSafeKeyAccess.h; sourceTree = ""; }; 56BF36E719B8EEAE00854524 /* GRMustacheTagDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustacheTagDelegate.h; sourceTree = ""; }; 56BF370B19B8EEB900854524 /* GRMustacheTemplate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustacheTemplate.h; sourceTree = ""; }; 56BF370C19B8EEB900854524 /* GRMustacheTemplate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheTemplate.m; sourceTree = ""; }; @@ -641,6 +643,9 @@ 56DAC7121BB69DAC0010FE01 /* GRMustacheTestingDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustacheTestingDelegate.h; sourceTree = ""; }; 56DAC7681BB69F6D0010FE01 /* GRMustacheiOSPrivateTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = GRMustacheiOSPrivateTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 56DAC7951BB6A7DC0010FE01 /* GRMustacheEachFilterTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheEachFilterTest.m; sourceTree = ""; }; + 56DAC7A21BB6C8DD0010FE01 /* GRMustacheKeyValueCoding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustacheKeyValueCoding.h; sourceTree = ""; }; + 56DAC7AA1BB6C9040010FE01 /* NSObject+GRMustacheKeyValueCoding_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSObject+GRMustacheKeyValueCoding_private.h"; sourceTree = ""; }; + 56DAC7AB1BB6C9040010FE01 /* NSObject+GRMustacheKeyValueCoding.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSObject+GRMustacheKeyValueCoding.m"; sourceTree = ""; }; 56DEC1CB15262FF70031E8DC /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; 56DEC1F4152630710031E8DC /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; 56DEC292152631300031E8DC /* GRMustache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustache.h; sourceTree = ""; }; @@ -912,7 +917,6 @@ 56BA248318C7A62E006DA5F3 /* GRMustacheContextTest */ = { isa = PBXGroup; children = ( - 56B4778C18CF8A7600EFF629 /* GRMustacheKeyedSubscriptingTest.m */, 56BA249818C7A65E006DA5F3 /* GRMustacheContextHasValueForMustacheExpressionTest.m */, 56B4779018CF8AD100EFF629 /* GRMustacheContextProtectedObjectTest.m */, 56BA248518C7A62E006DA5F3 /* GRMustacheContextTest.m */, @@ -1019,8 +1023,10 @@ 56BF36E319B8EEAE00854524 /* GRMustacheRendering_private.h */, 56BF36E419B8EEAE00854524 /* GRMustacheRenderingEngine.m */, 56BF36E519B8EEAE00854524 /* GRMustacheRenderingEngine_private.h */, - 56BF36E619B8EEAE00854524 /* GRMustacheSafeKeyAccess.h */, 56BF36E719B8EEAE00854524 /* GRMustacheTagDelegate.h */, + 56DAC7A21BB6C8DD0010FE01 /* GRMustacheKeyValueCoding.h */, + 56DAC7AA1BB6C9040010FE01 /* NSObject+GRMustacheKeyValueCoding_private.h */, + 56DAC7AB1BB6C9040010FE01 /* NSObject+GRMustacheKeyValueCoding.m */, ); path = Rendering; sourceTree = ""; @@ -1245,15 +1251,16 @@ 56214CAB1BA1A7490070C6CF /* GRMustacheRendering.h in Headers */, 56214C941BA1A70D0070C6CF /* GRMustacheTemplateAST_private.h in Headers */, 56214C8B1BA1A70D0070C6CF /* GRMustacheFilteredExpression_private.h in Headers */, + 56DAC7AC1BB6C9040010FE01 /* NSObject+GRMustacheKeyValueCoding_private.h in Headers */, 56214C8D1BA1A70D0070C6CF /* GRMustacheImplicitIteratorExpression_private.h in Headers */, 56214C9C1BA1A70D0070C6CF /* GRMustacheKeyAccess_private.h in Headers */, 56214C981BA1A70D0070C6CF /* GRMustacheVariableTag_private.h in Headers */, 56214CAE1BA1A7490070C6CF /* GRMustacheTemplate.h in Headers */, 56214CA51BA1A70D0070C6CF /* GRMustacheJavascriptEscapeFilter_private.h in Headers */, + 56DAC7A41BB6C8DD0010FE01 /* GRMustacheKeyValueCoding.h in Headers */, 56214C9B1BA1A70D0070C6CF /* GRMustacheFilter_private.h in Headers */, 56214CAD1BA1A7490070C6CF /* GRMustacheTagDelegate.h in Headers */, 56214CA41BA1A70D0070C6CF /* GRMustacheHTMLEscapeFilter_private.h in Headers */, - 56214CAC1BA1A7490070C6CF /* GRMustacheSafeKeyAccess.h in Headers */, 56214C2C1BA1A6870070C6CF /* GRMustache.h in Headers */, 56214C9D1BA1A70D0070C6CF /* GRMustacheRendering_private.h in Headers */, 56214C871BA1A70D0070C6CF /* GRMustacheToken_private.h in Headers */, @@ -1307,12 +1314,13 @@ 6586A0691B9E2E100067C98E /* GRMustacheAvailabilityMacros.h in Headers */, 6586A0BF1B9E2E660067C98E /* GRMustacheTemplateParser_private.h in Headers */, 6586A0721B9E2E310067C98E /* GRMustacheExpressionGenerator_private.h in Headers */, - 6586A09A1B9E2E4F0067C98E /* GRMustacheSafeKeyAccess.h in Headers */, + 56DAC7AD1BB6C9040010FE01 /* NSObject+GRMustacheKeyValueCoding_private.h in Headers */, 6586A09F1B9E2E5B0067C98E /* GRMustacheInheritedPartialNode_private.h in Headers */, 6586A0C21B9E2E6A0067C98E /* GRMustacheConfiguration.h in Headers */, 6586A0A81B9E2E5B0067C98E /* GRMustacheTag_private.h in Headers */, 6586A0881B9E2E4A0067C98E /* GRMustacheTemplateRepository.h in Headers */, 6586A0A51B9E2E5B0067C98E /* GRMustacheSectionTag_private.h in Headers */, + 56DAC7A51BB6C8DD0010FE01 /* GRMustacheKeyValueCoding.h in Headers */, 6586A0A11B9E2E5B0067C98E /* GRMustacheInheritableSectionNode_private.h in Headers */, 6586A0B71B9E2E600067C98E /* GRMustacheIdentifierExpression_private.h in Headers */, 6586A07F1B9E2E360067C98E /* GRMustacheLocalizer.h in Headers */, @@ -1642,6 +1650,7 @@ 56214C7C1BA1A6F20070C6CF /* GRMustacheHTMLEscapeFilter.m in Sources */, 56214C711BA1A6F20070C6CF /* GRMustacheFilter.m in Sources */, 56214C701BA1A6F20070C6CF /* GRMustacheExpressionInvocation.m in Sources */, + 56DAC7AE1BB6C9040010FE01 /* NSObject+GRMustacheKeyValueCoding.m in Sources */, 56214C6D1BA1A6F20070C6CF /* GRMustacheTextNode.m in Sources */, 56214C751BA1A6F20070C6CF /* GRMustacheTemplate.m in Sources */, 56214C6E1BA1A6F20070C6CF /* GRMustacheVariableTag.m in Sources */, @@ -1674,7 +1683,6 @@ 56214BD21BA1A56D0070C6CF /* GRMustacheContextValueForMustacheKeyTest.m in Sources */, 56214BD31BA1A56D0070C6CF /* GRMustacheContextKeyAccessTest.m in Sources */, 56214BBB1BA1A5560070C6CF /* GRMustacheParsingErrorsTest.m in Sources */, - 56214BCD1BA1A56D0070C6CF /* GRMustacheKeyedSubscriptingTest.m in Sources */, 56214C001BA1A58E0070C6CF /* GRMustacheTemplateRenderMethodsTest.m in Sources */, 56214BD11BA1A56D0070C6CF /* GRMustacheContextTopMustacheObjectTest.m in Sources */, 56214BBC1BA1A5560070C6CF /* GRMustachePositionFilterTest.m in Sources */, @@ -1723,7 +1731,6 @@ 56214BCB1BA1A56D0070C6CF /* GRMustacheContextValueForMustacheKeyTest.m in Sources */, 56214BCC1BA1A56D0070C6CF /* GRMustacheContextKeyAccessTest.m in Sources */, 56214BB21BA1A5550070C6CF /* GRMustacheParsingErrorsTest.m in Sources */, - 56214BC61BA1A56D0070C6CF /* GRMustacheKeyedSubscriptingTest.m in Sources */, 56214BFC1BA1A58D0070C6CF /* GRMustacheTemplateRenderMethodsTest.m in Sources */, 56214BCA1BA1A56D0070C6CF /* GRMustacheContextTopMustacheObjectTest.m in Sources */, 56214BB31BA1A5550070C6CF /* GRMustachePositionFilterTest.m in Sources */, @@ -1765,6 +1772,7 @@ files = ( 56AC8CBA1BA1F69B009E4319 /* GRMustacheRendering.m in Sources */, 56AC8CAD1BA1F69B009E4319 /* GRMustacheScopedExpression.m in Sources */, + 56DAC7AF1BB6C9040010FE01 /* NSObject+GRMustacheKeyValueCoding.m in Sources */, 56DAC7131BB69DAC0010FE01 /* GRMustacheTestingDelegate.m in Sources */, 56AC8CB31BA1F69B009E4319 /* GRMustacheTemplateAST.m in Sources */, 56AC8CC41BA1F69B009E4319 /* GRMustacheJavascriptEscapeFilter.m in Sources */, @@ -1818,6 +1826,7 @@ 56DAC7701BB6A0040010FE01 /* GRMustacheTemplateParser.m in Sources */, 56DAC7711BB6A0040010FE01 /* GRMustacheToken.m in Sources */, 56DAC7721BB6A0040010FE01 /* GRMustacheCompiler.m in Sources */, + 56DAC7B11BB6C9040010FE01 /* NSObject+GRMustacheKeyValueCoding.m in Sources */, 56DAC7731BB6A0040010FE01 /* GRMustacheExpression.m in Sources */, 56DAC7741BB6A0040010FE01 /* GRMustacheFilteredExpression.m in Sources */, 56DAC7751BB6A0040010FE01 /* GRMustacheIdentifierExpression.m in Sources */, @@ -1884,6 +1893,7 @@ 6586A0BC1B9E2E660067C98E /* GRMustacheExpressionParser.m in Sources */, 6586A0BE1B9E2E660067C98E /* GRMustacheTemplateParser.m in Sources */, 6586A07D1B9E2E360067C98E /* GRMustacheJavascriptEscapeFilter.m in Sources */, + 56DAC7B01BB6C9040010FE01 /* NSObject+GRMustacheKeyValueCoding.m in Sources */, 6586A0711B9E2E310067C98E /* GRMustacheExpressionGenerator.m in Sources */, 6586A0791B9E2E360067C98E /* GRMustacheEachFilter.m in Sources */, 6586A0B81B9E2E600067C98E /* GRMustacheImplicitIteratorExpression.m in Sources */, diff --git a/src/classes/GRMustache.h b/src/classes/GRMustache.h index d7d432b4..3d88c3b9 100644 --- a/src/classes/GRMustache.h +++ b/src/classes/GRMustache.h @@ -155,6 +155,6 @@ typedef struct { #import "GRMustacheTag.h" #import "GRMustacheConfiguration.h" #import "GRMustacheLocalizer.h" -#import "GRMustacheSafeKeyAccess.h" +#import "GRMustacheKeyValueCoding.h" #import "NSValueTransformer+GRMustache.h" #import "NSFormatter+GRMustache.h" diff --git a/src/classes/Rendering/GRMustacheContext.m b/src/classes/Rendering/GRMustacheContext.m index e966ea43..bc43d232 100644 --- a/src/classes/Rendering/GRMustacheContext.m +++ b/src/classes/Rendering/GRMustacheContext.m @@ -30,6 +30,7 @@ #import "GRMustachePartialNode_private.h" #import "GRMustacheTagDelegate.h" #import "GRMustacheExpressionInvocation_private.h" +#import "NSObject+GRMustacheKeyValueCoding_private.h" #define GRMUSTACHE_STACK_RELEASE(stackName) \ [GRMUSTACHE_STACK_TOP_IVAR(stackName) release]; \ @@ -353,7 +354,7 @@ - (id)valueForMustacheKey:(NSString *)key protected:(BOOL *)protected // First look for in the protected context stack GRMUSTACHE_STACK_ENUMERATE(protectedContextStack, self, context) { - id value = [GRMustacheKeyAccess valueForMustacheKey:key inObject:GRMUSTACHE_STACK_TOP(protectedContextStack, context) unsafeKeyAccess:context->_unsafeKeyAccess]; + id value = [GRMUSTACHE_STACK_TOP(protectedContextStack, context) valueForMustacheKey:key unsafeKeyAccess:context->_unsafeKeyAccess]; if (value != nil) { if (protected != NULL) { *protected = YES; @@ -379,7 +380,7 @@ - (id)valueForMustacheKey:(NSString *)key protected:(BOOL *)protected } } if (hidden) { continue; } - id value = [GRMustacheKeyAccess valueForMustacheKey:key inObject:contextObject unsafeKeyAccess:context->_unsafeKeyAccess]; + id value = [contextObject valueForMustacheKey:key unsafeKeyAccess:context->_unsafeKeyAccess]; if (value != nil) { if (protected != NULL) { *protected = NO; diff --git a/src/classes/Rendering/GRMustacheExpressionInvocation.m b/src/classes/Rendering/GRMustacheExpressionInvocation.m index 435242ed..973fc2c9 100644 --- a/src/classes/Rendering/GRMustacheExpressionInvocation.m +++ b/src/classes/Rendering/GRMustacheExpressionInvocation.m @@ -30,6 +30,7 @@ #import "GRMustacheToken_private.h" #import "GRMustacheKeyAccess_private.h" #import "GRMustacheError.h" +#import "NSObject+GRMustacheKeyValueCoding_private.h" @interface GRMustacheExpressionInvocation() @end @@ -120,7 +121,7 @@ - (BOOL)visitScopedExpression:(GRMustacheScopedExpression *)expression error:(NS return NO; } - _value = [GRMustacheKeyAccess valueForMustacheKey:expression.identifier inObject:_value unsafeKeyAccess:_context.unsafeKeyAccess]; + _value = [_value valueForMustacheKey:expression.identifier unsafeKeyAccess:_context.unsafeKeyAccess]; _valueIsProtected = NO; return YES; } diff --git a/src/classes/Rendering/GRMustacheKeyAccess.m b/src/classes/Rendering/GRMustacheKeyAccess.m index 07f2ec6c..61db6681 100644 --- a/src/classes/Rendering/GRMustacheKeyAccess.m +++ b/src/classes/Rendering/GRMustacheKeyAccess.m @@ -23,7 +23,6 @@ #import #import #import "GRMustacheKeyAccess_private.h" -#import "GRMustacheSafeKeyAccess.h" #if !defined(NS_BLOCK_ASSERTIONS) // For testing purpose @@ -43,52 +42,6 @@ void freeSafeKeysForClass(void *objects) { #define setCurrentThreadSafeKeysForClass(classes) pthread_setspecific(GRSafeKeysForClassKey, classes) -// ============================================================================= -#pragma mark - Foundation declarations - -static NSMutableSet *safeMustacheKeysForNSArray; -static NSMutableSet *safeMustacheKeysForNSAttributedString; -static NSMutableSet *safeMustacheKeysForNSData; -static NSMutableSet *safeMustacheKeysForNSDate; -static NSMutableSet *safeMustacheKeysForNSDateComponents; -static NSMutableSet *safeMustacheKeysForNSDecimalNumber; -static NSMutableSet *safeMustacheKeysForNSError; -static NSMutableSet *safeMustacheKeysForNSHashTable; -static NSMutableSet *safeMustacheKeysForNSIndexPath; -static NSMutableSet *safeMustacheKeysForNSIndexSet; -static NSMutableSet *safeMustacheKeysForNSMapTable; -static NSMutableSet *safeMustacheKeysForNSNotification; -static NSMutableSet *safeMustacheKeysForNSException; -static NSMutableSet *safeMustacheKeysForNSNumber; -static NSMutableSet *safeMustacheKeysForNSOrderedSet; -static NSMutableSet *safeMustacheKeysForNSPointerArray; -static NSMutableSet *safeMustacheKeysForNSSet; -static NSMutableSet *safeMustacheKeysForNSString; -static NSMutableSet *safeMustacheKeysForNSURL; -static NSMutableSet *safeMustacheKeysForNSValue; - -static NSSet *safeMustacheKeys_NSArray(id self, SEL _cmd); -static NSSet *safeMustacheKeys_NSAttributedString(id self, SEL _cmd); -static NSSet *safeMustacheKeys_NSData(id self, SEL _cmd); -static NSSet *safeMustacheKeys_NSDate(id self, SEL _cmd); -static NSSet *safeMustacheKeys_NSDateComponents(id self, SEL _cmd); -static NSSet *safeMustacheKeys_NSDecimalNumber(id self, SEL _cmd); -static NSSet *safeMustacheKeys_NSError(id self, SEL _cmd); -static NSSet *safeMustacheKeys_NSHashTable(id self, SEL _cmd); -static NSSet *safeMustacheKeys_NSIndexPath(id self, SEL _cmd); -static NSSet *safeMustacheKeys_NSIndexSet(id self, SEL _cmd); -static NSSet *safeMustacheKeys_NSMapTable(id self, SEL _cmd); -static NSSet *safeMustacheKeys_NSNotification(id self, SEL _cmd); -static NSSet *safeMustacheKeys_NSException(id self, SEL _cmd); -static NSSet *safeMustacheKeys_NSNumber(id self, SEL _cmd); -static NSSet *safeMustacheKeys_NSOrderedSet(id self, SEL _cmd); -static NSSet *safeMustacheKeys_NSPointerArray(id self, SEL _cmd); -static NSSet *safeMustacheKeys_NSSet(id self, SEL _cmd); -static NSSet *safeMustacheKeys_NSString(id self, SEL _cmd); -static NSSet *safeMustacheKeys_NSURL(id self, SEL _cmd); -static NSSet *safeMustacheKeys_NSValue(id self, SEL _cmd); - - // ============================================================================= #pragma mark - NSUndefinedKeyException prevention declarations @@ -101,7 +54,6 @@ - (id)GRMustacheKeyAccessValueForUndefinedKey_NSManagedObject:(NSString *)key; // ============================================================================= #pragma mark - GRMustacheKeyAccess -static Class NSOrderedSetClass; static Class NSManagedObjectClass; @interface NSObject(GRMustacheCoreDataMethods) @@ -113,284 +65,14 @@ @implementation GRMustacheKeyAccess + (void)initialize { - NSOrderedSetClass = NSClassFromString(@"NSOrderedSet"); NSManagedObjectClass = NSClassFromString(@"NSManagedObject"); - [self setupSafeKeyAccessForFoundationClasses]; setupSafeKeysForClass(); } -+ (id)valueForMustacheKey:(NSString *)key inObject:(id)object unsafeKeyAccess:(BOOL)unsafeKeyAccess -{ - if (object == nil) { - return nil; - } - - - // Try objectForKeyedSubscript: first (see https://github.com/groue/GRMustache/issues/66:) - - if ([object respondsToSelector:@selector(objectForKeyedSubscript:)]) { - return [object objectForKeyedSubscript:key]; - } - - - // Then try valueForKey: for safe keys - - if (!unsafeKeyAccess && ![self isSafeMustacheKey:key forObject:object]) { - return nil; - } - - - @try { - - // We don't want to use NSArray, NSSet and NSOrderedSet implementation - // of valueForKey:, because they return another collection: see issue - // #21 and "anchored key should not extract properties inside an array" - // test in src/tests/Public/v4.0/GRMustacheSuites/compound_keys.json - // - // Instead, we want the behavior of NSObject's implementation of valueForKey:. - - if ([self objectIsFoundationCollectionWhoseImplementationOfValueForKeyReturnsAnotherCollection:object]) { - return [self valueForMustacheKey:key inFoundationCollectionObject:object]; - } else { - return [object valueForKey:key]; - } - } - - @catch (NSException *exception) { - - // Swallow NSUndefinedKeyException only - - if (![[exception name] isEqualToString:NSUndefinedKeyException]) { - [exception raise]; - } - } - - return nil; -} - - -// ============================================================================= -#pragma mark - Foundation collections - -+ (BOOL)objectIsFoundationCollectionWhoseImplementationOfValueForKeyReturnsAnotherCollection:(id)object -{ - if ([object isKindOfClass:[NSArray class]]) { return YES; } - if ([object isKindOfClass:[NSSet class]]) { return YES; } - if (NSOrderedSetClass && [object isKindOfClass:NSOrderedSetClass]) { return YES; } - return NO; -} - -+ (id)valueForMustacheKey:(NSString *)key inFoundationCollectionObject:(id)object -{ - // Ideally, we would use NSObject's implementation for collections, so that - // we can access properties such as `count`, `anyObject`, etc. - // - // And so we did, until [issue #70](https://github.com/groue/GRMustache/issues/70) - // revealed that the direct use of NSObject's imp crashes on arm64: - // - // IMP imp = class_getMethodImplementation([NSObject class], @selector(valueForKey:)); - // return imp(object, @selector(valueForKey:), key); // crash on arm64 - // - // objc_msgSendSuper fails on arm64 as well: - // - // return objc_msgSendSuper( - // &(struct objc_super){ .receiver = object, .super_class = [NSObject class] }, - // @selector(valueForKey:), - // key); // crash on arm64 - // - // So we have to implement NSObject's valueForKey: ourselves. - // - // Quoting Apple documentation: - // https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/KeyValueCoding/Articles/SearchImplementation.html - // - // > Default Search Pattern for valueForKey: - // > - // > 1. Searches the class of the receiver for an accessor method whose - // > name matches the pattern get, , or is, in that order. - // - // The remaining of the search pattern goes into aggregates and ivars. Let's - // ignore aggregates (until someone has a need for it), and ivars (since - // they are private). - - NSString *keyWithUppercaseInitial = [NSString stringWithFormat:@"%@%@", - [[key substringToIndex:1] uppercaseString], - [key substringFromIndex:1]]; - NSArray *accessors = [NSArray arrayWithObjects: - [NSString stringWithFormat:@"get%@", keyWithUppercaseInitial], - key, - [NSString stringWithFormat:@"is%@", keyWithUppercaseInitial], - nil]; - - for (NSString *accessor in accessors) { - SEL selector = NSSelectorFromString(accessor); - if ([object respondsToSelector:selector]) { - - // Extract the raw value into a buffer - - NSMethodSignature *methodSignature = [object methodSignatureForSelector:selector]; - NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:methodSignature]; - invocation.selector = selector; - [invocation invokeWithTarget:object]; - NSUInteger methodReturnLength = [methodSignature methodReturnLength]; - if (methodReturnLength == 0) { - // no value - return nil; - } else { - void *buffer = malloc(methodReturnLength); - if (buffer == NULL) { - // Allocation failed. - // - // This method is not supposed to allocate any object, so we - // can not behave like failing allocating methods and return - // nil. - // - // So let's raise an exception. - // - // NSMallocException is supposedly obsolete but there are - // evidences it is still used by Foundation: - // http://stackoverflow.com/search?q=NSMallocException - [NSException raise:NSMallocException format:@"Out of memory."]; - } - [invocation getReturnValue:buffer]; - - // Turn the raw value buffer into an object - - id result = nil; - const char *objCType = [methodSignature methodReturnType]; - switch(objCType[0]) { - case 'c': - result = [NSNumber numberWithChar:*(char *)buffer]; - break; - case 'i': - result = [NSNumber numberWithInt:*(int *)buffer]; - break; - case 's': - result = [NSNumber numberWithShort:*(short *)buffer]; - break; - case 'l': - result = [NSNumber numberWithLong:*(long *)buffer]; - break; - case 'q': - result = [NSNumber numberWithLongLong:*(long long *)buffer]; - break; - case 'C': - result = [NSNumber numberWithUnsignedChar:*(unsigned char *)buffer]; - break; - case 'I': - result = [NSNumber numberWithUnsignedInt:*(unsigned int *)buffer]; - break; - case 'S': - result = [NSNumber numberWithUnsignedShort:*(unsigned short *)buffer]; - break; - case 'L': - result = [NSNumber numberWithUnsignedLong:*(unsigned long *)buffer]; - break; - case 'Q': - result = [NSNumber numberWithUnsignedLongLong:*(unsigned long long *)buffer]; - break; - case 'B': - result = [NSNumber numberWithBool:*(_Bool *)buffer]; - break; - case 'f': - result = [NSNumber numberWithFloat:*(float *)buffer]; - break; - case 'd': - result = [NSNumber numberWithDouble:*(double *)buffer]; - break; - case '@': - case '#': - result = *(id *)buffer; - break; - default: - [NSException raise:NSInternalInconsistencyException format:@"Not implemented yet"]; - break; - } - - free(buffer); - return result; - } - } - } - - return nil; -} - // ============================================================================= #pragma mark - Foundation -+ (void)setupSafeKeyAccessForFoundationClasses -{ - // Safe key access prevents dangerous methods from being accessed by bad - // templates through `valueForKey:`. - // - // By default, only declared properties can be accessed, unless classes - // conform to the GRMustacheSafeKeyAccess protocol. - // - // We want to let users have a liberal use of KVC on Foundation classes: - // `{{# array.count }}`, `{{ dateComponents.year }}`, etc. Those classes - // do not always declare properties for those accessors. - // - // So let's setup safe keys for common Foundation classes, by allowing - // all their non-mutating methods, plus a few safe NSObject methods, - // minus dangerous NSObject methods. - - NSSet *safeMustacheNSObjectKeys = [NSSet setWithObjects: - @"class", - @"superclass", - @"self", - @"description", - @"debugDescription", - nil]; - NSSet *unsafeMustacheNSObjectKeys = [NSSet setWithObjects: - @"init", - @"dealloc", - @"finalize", - @"copy", - @"mutableCopy", - @"retain", - @"release", - @"autorelease", - nil]; - - SEL selector = @selector(safeMustacheKeys); - Protocol *protocol = @protocol(GRMustacheSafeKeyAccess); - struct objc_method_description methodDescription = protocol_getMethodDescription(protocol, selector, YES, NO); - -#define setupSafeKeyAccessForClass(klassName) do {\ -Class klass = NSClassFromString(@#klassName);\ -if (klass) {\ -Class metaKlass = object_getClass(klass);\ -safeMustacheKeysFor ## klassName = [[self allPublicKeysForClass:klass] retain];\ -[safeMustacheKeysFor ## klassName unionSet:safeMustacheNSObjectKeys];\ -[safeMustacheKeysFor ## klassName minusSet:unsafeMustacheNSObjectKeys];\ -class_addMethod(metaKlass, selector, (IMP)safeMustacheKeys_ ## klassName, methodDescription.types);\ -class_addProtocol(klass, protocol);\ -}\ -} while(0); - - setupSafeKeyAccessForClass(NSArray); - setupSafeKeyAccessForClass(NSAttributedString); - setupSafeKeyAccessForClass(NSData); - setupSafeKeyAccessForClass(NSDate); - setupSafeKeyAccessForClass(NSDateComponents); - setupSafeKeyAccessForClass(NSDecimalNumber); - setupSafeKeyAccessForClass(NSError); - setupSafeKeyAccessForClass(NSHashTable); - setupSafeKeyAccessForClass(NSIndexPath); - setupSafeKeyAccessForClass(NSIndexSet); - setupSafeKeyAccessForClass(NSMapTable); - setupSafeKeyAccessForClass(NSNotification); - setupSafeKeyAccessForClass(NSException); - setupSafeKeyAccessForClass(NSNumber); - setupSafeKeyAccessForClass(NSOrderedSet); - setupSafeKeyAccessForClass(NSPointerArray); - setupSafeKeyAccessForClass(NSSet); - setupSafeKeyAccessForClass(NSString); - setupSafeKeyAccessForClass(NSURL); - setupSafeKeyAccessForClass(NSValue); -} - /** * Return the set of methods without arguments, up to NSObject, non including NSObject. */ @@ -432,15 +114,11 @@ + (BOOL)isSafeMustacheKey:(NSString *)key forObject:(id)object Class klass = [object class]; safeKeys = (NSSet *)CFDictionaryGetValue(safeKeysForClass, klass); if (safeKeys == nil) { - if ([klass respondsToSelector:@selector(safeMustacheKeys)]) { - safeKeys = [klass safeMustacheKeys] ?: [NSSet set]; - } else { - NSMutableSet *keys = [self propertyGettersForClass:klass]; - if (NSManagedObjectClass && [object isKindOfClass:NSManagedObjectClass]) { - [keys unionSet:[NSSet setWithArray:[[[object entity] propertiesByName] allKeys]]]; - } - safeKeys = keys; + NSMutableSet *keys = [self propertyGettersForClass:klass]; + if (NSManagedObjectClass && [object isKindOfClass:NSManagedObjectClass]) { + [keys unionSet:[NSSet setWithArray:[[[object entity] propertiesByName] allKeys]]]; } + safeKeys = keys; CFDictionarySetValue(safeKeysForClass, klass, safeKeys); } } @@ -484,106 +162,3 @@ + (NSMutableSet *)propertyGettersForClass:(Class)klass } @end - -// ============================================================================= -#pragma mark - Foundation implementations - -static NSSet *safeMustacheKeys_NSArray(id self, SEL _cmd) -{ - return safeMustacheKeysForNSArray; -} - -static NSSet *safeMustacheKeys_NSAttributedString(id self, SEL _cmd) -{ - return safeMustacheKeysForNSAttributedString; -} - -static NSSet *safeMustacheKeys_NSData(id self, SEL _cmd) -{ - return safeMustacheKeysForNSData; -} - -static NSSet *safeMustacheKeys_NSDate(id self, SEL _cmd) -{ - return safeMustacheKeysForNSDate; -} - -static NSSet *safeMustacheKeys_NSDateComponents(id self, SEL _cmd) -{ - return safeMustacheKeysForNSDateComponents; -} - -static NSSet *safeMustacheKeys_NSDecimalNumber(id self, SEL _cmd) -{ - return safeMustacheKeysForNSDecimalNumber; -} - -static NSSet *safeMustacheKeys_NSError(id self, SEL _cmd) -{ - return safeMustacheKeysForNSError; -} - -static NSSet *safeMustacheKeys_NSHashTable(id self, SEL _cmd) -{ - return safeMustacheKeysForNSHashTable; -} - -static NSSet *safeMustacheKeys_NSIndexPath(id self, SEL _cmd) -{ - return safeMustacheKeysForNSIndexPath; -} - -static NSSet *safeMustacheKeys_NSIndexSet(id self, SEL _cmd) -{ - return safeMustacheKeysForNSIndexSet; -} - -static NSSet *safeMustacheKeys_NSMapTable(id self, SEL _cmd) -{ - return safeMustacheKeysForNSMapTable; -} - -static NSSet *safeMustacheKeys_NSNotification(id self, SEL _cmd) -{ - return safeMustacheKeysForNSNotification; -} - -static NSSet *safeMustacheKeys_NSException(id self, SEL _cmd) -{ - return safeMustacheKeysForNSException; -} - -static NSSet *safeMustacheKeys_NSNumber(id self, SEL _cmd) -{ - return safeMustacheKeysForNSNumber; -} - -static NSSet *safeMustacheKeys_NSOrderedSet(id self, SEL _cmd) -{ - return safeMustacheKeysForNSOrderedSet; -} - -static NSSet *safeMustacheKeys_NSPointerArray(id self, SEL _cmd) -{ - return safeMustacheKeysForNSPointerArray; -} - -static NSSet *safeMustacheKeys_NSSet(id self, SEL _cmd) -{ - return safeMustacheKeysForNSSet; -} - -static NSSet *safeMustacheKeys_NSString(id self, SEL _cmd) -{ - return safeMustacheKeysForNSString; -} - -static NSSet *safeMustacheKeys_NSURL(id self, SEL _cmd) -{ - return safeMustacheKeysForNSURL; -} - -static NSSet *safeMustacheKeys_NSValue(id self, SEL _cmd) -{ - return safeMustacheKeysForNSValue; -} diff --git a/src/classes/Rendering/GRMustacheKeyAccess_private.h b/src/classes/Rendering/GRMustacheKeyAccess_private.h index 5391806c..af72a039 100644 --- a/src/classes/Rendering/GRMustacheKeyAccess_private.h +++ b/src/classes/Rendering/GRMustacheKeyAccess_private.h @@ -23,28 +23,6 @@ #import #import "GRMustacheAvailabilityMacros_private.h" -/** - * GRMustacheKeyAccess implements all the GRMustache key-fetching logic. - */ @interface GRMustacheKeyAccess : NSObject - -/** - * Sends the `objectForKeyedSubscript:` or `valueForKey:` message to object - * with the provided key, and returns the result. - * - * If object responds to `objectForKeyedSubscript:`, `valueForKey:` is not - * invoked. - * - * If `valueForKey:` raise an NSUndefinedKeyException, the method returns nil. - * - * @param key The searched key - * @param object The queried object - * @param unsafeKeyAccess If YES, the `valueForKey:` method will be used - * without any restriction. - * - * @return The value that should be handled by Mustache rendering for a given - * key. - */ -+ (id)valueForMustacheKey:(NSString *)key inObject:(id)object unsafeKeyAccess:(BOOL)unsafeKeyAccess GRMUSTACHE_API_INTERNAL; - ++ (BOOL)isSafeMustacheKey:(NSString *)key forObject:(id)object GRMUSTACHE_API_INTERNAL; @end diff --git a/src/classes/Rendering/GRMustacheKeyValueCoding.h b/src/classes/Rendering/GRMustacheKeyValueCoding.h new file mode 100644 index 00000000..275612d8 --- /dev/null +++ b/src/classes/Rendering/GRMustacheKeyValueCoding.h @@ -0,0 +1,28 @@ +// The MIT License +// +// Copyright (c) 2014 Gwendal Roué +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import +#import "GRMustacheAvailabilityMacros.h" + +@protocol GRMustacheKeyValueCoding +- (id)valueForMustacheKey:(NSString *)key; +@end diff --git a/src/classes/Rendering/NSObject+GRMustacheKeyValueCoding.m b/src/classes/Rendering/NSObject+GRMustacheKeyValueCoding.m new file mode 100644 index 00000000..2819ba65 --- /dev/null +++ b/src/classes/Rendering/NSObject+GRMustacheKeyValueCoding.m @@ -0,0 +1,127 @@ +// The MIT License +// +// Copyright (c) 2014 Gwendal Roué +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + + +#import "NSObject+GRMustacheKeyValueCoding_private.h" +#import "GRMustacheKeyAccess_private.h" + +@interface NSObject(KeyedSubscripting) +- (id)valueForMustacheKey:(id)key; +@end + +@implementation NSObject(GRMustacheKeyValueCoding) + +- (id)valueForMustacheKey:(NSString *)key unsafeKeyAccess:(BOOL)unsafeKeyAccess +{ + // Try valueForMustacheKey: + + if ([self respondsToSelector:@selector(valueForMustacheKey:)]) { + @try { + return [self valueForMustacheKey:key]; + } + @catch (NSException *exception) { + // Swallow NSUndefinedKeyException only + if (![[exception name] isEqualToString:NSUndefinedKeyException]) { + [exception raise]; + } + return nil; + } + } + + + // Then try valueForKey: for safe keys + + if (!unsafeKeyAccess && ![GRMustacheKeyAccess isSafeMustacheKey:key forObject:self]) { + return nil; + } + + @try { + return [self valueForKey:key]; + } + @catch (NSException *exception) { + // Swallow NSUndefinedKeyException only + if (![[exception name] isEqualToString:NSUndefinedKeyException]) { + [exception raise]; + } + return nil; + } +} + +@end + +@implementation NSDictionary(GRMustacheKeyValueCoding) + +- (id)valueForMustacheKey:(NSString *)key +{ + return [self objectForKey:key]; +} + +@end + +@implementation NSArray(GRMustacheKeyValueCoding) + +- (id)valueForMustacheKey:(NSString *)key +{ + if ([key isEqualToString:@"count"]) { + return @(self.count); + } else if ([key isEqualToString:@"first"]) { + return self.firstObject; + } else if ([key isEqualToString:@"last"]) { + return self.lastObject; + } else { + return nil; + } +} + +@end + +@implementation NSOrderedSet(GRMustacheKeyValueCoding) + +- (id)valueForMustacheKey:(NSString *)key +{ + if ([key isEqualToString:@"count"]) { + return @(self.count); + } else if ([key isEqualToString:@"first"]) { + return self.firstObject; + } else if ([key isEqualToString:@"last"]) { + return self.lastObject; + } else { + return nil; + } +} + +@end + +@implementation NSSet(GRMustacheKeyValueCoding) + +- (id)valueForMustacheKey:(NSString *)key +{ + if ([key isEqualToString:@"count"]) { + return @(self.count); + } else if ([key isEqualToString:@"first"]) { + return self.anyObject; + } else { + return nil; + } +} + +@end diff --git a/src/classes/Rendering/GRMustacheSafeKeyAccess.h b/src/classes/Rendering/NSObject+GRMustacheKeyValueCoding_private.h similarity index 55% rename from src/classes/Rendering/GRMustacheSafeKeyAccess.h rename to src/classes/Rendering/NSObject+GRMustacheKeyValueCoding_private.h index caca2275..506fb8fa 100644 --- a/src/classes/Rendering/GRMustacheSafeKeyAccess.h +++ b/src/classes/Rendering/NSObject+GRMustacheKeyValueCoding_private.h @@ -22,33 +22,20 @@ #import #import "GRMustacheAvailabilityMacros.h" +#import "GRMustacheKeyValueCoding.h" +@interface NSObject(GRMustacheKeyValueCoding) +- (id)valueForMustacheKey:(NSString *)key unsafeKeyAccess:(BOOL)unsafeKeyAccess; +@end -/** - * Your data classes should conform to the GRMustacheSafeKeyAccess protocol - * to filter the keys that can be accessed by GRMustache templates. - * - * **Companion guide:** https://github.com/groue/GRMustache/blob/master/Guides/runtime/security.md - */ -@protocol GRMustacheSafeKeyAccess +@interface NSDictionary(GRMustacheKeyValueCoding) +@end -/** - * List the name of the keys GRMustache can access on this class using the - * `valueForKey:` method. - * - * When objects do not respond to this method, only declared properties can be - * accessed. All properties of Core Data NSManagedObjects are also accessible, - * even without property declaration. - * - * This method is not used for objects responding to `objectForKeyedSubscript:`. - * For those objects, all keys are accessible from templates. - * - * **Companion guide:** https://github.com/groue/GRMustache/blob/master/Guides/security.md - * - * @return The set of accessible keys on the class. - * - * @since v7.0 - */ -+ (NSSet *)safeMustacheKeys AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; +@interface NSArray(GRMustacheKeyValueCoding) +@end + +@interface NSOrderedSet(GRMustacheKeyValueCoding) +@end +@interface NSSet(GRMustacheKeyValueCoding) @end diff --git a/src/tests/Private/GRMustacheContextPrivateTest.m b/src/tests/Private/GRMustacheContextPrivateTest.m index dbf1b383..2becebcd 100644 --- a/src/tests/Private/GRMustacheContextPrivateTest.m +++ b/src/tests/Private/GRMustacheContextPrivateTest.m @@ -23,13 +23,13 @@ #import "GRMustachePrivateAPITest.h" #import "GRMustacheContext_private.h" #import "GRMustacheTemplate_private.h" -#import "GRMustacheSafeKeyAccess.h" +#import "NSObject+GRMustacheKeyValueCoding_private.h" @interface GRMustacheContextPrivateTest : GRMustachePrivateAPITest @end -@interface GRKVCRecorder: NSObject { +@interface GRKVCRecorder: NSObject { NSString *lastAccessedKey; NSArray *keys; } @@ -41,9 +41,9 @@ @implementation GRKVCRecorder @synthesize lastAccessedKey; @synthesize keys; -+ (NSSet *)safeMustacheKeys +- (id)valueForMustacheKey:(NSString *)key { - return [NSSet setWithObjects:@"foo", @"root", @"top", @"name", nil]; + return [self valueForKey:key]; } + (instancetype)recorderWithRecognizedKeys:(NSArray *)keys @@ -78,14 +78,14 @@ - (void)dealloc @end -@interface ThrowingObjectFromValueForKey: NSObject +@interface ThrowingObjectFromValueForKey: NSObject @end @implementation ThrowingObjectFromValueForKey -+ (NSSet *)safeMustacheKeys +- (id)valueForMustacheKey:(NSString *)key { - return [NSSet setWithObjects:@"KnownKey", @"NonNSUndefinedKeyException", @"NonSelfNSUndefinedKeyException", @"SelfNSUndefinedKeyException", nil]; + return [self valueForKey:key]; } - (id)valueForKey:(NSString *)key @@ -104,14 +104,14 @@ - (id)valueForKey:(NSString *)key @end -@interface ThrowingObjectFromValueForUndefinedKey: NSObject +@interface ThrowingObjectFromValueForUndefinedKey: NSObject @end @implementation ThrowingObjectFromValueForUndefinedKey -+ (NSSet *)safeMustacheKeys +- (id)valueForMustacheKey:(NSString *)key { - return [NSSet setWithObjects:@"KnownKey", @"NonNSUndefinedKeyException", @"NonSelfNSUndefinedKeyException", @"SelfNSUndefinedKeyException", nil]; + return [self valueForKey:key]; } - (id)valueForUndefinedKey:(NSString *)key diff --git a/src/tests/Public/v8.0/GRBooleanTest.m b/src/tests/Public/v8.0/GRBooleanTest.m index 0444e441..d969ad58 100644 --- a/src/tests/Public/v8.0/GRBooleanTest.m +++ b/src/tests/Public/v8.0/GRBooleanTest.m @@ -26,7 +26,7 @@ @interface GRBooleanTest : GRMustachePublicAPITest @end -@interface GRBooleanTestSupport: NSObject { +@interface GRBooleanTestSupport: NSObject { BOOL _customGetterBOOLProperty; bool _customGetterboolProperty; } @@ -68,34 +68,9 @@ - (unsigned char)unsigned_charTrueMethod { return YES; } - (int)intFalseMethod { return NO; } - (int)intTrueMethod { return YES; } -+ (NSSet *)safeMustacheKeys -{ - return [NSSet setWithObjects: - @"boolFalseProperty", - @"boolTrueProperty", - @"BOOLFalseProperty", - @"BOOLTrueProperty", - @"charFalseProperty", - @"charTrueProperty", - @"unsigned_charFalseProperty", - @"unsigned_charTrueProperty", - @"intFalseProperty", - @"intTrueProperty", - @"customGetterBOOLProperty", - @"isCustomGetterBOOLProperty", - @"customGetterboolProperty", - @"isCustomGetterboolProperty", - @"boolFalseMethod", - @"boolTrueMethod", - @"BOOLFalseMethod", - @"BOOLTrueMethod", - @"charFalseMethod", - @"charTrueMethod", - @"unsigned_charFalseMethod", - @"unsigned_charTrueMethod", - @"intFalseMethod", - @"intTrueMethod", - nil]; +- (id)valueForMustacheKey:(NSString *)key +{ + return [self valueForKey:key]; } @end diff --git a/src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheContextKeyAccessTest.m b/src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheContextKeyAccessTest.m index 9450fceb..dec82df6 100644 --- a/src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheContextKeyAccessTest.m +++ b/src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheContextKeyAccessTest.m @@ -24,32 +24,6 @@ #import "GRMustachePublicAPITest.h" -// - -@interface GRMustacheContextKeyAccess_ClassWithObjectForKeyedSubscript : NSObject -@end - -@implementation GRMustacheContextKeyAccess_ClassWithObjectForKeyedSubscript - -+ (NSSet *)safeMustacheKeys -{ - return [NSSet setWithObjects:@"foo", @"bar", nil]; -} - -- (id)objectForKeyedSubscript:(id)key -{ - return key; -} - -- (id)valueForKey:(NSString *)key -{ - return [key uppercaseString]; -} - -@end - -// - @interface GRMustacheContextKeyAccess_ClassWithProperties : NSObject @property (nonatomic, readonly) NSString *property; @end @@ -70,25 +44,20 @@ - (NSString *)method // -@interface GRMustacheContextKeyAccess_ClassWithCustomAllowedKeys : NSObject -@property (nonatomic, readonly) NSString *disallowedProperty; +@interface GRMustacheContextKeyAccess_ClassWithProperties2 : NSObject +@property (nonatomic, readonly) NSString *property2; @end -@implementation GRMustacheContextKeyAccess_ClassWithCustomAllowedKeys +@implementation GRMustacheContextKeyAccess_ClassWithProperties2 -+ (NSSet *)safeMustacheKeys +- (NSString *)property2 { - return [NSSet setWithObjects:@"allowedMethod", nil]; + return @"property2"; } -- (NSString *)disallowedProperty +- (NSString *)method2 { - return @"disallowedProperty"; -} - -- (NSString *)allowedMethod -{ - return @"allowedMethod"; + return @"method2"; } @end @@ -100,31 +69,11 @@ @interface GRMustacheContextKeyAccessTest : GRMustachePublicAPITest @implementation GRMustacheContextKeyAccessTest -- (void)testObjectForKeyedSubscriptReplacesValueForKey -{ - GRMustacheContextKeyAccess_ClassWithObjectForKeyedSubscript *object = [[[GRMustacheContextKeyAccess_ClassWithObjectForKeyedSubscript alloc] init] autorelease]; - - // test setup - XCTAssertTrue([[object class] respondsToSelector:@selector(safeMustacheKeys)], @""); - XCTAssertTrue([[[object class] safeMustacheKeys] containsObject:@"foo"], @""); - XCTAssertTrue([[[object class] safeMustacheKeys] containsObject:@"bar"], @""); - XCTAssertEqualObjects([object objectForKeyedSubscript:@"foo"], @"foo", @""); - XCTAssertEqualObjects([object objectForKeyedSubscript:@"bar"], @"bar", @""); - XCTAssertEqualObjects([object valueForKey:@"foo"], @"FOO", @""); - XCTAssertEqualObjects([object valueForKey:@"bar"], @"BAR", @""); - - // test context - GRMustacheContext *context = [GRMustacheContext contextWithObject:object]; - XCTAssertEqualObjects([context valueForMustacheKey:@"foo"], @"foo", @""); - XCTAssertEqualObjects([context valueForMustacheKey:@"bar"], @"bar", @""); -} - - (void)testPropertiesAreAllowed { GRMustacheContextKeyAccess_ClassWithProperties *object = [[[GRMustacheContextKeyAccess_ClassWithProperties alloc] init] autorelease]; // test setup - XCTAssertFalse([[object class] respondsToSelector:@selector(safeMustacheKeys)], @""); XCTAssertFalse([object respondsToSelector:@selector(objectForKeyedSubscript:)], @""); XCTAssertEqualObjects(object.property, @"property", @""); XCTAssertEqualObjects([object valueForKey:@"property"], @"property", @""); @@ -139,7 +88,6 @@ - (void)testMethodAreDisallowed GRMustacheContextKeyAccess_ClassWithProperties *object = [[[GRMustacheContextKeyAccess_ClassWithProperties alloc] init] autorelease]; // test setup - XCTAssertFalse([[object class] respondsToSelector:@selector(safeMustacheKeys)], @""); XCTAssertFalse([object respondsToSelector:@selector(objectForKeyedSubscript:)], @""); XCTAssertEqualObjects([object method], @"method", @""); XCTAssertEqualObjects([object valueForKey:@"method"], @"method", @""); @@ -149,64 +97,41 @@ - (void)testMethodAreDisallowed XCTAssertNil([context valueForMustacheKey:@"method"], @""); } -- (void)testCustomSafeMustacheKeys -{ - GRMustacheContextKeyAccess_ClassWithCustomAllowedKeys *object = [[[GRMustacheContextKeyAccess_ClassWithCustomAllowedKeys alloc] init] autorelease]; - - // test setup - XCTAssertTrue([[object class] respondsToSelector:@selector(safeMustacheKeys)], @""); - XCTAssertTrue([[[object class] safeMustacheKeys] containsObject:@"allowedMethod"], @""); - XCTAssertFalse([[[object class] safeMustacheKeys] containsObject:@"disallowedProperty"], @""); - XCTAssertFalse([object respondsToSelector:@selector(objectForKeyedSubscript:)], @""); - XCTAssertEqualObjects(object.disallowedProperty, @"disallowedProperty", @""); - XCTAssertEqualObjects([object allowedMethod], @"allowedMethod", @""); - XCTAssertEqualObjects([object valueForKey:@"disallowedProperty"], @"disallowedProperty", @""); - XCTAssertEqualObjects([object valueForKey:@"allowedMethod"], @"allowedMethod", @""); - - // test context - GRMustacheContext *context = [GRMustacheContext contextWithObject:object]; - XCTAssertNil([context valueForMustacheKey:@"disallowedProperty"], @""); - XCTAssertEqualObjects([context valueForMustacheKey:@"allowedMethod"], @"allowedMethod", @""); -} - - (void)testUnsafeKeyAccess { - GRMustacheContextKeyAccess_ClassWithCustomAllowedKeys *object = [[[GRMustacheContextKeyAccess_ClassWithCustomAllowedKeys alloc] init] autorelease]; + GRMustacheContextKeyAccess_ClassWithProperties *object = [[[GRMustacheContextKeyAccess_ClassWithProperties alloc] init] autorelease]; // test setup XCTAssertFalse([object respondsToSelector:@selector(objectForKeyedSubscript:)], @""); - XCTAssertEqualObjects(object.disallowedProperty, @"disallowedProperty", @""); - XCTAssertEqualObjects([object allowedMethod], @"allowedMethod", @""); - XCTAssertEqualObjects([object valueForKey:@"disallowedProperty"], @"disallowedProperty", @""); - XCTAssertEqualObjects([object valueForKey:@"allowedMethod"], @"allowedMethod", @""); - XCTAssertTrue([[[object class] safeMustacheKeys] containsObject:@"allowedMethod"], @""); - XCTAssertFalse([[[object class] safeMustacheKeys] containsObject:@"disallowedProperty"], @""); + XCTAssertEqualObjects([object method], @"method", @""); + XCTAssertEqualObjects(object.property, @"property", @""); + XCTAssertEqualObjects([object valueForKey:@"method"], @"method", @""); + XCTAssertEqualObjects([object valueForKey:@"property"], @"property", @""); // test context GRMustacheContext *context = [GRMustacheContext contextWithObject:object]; context = [context contextWithUnsafeKeyAccess]; - XCTAssertEqualObjects([context valueForMustacheKey:@"disallowedProperty"], @"disallowedProperty", @""); - XCTAssertEqualObjects([context valueForMustacheKey:@"allowedMethod"], @"allowedMethod", @""); + XCTAssertEqualObjects([context valueForMustacheKey:@"method"], @"method", @""); + XCTAssertEqualObjects([context valueForMustacheKey:@"property"], @"property", @""); } - (void)testUnsafeKeyAccessInDerivedContexts { - GRMustacheContextKeyAccess_ClassWithCustomAllowedKeys *object1 = [[[GRMustacheContextKeyAccess_ClassWithCustomAllowedKeys alloc] init] autorelease]; - GRMustacheContextKeyAccess_ClassWithProperties *object2 = [[[GRMustacheContextKeyAccess_ClassWithProperties alloc] init] autorelease]; + GRMustacheContextKeyAccess_ClassWithProperties *object1 = [[[GRMustacheContextKeyAccess_ClassWithProperties alloc] init] autorelease]; + GRMustacheContextKeyAccess_ClassWithProperties2 *object2 = [[[GRMustacheContextKeyAccess_ClassWithProperties2 alloc] init] autorelease]; // test setup XCTAssertFalse([object1 respondsToSelector:@selector(objectForKeyedSubscript:)], @""); - XCTAssertEqualObjects(object1.disallowedProperty, @"disallowedProperty", @""); - XCTAssertEqualObjects([object1 allowedMethod], @"allowedMethod", @""); - XCTAssertEqualObjects([object1 valueForKey:@"disallowedProperty"], @"disallowedProperty", @""); - XCTAssertEqualObjects([object1 valueForKey:@"allowedMethod"], @"allowedMethod", @""); - XCTAssertTrue([[[object1 class] safeMustacheKeys] containsObject:@"allowedMethod"], @""); - XCTAssertFalse([[[object1 class] safeMustacheKeys] containsObject:@"disallowedProperty"], @""); + XCTAssertEqualObjects([object1 method], @"method", @""); + XCTAssertEqualObjects(object1.property, @"property", @""); + XCTAssertEqualObjects([object1 valueForKey:@"method"], @"method", @""); + XCTAssertEqualObjects([object1 valueForKey:@"property"], @"property", @""); - XCTAssertFalse([[object2 class] respondsToSelector:@selector(safeMustacheKeys)], @""); XCTAssertFalse([object2 respondsToSelector:@selector(objectForKeyedSubscript:)], @""); - XCTAssertEqualObjects(object2.property, @"property", @""); - XCTAssertEqualObjects([object2 valueForKey:@"property"], @"property", @""); + XCTAssertEqualObjects([object2 method2], @"method2", @""); + XCTAssertEqualObjects(object2.property2, @"property2", @""); + XCTAssertEqualObjects([object2 valueForKey:@"method2"], @"method2", @""); + XCTAssertEqualObjects([object2 valueForKey:@"property2"], @"property2", @""); // test context { @@ -214,28 +139,28 @@ - (void)testUnsafeKeyAccessInDerivedContexts GRMustacheContext *context = [GRMustacheContext contextWithUnsafeKeyAccess]; context = [context contextByAddingObject:object1]; - XCTAssertEqualObjects([context valueForMustacheKey:@"disallowedProperty"], @"disallowedProperty", @""); - XCTAssertEqualObjects([context valueForMustacheKey:@"allowedMethod"], @"allowedMethod", @""); + XCTAssertEqualObjects([context valueForMustacheKey:@"method"], @"method", @""); + XCTAssertEqualObjects([context valueForMustacheKey:@"property"], @"property", @""); } { // Context derived from safe context is safe. GRMustacheContext *context = [GRMustacheContext context]; context = [context contextByAddingObject:object1]; - XCTAssertNil([context valueForMustacheKey:@"disallowedProperty"], @""); - XCTAssertEqualObjects([context valueForMustacheKey:@"allowedMethod"], @"allowedMethod", @""); + XCTAssertNil([context valueForMustacheKey:@"method"], @""); + XCTAssertEqualObjects([context valueForMustacheKey:@"property"], @"property", @""); } { // Derived unsafe context is fully unsafe GRMustacheContext *context = [GRMustacheContext contextWithObject:object1]; - XCTAssertNil([context valueForMustacheKey:@"disallowedProperty"], @""); + XCTAssertNil([context valueForMustacheKey:@"method"], @""); context = [context contextByAddingObject:object2]; XCTAssertNil([context valueForMustacheKey:@"method"], @""); - XCTAssertNil([context valueForMustacheKey:@"disallowedProperty"], @""); + XCTAssertNil([context valueForMustacheKey:@"methd2"], @""); context = [context contextWithUnsafeKeyAccess]; XCTAssertEqualObjects([context valueForMustacheKey:@"method"], @"method", @""); - XCTAssertEqualObjects([context valueForMustacheKey:@"disallowedProperty"], @"disallowedProperty", @""); + XCTAssertEqualObjects([context valueForMustacheKey:@"method2"], @"method2", @""); } } diff --git a/src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheKeyedSubscriptingTest.m b/src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheKeyedSubscriptingTest.m deleted file mode 100644 index a41a55d6..00000000 --- a/src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheKeyedSubscriptingTest.m +++ /dev/null @@ -1,94 +0,0 @@ -// The MIT License -// -// Copyright (c) 2014 Gwendal Roué -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 -#import "GRMustachePublicAPITest.h" - -@interface GRMustacheKeyedSubscriptingClass : NSObject { - NSMutableDictionary *_dictionary; -} -@property (nonatomic, retain) NSMutableDictionary *dictionary; -@end - -@implementation GRMustacheKeyedSubscriptingClass -@synthesize dictionary=_dictionary; - -- (void)dealloc -{ - self.dictionary = nil; - [super dealloc]; -} - -- (instancetype)init -{ - self = [super init]; - if (self) { - self.dictionary = [NSMutableDictionary dictionary]; - } - return self; -} - -- (id)valueForKey:(NSString *)key -{ - return @"value"; -} - -- (void)setObject:(id)object forKeyedSubscript:(id)key -{ - [self.dictionary setObject:object forKey:key]; -} - -- (id)objectForKeyedSubscript:(id)key -{ - return [self.dictionary objectForKey:key]; -} - -@end - -@interface GRMustacheKeyedSubscriptingTest : GRMustachePublicAPITest -@end - -@implementation GRMustacheKeyedSubscriptingTest - -- (void)testKeyedSubscripting -{ - GRMustacheKeyedSubscriptingClass *object = [[[GRMustacheKeyedSubscriptingClass alloc] init] autorelease]; - NSString *key = @"foo"; - NSString *value = @"value"; - [object setObject:value forKeyedSubscript:key]; - - XCTAssertEqualObjects([object objectForKeyedSubscript:key], value); - XCTAssertEqualObjects(([GRMustacheTemplate renderObject:object fromString:[NSString stringWithFormat:@"{{%@}}", key] error:NULL]), value); -} - -- (void)testKeyedSubscriptingOverridesValueForKey -{ - GRMustacheKeyedSubscriptingClass *object = [[[GRMustacheKeyedSubscriptingClass alloc] init] autorelease]; - NSString *key = @"foo"; - NSString *value = @"value"; - - // Empty rendering for key `foo` despite [object valueForKey:@"foo"] is not empty - XCTAssertEqualObjects([object valueForKey:key], value); - XCTAssertEqualObjects(([GRMustacheTemplate renderObject:object fromString:[NSString stringWithFormat:@"{{%@}}", key] error:NULL]), @""); -} - -@end diff --git a/src/tests/Public/v8.0/GRMustacheFoundationCollectionTest.m b/src/tests/Public/v8.0/GRMustacheFoundationCollectionTest.m index a4102fcf..cecfefb5 100644 --- a/src/tests/Public/v8.0/GRMustacheFoundationCollectionTest.m +++ b/src/tests/Public/v8.0/GRMustacheFoundationCollectionTest.m @@ -52,7 +52,7 @@ - (void)testNSArray { // [NSArray lastObject] should be accessible (test for method returning an object) - NSString *rendering = [[GRMustacheTemplate templateFromString:@"{{collection.lastObject.key}}" error:NULL] renderObject:data error:NULL]; + NSString *rendering = [[GRMustacheTemplate templateFromString:@"{{collection.last.key}}" error:NULL] renderObject:data error:NULL]; XCTAssertEqualObjects(rendering, @"value", @""); } } @@ -81,7 +81,7 @@ - (void)testNSSet { // [NSSet anyObject] should be accessible (test for method returning an object) - NSString *rendering = [[GRMustacheTemplate templateFromString:@"{{collection.anyObject.key}}" error:NULL] renderObject:data error:NULL]; + NSString *rendering = [[GRMustacheTemplate templateFromString:@"{{collection.first.key}}" error:NULL] renderObject:data error:NULL]; XCTAssertEqualObjects(rendering, @"value", @""); } } @@ -110,7 +110,7 @@ - (void)testNSOrderedSet { // [NSOrderedSet firstObject] should be accessible (test for method returning an object) - NSString *rendering = [[GRMustacheTemplate templateFromString:@"{{collection.firstObject.key}}" error:NULL] renderObject:data error:NULL]; + NSString *rendering = [[GRMustacheTemplate templateFromString:@"{{collection.first.key}}" error:NULL] renderObject:data error:NULL]; XCTAssertEqualObjects(rendering, @"value", @""); } } diff --git a/src/tests/Public/v8.0/Suites/groue/GRMustache/GRMustacheSuitesTest.m b/src/tests/Public/v8.0/Suites/groue/GRMustache/GRMustacheSuitesTest.m index a6c513bc..288181df 100644 --- a/src/tests/Public/v8.0/Suites/groue/GRMustache/GRMustacheSuitesTest.m +++ b/src/tests/Public/v8.0/Suites/groue/GRMustache/GRMustacheSuitesTest.m @@ -30,6 +30,7 @@ @implementation GRMustacheSuitesTest - (void)testGRMustacheSuites { + [self runTestsFromResource:@"arrays.json" subdirectory:@"Tests"]; [self runTestsFromResource:@"blocks.json" subdirectory:@"Tests"]; [self runTestsFromResource:@"comments.json" subdirectory:@"Tests"]; [self runTestsFromResource:@"compound_keys.json" subdirectory:@"Tests"]; diff --git a/src/tests/vendor/groue/GRMustacheSpec b/src/tests/vendor/groue/GRMustacheSpec index 03466226..bd813b34 160000 --- a/src/tests/vendor/groue/GRMustacheSpec +++ b/src/tests/vendor/groue/GRMustacheSpec @@ -1 +1 @@ -Subproject commit 034662267576e2d32f10a4dacf257680edbd3f93 +Subproject commit bd813b34b972eec3785effccdd2032fa9f04d3a1 From 0b50bd9ee28b0604db6abc7ac7b5f7dce4882642 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sat, 26 Sep 2015 15:56:42 +0200 Subject: [PATCH 17/81] Prepare v8.0.0, and drop support for deprecated methods --- TODO.md | 6 + src/GRMustache/Info.plist | 2 +- src/bin/buildGRMustacheAvailabilityMacros | 4 +- .../Compiling/TemplateAST/GRMustacheTag.h | 35 +-- .../Compiling/TemplateAST/GRMustacheTag.m | 5 - .../TemplateAST/GRMustacheTag_private.h | 3 - .../Configuration/GRMustacheConfiguration.h | 18 +- src/classes/GRMustache.h | 39 +-- src/classes/GRMustache.m | 11 - src/classes/GRMustache_private.h | 6 - src/classes/Rendering/GRMustacheContext.h | 26 +- src/classes/Rendering/GRMustacheFilter.h | 6 +- src/classes/Rendering/GRMustacheRendering.h | 6 +- src/classes/Rendering/GRMustacheTagDelegate.h | 6 +- .../StandardLibrary/GRMustacheLocalizer.h | 6 +- .../Shared/GRMustacheAvailabilityMacros.h | 222 ++---------------- src/classes/Shared/GRMustacheContentType.h | 6 +- src/classes/Shared/GRMustacheError.h | 12 +- src/classes/Templates/GRMustacheTemplate.h | 28 +-- .../Templates/GRMustacheTemplateRepository.h | 30 +-- 20 files changed, 108 insertions(+), 369 deletions(-) diff --git a/TODO.md b/TODO.md index 6e368156..8a073c68 100644 --- a/TODO.md +++ b/TODO.md @@ -12,3 +12,9 @@ - [X] Sets should only have "count", and "first" keys. - [X] Remove standard library from default context. - [X] Drop +[GRMustache standardLibrary] +- [X] Drop deprecated items: + - [X] GRMustacheTagTypeInvertedSection + - [X] +[GRMustache renderingObjectForObject:] + - [X] +[GRMustache renderingObjectWithBlock:] + - [X] GRMustacheTag.templateRepository +- [ ] Drop GRMustacheVersion and +[GRMustache libraryVersion] diff --git a/src/GRMustache/Info.plist b/src/GRMustache/Info.plist index 913ca181..11bf68aa 100644 --- a/src/GRMustache/Info.plist +++ b/src/GRMustache/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 8.0 + 8.0.0 CFBundleSignature ???? CFBundleVersion diff --git a/src/bin/buildGRMustacheAvailabilityMacros b/src/bin/buildGRMustacheAvailabilityMacros index 11404e1e..d8f01720 100755 --- a/src/bin/buildGRMustacheAvailabilityMacros +++ b/src/bin/buildGRMustacheAvailabilityMacros @@ -7,8 +7,8 @@ # # src/bin/buildGRMustacheAvailabilityMacros > src/classes/Shared/GRMustacheAvailabilityMacros.h -MAJOR_VERSION = 7 -MAX_MINOR_VERSION = 3 +MAJOR_VERSION = 8 +MAX_MINOR_VERSION = 0 puts <<-LICENSE // The MIT License diff --git a/src/classes/Compiling/TemplateAST/GRMustacheTag.h b/src/classes/Compiling/TemplateAST/GRMustacheTag.h index 64795082..02a65630 100644 --- a/src/classes/Compiling/TemplateAST/GRMustacheTag.h +++ b/src/classes/Compiling/TemplateAST/GRMustacheTag.h @@ -37,7 +37,7 @@ typedef NS_ENUM(NSUInteger, GRMustacheTagType) { * * @since v6.0 */ - GRMustacheTagTypeVariable = 1 << 1 AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER, + GRMustacheTagTypeVariable = 1 << 1 AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER, /** * The type for regular and inverted section tags, such as @@ -45,19 +45,10 @@ typedef NS_ENUM(NSUInteger, GRMustacheTagType) { * * @since v6.0 */ - GRMustacheTagTypeSection = 1 << 2 AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER, + GRMustacheTagTypeSection = 1 << 2 AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER, -} AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; +} AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; -/** - * The type for inverted section tags such as {{^ name }}...{{/}} - * - * This value is deprecated. - * - * @since v6.0 - * @deprecated v7.2 - */ -AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER_BUT_DEPRECATED_IN_GRMUSTACHE_VERSION_7_2 static GRMustacheTagType const GRMustacheTagTypeInvertedSection = 1 << 3; /** * GRMustacheTag instances represent Mustache tags that render values, such as @@ -79,7 +70,7 @@ AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER_BUT_DEPRECATED_IN_GRMUSTACHE_VERSION_ /** * The type of the tag */ -@property (nonatomic, readonly) GRMustacheTagType type AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; +@property (nonatomic, readonly) GRMustacheTagType type AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * Returns the literal and unprocessed inner content of the tag. @@ -89,7 +80,7 @@ AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER_BUT_DEPRECATED_IN_GRMUSTACHE_VERSION_ * Variable tags such as `{{ name }}` have no inner content: their inner * template string is the empty string. */ -@property (nonatomic, readonly) NSString *innerTemplateString AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; +@property (nonatomic, readonly) NSString *innerTemplateString AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * Returns the description of the tag. @@ -106,20 +97,6 @@ AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER_BUT_DEPRECATED_IN_GRMUSTACHE_VERSION_ /// @name Methods Dedicated to the GRMustacheRendering Protocol //////////////////////////////////////////////////////////////////////////////// -/** - * This method is deprecated. - * - * Replace `[tag.templateRepository templateFromString:... error:...]` with - * `[GRMustacheTemplate templateFromString:... error:...]`. - * - * Replace `[tag.templateRepository templateNamed:... error:...]` with explicit - * invocation of the targeted template repository. - * - * @since v6.0 - * @deprecated v7.0 - */ -@property (nonatomic, readonly) GRMustacheTemplateRepository *templateRepository AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER_BUT_DEPRECATED; - /** * Returns the rendering of the tag's inner content, rendering all inner * Mustache tags with the rendering context argument. @@ -146,6 +123,6 @@ AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER_BUT_DEPRECATED_IN_GRMUSTACHE_VERSION_ * * @return The rendering of the tag's inner content. */ -- (NSString *)renderContentWithContext:(GRMustacheContext *)context HTMLSafe:(BOOL *)HTMLSafe error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; +- (NSString *)renderContentWithContext:(GRMustacheContext *)context HTMLSafe:(BOOL *)HTMLSafe error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; @end diff --git a/src/classes/Compiling/TemplateAST/GRMustacheTag.m b/src/classes/Compiling/TemplateAST/GRMustacheTag.m index 8491c88b..838e8ed7 100644 --- a/src/classes/Compiling/TemplateAST/GRMustacheTag.m +++ b/src/classes/Compiling/TemplateAST/GRMustacheTag.m @@ -32,11 +32,6 @@ - (GRMustacheTagType)type return 0; } -- (GRMustacheTemplateRepository *)templateRepository -{ - return [GRMustacheRendering currentTemplateRepository]; -} - - (NSString *)innerTemplateString { [self doesNotRecognizeSelector:_cmd]; diff --git a/src/classes/Compiling/TemplateAST/GRMustacheTag_private.h b/src/classes/Compiling/TemplateAST/GRMustacheTag_private.h index 0485c731..78e32394 100644 --- a/src/classes/Compiling/TemplateAST/GRMustacheTag_private.h +++ b/src/classes/Compiling/TemplateAST/GRMustacheTag_private.h @@ -42,9 +42,6 @@ typedef NS_ENUM(NSUInteger, GRMustacheTagType) { // Documented in GRMustacheTag.h @property (nonatomic, readonly) NSString *innerTemplateString GRMUSTACHE_API_PUBLIC; -// Documented in GRMustacheTag.h -@property (nonatomic, readonly) GRMustacheTemplateRepository *templateRepository GRMUSTACHE_API_PUBLIC_BUT_DEPRECATED; - // Documented in GRMustacheTag.h - (NSString *)renderContentWithContext:(GRMustacheContext *)context HTMLSafe:(BOOL *)HTMLSafe error:(NSError **)error GRMUSTACHE_API_PUBLIC; diff --git a/src/classes/Configuration/GRMustacheConfiguration.h b/src/classes/Configuration/GRMustacheConfiguration.h index 2d061ae9..60cc438d 100644 --- a/src/classes/Configuration/GRMustacheConfiguration.h +++ b/src/classes/Configuration/GRMustacheConfiguration.h @@ -103,7 +103,7 @@ * * @since v6.2 */ -+ (GRMustacheConfiguration *)defaultConfiguration AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; ++ (GRMustacheConfiguration *)defaultConfiguration AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; //////////////////////////////////////////////////////////////////////////////// @@ -119,7 +119,7 @@ * * @since v6.2 */ -+ (GRMustacheConfiguration *)configuration AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; ++ (GRMustacheConfiguration *)configuration AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; //////////////////////////////////////////////////////////////////////////////// @@ -135,7 +135,7 @@ * * @since v6.4 */ -@property (nonatomic, retain) GRMustacheContext *baseContext AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; +@property (nonatomic, retain) GRMustacheContext *baseContext AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * Extends the base context of the receiver with the provided object, making its @@ -176,7 +176,7 @@ * * @since v6.8 */ -- (void)extendBaseContextWithObject:(id)object AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; +- (void)extendBaseContextWithObject:(id)object AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * Extends the base context of the receiver with the provided object, making its @@ -211,7 +211,7 @@ * * @since v6.8 */ -- (void)extendBaseContextWithProtectedObject:(id)object AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER;; +- (void)extendBaseContextWithProtectedObject:(id)object AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER;; /** * Extends the base context of the receiver with a tag delegate, making it aware @@ -231,7 +231,7 @@ * * @since v6.8 */ -- (void)extendBaseContextWithTagDelegate:(id)tagDelegate AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER;; +- (void)extendBaseContextWithTagDelegate:(id)tagDelegate AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER;; /** * The content type of strings rendered by templates. @@ -271,7 +271,7 @@ * * @since v6.2 */ -@property (nonatomic) GRMustacheContentType contentType AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; +@property (nonatomic) GRMustacheContentType contentType AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * The opening delimiter for Mustache tags. Its default value is `{{`. @@ -281,7 +281,7 @@ * * @since v6.4 */ -@property (nonatomic, copy) NSString *tagStartDelimiter AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; +@property (nonatomic, copy) NSString *tagStartDelimiter AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * The closing delimiter for Mustache tags. Its default value is `}}`. @@ -291,6 +291,6 @@ * * @since v6.4 */ -@property (nonatomic, copy) NSString *tagEndDelimiter AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; +@property (nonatomic, copy) NSString *tagEndDelimiter AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; @end diff --git a/src/classes/GRMustache.h b/src/classes/GRMustache.h index 3d88c3b9..1a99da51 100644 --- a/src/classes/GRMustache.h +++ b/src/classes/GRMustache.h @@ -62,7 +62,7 @@ typedef struct { * * @since v7.0 */ -+ (GRMustacheVersion)libraryVersion AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; ++ (GRMustacheVersion)libraryVersion AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; //////////////////////////////////////////////////////////////////////////////// @@ -76,7 +76,7 @@ typedef struct { * * @since v8.0 */ -+ (NSObject *)standardEach AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; ++ (NSObject *)standardEach AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * @return The GRMustache standard `HTMLEscape`. @@ -85,7 +85,7 @@ typedef struct { * * @since v8.0 */ -+ (NSObject *)standardHTMLEscape AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; ++ (NSObject *)standardHTMLEscape AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * @return The GRMustache standard `URLEscape`. @@ -94,7 +94,7 @@ typedef struct { * * @since v8.0 */ -+ (NSObject *)standardURLEscape AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; ++ (NSObject *)standardURLEscape AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * @return The GRMustache standard `javascriptEscape`. @@ -103,7 +103,7 @@ typedef struct { * * @since v8.0 */ -+ (NSObject *)standardJavascriptEscape AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; ++ (NSObject *)standardJavascriptEscape AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * @return The GRMustache standard `zip`. @@ -112,34 +112,7 @@ typedef struct { * * @since v8.0 */ -+ (NSObject *)standardZip AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; - - -//////////////////////////////////////////////////////////////////////////////// -/// @name Building rendering objects -//////////////////////////////////////////////////////////////////////////////// - -/** - * This method is deprecated. Use - * `+[GRMustacheRendering renderingObjectForObject:]` instead. - * - * @see GRMustacheRendering class - * - * @since v6.0 - * @deprecated v7.0 - */ -+ (id)renderingObjectForObject:(id)object AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER_BUT_DEPRECATED; - -/** - * This method is deprecated. Use - * `+[GRMustacheRendering renderingObjectWithBlock:]` instead. - * - * @see GRMustacheRendering class - * - * @since v6.0 - * @deprecated v7.0 - */ -+ (id)renderingObjectWithBlock:(NSString *(^)(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error))block AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER_BUT_DEPRECATED; ++ (NSObject *)standardZip AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; @end diff --git a/src/classes/GRMustache.m b/src/classes/GRMustache.m index c61bb16e..e0b7af68 100644 --- a/src/classes/GRMustache.m +++ b/src/classes/GRMustache.m @@ -159,15 +159,4 @@ + (NSObject *)standardZip }]; } - -+ (id)renderingObjectForObject:(id)object -{ - return [GRMustacheRendering renderingObjectForObject:object]; -} - -+ (id)renderingObjectWithBlock:(NSString *(^)(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error))block -{ - return [GRMustacheRendering renderingObjectWithBlock:block]; -} - @end diff --git a/src/classes/GRMustache_private.h b/src/classes/GRMustache_private.h index 1a9fc9a1..9f839220 100644 --- a/src/classes/GRMustache_private.h +++ b/src/classes/GRMustache_private.h @@ -54,10 +54,4 @@ typedef struct { // Documented in GRMustache.h + (NSObject *)standardZip GRMUSTACHE_API_PUBLIC; -// Documented in GRMustache.h -+ (id)renderingObjectForObject:(id)object GRMUSTACHE_API_PUBLIC_BUT_DEPRECATED; - -// Documented in GRMustache.h -+ (id)renderingObjectWithBlock:(NSString *(^)(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error))block GRMUSTACHE_API_PUBLIC_BUT_DEPRECATED; - @end diff --git a/src/classes/Rendering/GRMustacheContext.h b/src/classes/Rendering/GRMustacheContext.h index 4a21a6db..6ad74658 100644 --- a/src/classes/Rendering/GRMustacheContext.h +++ b/src/classes/Rendering/GRMustacheContext.h @@ -110,7 +110,7 @@ * * @since v6.4 */ -+ (instancetype)context AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; ++ (instancetype)context AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * Returns a rendering context containing a single object. @@ -137,7 +137,7 @@ * * @since v6.4 */ -+ (instancetype)contextWithObject:(id)object AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; ++ (instancetype)contextWithObject:(id)object AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * Returns a context containing a single priority object. @@ -166,7 +166,7 @@ * * @since v6.4 */ -+ (instancetype)contextWithProtectedObject:(id)object AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; ++ (instancetype)contextWithProtectedObject:(id)object AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * Returns a context containing a single tag delegate. @@ -188,7 +188,7 @@ * * @since v6.4 */ -+ (instancetype)contextWithTagDelegate:(id)tagDelegate AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; ++ (instancetype)contextWithTagDelegate:(id)tagDelegate AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; //////////////////////////////////////////////////////////////////////////////// @@ -232,7 +232,7 @@ * * @since v6.0 */ -- (instancetype)contextByAddingObject:(id)object AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; +- (instancetype)contextByAddingObject:(id)object AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * Returns a new rendering context that is the copy of the receiver, and the @@ -260,7 +260,7 @@ * * @since v6.0 */ -- (instancetype)contextByAddingProtectedObject:(id)object AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; +- (instancetype)contextByAddingProtectedObject:(id)object AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * Returns a new rendering context that is the copy of the receiver, and the @@ -283,7 +283,7 @@ * * @since v6.0 */ -- (instancetype)contextByAddingTagDelegate:(id)tagDelegate AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; +- (instancetype)contextByAddingTagDelegate:(id)tagDelegate AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; //////////////////////////////////////////////////////////////////////////////// @@ -309,7 +309,7 @@ * * @since v6.7 */ -@property (nonatomic, readonly) id topMustacheObject AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; +@property (nonatomic, readonly) id topMustacheObject AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * Returns the value stored in the context stack for the given key. @@ -362,7 +362,7 @@ * * @since v6.6 */ -- (id)valueForMustacheKey:(NSString *)key AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; +- (id)valueForMustacheKey:(NSString *)key AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * Evaluates an expression such as `name`, or `uppercase(user.name)`. @@ -380,7 +380,7 @@ * * @since v6.8 */ -- (BOOL)hasValue:(id *)value forMustacheExpression:(NSString *)expression error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; +- (BOOL)hasValue:(id *)value forMustacheExpression:(NSString *)expression error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; //////////////////////////////////////////////////////////////////////////////// @@ -392,7 +392,7 @@ * * @since v7.0 */ -@property (nonatomic, readonly) BOOL unsafeKeyAccess AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; +@property (nonatomic, readonly) BOOL unsafeKeyAccess AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * Returns a new context with unsafe key access. @@ -434,7 +434,7 @@ * * @since v7.0 */ -+ (instancetype)contextWithUnsafeKeyAccess AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; ++ (instancetype)contextWithUnsafeKeyAccess AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * Returns a new rendering context that is the copy of the receiver, with unsafe @@ -477,6 +477,6 @@ * * @since v7.0 */ -- (instancetype)contextWithUnsafeKeyAccess AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; +- (instancetype)contextWithUnsafeKeyAccess AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; @end diff --git a/src/classes/Rendering/GRMustacheFilter.h b/src/classes/Rendering/GRMustacheFilter.h index b89e2eca..2d700cb0 100644 --- a/src/classes/Rendering/GRMustacheFilter.h +++ b/src/classes/Rendering/GRMustacheFilter.h @@ -60,7 +60,7 @@ * * @since v4.3 */ -- (id)transformedValue:(id)object AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; +- (id)transformedValue:(id)object AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; @end @@ -97,7 +97,7 @@ * * @see variadicFilterWithBlock: */ -+ (id)filterWithBlock:(id(^)(id value))block AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; ++ (id)filterWithBlock:(id(^)(id value))block AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * Returns a GRMustacheFilter object that executes the provided block, given an @@ -118,7 +118,7 @@ * * @see filterWithBlock: */ -+ (id)variadicFilterWithBlock:(id(^)(NSArray *arguments))block AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; ++ (id)variadicFilterWithBlock:(id(^)(NSArray *arguments))block AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; @end diff --git a/src/classes/Rendering/GRMustacheRendering.h b/src/classes/Rendering/GRMustacheRendering.h index f1b526a2..c5cb2348 100644 --- a/src/classes/Rendering/GRMustacheRendering.h +++ b/src/classes/Rendering/GRMustacheRendering.h @@ -72,7 +72,7 @@ - (NSString *)renderForMustacheTag:(GRMustacheTag *)tag context:(GRMustacheContext *)context HTMLSafe:(BOOL *)HTMLSafe - error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; + error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; @end @@ -107,7 +107,7 @@ * * @since v7.0 */ -+ (id)renderingObjectForObject:(id)object AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; ++ (id)renderingObjectForObject:(id)object AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * Returns a rendering object that renders with the provided block. @@ -123,7 +123,7 @@ * * @since v7.0 */ -+ (id)renderingObjectWithBlock:(NSString *(^)(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error))renderingBlock AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; ++ (id)renderingObjectWithBlock:(NSString *(^)(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error))renderingBlock AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; @end diff --git a/src/classes/Rendering/GRMustacheTagDelegate.h b/src/classes/Rendering/GRMustacheTagDelegate.h index 573410f3..7a77279d 100644 --- a/src/classes/Rendering/GRMustacheTagDelegate.h +++ b/src/classes/Rendering/GRMustacheTagDelegate.h @@ -53,7 +53,7 @@ * * @since v6.0 */ -- (id)mustacheTag:(GRMustacheTag *)tag willRenderObject:(id)object AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; +- (id)mustacheTag:(GRMustacheTag *)tag willRenderObject:(id)object AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * Sent after a Mustache tag has rendered. @@ -66,7 +66,7 @@ * * @since v6.0 */ -- (void)mustacheTag:(GRMustacheTag *)tag didRenderObject:(id)object as:(NSString *)rendering AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; +- (void)mustacheTag:(GRMustacheTag *)tag didRenderObject:(id)object as:(NSString *)rendering AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * Sent right after a Mustache tag has failed rendering. @@ -79,6 +79,6 @@ * * @since v6.0 */ -- (void)mustacheTag:(GRMustacheTag *)tag didFailRenderingObject:(id)object withError:(NSError *)error AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; +- (void)mustacheTag:(GRMustacheTag *)tag didFailRenderingObject:(id)object withError:(NSError *)error AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; @end diff --git a/src/classes/Services/StandardLibrary/GRMustacheLocalizer.h b/src/classes/Services/StandardLibrary/GRMustacheLocalizer.h index d8887db7..4769361a 100644 --- a/src/classes/Services/StandardLibrary/GRMustacheLocalizer.h +++ b/src/classes/Services/StandardLibrary/GRMustacheLocalizer.h @@ -85,14 +85,14 @@ * * @since v6.4 */ -- (instancetype)initWithBundle:(NSBundle *)bundle tableName:(NSString *)tableName AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; +- (instancetype)initWithBundle:(NSBundle *)bundle tableName:(NSString *)tableName AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * The bundle where to look for localized strings. * * @since v6.4 */ -@property (nonatomic, retain, readonly) NSBundle *bundle AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; +@property (nonatomic, retain, readonly) NSBundle *bundle AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * The table where to look for localized strings. @@ -101,7 +101,7 @@ * * @since v6.4 */ -@property (nonatomic, retain, readonly) NSString *tableName AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; +@property (nonatomic, retain, readonly) NSString *tableName AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; @end diff --git a/src/classes/Shared/GRMustacheAvailabilityMacros.h b/src/classes/Shared/GRMustacheAvailabilityMacros.h index 2c4126af..55d92827 100644 --- a/src/classes/Shared/GRMustacheAvailabilityMacros.h +++ b/src/classes/Shared/GRMustacheAvailabilityMacros.h @@ -28,10 +28,7 @@ /* * Set up standard GRMustache versions */ -#define GRMUSTACHE_VERSION_7_0 7000 -#define GRMUSTACHE_VERSION_7_1 7010 -#define GRMUSTACHE_VERSION_7_2 7020 -#define GRMUSTACHE_VERSION_7_3 7030 +#define GRMUSTACHE_VERSION_8_0 8000 @@ -39,10 +36,10 @@ /* - * If max GRMustacheVersion not specified, assume 7.3 + * If max GRMustacheVersion not specified, assume 8.0 */ #ifndef GRMUSTACHE_VERSION_MAX_ALLOWED -#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_3 +#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_8_0 #endif /* @@ -58,8 +55,8 @@ #if GRMUSTACHE_VERSION_MAX_ALLOWED < GRMUSTACHE_VERSION_MIN_REQUIRED #error GRMUSTACHE_VERSION_MAX_ALLOWED must be >= GRMUSTACHE_VERSION_MIN_REQUIRED #endif -#if GRMUSTACHE_VERSION_MIN_REQUIRED < GRMUSTACHE_VERSION_7_0 -#error GRMUSTACHE_VERSION_MIN_REQUIRED must be >= GRMUSTACHE_VERSION_7_0 +#if GRMUSTACHE_VERSION_MIN_REQUIRED < GRMUSTACHE_VERSION_8_0 +#error GRMUSTACHE_VERSION_MIN_REQUIRED must be >= GRMUSTACHE_VERSION_8_0 #endif @@ -68,218 +65,29 @@ /* - * AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER + * AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER * - * Used on declarations introduced in GRMustache 7.0 + * Used on declarations introduced in GRMustache 8.0 */ -#define AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER +#define AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER /* - * AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER_BUT_DEPRECATED + * AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER_BUT_DEPRECATED * - * Used on declarations introduced in GRMustache 7.0, - * and deprecated in GRMustache 7.0 + * Used on declarations introduced in GRMustache 8.0, + * and deprecated in GRMustache 8.0 */ -#define AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER_BUT_DEPRECATED DEPRECATED_ATTRIBUTE +#define AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER_BUT_DEPRECATED DEPRECATED_ATTRIBUTE /* - * DEPRECATED_IN_GRMUSTACHE_VERSION_7_0_AND_LATER + * DEPRECATED_IN_GRMUSTACHE_VERSION_8_0_AND_LATER * - * Used on types deprecated in GRMustache 7.0 + * Used on types deprecated in GRMustache 8.0 */ -#define DEPRECATED_IN_GRMUSTACHE_VERSION_7_0_AND_LATER DEPRECATED_ATTRIBUTE +#define DEPRECATED_IN_GRMUSTACHE_VERSION_8_0_AND_LATER DEPRECATED_ATTRIBUTE -/* - * AVAILABLE_GRMUSTACHE_VERSION_7_1_AND_LATER - * - * Used on declarations introduced in GRMustache 7.1 - */ -#if GRMUSTACHE_VERSION_MAX_ALLOWED < GRMUSTACHE_VERSION_7_1 -#define AVAILABLE_GRMUSTACHE_VERSION_7_1_AND_LATER UNAVAILABLE_ATTRIBUTE -#elif GRMUSTACHE_VERSION_MIN_REQUIRED < GRMUSTACHE_VERSION_7_1 -#define AVAILABLE_GRMUSTACHE_VERSION_7_1_AND_LATER WEAK_IMPORT_ATTRIBUTE -#else -#define AVAILABLE_GRMUSTACHE_VERSION_7_1_AND_LATER -#endif - -/* - * AVAILABLE_GRMUSTACHE_VERSION_7_1_AND_LATER_BUT_DEPRECATED - * - * Used on declarations introduced in GRMustache 7.1, - * and deprecated in GRMustache 7.1 - */ -#if GRMUSTACHE_VERSION_MIN_REQUIRED >= GRMUSTACHE_VERSION_7_1 -#define AVAILABLE_GRMUSTACHE_VERSION_7_1_AND_LATER_BUT_DEPRECATED DEPRECATED_ATTRIBUTE -#else -#define AVAILABLE_GRMUSTACHE_VERSION_7_1_AND_LATER_BUT_DEPRECATED AVAILABLE_GRMUSTACHE_VERSION_7_1_AND_LATER -#endif - -/* - * AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER_BUT_DEPRECATED_IN_GRMUSTACHE_VERSION_7_1 - * - * Used on declarations introduced in GRMustache 7.0, - * but later deprecated in GRMustache 7.1 - */ -#if GRMUSTACHE_VERSION_MIN_REQUIRED >= GRMUSTACHE_VERSION_7_1 -#define AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER_BUT_DEPRECATED_IN_GRMUSTACHE_VERSION_7_1 DEPRECATED_ATTRIBUTE -#else -#define AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER_BUT_DEPRECATED_IN_GRMUSTACHE_VERSION_7_1 AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER -#endif - -/* - * DEPRECATED_IN_GRMUSTACHE_VERSION_7_1_AND_LATER - * - * Used on types deprecated in GRMustache 7.1 - */ -#if GRMUSTACHE_VERSION_MIN_REQUIRED >= GRMUSTACHE_VERSION_7_1 -#define DEPRECATED_IN_GRMUSTACHE_VERSION_7_1_AND_LATER DEPRECATED_ATTRIBUTE -#else -#define DEPRECATED_IN_GRMUSTACHE_VERSION_7_1_AND_LATER -#endif - - - - - - -/* - * AVAILABLE_GRMUSTACHE_VERSION_7_2_AND_LATER - * - * Used on declarations introduced in GRMustache 7.2 - */ -#if GRMUSTACHE_VERSION_MAX_ALLOWED < GRMUSTACHE_VERSION_7_2 -#define AVAILABLE_GRMUSTACHE_VERSION_7_2_AND_LATER UNAVAILABLE_ATTRIBUTE -#elif GRMUSTACHE_VERSION_MIN_REQUIRED < GRMUSTACHE_VERSION_7_2 -#define AVAILABLE_GRMUSTACHE_VERSION_7_2_AND_LATER WEAK_IMPORT_ATTRIBUTE -#else -#define AVAILABLE_GRMUSTACHE_VERSION_7_2_AND_LATER -#endif - -/* - * AVAILABLE_GRMUSTACHE_VERSION_7_2_AND_LATER_BUT_DEPRECATED - * - * Used on declarations introduced in GRMustache 7.2, - * and deprecated in GRMustache 7.2 - */ -#if GRMUSTACHE_VERSION_MIN_REQUIRED >= GRMUSTACHE_VERSION_7_2 -#define AVAILABLE_GRMUSTACHE_VERSION_7_2_AND_LATER_BUT_DEPRECATED DEPRECATED_ATTRIBUTE -#else -#define AVAILABLE_GRMUSTACHE_VERSION_7_2_AND_LATER_BUT_DEPRECATED AVAILABLE_GRMUSTACHE_VERSION_7_2_AND_LATER -#endif - -/* - * AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER_BUT_DEPRECATED_IN_GRMUSTACHE_VERSION_7_2 - * - * Used on declarations introduced in GRMustache 7.0, - * but later deprecated in GRMustache 7.2 - */ -#if GRMUSTACHE_VERSION_MIN_REQUIRED >= GRMUSTACHE_VERSION_7_2 -#define AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER_BUT_DEPRECATED_IN_GRMUSTACHE_VERSION_7_2 DEPRECATED_ATTRIBUTE -#else -#define AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER_BUT_DEPRECATED_IN_GRMUSTACHE_VERSION_7_2 AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER -#endif - -/* - * AVAILABLE_GRMUSTACHE_VERSION_7_1_AND_LATER_BUT_DEPRECATED_IN_GRMUSTACHE_VERSION_7_2 - * - * Used on declarations introduced in GRMustache 7.1, - * but later deprecated in GRMustache 7.2 - */ -#if GRMUSTACHE_VERSION_MIN_REQUIRED >= GRMUSTACHE_VERSION_7_2 -#define AVAILABLE_GRMUSTACHE_VERSION_7_1_AND_LATER_BUT_DEPRECATED_IN_GRMUSTACHE_VERSION_7_2 DEPRECATED_ATTRIBUTE -#else -#define AVAILABLE_GRMUSTACHE_VERSION_7_1_AND_LATER_BUT_DEPRECATED_IN_GRMUSTACHE_VERSION_7_2 AVAILABLE_GRMUSTACHE_VERSION_7_1_AND_LATER -#endif - -/* - * DEPRECATED_IN_GRMUSTACHE_VERSION_7_2_AND_LATER - * - * Used on types deprecated in GRMustache 7.2 - */ -#if GRMUSTACHE_VERSION_MIN_REQUIRED >= GRMUSTACHE_VERSION_7_2 -#define DEPRECATED_IN_GRMUSTACHE_VERSION_7_2_AND_LATER DEPRECATED_ATTRIBUTE -#else -#define DEPRECATED_IN_GRMUSTACHE_VERSION_7_2_AND_LATER -#endif - - - - - - -/* - * AVAILABLE_GRMUSTACHE_VERSION_7_3_AND_LATER - * - * Used on declarations introduced in GRMustache 7.3 - */ -#if GRMUSTACHE_VERSION_MAX_ALLOWED < GRMUSTACHE_VERSION_7_3 -#define AVAILABLE_GRMUSTACHE_VERSION_7_3_AND_LATER UNAVAILABLE_ATTRIBUTE -#elif GRMUSTACHE_VERSION_MIN_REQUIRED < GRMUSTACHE_VERSION_7_3 -#define AVAILABLE_GRMUSTACHE_VERSION_7_3_AND_LATER WEAK_IMPORT_ATTRIBUTE -#else -#define AVAILABLE_GRMUSTACHE_VERSION_7_3_AND_LATER -#endif - -/* - * AVAILABLE_GRMUSTACHE_VERSION_7_3_AND_LATER_BUT_DEPRECATED - * - * Used on declarations introduced in GRMustache 7.3, - * and deprecated in GRMustache 7.3 - */ -#if GRMUSTACHE_VERSION_MIN_REQUIRED >= GRMUSTACHE_VERSION_7_3 -#define AVAILABLE_GRMUSTACHE_VERSION_7_3_AND_LATER_BUT_DEPRECATED DEPRECATED_ATTRIBUTE -#else -#define AVAILABLE_GRMUSTACHE_VERSION_7_3_AND_LATER_BUT_DEPRECATED AVAILABLE_GRMUSTACHE_VERSION_7_3_AND_LATER -#endif - -/* - * AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER_BUT_DEPRECATED_IN_GRMUSTACHE_VERSION_7_3 - * - * Used on declarations introduced in GRMustache 7.0, - * but later deprecated in GRMustache 7.3 - */ -#if GRMUSTACHE_VERSION_MIN_REQUIRED >= GRMUSTACHE_VERSION_7_3 -#define AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER_BUT_DEPRECATED_IN_GRMUSTACHE_VERSION_7_3 DEPRECATED_ATTRIBUTE -#else -#define AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER_BUT_DEPRECATED_IN_GRMUSTACHE_VERSION_7_3 AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER -#endif - -/* - * AVAILABLE_GRMUSTACHE_VERSION_7_1_AND_LATER_BUT_DEPRECATED_IN_GRMUSTACHE_VERSION_7_3 - * - * Used on declarations introduced in GRMustache 7.1, - * but later deprecated in GRMustache 7.3 - */ -#if GRMUSTACHE_VERSION_MIN_REQUIRED >= GRMUSTACHE_VERSION_7_3 -#define AVAILABLE_GRMUSTACHE_VERSION_7_1_AND_LATER_BUT_DEPRECATED_IN_GRMUSTACHE_VERSION_7_3 DEPRECATED_ATTRIBUTE -#else -#define AVAILABLE_GRMUSTACHE_VERSION_7_1_AND_LATER_BUT_DEPRECATED_IN_GRMUSTACHE_VERSION_7_3 AVAILABLE_GRMUSTACHE_VERSION_7_1_AND_LATER -#endif - -/* - * AVAILABLE_GRMUSTACHE_VERSION_7_2_AND_LATER_BUT_DEPRECATED_IN_GRMUSTACHE_VERSION_7_3 - * - * Used on declarations introduced in GRMustache 7.2, - * but later deprecated in GRMustache 7.3 - */ -#if GRMUSTACHE_VERSION_MIN_REQUIRED >= GRMUSTACHE_VERSION_7_3 -#define AVAILABLE_GRMUSTACHE_VERSION_7_2_AND_LATER_BUT_DEPRECATED_IN_GRMUSTACHE_VERSION_7_3 DEPRECATED_ATTRIBUTE -#else -#define AVAILABLE_GRMUSTACHE_VERSION_7_2_AND_LATER_BUT_DEPRECATED_IN_GRMUSTACHE_VERSION_7_3 AVAILABLE_GRMUSTACHE_VERSION_7_2_AND_LATER -#endif - -/* - * DEPRECATED_IN_GRMUSTACHE_VERSION_7_3_AND_LATER - * - * Used on types deprecated in GRMustache 7.3 - */ -#if GRMUSTACHE_VERSION_MIN_REQUIRED >= GRMUSTACHE_VERSION_7_3 -#define DEPRECATED_IN_GRMUSTACHE_VERSION_7_3_AND_LATER DEPRECATED_ATTRIBUTE -#else -#define DEPRECATED_IN_GRMUSTACHE_VERSION_7_3_AND_LATER -#endif diff --git a/src/classes/Shared/GRMustacheContentType.h b/src/classes/Shared/GRMustacheContentType.h index 712f9878..229da344 100644 --- a/src/classes/Shared/GRMustacheContentType.h +++ b/src/classes/Shared/GRMustacheContentType.h @@ -39,7 +39,7 @@ typedef NS_ENUM(NSUInteger, GRMustacheContentType) { * * @since v6.2 */ - GRMustacheContentTypeHTML AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER, + GRMustacheContentTypeHTML AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER, /** * The `GRMustacheContentTypeText` content type has templates render text. @@ -48,6 +48,6 @@ typedef NS_ENUM(NSUInteger, GRMustacheContentType) { * * @since v6.2 */ - GRMustacheContentTypeText AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER, -} AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; + GRMustacheContentTypeText AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER, +} AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; diff --git a/src/classes/Shared/GRMustacheError.h b/src/classes/Shared/GRMustacheError.h index c988651b..f51e0411 100644 --- a/src/classes/Shared/GRMustacheError.h +++ b/src/classes/Shared/GRMustacheError.h @@ -35,23 +35,23 @@ typedef NS_ENUM(NSInteger, GRMustacheErrorCode) { * * @since v1.0 */ - GRMustacheErrorCodeParseError AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER, + GRMustacheErrorCodeParseError AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER, /** * The error code for not found templates and partials. * * @since v1.0 */ - GRMustacheErrorCodeTemplateNotFound AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER, + GRMustacheErrorCodeTemplateNotFound AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER, /** * The error code for not rendering errors. * * @since v6.3 */ - GRMustacheErrorCodeRenderingError AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER, + GRMustacheErrorCodeRenderingError AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER, -} AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; +} AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** @@ -59,7 +59,7 @@ typedef NS_ENUM(NSInteger, GRMustacheErrorCode) { * * @since v1.0 */ -extern NSString *const GRMustacheErrorDomain AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; +extern NSString *const GRMustacheErrorDomain AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** @@ -67,5 +67,5 @@ extern NSString *const GRMustacheErrorDomain AVAILABLE_GRMUSTACHE_VERSION_7_0_AN * * @since v5.1 */ -extern NSString *const GRMustacheRenderingException AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; +extern NSString *const GRMustacheRenderingException AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; diff --git a/src/classes/Templates/GRMustacheTemplate.h b/src/classes/Templates/GRMustacheTemplate.h index 19c499e5..81200282 100644 --- a/src/classes/Templates/GRMustacheTemplate.h +++ b/src/classes/Templates/GRMustacheTemplate.h @@ -60,7 +60,7 @@ * * @since v1.11 */ -+ (instancetype)templateFromString:(NSString *)templateString error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; ++ (instancetype)templateFromString:(NSString *)templateString error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * Parses a template file, and returns a compiled template. @@ -79,7 +79,7 @@ * * @since v1.11 */ -+ (instancetype)templateFromContentsOfFile:(NSString *)path error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; ++ (instancetype)templateFromContentsOfFile:(NSString *)path error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * Parses a template file, and returns a compiled template. @@ -98,7 +98,7 @@ * * @since v1.11 */ -+ (instancetype)templateFromContentsOfURL:(NSURL *)url error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; ++ (instancetype)templateFromContentsOfURL:(NSURL *)url error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * Parses a bundle resource template, and returns a compiled template. @@ -122,7 +122,7 @@ * * @since v1.11 */ -+ (instancetype)templateFromResource:(NSString *)name bundle:(NSBundle *)bundle error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; ++ (instancetype)templateFromResource:(NSString *)name bundle:(NSBundle *)bundle error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; //////////////////////////////////////////////////////////////////////////////// @@ -145,7 +145,7 @@ * * @since v6.0 */ -@property (nonatomic, retain) GRMustacheContext *baseContext AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; +@property (nonatomic, retain) GRMustacheContext *baseContext AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * Extends the base context of the receiver with the provided object, making its @@ -186,7 +186,7 @@ * * @since v6.8 */ -- (void)extendBaseContextWithObject:(id)object AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; +- (void)extendBaseContextWithObject:(id)object AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * Extends the base context of the receiver with the provided object, making its @@ -222,7 +222,7 @@ * * @since v6.8 */ -- (void)extendBaseContextWithProtectedObject:(id)object AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; +- (void)extendBaseContextWithProtectedObject:(id)object AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * Extends the base context of the receiver with a tag delegate, making it aware @@ -242,7 +242,7 @@ * * @since v6.8 */ -- (void)extendBaseContextWithTagDelegate:(id)tagDelegate AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER;; +- (void)extendBaseContextWithTagDelegate:(id)tagDelegate AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER;; //////////////////////////////////////////////////////////////////////////////// @@ -262,7 +262,7 @@ * * @since v1.0 */ -+ (NSString *)renderObject:(id)object fromString:(NSString *)templateString error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; ++ (NSString *)renderObject:(id)object fromString:(NSString *)templateString error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * Renders an object from a bundle resource template. @@ -286,7 +286,7 @@ * * @since v1.0 */ -+ (NSString *)renderObject:(id)object fromResource:(NSString *)name bundle:(NSBundle *)bundle error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; ++ (NSString *)renderObject:(id)object fromResource:(NSString *)name bundle:(NSBundle *)bundle error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * Renders a template with a context stack initialized with the provided object @@ -301,7 +301,7 @@ * * @since v6.0 */ -- (NSString *)renderObject:(id)object error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; +- (NSString *)renderObject:(id)object error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * Renders a template with a context stack initialized with the provided objects @@ -316,7 +316,7 @@ * * @since v6.0 */ -- (NSString *)renderObjectsFromArray:(NSArray *)objects error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; +- (NSString *)renderObjectsFromArray:(NSArray *)objects error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * Returns the rendering of the receiver, given a rendering context. @@ -336,7 +336,7 @@ * * @since v6.0 */ -- (NSString *)renderContentWithContext:(GRMustacheContext *)context HTMLSafe:(BOOL *)HTMLSafe error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; +- (NSString *)renderContentWithContext:(GRMustacheContext *)context HTMLSafe:(BOOL *)HTMLSafe error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; //////////////////////////////////////////////////////////////////////////////// /// @name Accessing Sibling Templates @@ -378,6 +378,6 @@ * * @since v7.0 */ -@property (nonatomic, retain, readonly) GRMustacheTemplateRepository *templateRepository AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; +@property (nonatomic, retain, readonly) GRMustacheTemplateRepository *templateRepository AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; @end diff --git a/src/classes/Templates/GRMustacheTemplateRepository.h b/src/classes/Templates/GRMustacheTemplateRepository.h index 31ab8ca6..3ce8593c 100644 --- a/src/classes/Templates/GRMustacheTemplateRepository.h +++ b/src/classes/Templates/GRMustacheTemplateRepository.h @@ -83,7 +83,7 @@ * * @since v1.13 */ -- (id)templateRepository:(GRMustacheTemplateRepository *)templateRepository templateIDForName:(NSString *)name relativeToTemplateID:(id)baseTemplateID AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; +- (id)templateRepository:(GRMustacheTemplateRepository *)templateRepository templateIDForName:(NSString *)name relativeToTemplateID:(id)baseTemplateID AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * Provided with a template ID that comes from @@ -109,7 +109,7 @@ * * @since v1.13 */ -- (NSString *)templateRepository:(GRMustacheTemplateRepository *)templateRepository templateStringForTemplateID:(id)templateID error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; +- (NSString *)templateRepository:(GRMustacheTemplateRepository *)templateRepository templateStringForTemplateID:(id)templateID error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; @end @@ -185,7 +185,7 @@ * * @since v1.13 */ -+ (instancetype)templateRepository AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; ++ (instancetype)templateRepository AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * Returns a GRMustacheTemplateRepository that loads Mustache template strings @@ -226,7 +226,7 @@ * * @since v1.13 */ -+ (instancetype)templateRepositoryWithDirectory:(NSString *)path AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; ++ (instancetype)templateRepositoryWithDirectory:(NSString *)path AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * Returns a GRMustacheTemplateRepository that loads Mustache template strings @@ -272,7 +272,7 @@ * * @since v1.13 */ -+ (instancetype)templateRepositoryWithDirectory:(NSString *)path templateExtension:(NSString *)ext encoding:(NSStringEncoding)encoding AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; ++ (instancetype)templateRepositoryWithDirectory:(NSString *)path templateExtension:(NSString *)ext encoding:(NSStringEncoding)encoding AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * Returns a GRMustacheTemplateRepository that loads Mustache template strings @@ -314,7 +314,7 @@ * * @since v1.13 */ -+ (instancetype)templateRepositoryWithBaseURL:(NSURL *)URL AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; ++ (instancetype)templateRepositoryWithBaseURL:(NSURL *)URL AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * Returns a GRMustacheTemplateRepository that loads Mustache template strings @@ -361,7 +361,7 @@ * * @since v1.13 */ -+ (instancetype)templateRepositoryWithBaseURL:(NSURL *)URL templateExtension:(NSString *)ext encoding:(NSStringEncoding)encoding AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; ++ (instancetype)templateRepositoryWithBaseURL:(NSURL *)URL templateExtension:(NSString *)ext encoding:(NSStringEncoding)encoding AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * Returns a GRMustacheTemplateRepository that loads Mustache template strings @@ -391,7 +391,7 @@ * * @since v1.13 */ -+ (instancetype)templateRepositoryWithBundle:(NSBundle *)bundle AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; ++ (instancetype)templateRepositoryWithBundle:(NSBundle *)bundle AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * Returns a GRMustacheTemplateRepository that loads Mustache template strings @@ -425,7 +425,7 @@ * * @since v1.13 */ -+ (instancetype)templateRepositoryWithBundle:(NSBundle *)bundle templateExtension:(NSString *)ext encoding:(NSStringEncoding)encoding AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; ++ (instancetype)templateRepositoryWithBundle:(NSBundle *)bundle templateExtension:(NSString *)ext encoding:(NSStringEncoding)encoding AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * Returns a GRMustacheTemplateRepository that loads Mustache template strings @@ -459,7 +459,7 @@ * * @since v1.13 */ -+ (instancetype)templateRepositoryWithDictionary:(NSDictionary *)templates AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; ++ (instancetype)templateRepositoryWithDictionary:(NSDictionary *)templates AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; //////////////////////////////////////////////////////////////////////////////// @@ -495,7 +495,7 @@ * * @since v6.2 */ -@property (nonatomic, copy) GRMustacheConfiguration *configuration AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; +@property (nonatomic, copy) GRMustacheConfiguration *configuration AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * The repository's data source. @@ -504,7 +504,7 @@ * * @since v1.13 */ -@property (nonatomic, assign) id dataSource AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; +@property (nonatomic, assign) id dataSource AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; //////////////////////////////////////////////////////////////////////////////// @@ -527,7 +527,7 @@ * * @since v1.13 */ -- (GRMustacheTemplate *)templateNamed:(NSString *)name error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; +- (GRMustacheTemplate *)templateNamed:(NSString *)name error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * Returns a template built from the provided Mustache template string. @@ -545,7 +545,7 @@ * * @since v1.13 */ -- (GRMustacheTemplate *)templateFromString:(NSString *)templateString error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; +- (GRMustacheTemplate *)templateFromString:(NSString *)templateString error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * Have the template repository reload its templates. @@ -571,6 +571,6 @@ * * @since v7.0 */ -- (void)reloadTemplates AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER; +- (void)reloadTemplates AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; @end From 27ddd7511226046ca188cc8de00e369dd064c2af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sat, 26 Sep 2015 15:59:10 +0200 Subject: [PATCH 18/81] Drop obsolete GRMustacheVersion --- src/GRMustache.xcodeproj/project.pbxproj | 6 ---- src/classes/GRMustache.h | 27 --------------- src/classes/GRMustache.m | 12 ++----- src/classes/GRMustacheVersion.h | 44 ------------------------ src/classes/GRMustache_private.h | 10 ------ 5 files changed, 2 insertions(+), 97 deletions(-) delete mode 100644 src/classes/GRMustacheVersion.h diff --git a/src/GRMustache.xcodeproj/project.pbxproj b/src/GRMustache.xcodeproj/project.pbxproj index 6cde6139..d9bcbd40 100644 --- a/src/GRMustache.xcodeproj/project.pbxproj +++ b/src/GRMustache.xcodeproj/project.pbxproj @@ -140,7 +140,6 @@ 56214C221BA1A5AB0070C6CF /* GRMustacheTemplateRepositoryTest_ISOLatin1 in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4951528486900ADD123 /* GRMustacheTemplateRepositoryTest_ISOLatin1 */; settings = {ASSET_TAGS = (); }; }; 56214C231BA1A5AB0070C6CF /* GRMustacheTemplateRepositoryTest_UTF8 in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4961528486A00ADD123 /* GRMustacheTemplateRepositoryTest_UTF8 */; settings = {ASSET_TAGS = (); }; }; 56214C2C1BA1A6870070C6CF /* GRMustache.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DEC292152631300031E8DC /* GRMustache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56214C2D1BA1A68E0070C6CF /* GRMustacheVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DEC2BB152631300031E8DC /* GRMustacheVersion.h */; settings = {ATTRIBUTES = (Public, ); }; }; 56214C2F1BA1A6A70070C6CF /* GRMustache_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DEC294152631300031E8DC /* GRMustache_private.h */; }; 56214C301BA1A6AD0070C6CF /* GRMustacheTranslateCharacters_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375D19B8EF2800854524 /* GRMustacheTranslateCharacters_private.h */; settings = {ASSET_TAGS = (); }; }; 56214C331BA1A6B50070C6CF /* GRMustacheError.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375A19B8EF2800854524 /* GRMustacheError.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -360,7 +359,6 @@ 6586A0651B9E2DAD0067C98E /* GRMustache.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DEC292152631300031E8DC /* GRMustache.h */; settings = {ATTRIBUTES = (Public, ); }; }; 6586A0661B9E2DB30067C98E /* GRMustache_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DEC294152631300031E8DC /* GRMustache_private.h */; settings = {ASSET_TAGS = (); }; }; 6586A0671B9E2DB90067C98E /* GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC293152631300031E8DC /* GRMustache.m */; }; - 6586A0681B9E2DBC0067C98E /* GRMustacheVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DEC2BB152631300031E8DC /* GRMustacheVersion.h */; settings = {ATTRIBUTES = (Public, ); }; }; 6586A0691B9E2E100067C98E /* GRMustacheAvailabilityMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375619B8EF2800854524 /* GRMustacheAvailabilityMacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; 6586A06A1B9E2E100067C98E /* GRMustacheAvailabilityMacros_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375719B8EF2800854524 /* GRMustacheAvailabilityMacros_private.h */; settings = {ASSET_TAGS = (); }; }; 6586A06B1B9E2E100067C98E /* GRMustacheBuffer_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375819B8EF2800854524 /* GRMustacheBuffer_private.h */; settings = {ASSET_TAGS = (); }; }; @@ -651,7 +649,6 @@ 56DEC292152631300031E8DC /* GRMustache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustache.h; sourceTree = ""; }; 56DEC293152631300031E8DC /* GRMustache.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustache.m; sourceTree = ""; }; 56DEC294152631300031E8DC /* GRMustache_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustache_private.h; sourceTree = ""; }; - 56DEC2BB152631300031E8DC /* GRMustacheVersion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustacheVersion.h; sourceTree = ""; }; 56DEC3AF152638E20031E8DC /* GRMustachePrivateAPITest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustachePrivateAPITest.h; sourceTree = ""; }; 56DEC3B0152638E20031E8DC /* GRMustachePrivateAPITest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustachePrivateAPITest.m; sourceTree = ""; }; 56DEC3B1152638E20031E8DC /* GRMustachePublicAPITest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustachePublicAPITest.h; sourceTree = ""; }; @@ -1140,7 +1137,6 @@ 56DEC292152631300031E8DC /* GRMustache.h */, 56DEC294152631300031E8DC /* GRMustache_private.h */, 56DEC293152631300031E8DC /* GRMustache.m */, - 56DEC2BB152631300031E8DC /* GRMustacheVersion.h */, ); path = classes; sourceTree = ""; @@ -1227,7 +1223,6 @@ 56214C991BA1A70D0070C6CF /* GRMustacheContext_private.h in Headers */, 56214C301BA1A6AD0070C6CF /* GRMustacheTranslateCharacters_private.h in Headers */, 56214C361BA1A6C20070C6CF /* GRMustacheAvailabilityMacros_private.h in Headers */, - 56214C2D1BA1A68E0070C6CF /* GRMustacheVersion.h in Headers */, 56214C2F1BA1A6A70070C6CF /* GRMustache_private.h in Headers */, 56214CB01BA1A7490070C6CF /* NSFormatter+GRMustache.h in Headers */, 56214CA31BA1A70D0070C6CF /* GRMustacheEachFilter_private.h in Headers */, @@ -1288,7 +1283,6 @@ 6586A08B1B9E2E4F0067C98E /* GRMustacheContext.h in Headers */, 6586A07C1B9E2E360067C98E /* GRMustacheHTMLEscapeFilter_private.h in Headers */, 6586A09D1B9E2E550067C98E /* GRMustacheCompiler_private.h in Headers */, - 6586A0681B9E2DBC0067C98E /* GRMustacheVersion.h in Headers */, 6586A0901B9E2E4F0067C98E /* GRMustacheFilter.h in Headers */, 6586A0B31B9E2E600067C98E /* GRMustacheExpressionVisitor_private.h in Headers */, 6586A0AE1B9E2E5B0067C98E /* GRMustacheTextNode_private.h in Headers */, diff --git a/src/classes/GRMustache.h b/src/classes/GRMustache.h index 1a99da51..c3e9c745 100644 --- a/src/classes/GRMustache.h +++ b/src/classes/GRMustache.h @@ -29,21 +29,6 @@ FOUNDATION_EXPORT double GRMustacheVersionNumber; //! Project version string for GRMustache. FOUNDATION_EXPORT const unsigned char GRMustacheVersionString[]; -@protocol GRMustacheRendering; -@class GRMustacheTag; -@class GRMustacheContext; - -/** - * A C struct that hold GRMustache version information - * - * @since v1.0 - */ -typedef struct { - int major; /**< The major component of the version. */ - int minor; /**< The minor component of the version. */ - int patch; /**< The patch-level component of the version. */ -} GRMustacheVersion; - /** * The GRMustache class provides with global-level information and configuration @@ -53,17 +38,6 @@ typedef struct { */ @interface GRMustache: NSObject -//////////////////////////////////////////////////////////////////////////////// -/// @name Getting the GRMustache version -//////////////////////////////////////////////////////////////////////////////// - -/** - * @return The version of GRMustache as a GRMustacheVersion struct. - * - * @since v7.0 - */ -+ (GRMustacheVersion)libraryVersion AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; - //////////////////////////////////////////////////////////////////////////////// /// @name Standard Library @@ -121,7 +95,6 @@ typedef struct { #import "GRMustacheTemplateRepository.h" #import "GRMustacheFilter.h" #import "GRMustacheError.h" -#import "GRMustacheVersion.h" #import "GRMustacheContentType.h" #import "GRMustacheContext.h" #import "GRMustacheRendering.h" diff --git a/src/classes/GRMustache.m b/src/classes/GRMustache.m index e0b7af68..2252eb7f 100644 --- a/src/classes/GRMustache.m +++ b/src/classes/GRMustache.m @@ -22,7 +22,6 @@ #import "GRMustache_private.h" #import "GRMustacheKeyAccess_private.h" -#import "GRMustacheVersion.h" #import "GRMustacheRendering_private.h" #import "GRMustacheJavascriptEscapeFilter_private.h" #import "GRMustacheHTMLEscapeFilter_private.h" @@ -38,16 +37,9 @@ @implementation GRMustache -// ============================================================================= -#pragma mark - Global services -+ (GRMustacheVersion)libraryVersion -{ - return (GRMustacheVersion){ - .major = GRMUSTACHE_MAJOR_VERSION, - .minor = GRMUSTACHE_MINOR_VERSION, - .patch = GRMUSTACHE_PATCH_VERSION }; -} +// ============================================================================= +#pragma mark - Standard library // Documented in GRMustache.h + (NSObject *)standardEach diff --git a/src/classes/GRMustacheVersion.h b/src/classes/GRMustacheVersion.h deleted file mode 100644 index 5d3d2494..00000000 --- a/src/classes/GRMustacheVersion.h +++ /dev/null @@ -1,44 +0,0 @@ -// The MIT License -// -// Copyright (c) 2014 Gwendal Roué -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - - -/** - * The major component of GRMustache version - * - * @since v1.0 - */ -#define GRMUSTACHE_MAJOR_VERSION 7 - -/** - * The minor component of GRMustache version - * - * @since v1.0 - */ -#define GRMUSTACHE_MINOR_VERSION 3 - -/** - * The patch-level component of GRMustache version - * - * @since v1.0 - */ -#define GRMUSTACHE_PATCH_VERSION 2 - diff --git a/src/classes/GRMustache_private.h b/src/classes/GRMustache_private.h index 9f839220..d09025b7 100644 --- a/src/classes/GRMustache_private.h +++ b/src/classes/GRMustache_private.h @@ -27,18 +27,8 @@ @class GRMustacheTag; @class GRMustacheContext; -// Documented in GRMustache.h -typedef struct { - int major; - int minor; - int patch; -} GRMustacheVersion; - @interface GRMustache: NSObject -// Documented in GRMustache.h -+ (GRMustacheVersion)libraryVersion GRMUSTACHE_API_PUBLIC; - // Documented in GRMustache.h + (NSObject *)standardEach GRMUSTACHE_API_PUBLIC; From 77dfc0dae477d374682a5ef3bd267dfce6c79a84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sat, 26 Sep 2015 16:21:23 +0200 Subject: [PATCH 19/81] Project organization --- .../Guides}/NSFormatter.md | 0 {Guides => Documentation/Guides}/README.md | 0 .../Guides}/compatibility.md | 0 .../Guides}/configuration.md | 0 {Guides => Documentation/Guides}/delegate.md | 0 {Guides => Documentation/Guides}/faq.md | 0 {Guides => Documentation/Guides}/filters.md | 0 {Guides => Documentation/Guides}/forking.md | 0 .../Guides}/html_vs_text.md | 0 .../Guides}/installation.md | 0 .../Guides}/introduction.md | 0 {Guides => Documentation/Guides}/partials.md | 0 .../Guides}/rendering_objects.md | 0 {Guides => Documentation/Guides}/runtime.md | 0 {Guides => Documentation/Guides}/security.md | 0 .../Guides}/standard_library.md | 0 .../Guides}/template_inheritance.md | 0 .../Guides}/template_repositories.md | 0 {Guides => Documentation/Guides}/templates.md | 0 .../Guides}/troubleshooting.md | 0 {Guides => Documentation/Guides}/upgrading.md | 0 .../Guides}/view_model.md | 0 .../Categories/NSFormatter+GRMustache.html | 0 .../NSValueTransformer+GRMustache.html | 0 .../Reference}/html/Classes/GRMustache.html | 0 .../html/Classes/GRMustacheConfiguration.html | 0 .../html/Classes/GRMustacheContext.html | 0 .../html/Classes/GRMustacheFilter.html | 0 .../html/Classes/GRMustacheLocalizer.html | 0 .../html/Classes/GRMustacheRendering.html | 0 .../html/Classes/GRMustacheTag.html | 0 .../html/Classes/GRMustacheTemplate.html | 0 .../Classes/GRMustacheTemplateRepository.html | 0 .../html/Constants/GRMustacheContentType.html | 0 .../html/Constants/GRMustacheErrorCode.html | 0 .../html/Constants/GRMustacheTagType.html | 0 .../html/Protocols/GRMustacheFilter.html | 0 .../html/Protocols/GRMustacheRendering.html | 0 .../Protocols/GRMustacheSafeKeyAccess.html | 0 .../html/Protocols/GRMustacheTagDelegate.html | 0 ...RMustacheTemplateRepositoryDataSource.html | 0 .../Reference}/html/css/styles.css | 0 .../Reference}/html/css/stylesPrint.css | 0 .../Reference}/html/hierarchy.html | 0 .../html/img/button_bar_background.png | Bin .../Reference}/html/img/disclosure.png | Bin .../Reference}/html/img/disclosure_open.png | Bin .../html/img/library_background.png | Bin .../Reference}/html/img/title_background.png | Bin .../Reference}/html/index.html | 0 .../project.pbxproj | 96 ++++++++---------- .../xcschemes/GRMustacheOSX (Shared).xcscheme | 0 .../xcschemes/GRMustacheiOS (Shared).xcscheme | 0 .../Expressions/GRMustacheExpression.m | 0 .../GRMustacheExpressionVisitor_private.h | 0 .../GRMustacheExpression_private.h | 0 .../GRMustacheFilteredExpression.m | 0 .../GRMustacheFilteredExpression_private.h | 0 .../GRMustacheIdentifierExpression.m | 0 .../GRMustacheIdentifierExpression_private.h | 0 .../GRMustacheImplicitIteratorExpression.m | 0 ...stacheImplicitIteratorExpression_private.h | 0 .../Expressions/GRMustacheScopedExpression.m | 0 .../GRMustacheScopedExpression_private.h | 0 .../Compiling/GRMustacheCompiler.m | 0 .../Compiling/GRMustacheCompiler_private.h | 0 .../GRMustacheInheritableSectionNode.m | 0 ...GRMustacheInheritableSectionNode_private.h | 0 .../GRMustacheInheritedPartialNode.m | 0 .../GRMustacheInheritedPartialNode_private.h | 0 .../TemplateAST/GRMustachePartialNode.m | 0 .../GRMustachePartialNode_private.h | 0 .../TemplateAST/GRMustacheSectionTag.m | 0 .../GRMustacheSectionTag_private.h | 0 .../Compiling/TemplateAST/GRMustacheTag.h | 0 .../Compiling/TemplateAST/GRMustacheTag.m | 0 .../TemplateAST/GRMustacheTag_private.h | 0 .../TemplateAST/GRMustacheTemplateAST.m | 0 .../GRMustacheTemplateASTNode_private.h | 0 .../GRMustacheTemplateASTVisitor_private.h | 0 .../GRMustacheTemplateAST_private.h | 0 .../TemplateAST/GRMustacheTextNode.m | 0 .../TemplateAST/GRMustacheTextNode_private.h | 0 .../TemplateAST/GRMustacheVariableTag.m | 0 .../GRMustacheVariableTag_private.h | 0 .../Configuration/GRMustacheConfiguration.h | 0 .../Configuration/GRMustacheConfiguration.m | 0 .../GRMustacheConfiguration_private.h | 0 {src/classes => GRMustache}/GRMustache.h | 0 {src/classes => GRMustache}/GRMustache.m | 0 .../GRMustache_private.h | 0 {src/GRMustache => GRMustache}/Info.plist | 0 .../Parsing/GRMustacheExpressionParser.m | 0 .../GRMustacheExpressionParser_private.h | 0 .../Parsing/GRMustacheTemplateParser.m | 0 .../GRMustacheTemplateParser_private.h | 0 .../Parsing/GRMustacheToken.m | 0 .../Parsing/GRMustacheToken_private.h | 0 .../Rendering/GRMustacheContext.h | 0 .../Rendering/GRMustacheContext.m | 0 .../Rendering/GRMustacheContext_private.h | 0 .../GRMustacheExpressionInvocation.m | 0 .../GRMustacheExpressionInvocation_private.h | 0 .../Rendering/GRMustacheFilter.h | 0 .../Rendering/GRMustacheFilter.m | 0 .../Rendering/GRMustacheFilter_private.h | 0 .../Rendering/GRMustacheKeyAccess.m | 0 .../Rendering/GRMustacheKeyAccess_private.h | 0 .../Rendering/GRMustacheKeyValueCoding.h | 0 .../Rendering/GRMustacheRendering.h | 0 .../Rendering/GRMustacheRendering.m | 0 .../Rendering/GRMustacheRenderingEngine.m | 0 .../GRMustacheRenderingEngine_private.h | 0 .../Rendering/GRMustacheRendering_private.h | 0 .../Rendering/GRMustacheTagDelegate.h | 0 .../NSObject+GRMustacheKeyValueCoding.m | 0 ...SObject+GRMustacheKeyValueCoding_private.h | 0 .../Services/GRMustacheExpressionGenerator.m | 0 .../GRMustacheExpressionGenerator_private.h | 0 .../Services/GRMustacheTemplateGenerator.m | 0 .../GRMustacheTemplateGenerator_private.h | 0 .../Services/NSFormatter+GRMustache.h | 0 .../Services/NSFormatter+GRMustache.m | 0 .../Services/NSValueTransformer+GRMustache.h | 0 .../Services/NSValueTransformer+GRMustache.m | 0 .../StandardLibrary/GRMustacheEachFilter.m | 0 .../GRMustacheEachFilter_private.h | 0 .../GRMustacheHTMLEscapeFilter.m | 0 .../GRMustacheHTMLEscapeFilter_private.h | 0 .../GRMustacheJavascriptEscapeFilter.m | 0 ...GRMustacheJavascriptEscapeFilter_private.h | 0 .../StandardLibrary/GRMustacheLocalizer.h | 0 .../StandardLibrary/GRMustacheLocalizer.m | 0 .../GRMustacheURLEscapeFilter.m | 0 .../GRMustacheURLEscapeFilter_private.h | 0 .../Shared/GRMustacheAvailabilityMacros.h | 0 .../GRMustacheAvailabilityMacros_private.h | 0 .../Shared/GRMustacheBuffer_private.h | 0 .../Shared/GRMustacheContentType.h | 0 .../Shared/GRMustacheError.h | 0 .../Shared/GRMustacheError.m | 0 .../Shared/GRMustacheTranslateCharacters.m | 0 .../GRMustacheTranslateCharacters_private.h | 0 .../Templates/GRMustacheTemplate.h | 0 .../Templates/GRMustacheTemplate.m | 0 .../Templates/GRMustacheTemplateRepository.h | 0 .../Templates/GRMustacheTemplateRepository.m | 0 .../GRMustacheTemplateRepository_private.h | 0 .../Templates/GRMustacheTemplate_private.h | 0 .../GRMustacheTestingDelegate.h | 0 .../GRMustacheTestingDelegate.m | 0 {src/tests => GRMustacheTests}/Info.plist | 0 .../Private/GRMustacheContextPrivateTest.m | 0 .../Private/GRMustacheExpressionParserTest.m | 0 .../Private/GRMustachePrivateAPITest.h | 0 .../Private/GRMustachePrivateAPITest.m | 0 .../Private/GRMustacheTemplateGeneratorTest.m | 0 .../.xccurrentversion | 0 .../elements | Bin .../layout | Bin .../Public/GRMustachePublicAPITest.h | 0 .../Public/GRMustachePublicAPITest.m | 0 .../Public/v8.0/GRBooleanTest.m | 0 .../GRMustacheConfigurationBaseContextTest.m | 0 ...stacheConfigurationExtendBaseContextTest.m | 0 ...GRMustacheConfigurationTagDelimitersTest.m | 0 .../GRMustacheConfigurationTest.m | 0 ...ContextHasValueForMustacheExpressionTest.m | 0 .../GRMustacheContextKeyAccessTest.m | 0 .../GRMustacheContextProtectedObjectTest.m | 0 .../GRMustacheContextTest.m | 0 .../GRMustacheContextTopMustacheObjectTest.m | 0 ...GRMustacheContextValueForMustacheKeyTest.m | 0 .../Public/v8.0/GRMustacheErrorHandlingTest.m | 0 .../GRMustacheFilterTest.m | 0 .../GRMustacheVariadicFilterTest.m | 0 .../v8.0/GRMustacheFoundationCollectionTest.m | 0 .../Public/v8.0/GRMustacheParsingErrorsTest.m | 0 .../v8.0/GRMustachePositionFilterTest.m | 0 .../v8.0/GRMustacheRenderingObjectTest.m | 0 .../GRMustacheEachFilterTest.m | 0 .../GRMustacheLocalizerTest.m | 0 .../Localizable.strings | 0 .../Table.strings | 0 .../GRMustacheNSFormatterTest.m | 0 .../GRMustacheNSValueTransformerTest.m | 0 .../GRMustacheStandardLibraryTest.m | 0 .../GRMustacheTagDelegateTest.m | 0 .../GRMustacheTagDelegateTest.mustache | 0 ...GRMustacheTagDelegateTest_wrapper.mustache | 0 ...MustacheTemplateRepositoryDataSourceTest.m | 0 .../GRMustacheTemplateRepositoryTest.m | 0 .../base.mustache | 0 .../partials/partial1.mustache | 0 .../partials/partial2.mustache | 0 .../dir/dir/file1 | 0 .../dir/dir/file1.mustache | 0 .../dir/dir/file1.txt | 0 .../dir/dir/file2 | 0 .../dir/dir/file2.mustache | 0 .../dir/dir/file2.txt | 0 .../dir/file1 | 0 .../dir/file1.mustache | 0 .../dir/file1.txt | 0 .../dir/file2 | 0 .../dir/file2.mustache | 0 .../dir/file2.txt | 0 .../file1 | 0 .../file1.mustache | 0 .../file1.txt | 0 .../file2 | 0 .../file2.mustache | 0 .../file2.txt | 0 .../dir/dir/file1 | 0 .../dir/dir/file1.mustache | 0 .../dir/dir/file1.txt | 0 .../dir/dir/file2 | 0 .../dir/dir/file2.mustache | 0 .../dir/dir/file2.txt | 0 .../dir/file1 | 0 .../dir/file1.mustache | 0 .../dir/file1.txt | 0 .../dir/file2 | 0 .../dir/file2.mustache | 0 .../dir/file2.txt | 0 .../file1 | 0 .../file1.mustache | 0 .../file1.txt | 0 .../file2 | 0 .../file2.mustache | 0 .../file2.txt | 0 ...ustacheTemplateRepositoryWithBaseURLTest.m | 0 ...GRMustacheTemplateRepositoryWithBundleTest | 0 ...MustacheTemplateRepositoryWithBundleTest.m | 0 ...eTemplateRepositoryWithBundleTest.mustache | 0 ...tacheTemplateRepositoryWithBundleTest.text | 0 .../partial.mustache | 0 .../sibling.mustache | 0 ...heTemplateRepositoryWithBundleTest_partial | 0 ...eRepositoryWithBundleTest_partial.mustache | 0 ...plateRepositoryWithBundleTest_partial.text | 0 ...acheTemplateRepositoryWithDictionaryTest.m | 0 ...tacheTemplateRepositoryWithDirectoryTest.m | 0 .../GRMustacheTemplateExtendBaseContextTest.m | 0 .../GRMustacheTemplateFromMethodsTest | 0 .../GRMustacheTemplateFromMethodsTest.json | 0 .../GRMustacheTemplateFromMethodsTest.m | 0 ...GRMustacheTemplateFromMethodsTest.mustache | 0 ...lateFromMethodsTest_compilerError.mustache | 0 ...mMethodsTest_compilerErrorWrapper.mustache | 0 ...mplateFromMethodsTest_parserError.mustache | 0 ...romMethodsTest_parserErrorWrapper.mustache | 0 .../GRMustacheTemplateRenderMethodsTest | 0 .../GRMustacheTemplateRenderMethodsTest.json | 0 .../GRMustacheTemplateRenderMethodsTest.m | 0 ...MustacheTemplateRenderMethodsTest.mustache | 0 ...GRMustacheTemplateTemplateRepositoryTest.m | 0 .../groue/GRMustache/GRMustacheSuitesTest.m | 0 .../mustache/spec/GRSpecificationSuitesTest.m | 0 .../GRMustacheJavaSuites/box.html | 0 .../GRMustacheJavaSuites/client.html | 0 .../GRMustacheJavaSuites/client.txt | 0 .../GRMustacheJavaSuites/div.html | 0 .../GRMustacheJavaSuites/follow.html | 0 .../GRMustacheJavaSuites/follownomenu.html | 0 .../GRMustacheJavaSuites/follownomenu.txt | 0 .../GRMustacheJavaSuites/main.html | 0 .../GRMustacheJavaSuites/method.html | 0 .../multipleextensions.html | 0 .../multipleextensions.txt | 0 .../nested_inheritance.html | 0 .../nested_inheritance.txt | 0 .../GRMustacheJavaSuites/parentreplace.html | 0 .../GRMustacheJavaSuites/partialsub.html | 0 .../partialsubpartial.html | 0 .../partialsubpartial.txt | 0 .../GRMustacheJavaSuites/partialsuper.html | 0 .../GRMustacheJavaSuites/recurse_base.html | 0 .../recursive_partial.html | 0 .../recursive_partial2.html | 0 .../recursive_partial3.html | 0 .../recursive_partial_inheritance.html | 0 .../recursive_partial_inheritance.txt | 0 .../GRMustacheJavaSuites/replace.html | 0 .../GRMustacheJavaSuites/replace.txt | 0 .../GRMustacheJavaSuites/singlereplace.html | 0 .../GRMustacheJavaSuites/sub.html | 0 .../GRMustacheJavaSuites/sub.txt | 0 .../GRMustacheJavaSuites/subblockchild1.html | 0 .../GRMustacheJavaSuites/subblockchild1.txt | 0 .../GRMustacheJavaSuites/subblockchild2.html | 0 .../GRMustacheJavaSuites/subblockchild2.txt | 0 .../GRMustacheJavaSuites/subblocksuper.html | 0 .../GRMustacheJavaSuites/subsub.html | 0 .../GRMustacheJavaSuites/subsub.txt | 0 .../GRMustacheJavaSuites/subsubchild1.html | 0 .../GRMustacheJavaSuites/subsubchild1.txt | 0 .../GRMustacheJavaSuites/subsubchild2.html | 0 .../GRMustacheJavaSuites/subsubchild2.txt | 0 .../GRMustacheJavaSuites/subsubchild3.html | 0 .../GRMustacheJavaSuites/subsubchild3.txt | 0 .../GRMustacheJavaSuites/subsubmiddle.html | 0 .../GRMustacheJavaSuites/subsubsuper.html | 0 .../GRMustacheJavaSuites/super.html | 0 .../GRMustacheJavaSuites/template.html | 0 .../GRMustacheJavaSuites/tweetbox.html | 0 .../mustache.java/GRMustacheJavaSuitesTest.m | 0 .../GRHoganSuites/inheritable_partials.json | 0 .../twitter/hogan.js/GRHoganSuitesTest.m | 0 Guides/helpers.md | 1 - Guides/protected_contexts.md | 1 - Guides/proxies.md | 1 - Guides/runtime/booleans.md | 1 - Guides/runtime/context_stack.md | 1 - Guides/runtime/loops.md | 1 - Guides/runtime_patterns.md | 1 - Guides/sample_code/counters.md | 1 - Guides/sample_code/indexes.md | 1 - Guides/sample_code/localization.md | 1 - Guides/sample_code/number_formatting.md | 1 - Guides/section_helpers.md | 1 - Guides/section_tag_helpers.md | 1 - Guides/variable_helpers.md | 1 - Guides/variable_tag_helpers.md | 1 - .../buildGRMustacheAvailabilityMacros | 2 +- 325 files changed, 45 insertions(+), 68 deletions(-) rename {Guides => Documentation/Guides}/NSFormatter.md (100%) rename {Guides => Documentation/Guides}/README.md (100%) rename {Guides => Documentation/Guides}/compatibility.md (100%) rename {Guides => Documentation/Guides}/configuration.md (100%) rename {Guides => Documentation/Guides}/delegate.md (100%) rename {Guides => Documentation/Guides}/faq.md (100%) rename {Guides => Documentation/Guides}/filters.md (100%) rename {Guides => Documentation/Guides}/forking.md (100%) rename {Guides => Documentation/Guides}/html_vs_text.md (100%) rename {Guides => Documentation/Guides}/installation.md (100%) rename {Guides => Documentation/Guides}/introduction.md (100%) rename {Guides => Documentation/Guides}/partials.md (100%) rename {Guides => Documentation/Guides}/rendering_objects.md (100%) rename {Guides => Documentation/Guides}/runtime.md (100%) rename {Guides => Documentation/Guides}/security.md (100%) rename {Guides => Documentation/Guides}/standard_library.md (100%) rename {Guides => Documentation/Guides}/template_inheritance.md (100%) rename {Guides => Documentation/Guides}/template_repositories.md (100%) rename {Guides => Documentation/Guides}/templates.md (100%) rename {Guides => Documentation/Guides}/troubleshooting.md (100%) rename {Guides => Documentation/Guides}/upgrading.md (100%) rename {Guides => Documentation/Guides}/view_model.md (100%) rename {Reference => Documentation/Reference}/html/Categories/NSFormatter+GRMustache.html (100%) rename {Reference => Documentation/Reference}/html/Categories/NSValueTransformer+GRMustache.html (100%) rename {Reference => Documentation/Reference}/html/Classes/GRMustache.html (100%) rename {Reference => Documentation/Reference}/html/Classes/GRMustacheConfiguration.html (100%) rename {Reference => Documentation/Reference}/html/Classes/GRMustacheContext.html (100%) rename {Reference => Documentation/Reference}/html/Classes/GRMustacheFilter.html (100%) rename {Reference => Documentation/Reference}/html/Classes/GRMustacheLocalizer.html (100%) rename {Reference => Documentation/Reference}/html/Classes/GRMustacheRendering.html (100%) rename {Reference => Documentation/Reference}/html/Classes/GRMustacheTag.html (100%) rename {Reference => Documentation/Reference}/html/Classes/GRMustacheTemplate.html (100%) rename {Reference => Documentation/Reference}/html/Classes/GRMustacheTemplateRepository.html (100%) rename {Reference => Documentation/Reference}/html/Constants/GRMustacheContentType.html (100%) rename {Reference => Documentation/Reference}/html/Constants/GRMustacheErrorCode.html (100%) rename {Reference => Documentation/Reference}/html/Constants/GRMustacheTagType.html (100%) rename {Reference => Documentation/Reference}/html/Protocols/GRMustacheFilter.html (100%) rename {Reference => Documentation/Reference}/html/Protocols/GRMustacheRendering.html (100%) rename {Reference => Documentation/Reference}/html/Protocols/GRMustacheSafeKeyAccess.html (100%) rename {Reference => Documentation/Reference}/html/Protocols/GRMustacheTagDelegate.html (100%) rename {Reference => Documentation/Reference}/html/Protocols/GRMustacheTemplateRepositoryDataSource.html (100%) rename {Reference => Documentation/Reference}/html/css/styles.css (100%) rename {Reference => Documentation/Reference}/html/css/stylesPrint.css (100%) rename {Reference => Documentation/Reference}/html/hierarchy.html (100%) rename {Reference => Documentation/Reference}/html/img/button_bar_background.png (100%) rename {Reference => Documentation/Reference}/html/img/disclosure.png (100%) rename {Reference => Documentation/Reference}/html/img/disclosure_open.png (100%) rename {Reference => Documentation/Reference}/html/img/library_background.png (100%) rename {Reference => Documentation/Reference}/html/img/title_background.png (100%) rename {Reference => Documentation/Reference}/html/index.html (100%) rename {src/GRMustache.xcodeproj => GRMustache.xcodeproj}/project.pbxproj (98%) rename {src/GRMustache.xcodeproj => GRMustache.xcodeproj}/xcshareddata/xcschemes/GRMustacheOSX (Shared).xcscheme (100%) rename {src/GRMustache.xcodeproj => GRMustache.xcodeproj}/xcshareddata/xcschemes/GRMustacheiOS (Shared).xcscheme (100%) rename {src/classes => GRMustache}/Compiling/Expressions/GRMustacheExpression.m (100%) rename {src/classes => GRMustache}/Compiling/Expressions/GRMustacheExpressionVisitor_private.h (100%) rename {src/classes => GRMustache}/Compiling/Expressions/GRMustacheExpression_private.h (100%) rename {src/classes => GRMustache}/Compiling/Expressions/GRMustacheFilteredExpression.m (100%) rename {src/classes => GRMustache}/Compiling/Expressions/GRMustacheFilteredExpression_private.h (100%) rename {src/classes => GRMustache}/Compiling/Expressions/GRMustacheIdentifierExpression.m (100%) rename {src/classes => GRMustache}/Compiling/Expressions/GRMustacheIdentifierExpression_private.h (100%) rename {src/classes => GRMustache}/Compiling/Expressions/GRMustacheImplicitIteratorExpression.m (100%) rename {src/classes => GRMustache}/Compiling/Expressions/GRMustacheImplicitIteratorExpression_private.h (100%) rename {src/classes => GRMustache}/Compiling/Expressions/GRMustacheScopedExpression.m (100%) rename {src/classes => GRMustache}/Compiling/Expressions/GRMustacheScopedExpression_private.h (100%) rename {src/classes => GRMustache}/Compiling/GRMustacheCompiler.m (100%) rename {src/classes => GRMustache}/Compiling/GRMustacheCompiler_private.h (100%) rename {src/classes => GRMustache}/Compiling/TemplateAST/GRMustacheInheritableSectionNode.m (100%) rename {src/classes => GRMustache}/Compiling/TemplateAST/GRMustacheInheritableSectionNode_private.h (100%) rename {src/classes => GRMustache}/Compiling/TemplateAST/GRMustacheInheritedPartialNode.m (100%) rename {src/classes => GRMustache}/Compiling/TemplateAST/GRMustacheInheritedPartialNode_private.h (100%) rename {src/classes => GRMustache}/Compiling/TemplateAST/GRMustachePartialNode.m (100%) rename {src/classes => GRMustache}/Compiling/TemplateAST/GRMustachePartialNode_private.h (100%) rename {src/classes => GRMustache}/Compiling/TemplateAST/GRMustacheSectionTag.m (100%) rename {src/classes => GRMustache}/Compiling/TemplateAST/GRMustacheSectionTag_private.h (100%) rename {src/classes => GRMustache}/Compiling/TemplateAST/GRMustacheTag.h (100%) rename {src/classes => GRMustache}/Compiling/TemplateAST/GRMustacheTag.m (100%) rename {src/classes => GRMustache}/Compiling/TemplateAST/GRMustacheTag_private.h (100%) rename {src/classes => GRMustache}/Compiling/TemplateAST/GRMustacheTemplateAST.m (100%) rename {src/classes => GRMustache}/Compiling/TemplateAST/GRMustacheTemplateASTNode_private.h (100%) rename {src/classes => GRMustache}/Compiling/TemplateAST/GRMustacheTemplateASTVisitor_private.h (100%) rename {src/classes => GRMustache}/Compiling/TemplateAST/GRMustacheTemplateAST_private.h (100%) rename {src/classes => GRMustache}/Compiling/TemplateAST/GRMustacheTextNode.m (100%) rename {src/classes => GRMustache}/Compiling/TemplateAST/GRMustacheTextNode_private.h (100%) rename {src/classes => GRMustache}/Compiling/TemplateAST/GRMustacheVariableTag.m (100%) rename {src/classes => GRMustache}/Compiling/TemplateAST/GRMustacheVariableTag_private.h (100%) rename {src/classes => GRMustache}/Configuration/GRMustacheConfiguration.h (100%) rename {src/classes => GRMustache}/Configuration/GRMustacheConfiguration.m (100%) rename {src/classes => GRMustache}/Configuration/GRMustacheConfiguration_private.h (100%) rename {src/classes => GRMustache}/GRMustache.h (100%) rename {src/classes => GRMustache}/GRMustache.m (100%) rename {src/classes => GRMustache}/GRMustache_private.h (100%) rename {src/GRMustache => GRMustache}/Info.plist (100%) rename {src/classes => GRMustache}/Parsing/GRMustacheExpressionParser.m (100%) rename {src/classes => GRMustache}/Parsing/GRMustacheExpressionParser_private.h (100%) rename {src/classes => GRMustache}/Parsing/GRMustacheTemplateParser.m (100%) rename {src/classes => GRMustache}/Parsing/GRMustacheTemplateParser_private.h (100%) rename {src/classes => GRMustache}/Parsing/GRMustacheToken.m (100%) rename {src/classes => GRMustache}/Parsing/GRMustacheToken_private.h (100%) rename {src/classes => GRMustache}/Rendering/GRMustacheContext.h (100%) rename {src/classes => GRMustache}/Rendering/GRMustacheContext.m (100%) rename {src/classes => GRMustache}/Rendering/GRMustacheContext_private.h (100%) rename {src/classes => GRMustache}/Rendering/GRMustacheExpressionInvocation.m (100%) rename {src/classes => GRMustache}/Rendering/GRMustacheExpressionInvocation_private.h (100%) rename {src/classes => GRMustache}/Rendering/GRMustacheFilter.h (100%) rename {src/classes => GRMustache}/Rendering/GRMustacheFilter.m (100%) rename {src/classes => GRMustache}/Rendering/GRMustacheFilter_private.h (100%) rename {src/classes => GRMustache}/Rendering/GRMustacheKeyAccess.m (100%) rename {src/classes => GRMustache}/Rendering/GRMustacheKeyAccess_private.h (100%) rename {src/classes => GRMustache}/Rendering/GRMustacheKeyValueCoding.h (100%) rename {src/classes => GRMustache}/Rendering/GRMustacheRendering.h (100%) rename {src/classes => GRMustache}/Rendering/GRMustacheRendering.m (100%) rename {src/classes => GRMustache}/Rendering/GRMustacheRenderingEngine.m (100%) rename {src/classes => GRMustache}/Rendering/GRMustacheRenderingEngine_private.h (100%) rename {src/classes => GRMustache}/Rendering/GRMustacheRendering_private.h (100%) rename {src/classes => GRMustache}/Rendering/GRMustacheTagDelegate.h (100%) rename {src/classes => GRMustache}/Rendering/NSObject+GRMustacheKeyValueCoding.m (100%) rename {src/classes => GRMustache}/Rendering/NSObject+GRMustacheKeyValueCoding_private.h (100%) rename {src/classes => GRMustache}/Services/GRMustacheExpressionGenerator.m (100%) rename {src/classes => GRMustache}/Services/GRMustacheExpressionGenerator_private.h (100%) rename {src/classes => GRMustache}/Services/GRMustacheTemplateGenerator.m (100%) rename {src/classes => GRMustache}/Services/GRMustacheTemplateGenerator_private.h (100%) rename {src/classes => GRMustache}/Services/NSFormatter+GRMustache.h (100%) rename {src/classes => GRMustache}/Services/NSFormatter+GRMustache.m (100%) rename {src/classes => GRMustache}/Services/NSValueTransformer+GRMustache.h (100%) rename {src/classes => GRMustache}/Services/NSValueTransformer+GRMustache.m (100%) rename {src/classes => GRMustache}/Services/StandardLibrary/GRMustacheEachFilter.m (100%) rename {src/classes => GRMustache}/Services/StandardLibrary/GRMustacheEachFilter_private.h (100%) rename {src/classes => GRMustache}/Services/StandardLibrary/GRMustacheHTMLEscapeFilter.m (100%) rename {src/classes => GRMustache}/Services/StandardLibrary/GRMustacheHTMLEscapeFilter_private.h (100%) rename {src/classes => GRMustache}/Services/StandardLibrary/GRMustacheJavascriptEscapeFilter.m (100%) rename {src/classes => GRMustache}/Services/StandardLibrary/GRMustacheJavascriptEscapeFilter_private.h (100%) rename {src/classes => GRMustache}/Services/StandardLibrary/GRMustacheLocalizer.h (100%) rename {src/classes => GRMustache}/Services/StandardLibrary/GRMustacheLocalizer.m (100%) rename {src/classes => GRMustache}/Services/StandardLibrary/GRMustacheURLEscapeFilter.m (100%) rename {src/classes => GRMustache}/Services/StandardLibrary/GRMustacheURLEscapeFilter_private.h (100%) rename {src/classes => GRMustache}/Shared/GRMustacheAvailabilityMacros.h (100%) rename {src/classes => GRMustache}/Shared/GRMustacheAvailabilityMacros_private.h (100%) rename {src/classes => GRMustache}/Shared/GRMustacheBuffer_private.h (100%) rename {src/classes => GRMustache}/Shared/GRMustacheContentType.h (100%) rename {src/classes => GRMustache}/Shared/GRMustacheError.h (100%) rename {src/classes => GRMustache}/Shared/GRMustacheError.m (100%) rename {src/classes => GRMustache}/Shared/GRMustacheTranslateCharacters.m (100%) rename {src/classes => GRMustache}/Shared/GRMustacheTranslateCharacters_private.h (100%) rename {src/classes => GRMustache}/Templates/GRMustacheTemplate.h (100%) rename {src/classes => GRMustache}/Templates/GRMustacheTemplate.m (100%) rename {src/classes => GRMustache}/Templates/GRMustacheTemplateRepository.h (100%) rename {src/classes => GRMustache}/Templates/GRMustacheTemplateRepository.m (100%) rename {src/classes => GRMustache}/Templates/GRMustacheTemplateRepository_private.h (100%) rename {src/classes => GRMustache}/Templates/GRMustacheTemplate_private.h (100%) rename {src/tests => GRMustacheTests}/GRMustacheTestingDelegate.h (100%) rename {src/tests => GRMustacheTests}/GRMustacheTestingDelegate.m (100%) rename {src/tests => GRMustacheTests}/Info.plist (100%) rename {src/tests => GRMustacheTests}/Private/GRMustacheContextPrivateTest.m (100%) rename {src/tests => GRMustacheTests}/Private/GRMustacheExpressionParserTest.m (100%) rename {src/tests => GRMustacheTests}/Private/GRMustachePrivateAPITest.h (100%) rename {src/tests => GRMustacheTests}/Private/GRMustachePrivateAPITest.m (100%) rename {src/tests => GRMustacheTests}/Private/GRMustacheTemplateGeneratorTest.m (100%) rename {src/tests => GRMustacheTests}/Private/GRPreventNSUndefinedKeyExceptionAttackTest.xcdatamodeld/.xccurrentversion (100%) rename {src/tests => GRMustacheTests}/Private/GRPreventNSUndefinedKeyExceptionAttackTest.xcdatamodeld/GRPreventNSUndefinedKeyExceptionAttackTest.xcdatamodel/elements (100%) rename {src/tests => GRMustacheTests}/Private/GRPreventNSUndefinedKeyExceptionAttackTest.xcdatamodeld/GRPreventNSUndefinedKeyExceptionAttackTest.xcdatamodel/layout (100%) rename {src/tests => GRMustacheTests}/Public/GRMustachePublicAPITest.h (100%) rename {src/tests => GRMustacheTests}/Public/GRMustachePublicAPITest.m (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRBooleanTest.m (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationBaseContextTest.m (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationExtendBaseContextTest.m (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationTagDelimitersTest.m (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationTest.m (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheContextTest/GRMustacheContextHasValueForMustacheExpressionTest.m (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheContextTest/GRMustacheContextKeyAccessTest.m (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheContextTest/GRMustacheContextProtectedObjectTest.m (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheContextTest/GRMustacheContextTest.m (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheContextTest/GRMustacheContextTopMustacheObjectTest.m (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheContextTest/GRMustacheContextValueForMustacheKeyTest.m (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheErrorHandlingTest.m (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheFilterTest/GRMustacheFilterTest.m (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheFilterTest/GRMustacheVariadicFilterTest.m (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheFoundationCollectionTest.m (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheParsingErrorsTest.m (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustachePositionFilterTest.m (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheRenderingObjectTest.m (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheServicesTest/GRMustacheEachFilterTest.m (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheServicesTest/GRMustacheLocalizerTest.m (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheServicesTest/GRMustacheLocalizerTestBundle/Localizable.strings (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheServicesTest/GRMustacheLocalizerTestBundle/Table.strings (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheServicesTest/GRMustacheNSFormatterTest.m (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheServicesTest/GRMustacheNSValueTransformerTest.m (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheServicesTest/GRMustacheStandardLibraryTest.m (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTagDelegateTest/GRMustacheTagDelegateTest.m (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTagDelegateTest/GRMustacheTagDelegateTest.mustache (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTagDelegateTest/GRMustacheTagDelegateTest_wrapper.mustache (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryDataSourceTest.m (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest.m (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest/base.mustache (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest/partials/partial1.mustache (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest/partials/partial2.mustache (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file1 (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file1.mustache (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file1.txt (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file2 (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file2.mustache (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file2.txt (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file1 (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file1.mustache (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file1.txt (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file2 (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file2.mustache (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file2.txt (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file1 (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file1.mustache (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file1.txt (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file2 (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file2.mustache (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file2.txt (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file1 (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file1.mustache (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file1.txt (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file2 (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file2.mustache (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file2.txt (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file1 (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file1.mustache (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file1.txt (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file2 (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file2.mustache (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file2.txt (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file1 (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file1.mustache (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file1.txt (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file2 (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file2.mustache (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file2.txt (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBaseURLTest.m (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest.m (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest.mustache (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest.text (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTestResources/partial.mustache (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTestResources/sibling.mustache (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest_partial (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest_partial.mustache (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest_partial.text (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithDictionaryTest.m (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithDirectoryTest.m (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateExtendBaseContextTest.m (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest.json (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest.m (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest.mustache (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest_compilerError.mustache (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest_compilerErrorWrapper.mustache (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest_parserError.mustache (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest_parserErrorWrapper.mustache (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest.json (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest.m (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest.mustache (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateTemplateRepositoryTest.m (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/groue/GRMustache/GRMustacheSuitesTest.m (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/mustache/spec/GRSpecificationSuitesTest.m (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/box.html (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/client.html (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/client.txt (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/div.html (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/follow.html (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/follownomenu.html (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/follownomenu.txt (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/main.html (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/method.html (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/multipleextensions.html (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/multipleextensions.txt (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/nested_inheritance.html (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/nested_inheritance.txt (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/parentreplace.html (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/partialsub.html (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/partialsubpartial.html (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/partialsubpartial.txt (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/partialsuper.html (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recurse_base.html (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial.html (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial2.html (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial3.html (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial_inheritance.html (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial_inheritance.txt (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/replace.html (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/replace.txt (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/singlereplace.html (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/sub.html (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/sub.txt (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblockchild1.html (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblockchild1.txt (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblockchild2.html (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblockchild2.txt (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblocksuper.html (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsub.html (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsub.txt (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild1.html (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild1.txt (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild2.html (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild2.txt (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild3.html (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild3.txt (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubmiddle.html (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubsuper.html (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/super.html (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/template.html (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/tweetbox.html (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuitesTest.m (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/twitter/hogan.js/GRHoganSuites/inheritable_partials.json (100%) rename {src/tests => GRMustacheTests}/Public/v8.0/Suites/twitter/hogan.js/GRHoganSuitesTest.m (100%) delete mode 100644 Guides/helpers.md delete mode 100644 Guides/protected_contexts.md delete mode 100644 Guides/proxies.md delete mode 100644 Guides/runtime/booleans.md delete mode 100644 Guides/runtime/context_stack.md delete mode 100644 Guides/runtime/loops.md delete mode 100644 Guides/runtime_patterns.md delete mode 100644 Guides/sample_code/counters.md delete mode 100644 Guides/sample_code/indexes.md delete mode 100644 Guides/sample_code/localization.md delete mode 100644 Guides/sample_code/number_formatting.md delete mode 100644 Guides/section_helpers.md delete mode 100644 Guides/section_tag_helpers.md delete mode 100644 Guides/variable_helpers.md delete mode 100644 Guides/variable_tag_helpers.md rename {src/bin => Scripts}/buildGRMustacheAvailabilityMacros (98%) diff --git a/Guides/NSFormatter.md b/Documentation/Guides/NSFormatter.md similarity index 100% rename from Guides/NSFormatter.md rename to Documentation/Guides/NSFormatter.md diff --git a/Guides/README.md b/Documentation/Guides/README.md similarity index 100% rename from Guides/README.md rename to Documentation/Guides/README.md diff --git a/Guides/compatibility.md b/Documentation/Guides/compatibility.md similarity index 100% rename from Guides/compatibility.md rename to Documentation/Guides/compatibility.md diff --git a/Guides/configuration.md b/Documentation/Guides/configuration.md similarity index 100% rename from Guides/configuration.md rename to Documentation/Guides/configuration.md diff --git a/Guides/delegate.md b/Documentation/Guides/delegate.md similarity index 100% rename from Guides/delegate.md rename to Documentation/Guides/delegate.md diff --git a/Guides/faq.md b/Documentation/Guides/faq.md similarity index 100% rename from Guides/faq.md rename to Documentation/Guides/faq.md diff --git a/Guides/filters.md b/Documentation/Guides/filters.md similarity index 100% rename from Guides/filters.md rename to Documentation/Guides/filters.md diff --git a/Guides/forking.md b/Documentation/Guides/forking.md similarity index 100% rename from Guides/forking.md rename to Documentation/Guides/forking.md diff --git a/Guides/html_vs_text.md b/Documentation/Guides/html_vs_text.md similarity index 100% rename from Guides/html_vs_text.md rename to Documentation/Guides/html_vs_text.md diff --git a/Guides/installation.md b/Documentation/Guides/installation.md similarity index 100% rename from Guides/installation.md rename to Documentation/Guides/installation.md diff --git a/Guides/introduction.md b/Documentation/Guides/introduction.md similarity index 100% rename from Guides/introduction.md rename to Documentation/Guides/introduction.md diff --git a/Guides/partials.md b/Documentation/Guides/partials.md similarity index 100% rename from Guides/partials.md rename to Documentation/Guides/partials.md diff --git a/Guides/rendering_objects.md b/Documentation/Guides/rendering_objects.md similarity index 100% rename from Guides/rendering_objects.md rename to Documentation/Guides/rendering_objects.md diff --git a/Guides/runtime.md b/Documentation/Guides/runtime.md similarity index 100% rename from Guides/runtime.md rename to Documentation/Guides/runtime.md diff --git a/Guides/security.md b/Documentation/Guides/security.md similarity index 100% rename from Guides/security.md rename to Documentation/Guides/security.md diff --git a/Guides/standard_library.md b/Documentation/Guides/standard_library.md similarity index 100% rename from Guides/standard_library.md rename to Documentation/Guides/standard_library.md diff --git a/Guides/template_inheritance.md b/Documentation/Guides/template_inheritance.md similarity index 100% rename from Guides/template_inheritance.md rename to Documentation/Guides/template_inheritance.md diff --git a/Guides/template_repositories.md b/Documentation/Guides/template_repositories.md similarity index 100% rename from Guides/template_repositories.md rename to Documentation/Guides/template_repositories.md diff --git a/Guides/templates.md b/Documentation/Guides/templates.md similarity index 100% rename from Guides/templates.md rename to Documentation/Guides/templates.md diff --git a/Guides/troubleshooting.md b/Documentation/Guides/troubleshooting.md similarity index 100% rename from Guides/troubleshooting.md rename to Documentation/Guides/troubleshooting.md diff --git a/Guides/upgrading.md b/Documentation/Guides/upgrading.md similarity index 100% rename from Guides/upgrading.md rename to Documentation/Guides/upgrading.md diff --git a/Guides/view_model.md b/Documentation/Guides/view_model.md similarity index 100% rename from Guides/view_model.md rename to Documentation/Guides/view_model.md diff --git a/Reference/html/Categories/NSFormatter+GRMustache.html b/Documentation/Reference/html/Categories/NSFormatter+GRMustache.html similarity index 100% rename from Reference/html/Categories/NSFormatter+GRMustache.html rename to Documentation/Reference/html/Categories/NSFormatter+GRMustache.html diff --git a/Reference/html/Categories/NSValueTransformer+GRMustache.html b/Documentation/Reference/html/Categories/NSValueTransformer+GRMustache.html similarity index 100% rename from Reference/html/Categories/NSValueTransformer+GRMustache.html rename to Documentation/Reference/html/Categories/NSValueTransformer+GRMustache.html diff --git a/Reference/html/Classes/GRMustache.html b/Documentation/Reference/html/Classes/GRMustache.html similarity index 100% rename from Reference/html/Classes/GRMustache.html rename to Documentation/Reference/html/Classes/GRMustache.html diff --git a/Reference/html/Classes/GRMustacheConfiguration.html b/Documentation/Reference/html/Classes/GRMustacheConfiguration.html similarity index 100% rename from Reference/html/Classes/GRMustacheConfiguration.html rename to Documentation/Reference/html/Classes/GRMustacheConfiguration.html diff --git a/Reference/html/Classes/GRMustacheContext.html b/Documentation/Reference/html/Classes/GRMustacheContext.html similarity index 100% rename from Reference/html/Classes/GRMustacheContext.html rename to Documentation/Reference/html/Classes/GRMustacheContext.html diff --git a/Reference/html/Classes/GRMustacheFilter.html b/Documentation/Reference/html/Classes/GRMustacheFilter.html similarity index 100% rename from Reference/html/Classes/GRMustacheFilter.html rename to Documentation/Reference/html/Classes/GRMustacheFilter.html diff --git a/Reference/html/Classes/GRMustacheLocalizer.html b/Documentation/Reference/html/Classes/GRMustacheLocalizer.html similarity index 100% rename from Reference/html/Classes/GRMustacheLocalizer.html rename to Documentation/Reference/html/Classes/GRMustacheLocalizer.html diff --git a/Reference/html/Classes/GRMustacheRendering.html b/Documentation/Reference/html/Classes/GRMustacheRendering.html similarity index 100% rename from Reference/html/Classes/GRMustacheRendering.html rename to Documentation/Reference/html/Classes/GRMustacheRendering.html diff --git a/Reference/html/Classes/GRMustacheTag.html b/Documentation/Reference/html/Classes/GRMustacheTag.html similarity index 100% rename from Reference/html/Classes/GRMustacheTag.html rename to Documentation/Reference/html/Classes/GRMustacheTag.html diff --git a/Reference/html/Classes/GRMustacheTemplate.html b/Documentation/Reference/html/Classes/GRMustacheTemplate.html similarity index 100% rename from Reference/html/Classes/GRMustacheTemplate.html rename to Documentation/Reference/html/Classes/GRMustacheTemplate.html diff --git a/Reference/html/Classes/GRMustacheTemplateRepository.html b/Documentation/Reference/html/Classes/GRMustacheTemplateRepository.html similarity index 100% rename from Reference/html/Classes/GRMustacheTemplateRepository.html rename to Documentation/Reference/html/Classes/GRMustacheTemplateRepository.html diff --git a/Reference/html/Constants/GRMustacheContentType.html b/Documentation/Reference/html/Constants/GRMustacheContentType.html similarity index 100% rename from Reference/html/Constants/GRMustacheContentType.html rename to Documentation/Reference/html/Constants/GRMustacheContentType.html diff --git a/Reference/html/Constants/GRMustacheErrorCode.html b/Documentation/Reference/html/Constants/GRMustacheErrorCode.html similarity index 100% rename from Reference/html/Constants/GRMustacheErrorCode.html rename to Documentation/Reference/html/Constants/GRMustacheErrorCode.html diff --git a/Reference/html/Constants/GRMustacheTagType.html b/Documentation/Reference/html/Constants/GRMustacheTagType.html similarity index 100% rename from Reference/html/Constants/GRMustacheTagType.html rename to Documentation/Reference/html/Constants/GRMustacheTagType.html diff --git a/Reference/html/Protocols/GRMustacheFilter.html b/Documentation/Reference/html/Protocols/GRMustacheFilter.html similarity index 100% rename from Reference/html/Protocols/GRMustacheFilter.html rename to Documentation/Reference/html/Protocols/GRMustacheFilter.html diff --git a/Reference/html/Protocols/GRMustacheRendering.html b/Documentation/Reference/html/Protocols/GRMustacheRendering.html similarity index 100% rename from Reference/html/Protocols/GRMustacheRendering.html rename to Documentation/Reference/html/Protocols/GRMustacheRendering.html diff --git a/Reference/html/Protocols/GRMustacheSafeKeyAccess.html b/Documentation/Reference/html/Protocols/GRMustacheSafeKeyAccess.html similarity index 100% rename from Reference/html/Protocols/GRMustacheSafeKeyAccess.html rename to Documentation/Reference/html/Protocols/GRMustacheSafeKeyAccess.html diff --git a/Reference/html/Protocols/GRMustacheTagDelegate.html b/Documentation/Reference/html/Protocols/GRMustacheTagDelegate.html similarity index 100% rename from Reference/html/Protocols/GRMustacheTagDelegate.html rename to Documentation/Reference/html/Protocols/GRMustacheTagDelegate.html diff --git a/Reference/html/Protocols/GRMustacheTemplateRepositoryDataSource.html b/Documentation/Reference/html/Protocols/GRMustacheTemplateRepositoryDataSource.html similarity index 100% rename from Reference/html/Protocols/GRMustacheTemplateRepositoryDataSource.html rename to Documentation/Reference/html/Protocols/GRMustacheTemplateRepositoryDataSource.html diff --git a/Reference/html/css/styles.css b/Documentation/Reference/html/css/styles.css similarity index 100% rename from Reference/html/css/styles.css rename to Documentation/Reference/html/css/styles.css diff --git a/Reference/html/css/stylesPrint.css b/Documentation/Reference/html/css/stylesPrint.css similarity index 100% rename from Reference/html/css/stylesPrint.css rename to Documentation/Reference/html/css/stylesPrint.css diff --git a/Reference/html/hierarchy.html b/Documentation/Reference/html/hierarchy.html similarity index 100% rename from Reference/html/hierarchy.html rename to Documentation/Reference/html/hierarchy.html diff --git a/Reference/html/img/button_bar_background.png b/Documentation/Reference/html/img/button_bar_background.png similarity index 100% rename from Reference/html/img/button_bar_background.png rename to Documentation/Reference/html/img/button_bar_background.png diff --git a/Reference/html/img/disclosure.png b/Documentation/Reference/html/img/disclosure.png similarity index 100% rename from Reference/html/img/disclosure.png rename to Documentation/Reference/html/img/disclosure.png diff --git a/Reference/html/img/disclosure_open.png b/Documentation/Reference/html/img/disclosure_open.png similarity index 100% rename from Reference/html/img/disclosure_open.png rename to Documentation/Reference/html/img/disclosure_open.png diff --git a/Reference/html/img/library_background.png b/Documentation/Reference/html/img/library_background.png similarity index 100% rename from Reference/html/img/library_background.png rename to Documentation/Reference/html/img/library_background.png diff --git a/Reference/html/img/title_background.png b/Documentation/Reference/html/img/title_background.png similarity index 100% rename from Reference/html/img/title_background.png rename to Documentation/Reference/html/img/title_background.png diff --git a/Reference/html/index.html b/Documentation/Reference/html/index.html similarity index 100% rename from Reference/html/index.html rename to Documentation/Reference/html/index.html diff --git a/src/GRMustache.xcodeproj/project.pbxproj b/GRMustache.xcodeproj/project.pbxproj similarity index 98% rename from src/GRMustache.xcodeproj/project.pbxproj rename to GRMustache.xcodeproj/project.pbxproj index d9bcbd40..e735ed1c 100644 --- a/src/GRMustache.xcodeproj/project.pbxproj +++ b/GRMustache.xcodeproj/project.pbxproj @@ -139,8 +139,6 @@ 56214C211BA1A5AB0070C6CF /* GRMustacheTemplateRepositoryTest in Resources */ = {isa = PBXBuildFile; fileRef = 568140DD16365CF500310B7F /* GRMustacheTemplateRepositoryTest */; settings = {ASSET_TAGS = (); }; }; 56214C221BA1A5AB0070C6CF /* GRMustacheTemplateRepositoryTest_ISOLatin1 in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4951528486900ADD123 /* GRMustacheTemplateRepositoryTest_ISOLatin1 */; settings = {ASSET_TAGS = (); }; }; 56214C231BA1A5AB0070C6CF /* GRMustacheTemplateRepositoryTest_UTF8 in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4961528486A00ADD123 /* GRMustacheTemplateRepositoryTest_UTF8 */; settings = {ASSET_TAGS = (); }; }; - 56214C2C1BA1A6870070C6CF /* GRMustache.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DEC292152631300031E8DC /* GRMustache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56214C2F1BA1A6A70070C6CF /* GRMustache_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DEC294152631300031E8DC /* GRMustache_private.h */; }; 56214C301BA1A6AD0070C6CF /* GRMustacheTranslateCharacters_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375D19B8EF2800854524 /* GRMustacheTranslateCharacters_private.h */; settings = {ASSET_TAGS = (); }; }; 56214C331BA1A6B50070C6CF /* GRMustacheError.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375A19B8EF2800854524 /* GRMustacheError.h */; settings = {ATTRIBUTES = (Public, ); }; }; 56214C341BA1A6BA0070C6CF /* GRMustacheContentType.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375919B8EF2800854524 /* GRMustacheContentType.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -185,7 +183,6 @@ 56214C801BA1A6F20070C6CF /* GRMustacheURLEscapeFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372F19B8EEC700854524 /* GRMustacheURLEscapeFilter.m */; settings = {ASSET_TAGS = (); }; }; 56214C811BA1A6F20070C6CF /* GRMustacheError.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF375B19B8EF2800854524 /* GRMustacheError.m */; settings = {ASSET_TAGS = (); }; }; 56214C821BA1A6F20070C6CF /* GRMustacheTranslateCharacters.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF375C19B8EF2800854524 /* GRMustacheTranslateCharacters.m */; settings = {ASSET_TAGS = (); }; }; - 56214C831BA1A6F20070C6CF /* GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC293152631300031E8DC /* GRMustache.m */; settings = {ASSET_TAGS = (); }; }; 56214C841BA1A70D0070C6CF /* GRMustacheConfiguration_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF365919B8EE7A00854524 /* GRMustacheConfiguration_private.h */; settings = {ASSET_TAGS = (); }; }; 56214C851BA1A70D0070C6CF /* GRMustacheExpressionParser_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF366219B8EE8B00854524 /* GRMustacheExpressionParser_private.h */; settings = {ASSET_TAGS = (); }; }; 56214C861BA1A70D0070C6CF /* GRMustacheTemplateParser_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF366419B8EE8B00854524 /* GRMustacheTemplateParser_private.h */; settings = {ASSET_TAGS = (); }; }; @@ -274,7 +271,6 @@ 56AC8CC71BA1F69B009E4319 /* GRMustacheURLEscapeFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372F19B8EEC700854524 /* GRMustacheURLEscapeFilter.m */; settings = {ASSET_TAGS = (); }; }; 56AC8CC81BA1F69B009E4319 /* GRMustacheError.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF375B19B8EF2800854524 /* GRMustacheError.m */; settings = {ASSET_TAGS = (); }; }; 56AC8CC91BA1F69B009E4319 /* GRMustacheTranslateCharacters.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF375C19B8EF2800854524 /* GRMustacheTranslateCharacters.m */; settings = {ASSET_TAGS = (); }; }; - 56AC8CCA1BA1F69B009E4319 /* GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC293152631300031E8DC /* GRMustache.m */; settings = {ASSET_TAGS = (); }; }; 56DAC7131BB69DAC0010FE01 /* GRMustacheTestingDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DAC7111BB69DAC0010FE01 /* GRMustacheTestingDelegate.m */; settings = {ASSET_TAGS = (); }; }; 56DAC7141BB69F160010FE01 /* GRMustacheTestingDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DAC7111BB69DAC0010FE01 /* GRMustacheTestingDelegate.m */; settings = {ASSET_TAGS = (); }; }; 56DAC7151BB69F170010FE01 /* GRMustacheTestingDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DAC7111BB69DAC0010FE01 /* GRMustacheTestingDelegate.m */; settings = {ASSET_TAGS = (); }; }; @@ -345,7 +341,6 @@ 56DAC7911BB6A0040010FE01 /* GRMustacheURLEscapeFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372F19B8EEC700854524 /* GRMustacheURLEscapeFilter.m */; }; 56DAC7921BB6A0040010FE01 /* GRMustacheError.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF375B19B8EF2800854524 /* GRMustacheError.m */; }; 56DAC7931BB6A0040010FE01 /* GRMustacheTranslateCharacters.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF375C19B8EF2800854524 /* GRMustacheTranslateCharacters.m */; }; - 56DAC7941BB6A0040010FE01 /* GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC293152631300031E8DC /* GRMustache.m */; }; 56DAC7961BB6A7DC0010FE01 /* GRMustacheEachFilterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DAC7951BB6A7DC0010FE01 /* GRMustacheEachFilterTest.m */; settings = {ASSET_TAGS = (); }; }; 56DAC7971BB6A7DC0010FE01 /* GRMustacheEachFilterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DAC7951BB6A7DC0010FE01 /* GRMustacheEachFilterTest.m */; settings = {ASSET_TAGS = (); }; }; 56DAC7A41BB6C8DD0010FE01 /* GRMustacheKeyValueCoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DAC7A21BB6C8DD0010FE01 /* GRMustacheKeyValueCoding.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -356,9 +351,14 @@ 56DAC7AF1BB6C9040010FE01 /* NSObject+GRMustacheKeyValueCoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DAC7AB1BB6C9040010FE01 /* NSObject+GRMustacheKeyValueCoding.m */; settings = {ASSET_TAGS = (); }; }; 56DAC7B01BB6C9040010FE01 /* NSObject+GRMustacheKeyValueCoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DAC7AB1BB6C9040010FE01 /* NSObject+GRMustacheKeyValueCoding.m */; settings = {ASSET_TAGS = (); }; }; 56DAC7B11BB6C9040010FE01 /* NSObject+GRMustacheKeyValueCoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DAC7AB1BB6C9040010FE01 /* NSObject+GRMustacheKeyValueCoding.m */; settings = {ASSET_TAGS = (); }; }; - 6586A0651B9E2DAD0067C98E /* GRMustache.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DEC292152631300031E8DC /* GRMustache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6586A0661B9E2DB30067C98E /* GRMustache_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DEC294152631300031E8DC /* GRMustache_private.h */; settings = {ASSET_TAGS = (); }; }; - 6586A0671B9E2DB90067C98E /* GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC293152631300031E8DC /* GRMustache.m */; }; + 56DAC7B51BB6DDAB0010FE01 /* GRMustache_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DAC7B21BB6DDAB0010FE01 /* GRMustache_private.h */; settings = {ASSET_TAGS = (); }; }; + 56DAC7B61BB6DDAB0010FE01 /* GRMustache_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DAC7B21BB6DDAB0010FE01 /* GRMustache_private.h */; settings = {ASSET_TAGS = (); }; }; + 56DAC7B71BB6DDAB0010FE01 /* GRMustache.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DAC7B31BB6DDAB0010FE01 /* GRMustache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 56DAC7B81BB6DDAB0010FE01 /* GRMustache.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DAC7B31BB6DDAB0010FE01 /* GRMustache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 56DAC7B91BB6DDAB0010FE01 /* GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DAC7B41BB6DDAB0010FE01 /* GRMustache.m */; settings = {ASSET_TAGS = (); }; }; + 56DAC7BA1BB6DDAB0010FE01 /* GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DAC7B41BB6DDAB0010FE01 /* GRMustache.m */; settings = {ASSET_TAGS = (); }; }; + 56DAC7BB1BB6DDAB0010FE01 /* GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DAC7B41BB6DDAB0010FE01 /* GRMustache.m */; settings = {ASSET_TAGS = (); }; }; + 56DAC7BC1BB6DDAB0010FE01 /* GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DAC7B41BB6DDAB0010FE01 /* GRMustache.m */; settings = {ASSET_TAGS = (); }; }; 6586A0691B9E2E100067C98E /* GRMustacheAvailabilityMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375619B8EF2800854524 /* GRMustacheAvailabilityMacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; 6586A06A1B9E2E100067C98E /* GRMustacheAvailabilityMacros_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375719B8EF2800854524 /* GRMustacheAvailabilityMacros_private.h */; settings = {ASSET_TAGS = (); }; }; 6586A06B1B9E2E100067C98E /* GRMustacheBuffer_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375819B8EF2800854524 /* GRMustacheBuffer_private.h */; settings = {ASSET_TAGS = (); }; }; @@ -479,9 +479,9 @@ 563D66E81526497E008628C5 /* GRMustacheSuitesTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheSuitesTest.m; sourceTree = ""; }; 563D66EC152649DF008628C5 /* GRMustacheContextPrivateTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheContextPrivateTest.m; sourceTree = ""; }; 563D66EE152649DF008628C5 /* GRMustacheExpressionParserTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheExpressionParserTest.m; sourceTree = ""; }; - 563D66F315264B40008628C5 /* Tests */ = {isa = PBXFileReference; lastKnownFileType = folder; name = Tests; path = tests/vendor/groue/GRMustacheSpec/Tests; sourceTree = SOURCE_ROOT; }; + 563D66F315264B40008628C5 /* Tests */ = {isa = PBXFileReference; lastKnownFileType = folder; name = Tests; path = GRMustacheTests/vendor/groue/GRMustacheSpec/Tests; sourceTree = SOURCE_ROOT; }; 5648F1B618998BC5001F4B83 /* GRMustacheTemplateRepositoryTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheTemplateRepositoryTest.m; sourceTree = ""; }; - 5662BA3E15A05268001FD2CA /* AppledocSettings.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = AppledocSettings.plist; path = ../AppledocSettings.plist; sourceTree = ""; }; + 5662BA3E15A05268001FD2CA /* AppledocSettings.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = AppledocSettings.plist; sourceTree = ""; }; 568140D7163659CB00310B7F /* GRMustacheRenderingObjectTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheRenderingObjectTest.m; sourceTree = ""; }; 568140DD16365CF500310B7F /* GRMustacheTemplateRepositoryTest */ = {isa = PBXFileReference; lastKnownFileType = folder; path = GRMustacheTemplateRepositoryTest; sourceTree = ""; }; 568140E016365D3000310B7F /* GRMustacheTemplateRepositoryWithBaseURLTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheTemplateRepositoryWithBaseURLTest.m; sourceTree = ""; }; @@ -530,7 +530,7 @@ 56B4779918CF8D3300EFF629 /* GRHoganSuites */ = {isa = PBXFileReference; lastKnownFileType = folder; path = GRHoganSuites; sourceTree = ""; }; 56B477A018CF9F6100EFF629 /* GRMustacheJavaSuitesTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheJavaSuitesTest.m; sourceTree = ""; }; 56B477A318CF9F6E00EFF629 /* GRMustacheJavaSuites */ = {isa = PBXFileReference; lastKnownFileType = folder; path = GRMustacheJavaSuites; sourceTree = ""; }; - 56B477A618D0E41A00EFF629 /* specs */ = {isa = PBXFileReference; lastKnownFileType = folder; name = specs; path = tests/vendor/mustache/spec/specs; sourceTree = SOURCE_ROOT; }; + 56B477A618D0E41A00EFF629 /* specs */ = {isa = PBXFileReference; lastKnownFileType = folder; name = specs; path = GRMustacheTests/vendor/mustache/spec/specs; sourceTree = SOURCE_ROOT; }; 56BA242518C7A494006DA5F3 /* GRMustacheErrorHandlingTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheErrorHandlingTest.m; sourceTree = ""; }; 56BA243518C7A550006DA5F3 /* GRMustacheConfigurationBaseContextTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheConfigurationBaseContextTest.m; sourceTree = ""; }; 56BA243618C7A550006DA5F3 /* GRMustacheConfigurationTagDelimitersTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheConfigurationTagDelimitersTest.m; sourceTree = ""; }; @@ -644,19 +644,19 @@ 56DAC7A21BB6C8DD0010FE01 /* GRMustacheKeyValueCoding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustacheKeyValueCoding.h; sourceTree = ""; }; 56DAC7AA1BB6C9040010FE01 /* NSObject+GRMustacheKeyValueCoding_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSObject+GRMustacheKeyValueCoding_private.h"; sourceTree = ""; }; 56DAC7AB1BB6C9040010FE01 /* NSObject+GRMustacheKeyValueCoding.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSObject+GRMustacheKeyValueCoding.m"; sourceTree = ""; }; + 56DAC7B21BB6DDAB0010FE01 /* GRMustache_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustache_private.h; sourceTree = ""; }; + 56DAC7B31BB6DDAB0010FE01 /* GRMustache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustache.h; sourceTree = ""; }; + 56DAC7B41BB6DDAB0010FE01 /* GRMustache.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustache.m; sourceTree = ""; }; 56DEC1CB15262FF70031E8DC /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; 56DEC1F4152630710031E8DC /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; - 56DEC292152631300031E8DC /* GRMustache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustache.h; sourceTree = ""; }; - 56DEC293152631300031E8DC /* GRMustache.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustache.m; sourceTree = ""; }; - 56DEC294152631300031E8DC /* GRMustache_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustache_private.h; sourceTree = ""; }; 56DEC3AF152638E20031E8DC /* GRMustachePrivateAPITest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustachePrivateAPITest.h; sourceTree = ""; }; 56DEC3B0152638E20031E8DC /* GRMustachePrivateAPITest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustachePrivateAPITest.m; sourceTree = ""; }; 56DEC3B1152638E20031E8DC /* GRMustachePublicAPITest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustachePublicAPITest.h; sourceTree = ""; }; 56DEC3B2152638E20031E8DC /* GRMustachePublicAPITest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustachePublicAPITest.m; sourceTree = ""; }; 56DEC3BF152639560031E8DC /* GRSpecificationSuitesTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRSpecificationSuitesTest.m; sourceTree = ""; }; - 56E2F2E616BA49A500F01DC2 /* TODO.md */ = {isa = PBXFileReference; lastKnownFileType = text; name = TODO.md; path = ../TODO.md; sourceTree = ""; }; + 56E2F2E616BA49A500F01DC2 /* TODO.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = TODO.md; sourceTree = ""; }; 6586A05D1B9E2D720067C98E /* GRMustache.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = GRMustache.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 6586A0C71B9E2F070067C98E /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = GRMustache/Info.plist; sourceTree = ""; }; + 6586A0C71B9E2F070067C98E /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -711,10 +711,19 @@ isa = PBXGroup; children = ( 6586A0C71B9E2F070067C98E /* Info.plist */, - 56DEC291152631300031E8DC /* classes */, + 56DAC7B21BB6DDAB0010FE01 /* GRMustache_private.h */, + 56DAC7B31BB6DDAB0010FE01 /* GRMustache.h */, + 56DAC7B41BB6DDAB0010FE01 /* GRMustache.m */, + 56BF365619B8EE7A00854524 /* Configuration */, + 56BF366019B8EE8B00854524 /* Parsing */, + 56BF367319B8EE9D00854524 /* Compiling */, + 56BF36D619B8EEAD00854524 /* Rendering */, + 56BF370A19B8EEB900854524 /* Templates */, + 56BF371D19B8EEC700854524 /* Services */, + 56BF375519B8EF2800854524 /* Shared */, 5682B4C21528DF6900ADD123 /* Frameworks */, ); - name = GRMustache; + path = GRMustache; sourceTree = ""; }; 5682B47A1528392300ADD123 /* groue/GRMustache */ = { @@ -1124,23 +1133,6 @@ name = Frameworks; sourceTree = ""; }; - 56DEC291152631300031E8DC /* classes */ = { - isa = PBXGroup; - children = ( - 56BF365619B8EE7A00854524 /* Configuration */, - 56BF366019B8EE8B00854524 /* Parsing */, - 56BF367319B8EE9D00854524 /* Compiling */, - 56BF36D619B8EEAD00854524 /* Rendering */, - 56BF370A19B8EEB900854524 /* Templates */, - 56BF371D19B8EEC700854524 /* Services */, - 56BF375519B8EF2800854524 /* Shared */, - 56DEC292152631300031E8DC /* GRMustache.h */, - 56DEC294152631300031E8DC /* GRMustache_private.h */, - 56DEC293152631300031E8DC /* GRMustache.m */, - ); - path = classes; - sourceTree = ""; - }; 56DEC34A152636000031E8DC /* vendor */ = { isa = PBXGroup; children = ( @@ -1161,7 +1153,7 @@ 56DEC1A815262FC90031E8DC /* Frameworks */, ); name = Tests; - path = tests; + path = GRMustacheTests; sourceTree = ""; }; 56DEC3BB152638FB0031E8DC /* Private */ = { @@ -1223,13 +1215,14 @@ 56214C991BA1A70D0070C6CF /* GRMustacheContext_private.h in Headers */, 56214C301BA1A6AD0070C6CF /* GRMustacheTranslateCharacters_private.h in Headers */, 56214C361BA1A6C20070C6CF /* GRMustacheAvailabilityMacros_private.h in Headers */, - 56214C2F1BA1A6A70070C6CF /* GRMustache_private.h in Headers */, + 56DAC7B71BB6DDAB0010FE01 /* GRMustache.h in Headers */, 56214CB01BA1A7490070C6CF /* NSFormatter+GRMustache.h in Headers */, 56214CA31BA1A70D0070C6CF /* GRMustacheEachFilter_private.h in Headers */, 56214C961BA1A70D0070C6CF /* GRMustacheTemplateASTVisitor_private.h in Headers */, 56214CA71BA1A7240070C6CF /* GRMustacheConfiguration.h in Headers */, 56214C351BA1A6BE0070C6CF /* GRMustacheBuffer_private.h in Headers */, 56214CAF1BA1A7490070C6CF /* GRMustacheTemplateRepository.h in Headers */, + 56DAC7B51BB6DDAB0010FE01 /* GRMustache_private.h in Headers */, 56214C951BA1A70D0070C6CF /* GRMustacheTemplateASTNode_private.h in Headers */, 56214C371BA1A6C50070C6CF /* GRMustacheAvailabilityMacros.h in Headers */, 56214C341BA1A6BA0070C6CF /* GRMustacheContentType.h in Headers */, @@ -1256,7 +1249,6 @@ 56214C9B1BA1A70D0070C6CF /* GRMustacheFilter_private.h in Headers */, 56214CAD1BA1A7490070C6CF /* GRMustacheTagDelegate.h in Headers */, 56214CA41BA1A70D0070C6CF /* GRMustacheHTMLEscapeFilter_private.h in Headers */, - 56214C2C1BA1A6870070C6CF /* GRMustache.h in Headers */, 56214C9D1BA1A70D0070C6CF /* GRMustacheRendering_private.h in Headers */, 56214C871BA1A70D0070C6CF /* GRMustacheToken_private.h in Headers */, 56214C971BA1A70D0070C6CF /* GRMustacheTextNode_private.h in Headers */, @@ -1277,7 +1269,6 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 6586A0651B9E2DAD0067C98E /* GRMustache.h in Headers */, 6586A0971B9E2E4F0067C98E /* GRMustacheRendering_private.h in Headers */, 6586A0B01B9E2E5B0067C98E /* GRMustacheVariableTag_private.h in Headers */, 6586A08B1B9E2E4F0067C98E /* GRMustacheContext.h in Headers */, @@ -1286,13 +1277,14 @@ 6586A0901B9E2E4F0067C98E /* GRMustacheFilter.h in Headers */, 6586A0B31B9E2E600067C98E /* GRMustacheExpressionVisitor_private.h in Headers */, 6586A0AE1B9E2E5B0067C98E /* GRMustacheTextNode_private.h in Headers */, + 56DAC7B81BB6DDAB0010FE01 /* GRMustache.h in Headers */, 6586A0C41B9E2E6A0067C98E /* GRMustacheConfiguration_private.h in Headers */, - 6586A0661B9E2DB30067C98E /* GRMustache_private.h in Headers */, 6586A0951B9E2E4F0067C98E /* GRMustacheRendering.h in Headers */, 6586A07E1B9E2E360067C98E /* GRMustacheJavascriptEscapeFilter_private.h in Headers */, 6586A0BD1B9E2E660067C98E /* GRMustacheExpressionParser_private.h in Headers */, 6586A0941B9E2E4F0067C98E /* GRMustacheKeyAccess_private.h in Headers */, 6586A0991B9E2E4F0067C98E /* GRMustacheRenderingEngine_private.h in Headers */, + 56DAC7B61BB6DDAB0010FE01 /* GRMustache_private.h in Headers */, 6586A0871B9E2E4A0067C98E /* GRMustacheTemplate_private.h in Headers */, 6586A08F1B9E2E4F0067C98E /* GRMustacheExpressionInvocation_private.h in Headers */, 6586A08D1B9E2E4F0067C98E /* GRMustacheContext_private.h in Headers */, @@ -1624,6 +1616,7 @@ files = ( 56214C721BA1A6F20070C6CF /* GRMustacheKeyAccess.m in Sources */, 56214C821BA1A6F20070C6CF /* GRMustacheTranslateCharacters.m in Sources */, + 56DAC7B91BB6DDAB0010FE01 /* GRMustache.m in Sources */, 56214C671BA1A6F20070C6CF /* GRMustacheInheritedPartialNode.m in Sources */, 56214C6B1BA1A6F20070C6CF /* GRMustacheTag.m in Sources */, 56214C621BA1A6F20070C6CF /* GRMustacheExpression.m in Sources */, @@ -1652,7 +1645,6 @@ 56214C6C1BA1A6F20070C6CF /* GRMustacheTemplateAST.m in Sources */, 56214C5D1BA1A6F20070C6CF /* GRMustacheConfiguration.m in Sources */, 56214C611BA1A6F20070C6CF /* GRMustacheCompiler.m in Sources */, - 56214C831BA1A6F20070C6CF /* GRMustache.m in Sources */, 56214C6F1BA1A6F20070C6CF /* GRMustacheContext.m in Sources */, 56214C631BA1A6F20070C6CF /* GRMustacheFilteredExpression.m in Sources */, 56214C681BA1A6F20070C6CF /* GRMustacheInheritableSectionNode.m in Sources */, @@ -1772,7 +1764,6 @@ 56AC8CC41BA1F69B009E4319 /* GRMustacheJavascriptEscapeFilter.m in Sources */, 56AC8CB91BA1F69B009E4319 /* GRMustacheKeyAccess.m in Sources */, 56AC8CB61BA1F69B009E4319 /* GRMustacheContext.m in Sources */, - 56AC8CCA1BA1F69B009E4319 /* GRMustache.m in Sources */, 56AC8CB11BA1F69B009E4319 /* GRMustacheSectionTag.m in Sources */, 56AC8CC21BA1F69B009E4319 /* GRMustacheEachFilter.m in Sources */, 56AC8CAC1BA1F69B009E4319 /* GRMustacheImplicitIteratorExpression.m in Sources */, @@ -1806,6 +1797,7 @@ 56AC8CC01BA1F69B009E4319 /* NSFormatter+GRMustache.m in Sources */, 56AC8CBE1BA1F69B009E4319 /* GRMustacheExpressionGenerator.m in Sources */, 56AC8CA21BA1F67D009E4319 /* GRMustacheExpressionParserTest.m in Sources */, + 56DAC7BA1BB6DDAB0010FE01 /* GRMustache.m in Sources */, 56AC8CC51BA1F69B009E4319 /* GRMustacheLocalizer.m in Sources */, 56AC8CC11BA1F69B009E4319 /* NSValueTransformer+GRMustache.m in Sources */, ); @@ -1833,6 +1825,7 @@ 56DAC77C1BB6A0040010FE01 /* GRMustacheTag.m in Sources */, 56DAC77D1BB6A0040010FE01 /* GRMustacheTemplateAST.m in Sources */, 56DAC77E1BB6A0040010FE01 /* GRMustacheTextNode.m in Sources */, + 56DAC7BC1BB6DDAB0010FE01 /* GRMustache.m in Sources */, 56DAC77F1BB6A0040010FE01 /* GRMustacheVariableTag.m in Sources */, 56DAC7801BB6A0040010FE01 /* GRMustacheContext.m in Sources */, 56DAC7811BB6A0040010FE01 /* GRMustacheExpressionInvocation.m in Sources */, @@ -1853,7 +1846,6 @@ 56DAC7911BB6A0040010FE01 /* GRMustacheURLEscapeFilter.m in Sources */, 56DAC7921BB6A0040010FE01 /* GRMustacheError.m in Sources */, 56DAC7931BB6A0040010FE01 /* GRMustacheTranslateCharacters.m in Sources */, - 56DAC7941BB6A0040010FE01 /* GRMustache.m in Sources */, 56DAC76A1BB69FC40010FE01 /* GRMustachePrivateAPITest.m in Sources */, 56DAC76B1BB69FC40010FE01 /* GRMustacheContextPrivateTest.m in Sources */, 56DAC76C1BB69FC40010FE01 /* GRMustacheExpressionParserTest.m in Sources */, @@ -1867,6 +1859,7 @@ files = ( 6586A0781B9E2E310067C98E /* NSValueTransformer+GRMustache.m in Sources */, 6586A0961B9E2E4F0067C98E /* GRMustacheRendering.m in Sources */, + 56DAC7BB1BB6DDAB0010FE01 /* GRMustache.m in Sources */, 6586A0891B9E2E4A0067C98E /* GRMustacheTemplateRepository.m in Sources */, 6586A0831B9E2E360067C98E /* GRMustacheURLEscapeFilter.m in Sources */, 6586A0761B9E2E310067C98E /* NSFormatter+GRMustache.m in Sources */, @@ -1895,7 +1888,6 @@ 6586A0931B9E2E4F0067C98E /* GRMustacheKeyAccess.m in Sources */, 6586A06F1B9E2E100067C98E /* GRMustacheTranslateCharacters.m in Sources */, 6586A08E1B9E2E4F0067C98E /* GRMustacheExpressionInvocation.m in Sources */, - 6586A0671B9E2DB90067C98E /* GRMustache.m in Sources */, 6586A0C31B9E2E6A0067C98E /* GRMustacheConfiguration.m in Sources */, 6586A0C01B9E2E660067C98E /* GRMustacheToken.m in Sources */, 6586A0911B9E2E4F0067C98E /* GRMustacheFilter.m in Sources */, @@ -2002,7 +1994,7 @@ DEBUG_INFORMATION_FORMAT = dwarf; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = tests/Info.plist; + INFOPLIST_FILE = GRMustacheTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MTL_ENABLE_DEBUG_INFO = YES; @@ -2025,7 +2017,7 @@ ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = tests/Info.plist; + INFOPLIST_FILE = GRMustacheTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MTL_ENABLE_DEBUG_INFO = NO; @@ -2049,7 +2041,7 @@ DEBUG_INFORMATION_FORMAT = dwarf; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = tests/Info.plist; + INFOPLIST_FILE = GRMustacheTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; MACOSX_DEPLOYMENT_TARGET = 10.10; MTL_ENABLE_DEBUG_INFO = YES; @@ -2072,7 +2064,7 @@ ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = tests/Info.plist; + INFOPLIST_FILE = GRMustacheTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; MACOSX_DEPLOYMENT_TARGET = 10.10; MTL_ENABLE_DEBUG_INFO = NO; @@ -2092,7 +2084,7 @@ DEBUG_INFORMATION_FORMAT = dwarf; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = tests/Info.plist; + INFOPLIST_FILE = GRMustacheTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; MACOSX_DEPLOYMENT_TARGET = 10.10; MTL_ENABLE_DEBUG_INFO = YES; @@ -2113,7 +2105,7 @@ ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = tests/Info.plist; + INFOPLIST_FILE = GRMustacheTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; MACOSX_DEPLOYMENT_TARGET = 10.10; MTL_ENABLE_DEBUG_INFO = NO; @@ -2134,7 +2126,7 @@ DEBUG_INFORMATION_FORMAT = dwarf; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = tests/Info.plist; + INFOPLIST_FILE = GRMustacheTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MTL_ENABLE_DEBUG_INFO = YES; @@ -2157,7 +2149,7 @@ ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = tests/Info.plist; + INFOPLIST_FILE = GRMustacheTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MTL_ENABLE_DEBUG_INFO = NO; diff --git a/src/GRMustache.xcodeproj/xcshareddata/xcschemes/GRMustacheOSX (Shared).xcscheme b/GRMustache.xcodeproj/xcshareddata/xcschemes/GRMustacheOSX (Shared).xcscheme similarity index 100% rename from src/GRMustache.xcodeproj/xcshareddata/xcschemes/GRMustacheOSX (Shared).xcscheme rename to GRMustache.xcodeproj/xcshareddata/xcschemes/GRMustacheOSX (Shared).xcscheme diff --git a/src/GRMustache.xcodeproj/xcshareddata/xcschemes/GRMustacheiOS (Shared).xcscheme b/GRMustache.xcodeproj/xcshareddata/xcschemes/GRMustacheiOS (Shared).xcscheme similarity index 100% rename from src/GRMustache.xcodeproj/xcshareddata/xcschemes/GRMustacheiOS (Shared).xcscheme rename to GRMustache.xcodeproj/xcshareddata/xcschemes/GRMustacheiOS (Shared).xcscheme diff --git a/src/classes/Compiling/Expressions/GRMustacheExpression.m b/GRMustache/Compiling/Expressions/GRMustacheExpression.m similarity index 100% rename from src/classes/Compiling/Expressions/GRMustacheExpression.m rename to GRMustache/Compiling/Expressions/GRMustacheExpression.m diff --git a/src/classes/Compiling/Expressions/GRMustacheExpressionVisitor_private.h b/GRMustache/Compiling/Expressions/GRMustacheExpressionVisitor_private.h similarity index 100% rename from src/classes/Compiling/Expressions/GRMustacheExpressionVisitor_private.h rename to GRMustache/Compiling/Expressions/GRMustacheExpressionVisitor_private.h diff --git a/src/classes/Compiling/Expressions/GRMustacheExpression_private.h b/GRMustache/Compiling/Expressions/GRMustacheExpression_private.h similarity index 100% rename from src/classes/Compiling/Expressions/GRMustacheExpression_private.h rename to GRMustache/Compiling/Expressions/GRMustacheExpression_private.h diff --git a/src/classes/Compiling/Expressions/GRMustacheFilteredExpression.m b/GRMustache/Compiling/Expressions/GRMustacheFilteredExpression.m similarity index 100% rename from src/classes/Compiling/Expressions/GRMustacheFilteredExpression.m rename to GRMustache/Compiling/Expressions/GRMustacheFilteredExpression.m diff --git a/src/classes/Compiling/Expressions/GRMustacheFilteredExpression_private.h b/GRMustache/Compiling/Expressions/GRMustacheFilteredExpression_private.h similarity index 100% rename from src/classes/Compiling/Expressions/GRMustacheFilteredExpression_private.h rename to GRMustache/Compiling/Expressions/GRMustacheFilteredExpression_private.h diff --git a/src/classes/Compiling/Expressions/GRMustacheIdentifierExpression.m b/GRMustache/Compiling/Expressions/GRMustacheIdentifierExpression.m similarity index 100% rename from src/classes/Compiling/Expressions/GRMustacheIdentifierExpression.m rename to GRMustache/Compiling/Expressions/GRMustacheIdentifierExpression.m diff --git a/src/classes/Compiling/Expressions/GRMustacheIdentifierExpression_private.h b/GRMustache/Compiling/Expressions/GRMustacheIdentifierExpression_private.h similarity index 100% rename from src/classes/Compiling/Expressions/GRMustacheIdentifierExpression_private.h rename to GRMustache/Compiling/Expressions/GRMustacheIdentifierExpression_private.h diff --git a/src/classes/Compiling/Expressions/GRMustacheImplicitIteratorExpression.m b/GRMustache/Compiling/Expressions/GRMustacheImplicitIteratorExpression.m similarity index 100% rename from src/classes/Compiling/Expressions/GRMustacheImplicitIteratorExpression.m rename to GRMustache/Compiling/Expressions/GRMustacheImplicitIteratorExpression.m diff --git a/src/classes/Compiling/Expressions/GRMustacheImplicitIteratorExpression_private.h b/GRMustache/Compiling/Expressions/GRMustacheImplicitIteratorExpression_private.h similarity index 100% rename from src/classes/Compiling/Expressions/GRMustacheImplicitIteratorExpression_private.h rename to GRMustache/Compiling/Expressions/GRMustacheImplicitIteratorExpression_private.h diff --git a/src/classes/Compiling/Expressions/GRMustacheScopedExpression.m b/GRMustache/Compiling/Expressions/GRMustacheScopedExpression.m similarity index 100% rename from src/classes/Compiling/Expressions/GRMustacheScopedExpression.m rename to GRMustache/Compiling/Expressions/GRMustacheScopedExpression.m diff --git a/src/classes/Compiling/Expressions/GRMustacheScopedExpression_private.h b/GRMustache/Compiling/Expressions/GRMustacheScopedExpression_private.h similarity index 100% rename from src/classes/Compiling/Expressions/GRMustacheScopedExpression_private.h rename to GRMustache/Compiling/Expressions/GRMustacheScopedExpression_private.h diff --git a/src/classes/Compiling/GRMustacheCompiler.m b/GRMustache/Compiling/GRMustacheCompiler.m similarity index 100% rename from src/classes/Compiling/GRMustacheCompiler.m rename to GRMustache/Compiling/GRMustacheCompiler.m diff --git a/src/classes/Compiling/GRMustacheCompiler_private.h b/GRMustache/Compiling/GRMustacheCompiler_private.h similarity index 100% rename from src/classes/Compiling/GRMustacheCompiler_private.h rename to GRMustache/Compiling/GRMustacheCompiler_private.h diff --git a/src/classes/Compiling/TemplateAST/GRMustacheInheritableSectionNode.m b/GRMustache/Compiling/TemplateAST/GRMustacheInheritableSectionNode.m similarity index 100% rename from src/classes/Compiling/TemplateAST/GRMustacheInheritableSectionNode.m rename to GRMustache/Compiling/TemplateAST/GRMustacheInheritableSectionNode.m diff --git a/src/classes/Compiling/TemplateAST/GRMustacheInheritableSectionNode_private.h b/GRMustache/Compiling/TemplateAST/GRMustacheInheritableSectionNode_private.h similarity index 100% rename from src/classes/Compiling/TemplateAST/GRMustacheInheritableSectionNode_private.h rename to GRMustache/Compiling/TemplateAST/GRMustacheInheritableSectionNode_private.h diff --git a/src/classes/Compiling/TemplateAST/GRMustacheInheritedPartialNode.m b/GRMustache/Compiling/TemplateAST/GRMustacheInheritedPartialNode.m similarity index 100% rename from src/classes/Compiling/TemplateAST/GRMustacheInheritedPartialNode.m rename to GRMustache/Compiling/TemplateAST/GRMustacheInheritedPartialNode.m diff --git a/src/classes/Compiling/TemplateAST/GRMustacheInheritedPartialNode_private.h b/GRMustache/Compiling/TemplateAST/GRMustacheInheritedPartialNode_private.h similarity index 100% rename from src/classes/Compiling/TemplateAST/GRMustacheInheritedPartialNode_private.h rename to GRMustache/Compiling/TemplateAST/GRMustacheInheritedPartialNode_private.h diff --git a/src/classes/Compiling/TemplateAST/GRMustachePartialNode.m b/GRMustache/Compiling/TemplateAST/GRMustachePartialNode.m similarity index 100% rename from src/classes/Compiling/TemplateAST/GRMustachePartialNode.m rename to GRMustache/Compiling/TemplateAST/GRMustachePartialNode.m diff --git a/src/classes/Compiling/TemplateAST/GRMustachePartialNode_private.h b/GRMustache/Compiling/TemplateAST/GRMustachePartialNode_private.h similarity index 100% rename from src/classes/Compiling/TemplateAST/GRMustachePartialNode_private.h rename to GRMustache/Compiling/TemplateAST/GRMustachePartialNode_private.h diff --git a/src/classes/Compiling/TemplateAST/GRMustacheSectionTag.m b/GRMustache/Compiling/TemplateAST/GRMustacheSectionTag.m similarity index 100% rename from src/classes/Compiling/TemplateAST/GRMustacheSectionTag.m rename to GRMustache/Compiling/TemplateAST/GRMustacheSectionTag.m diff --git a/src/classes/Compiling/TemplateAST/GRMustacheSectionTag_private.h b/GRMustache/Compiling/TemplateAST/GRMustacheSectionTag_private.h similarity index 100% rename from src/classes/Compiling/TemplateAST/GRMustacheSectionTag_private.h rename to GRMustache/Compiling/TemplateAST/GRMustacheSectionTag_private.h diff --git a/src/classes/Compiling/TemplateAST/GRMustacheTag.h b/GRMustache/Compiling/TemplateAST/GRMustacheTag.h similarity index 100% rename from src/classes/Compiling/TemplateAST/GRMustacheTag.h rename to GRMustache/Compiling/TemplateAST/GRMustacheTag.h diff --git a/src/classes/Compiling/TemplateAST/GRMustacheTag.m b/GRMustache/Compiling/TemplateAST/GRMustacheTag.m similarity index 100% rename from src/classes/Compiling/TemplateAST/GRMustacheTag.m rename to GRMustache/Compiling/TemplateAST/GRMustacheTag.m diff --git a/src/classes/Compiling/TemplateAST/GRMustacheTag_private.h b/GRMustache/Compiling/TemplateAST/GRMustacheTag_private.h similarity index 100% rename from src/classes/Compiling/TemplateAST/GRMustacheTag_private.h rename to GRMustache/Compiling/TemplateAST/GRMustacheTag_private.h diff --git a/src/classes/Compiling/TemplateAST/GRMustacheTemplateAST.m b/GRMustache/Compiling/TemplateAST/GRMustacheTemplateAST.m similarity index 100% rename from src/classes/Compiling/TemplateAST/GRMustacheTemplateAST.m rename to GRMustache/Compiling/TemplateAST/GRMustacheTemplateAST.m diff --git a/src/classes/Compiling/TemplateAST/GRMustacheTemplateASTNode_private.h b/GRMustache/Compiling/TemplateAST/GRMustacheTemplateASTNode_private.h similarity index 100% rename from src/classes/Compiling/TemplateAST/GRMustacheTemplateASTNode_private.h rename to GRMustache/Compiling/TemplateAST/GRMustacheTemplateASTNode_private.h diff --git a/src/classes/Compiling/TemplateAST/GRMustacheTemplateASTVisitor_private.h b/GRMustache/Compiling/TemplateAST/GRMustacheTemplateASTVisitor_private.h similarity index 100% rename from src/classes/Compiling/TemplateAST/GRMustacheTemplateASTVisitor_private.h rename to GRMustache/Compiling/TemplateAST/GRMustacheTemplateASTVisitor_private.h diff --git a/src/classes/Compiling/TemplateAST/GRMustacheTemplateAST_private.h b/GRMustache/Compiling/TemplateAST/GRMustacheTemplateAST_private.h similarity index 100% rename from src/classes/Compiling/TemplateAST/GRMustacheTemplateAST_private.h rename to GRMustache/Compiling/TemplateAST/GRMustacheTemplateAST_private.h diff --git a/src/classes/Compiling/TemplateAST/GRMustacheTextNode.m b/GRMustache/Compiling/TemplateAST/GRMustacheTextNode.m similarity index 100% rename from src/classes/Compiling/TemplateAST/GRMustacheTextNode.m rename to GRMustache/Compiling/TemplateAST/GRMustacheTextNode.m diff --git a/src/classes/Compiling/TemplateAST/GRMustacheTextNode_private.h b/GRMustache/Compiling/TemplateAST/GRMustacheTextNode_private.h similarity index 100% rename from src/classes/Compiling/TemplateAST/GRMustacheTextNode_private.h rename to GRMustache/Compiling/TemplateAST/GRMustacheTextNode_private.h diff --git a/src/classes/Compiling/TemplateAST/GRMustacheVariableTag.m b/GRMustache/Compiling/TemplateAST/GRMustacheVariableTag.m similarity index 100% rename from src/classes/Compiling/TemplateAST/GRMustacheVariableTag.m rename to GRMustache/Compiling/TemplateAST/GRMustacheVariableTag.m diff --git a/src/classes/Compiling/TemplateAST/GRMustacheVariableTag_private.h b/GRMustache/Compiling/TemplateAST/GRMustacheVariableTag_private.h similarity index 100% rename from src/classes/Compiling/TemplateAST/GRMustacheVariableTag_private.h rename to GRMustache/Compiling/TemplateAST/GRMustacheVariableTag_private.h diff --git a/src/classes/Configuration/GRMustacheConfiguration.h b/GRMustache/Configuration/GRMustacheConfiguration.h similarity index 100% rename from src/classes/Configuration/GRMustacheConfiguration.h rename to GRMustache/Configuration/GRMustacheConfiguration.h diff --git a/src/classes/Configuration/GRMustacheConfiguration.m b/GRMustache/Configuration/GRMustacheConfiguration.m similarity index 100% rename from src/classes/Configuration/GRMustacheConfiguration.m rename to GRMustache/Configuration/GRMustacheConfiguration.m diff --git a/src/classes/Configuration/GRMustacheConfiguration_private.h b/GRMustache/Configuration/GRMustacheConfiguration_private.h similarity index 100% rename from src/classes/Configuration/GRMustacheConfiguration_private.h rename to GRMustache/Configuration/GRMustacheConfiguration_private.h diff --git a/src/classes/GRMustache.h b/GRMustache/GRMustache.h similarity index 100% rename from src/classes/GRMustache.h rename to GRMustache/GRMustache.h diff --git a/src/classes/GRMustache.m b/GRMustache/GRMustache.m similarity index 100% rename from src/classes/GRMustache.m rename to GRMustache/GRMustache.m diff --git a/src/classes/GRMustache_private.h b/GRMustache/GRMustache_private.h similarity index 100% rename from src/classes/GRMustache_private.h rename to GRMustache/GRMustache_private.h diff --git a/src/GRMustache/Info.plist b/GRMustache/Info.plist similarity index 100% rename from src/GRMustache/Info.plist rename to GRMustache/Info.plist diff --git a/src/classes/Parsing/GRMustacheExpressionParser.m b/GRMustache/Parsing/GRMustacheExpressionParser.m similarity index 100% rename from src/classes/Parsing/GRMustacheExpressionParser.m rename to GRMustache/Parsing/GRMustacheExpressionParser.m diff --git a/src/classes/Parsing/GRMustacheExpressionParser_private.h b/GRMustache/Parsing/GRMustacheExpressionParser_private.h similarity index 100% rename from src/classes/Parsing/GRMustacheExpressionParser_private.h rename to GRMustache/Parsing/GRMustacheExpressionParser_private.h diff --git a/src/classes/Parsing/GRMustacheTemplateParser.m b/GRMustache/Parsing/GRMustacheTemplateParser.m similarity index 100% rename from src/classes/Parsing/GRMustacheTemplateParser.m rename to GRMustache/Parsing/GRMustacheTemplateParser.m diff --git a/src/classes/Parsing/GRMustacheTemplateParser_private.h b/GRMustache/Parsing/GRMustacheTemplateParser_private.h similarity index 100% rename from src/classes/Parsing/GRMustacheTemplateParser_private.h rename to GRMustache/Parsing/GRMustacheTemplateParser_private.h diff --git a/src/classes/Parsing/GRMustacheToken.m b/GRMustache/Parsing/GRMustacheToken.m similarity index 100% rename from src/classes/Parsing/GRMustacheToken.m rename to GRMustache/Parsing/GRMustacheToken.m diff --git a/src/classes/Parsing/GRMustacheToken_private.h b/GRMustache/Parsing/GRMustacheToken_private.h similarity index 100% rename from src/classes/Parsing/GRMustacheToken_private.h rename to GRMustache/Parsing/GRMustacheToken_private.h diff --git a/src/classes/Rendering/GRMustacheContext.h b/GRMustache/Rendering/GRMustacheContext.h similarity index 100% rename from src/classes/Rendering/GRMustacheContext.h rename to GRMustache/Rendering/GRMustacheContext.h diff --git a/src/classes/Rendering/GRMustacheContext.m b/GRMustache/Rendering/GRMustacheContext.m similarity index 100% rename from src/classes/Rendering/GRMustacheContext.m rename to GRMustache/Rendering/GRMustacheContext.m diff --git a/src/classes/Rendering/GRMustacheContext_private.h b/GRMustache/Rendering/GRMustacheContext_private.h similarity index 100% rename from src/classes/Rendering/GRMustacheContext_private.h rename to GRMustache/Rendering/GRMustacheContext_private.h diff --git a/src/classes/Rendering/GRMustacheExpressionInvocation.m b/GRMustache/Rendering/GRMustacheExpressionInvocation.m similarity index 100% rename from src/classes/Rendering/GRMustacheExpressionInvocation.m rename to GRMustache/Rendering/GRMustacheExpressionInvocation.m diff --git a/src/classes/Rendering/GRMustacheExpressionInvocation_private.h b/GRMustache/Rendering/GRMustacheExpressionInvocation_private.h similarity index 100% rename from src/classes/Rendering/GRMustacheExpressionInvocation_private.h rename to GRMustache/Rendering/GRMustacheExpressionInvocation_private.h diff --git a/src/classes/Rendering/GRMustacheFilter.h b/GRMustache/Rendering/GRMustacheFilter.h similarity index 100% rename from src/classes/Rendering/GRMustacheFilter.h rename to GRMustache/Rendering/GRMustacheFilter.h diff --git a/src/classes/Rendering/GRMustacheFilter.m b/GRMustache/Rendering/GRMustacheFilter.m similarity index 100% rename from src/classes/Rendering/GRMustacheFilter.m rename to GRMustache/Rendering/GRMustacheFilter.m diff --git a/src/classes/Rendering/GRMustacheFilter_private.h b/GRMustache/Rendering/GRMustacheFilter_private.h similarity index 100% rename from src/classes/Rendering/GRMustacheFilter_private.h rename to GRMustache/Rendering/GRMustacheFilter_private.h diff --git a/src/classes/Rendering/GRMustacheKeyAccess.m b/GRMustache/Rendering/GRMustacheKeyAccess.m similarity index 100% rename from src/classes/Rendering/GRMustacheKeyAccess.m rename to GRMustache/Rendering/GRMustacheKeyAccess.m diff --git a/src/classes/Rendering/GRMustacheKeyAccess_private.h b/GRMustache/Rendering/GRMustacheKeyAccess_private.h similarity index 100% rename from src/classes/Rendering/GRMustacheKeyAccess_private.h rename to GRMustache/Rendering/GRMustacheKeyAccess_private.h diff --git a/src/classes/Rendering/GRMustacheKeyValueCoding.h b/GRMustache/Rendering/GRMustacheKeyValueCoding.h similarity index 100% rename from src/classes/Rendering/GRMustacheKeyValueCoding.h rename to GRMustache/Rendering/GRMustacheKeyValueCoding.h diff --git a/src/classes/Rendering/GRMustacheRendering.h b/GRMustache/Rendering/GRMustacheRendering.h similarity index 100% rename from src/classes/Rendering/GRMustacheRendering.h rename to GRMustache/Rendering/GRMustacheRendering.h diff --git a/src/classes/Rendering/GRMustacheRendering.m b/GRMustache/Rendering/GRMustacheRendering.m similarity index 100% rename from src/classes/Rendering/GRMustacheRendering.m rename to GRMustache/Rendering/GRMustacheRendering.m diff --git a/src/classes/Rendering/GRMustacheRenderingEngine.m b/GRMustache/Rendering/GRMustacheRenderingEngine.m similarity index 100% rename from src/classes/Rendering/GRMustacheRenderingEngine.m rename to GRMustache/Rendering/GRMustacheRenderingEngine.m diff --git a/src/classes/Rendering/GRMustacheRenderingEngine_private.h b/GRMustache/Rendering/GRMustacheRenderingEngine_private.h similarity index 100% rename from src/classes/Rendering/GRMustacheRenderingEngine_private.h rename to GRMustache/Rendering/GRMustacheRenderingEngine_private.h diff --git a/src/classes/Rendering/GRMustacheRendering_private.h b/GRMustache/Rendering/GRMustacheRendering_private.h similarity index 100% rename from src/classes/Rendering/GRMustacheRendering_private.h rename to GRMustache/Rendering/GRMustacheRendering_private.h diff --git a/src/classes/Rendering/GRMustacheTagDelegate.h b/GRMustache/Rendering/GRMustacheTagDelegate.h similarity index 100% rename from src/classes/Rendering/GRMustacheTagDelegate.h rename to GRMustache/Rendering/GRMustacheTagDelegate.h diff --git a/src/classes/Rendering/NSObject+GRMustacheKeyValueCoding.m b/GRMustache/Rendering/NSObject+GRMustacheKeyValueCoding.m similarity index 100% rename from src/classes/Rendering/NSObject+GRMustacheKeyValueCoding.m rename to GRMustache/Rendering/NSObject+GRMustacheKeyValueCoding.m diff --git a/src/classes/Rendering/NSObject+GRMustacheKeyValueCoding_private.h b/GRMustache/Rendering/NSObject+GRMustacheKeyValueCoding_private.h similarity index 100% rename from src/classes/Rendering/NSObject+GRMustacheKeyValueCoding_private.h rename to GRMustache/Rendering/NSObject+GRMustacheKeyValueCoding_private.h diff --git a/src/classes/Services/GRMustacheExpressionGenerator.m b/GRMustache/Services/GRMustacheExpressionGenerator.m similarity index 100% rename from src/classes/Services/GRMustacheExpressionGenerator.m rename to GRMustache/Services/GRMustacheExpressionGenerator.m diff --git a/src/classes/Services/GRMustacheExpressionGenerator_private.h b/GRMustache/Services/GRMustacheExpressionGenerator_private.h similarity index 100% rename from src/classes/Services/GRMustacheExpressionGenerator_private.h rename to GRMustache/Services/GRMustacheExpressionGenerator_private.h diff --git a/src/classes/Services/GRMustacheTemplateGenerator.m b/GRMustache/Services/GRMustacheTemplateGenerator.m similarity index 100% rename from src/classes/Services/GRMustacheTemplateGenerator.m rename to GRMustache/Services/GRMustacheTemplateGenerator.m diff --git a/src/classes/Services/GRMustacheTemplateGenerator_private.h b/GRMustache/Services/GRMustacheTemplateGenerator_private.h similarity index 100% rename from src/classes/Services/GRMustacheTemplateGenerator_private.h rename to GRMustache/Services/GRMustacheTemplateGenerator_private.h diff --git a/src/classes/Services/NSFormatter+GRMustache.h b/GRMustache/Services/NSFormatter+GRMustache.h similarity index 100% rename from src/classes/Services/NSFormatter+GRMustache.h rename to GRMustache/Services/NSFormatter+GRMustache.h diff --git a/src/classes/Services/NSFormatter+GRMustache.m b/GRMustache/Services/NSFormatter+GRMustache.m similarity index 100% rename from src/classes/Services/NSFormatter+GRMustache.m rename to GRMustache/Services/NSFormatter+GRMustache.m diff --git a/src/classes/Services/NSValueTransformer+GRMustache.h b/GRMustache/Services/NSValueTransformer+GRMustache.h similarity index 100% rename from src/classes/Services/NSValueTransformer+GRMustache.h rename to GRMustache/Services/NSValueTransformer+GRMustache.h diff --git a/src/classes/Services/NSValueTransformer+GRMustache.m b/GRMustache/Services/NSValueTransformer+GRMustache.m similarity index 100% rename from src/classes/Services/NSValueTransformer+GRMustache.m rename to GRMustache/Services/NSValueTransformer+GRMustache.m diff --git a/src/classes/Services/StandardLibrary/GRMustacheEachFilter.m b/GRMustache/Services/StandardLibrary/GRMustacheEachFilter.m similarity index 100% rename from src/classes/Services/StandardLibrary/GRMustacheEachFilter.m rename to GRMustache/Services/StandardLibrary/GRMustacheEachFilter.m diff --git a/src/classes/Services/StandardLibrary/GRMustacheEachFilter_private.h b/GRMustache/Services/StandardLibrary/GRMustacheEachFilter_private.h similarity index 100% rename from src/classes/Services/StandardLibrary/GRMustacheEachFilter_private.h rename to GRMustache/Services/StandardLibrary/GRMustacheEachFilter_private.h diff --git a/src/classes/Services/StandardLibrary/GRMustacheHTMLEscapeFilter.m b/GRMustache/Services/StandardLibrary/GRMustacheHTMLEscapeFilter.m similarity index 100% rename from src/classes/Services/StandardLibrary/GRMustacheHTMLEscapeFilter.m rename to GRMustache/Services/StandardLibrary/GRMustacheHTMLEscapeFilter.m diff --git a/src/classes/Services/StandardLibrary/GRMustacheHTMLEscapeFilter_private.h b/GRMustache/Services/StandardLibrary/GRMustacheHTMLEscapeFilter_private.h similarity index 100% rename from src/classes/Services/StandardLibrary/GRMustacheHTMLEscapeFilter_private.h rename to GRMustache/Services/StandardLibrary/GRMustacheHTMLEscapeFilter_private.h diff --git a/src/classes/Services/StandardLibrary/GRMustacheJavascriptEscapeFilter.m b/GRMustache/Services/StandardLibrary/GRMustacheJavascriptEscapeFilter.m similarity index 100% rename from src/classes/Services/StandardLibrary/GRMustacheJavascriptEscapeFilter.m rename to GRMustache/Services/StandardLibrary/GRMustacheJavascriptEscapeFilter.m diff --git a/src/classes/Services/StandardLibrary/GRMustacheJavascriptEscapeFilter_private.h b/GRMustache/Services/StandardLibrary/GRMustacheJavascriptEscapeFilter_private.h similarity index 100% rename from src/classes/Services/StandardLibrary/GRMustacheJavascriptEscapeFilter_private.h rename to GRMustache/Services/StandardLibrary/GRMustacheJavascriptEscapeFilter_private.h diff --git a/src/classes/Services/StandardLibrary/GRMustacheLocalizer.h b/GRMustache/Services/StandardLibrary/GRMustacheLocalizer.h similarity index 100% rename from src/classes/Services/StandardLibrary/GRMustacheLocalizer.h rename to GRMustache/Services/StandardLibrary/GRMustacheLocalizer.h diff --git a/src/classes/Services/StandardLibrary/GRMustacheLocalizer.m b/GRMustache/Services/StandardLibrary/GRMustacheLocalizer.m similarity index 100% rename from src/classes/Services/StandardLibrary/GRMustacheLocalizer.m rename to GRMustache/Services/StandardLibrary/GRMustacheLocalizer.m diff --git a/src/classes/Services/StandardLibrary/GRMustacheURLEscapeFilter.m b/GRMustache/Services/StandardLibrary/GRMustacheURLEscapeFilter.m similarity index 100% rename from src/classes/Services/StandardLibrary/GRMustacheURLEscapeFilter.m rename to GRMustache/Services/StandardLibrary/GRMustacheURLEscapeFilter.m diff --git a/src/classes/Services/StandardLibrary/GRMustacheURLEscapeFilter_private.h b/GRMustache/Services/StandardLibrary/GRMustacheURLEscapeFilter_private.h similarity index 100% rename from src/classes/Services/StandardLibrary/GRMustacheURLEscapeFilter_private.h rename to GRMustache/Services/StandardLibrary/GRMustacheURLEscapeFilter_private.h diff --git a/src/classes/Shared/GRMustacheAvailabilityMacros.h b/GRMustache/Shared/GRMustacheAvailabilityMacros.h similarity index 100% rename from src/classes/Shared/GRMustacheAvailabilityMacros.h rename to GRMustache/Shared/GRMustacheAvailabilityMacros.h diff --git a/src/classes/Shared/GRMustacheAvailabilityMacros_private.h b/GRMustache/Shared/GRMustacheAvailabilityMacros_private.h similarity index 100% rename from src/classes/Shared/GRMustacheAvailabilityMacros_private.h rename to GRMustache/Shared/GRMustacheAvailabilityMacros_private.h diff --git a/src/classes/Shared/GRMustacheBuffer_private.h b/GRMustache/Shared/GRMustacheBuffer_private.h similarity index 100% rename from src/classes/Shared/GRMustacheBuffer_private.h rename to GRMustache/Shared/GRMustacheBuffer_private.h diff --git a/src/classes/Shared/GRMustacheContentType.h b/GRMustache/Shared/GRMustacheContentType.h similarity index 100% rename from src/classes/Shared/GRMustacheContentType.h rename to GRMustache/Shared/GRMustacheContentType.h diff --git a/src/classes/Shared/GRMustacheError.h b/GRMustache/Shared/GRMustacheError.h similarity index 100% rename from src/classes/Shared/GRMustacheError.h rename to GRMustache/Shared/GRMustacheError.h diff --git a/src/classes/Shared/GRMustacheError.m b/GRMustache/Shared/GRMustacheError.m similarity index 100% rename from src/classes/Shared/GRMustacheError.m rename to GRMustache/Shared/GRMustacheError.m diff --git a/src/classes/Shared/GRMustacheTranslateCharacters.m b/GRMustache/Shared/GRMustacheTranslateCharacters.m similarity index 100% rename from src/classes/Shared/GRMustacheTranslateCharacters.m rename to GRMustache/Shared/GRMustacheTranslateCharacters.m diff --git a/src/classes/Shared/GRMustacheTranslateCharacters_private.h b/GRMustache/Shared/GRMustacheTranslateCharacters_private.h similarity index 100% rename from src/classes/Shared/GRMustacheTranslateCharacters_private.h rename to GRMustache/Shared/GRMustacheTranslateCharacters_private.h diff --git a/src/classes/Templates/GRMustacheTemplate.h b/GRMustache/Templates/GRMustacheTemplate.h similarity index 100% rename from src/classes/Templates/GRMustacheTemplate.h rename to GRMustache/Templates/GRMustacheTemplate.h diff --git a/src/classes/Templates/GRMustacheTemplate.m b/GRMustache/Templates/GRMustacheTemplate.m similarity index 100% rename from src/classes/Templates/GRMustacheTemplate.m rename to GRMustache/Templates/GRMustacheTemplate.m diff --git a/src/classes/Templates/GRMustacheTemplateRepository.h b/GRMustache/Templates/GRMustacheTemplateRepository.h similarity index 100% rename from src/classes/Templates/GRMustacheTemplateRepository.h rename to GRMustache/Templates/GRMustacheTemplateRepository.h diff --git a/src/classes/Templates/GRMustacheTemplateRepository.m b/GRMustache/Templates/GRMustacheTemplateRepository.m similarity index 100% rename from src/classes/Templates/GRMustacheTemplateRepository.m rename to GRMustache/Templates/GRMustacheTemplateRepository.m diff --git a/src/classes/Templates/GRMustacheTemplateRepository_private.h b/GRMustache/Templates/GRMustacheTemplateRepository_private.h similarity index 100% rename from src/classes/Templates/GRMustacheTemplateRepository_private.h rename to GRMustache/Templates/GRMustacheTemplateRepository_private.h diff --git a/src/classes/Templates/GRMustacheTemplate_private.h b/GRMustache/Templates/GRMustacheTemplate_private.h similarity index 100% rename from src/classes/Templates/GRMustacheTemplate_private.h rename to GRMustache/Templates/GRMustacheTemplate_private.h diff --git a/src/tests/GRMustacheTestingDelegate.h b/GRMustacheTests/GRMustacheTestingDelegate.h similarity index 100% rename from src/tests/GRMustacheTestingDelegate.h rename to GRMustacheTests/GRMustacheTestingDelegate.h diff --git a/src/tests/GRMustacheTestingDelegate.m b/GRMustacheTests/GRMustacheTestingDelegate.m similarity index 100% rename from src/tests/GRMustacheTestingDelegate.m rename to GRMustacheTests/GRMustacheTestingDelegate.m diff --git a/src/tests/Info.plist b/GRMustacheTests/Info.plist similarity index 100% rename from src/tests/Info.plist rename to GRMustacheTests/Info.plist diff --git a/src/tests/Private/GRMustacheContextPrivateTest.m b/GRMustacheTests/Private/GRMustacheContextPrivateTest.m similarity index 100% rename from src/tests/Private/GRMustacheContextPrivateTest.m rename to GRMustacheTests/Private/GRMustacheContextPrivateTest.m diff --git a/src/tests/Private/GRMustacheExpressionParserTest.m b/GRMustacheTests/Private/GRMustacheExpressionParserTest.m similarity index 100% rename from src/tests/Private/GRMustacheExpressionParserTest.m rename to GRMustacheTests/Private/GRMustacheExpressionParserTest.m diff --git a/src/tests/Private/GRMustachePrivateAPITest.h b/GRMustacheTests/Private/GRMustachePrivateAPITest.h similarity index 100% rename from src/tests/Private/GRMustachePrivateAPITest.h rename to GRMustacheTests/Private/GRMustachePrivateAPITest.h diff --git a/src/tests/Private/GRMustachePrivateAPITest.m b/GRMustacheTests/Private/GRMustachePrivateAPITest.m similarity index 100% rename from src/tests/Private/GRMustachePrivateAPITest.m rename to GRMustacheTests/Private/GRMustachePrivateAPITest.m diff --git a/src/tests/Private/GRMustacheTemplateGeneratorTest.m b/GRMustacheTests/Private/GRMustacheTemplateGeneratorTest.m similarity index 100% rename from src/tests/Private/GRMustacheTemplateGeneratorTest.m rename to GRMustacheTests/Private/GRMustacheTemplateGeneratorTest.m diff --git a/src/tests/Private/GRPreventNSUndefinedKeyExceptionAttackTest.xcdatamodeld/.xccurrentversion b/GRMustacheTests/Private/GRPreventNSUndefinedKeyExceptionAttackTest.xcdatamodeld/.xccurrentversion similarity index 100% rename from src/tests/Private/GRPreventNSUndefinedKeyExceptionAttackTest.xcdatamodeld/.xccurrentversion rename to GRMustacheTests/Private/GRPreventNSUndefinedKeyExceptionAttackTest.xcdatamodeld/.xccurrentversion diff --git a/src/tests/Private/GRPreventNSUndefinedKeyExceptionAttackTest.xcdatamodeld/GRPreventNSUndefinedKeyExceptionAttackTest.xcdatamodel/elements b/GRMustacheTests/Private/GRPreventNSUndefinedKeyExceptionAttackTest.xcdatamodeld/GRPreventNSUndefinedKeyExceptionAttackTest.xcdatamodel/elements similarity index 100% rename from src/tests/Private/GRPreventNSUndefinedKeyExceptionAttackTest.xcdatamodeld/GRPreventNSUndefinedKeyExceptionAttackTest.xcdatamodel/elements rename to GRMustacheTests/Private/GRPreventNSUndefinedKeyExceptionAttackTest.xcdatamodeld/GRPreventNSUndefinedKeyExceptionAttackTest.xcdatamodel/elements diff --git a/src/tests/Private/GRPreventNSUndefinedKeyExceptionAttackTest.xcdatamodeld/GRPreventNSUndefinedKeyExceptionAttackTest.xcdatamodel/layout b/GRMustacheTests/Private/GRPreventNSUndefinedKeyExceptionAttackTest.xcdatamodeld/GRPreventNSUndefinedKeyExceptionAttackTest.xcdatamodel/layout similarity index 100% rename from src/tests/Private/GRPreventNSUndefinedKeyExceptionAttackTest.xcdatamodeld/GRPreventNSUndefinedKeyExceptionAttackTest.xcdatamodel/layout rename to GRMustacheTests/Private/GRPreventNSUndefinedKeyExceptionAttackTest.xcdatamodeld/GRPreventNSUndefinedKeyExceptionAttackTest.xcdatamodel/layout diff --git a/src/tests/Public/GRMustachePublicAPITest.h b/GRMustacheTests/Public/GRMustachePublicAPITest.h similarity index 100% rename from src/tests/Public/GRMustachePublicAPITest.h rename to GRMustacheTests/Public/GRMustachePublicAPITest.h diff --git a/src/tests/Public/GRMustachePublicAPITest.m b/GRMustacheTests/Public/GRMustachePublicAPITest.m similarity index 100% rename from src/tests/Public/GRMustachePublicAPITest.m rename to GRMustacheTests/Public/GRMustachePublicAPITest.m diff --git a/src/tests/Public/v8.0/GRBooleanTest.m b/GRMustacheTests/Public/v8.0/GRBooleanTest.m similarity index 100% rename from src/tests/Public/v8.0/GRBooleanTest.m rename to GRMustacheTests/Public/v8.0/GRBooleanTest.m diff --git a/src/tests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationBaseContextTest.m b/GRMustacheTests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationBaseContextTest.m similarity index 100% rename from src/tests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationBaseContextTest.m rename to GRMustacheTests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationBaseContextTest.m diff --git a/src/tests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationExtendBaseContextTest.m b/GRMustacheTests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationExtendBaseContextTest.m similarity index 100% rename from src/tests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationExtendBaseContextTest.m rename to GRMustacheTests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationExtendBaseContextTest.m diff --git a/src/tests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationTagDelimitersTest.m b/GRMustacheTests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationTagDelimitersTest.m similarity index 100% rename from src/tests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationTagDelimitersTest.m rename to GRMustacheTests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationTagDelimitersTest.m diff --git a/src/tests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationTest.m b/GRMustacheTests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationTest.m similarity index 100% rename from src/tests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationTest.m rename to GRMustacheTests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationTest.m diff --git a/src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheContextHasValueForMustacheExpressionTest.m b/GRMustacheTests/Public/v8.0/GRMustacheContextTest/GRMustacheContextHasValueForMustacheExpressionTest.m similarity index 100% rename from src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheContextHasValueForMustacheExpressionTest.m rename to GRMustacheTests/Public/v8.0/GRMustacheContextTest/GRMustacheContextHasValueForMustacheExpressionTest.m diff --git a/src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheContextKeyAccessTest.m b/GRMustacheTests/Public/v8.0/GRMustacheContextTest/GRMustacheContextKeyAccessTest.m similarity index 100% rename from src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheContextKeyAccessTest.m rename to GRMustacheTests/Public/v8.0/GRMustacheContextTest/GRMustacheContextKeyAccessTest.m diff --git a/src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheContextProtectedObjectTest.m b/GRMustacheTests/Public/v8.0/GRMustacheContextTest/GRMustacheContextProtectedObjectTest.m similarity index 100% rename from src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheContextProtectedObjectTest.m rename to GRMustacheTests/Public/v8.0/GRMustacheContextTest/GRMustacheContextProtectedObjectTest.m diff --git a/src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheContextTest.m b/GRMustacheTests/Public/v8.0/GRMustacheContextTest/GRMustacheContextTest.m similarity index 100% rename from src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheContextTest.m rename to GRMustacheTests/Public/v8.0/GRMustacheContextTest/GRMustacheContextTest.m diff --git a/src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheContextTopMustacheObjectTest.m b/GRMustacheTests/Public/v8.0/GRMustacheContextTest/GRMustacheContextTopMustacheObjectTest.m similarity index 100% rename from src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheContextTopMustacheObjectTest.m rename to GRMustacheTests/Public/v8.0/GRMustacheContextTest/GRMustacheContextTopMustacheObjectTest.m diff --git a/src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheContextValueForMustacheKeyTest.m b/GRMustacheTests/Public/v8.0/GRMustacheContextTest/GRMustacheContextValueForMustacheKeyTest.m similarity index 100% rename from src/tests/Public/v8.0/GRMustacheContextTest/GRMustacheContextValueForMustacheKeyTest.m rename to GRMustacheTests/Public/v8.0/GRMustacheContextTest/GRMustacheContextValueForMustacheKeyTest.m diff --git a/src/tests/Public/v8.0/GRMustacheErrorHandlingTest.m b/GRMustacheTests/Public/v8.0/GRMustacheErrorHandlingTest.m similarity index 100% rename from src/tests/Public/v8.0/GRMustacheErrorHandlingTest.m rename to GRMustacheTests/Public/v8.0/GRMustacheErrorHandlingTest.m diff --git a/src/tests/Public/v8.0/GRMustacheFilterTest/GRMustacheFilterTest.m b/GRMustacheTests/Public/v8.0/GRMustacheFilterTest/GRMustacheFilterTest.m similarity index 100% rename from src/tests/Public/v8.0/GRMustacheFilterTest/GRMustacheFilterTest.m rename to GRMustacheTests/Public/v8.0/GRMustacheFilterTest/GRMustacheFilterTest.m diff --git a/src/tests/Public/v8.0/GRMustacheFilterTest/GRMustacheVariadicFilterTest.m b/GRMustacheTests/Public/v8.0/GRMustacheFilterTest/GRMustacheVariadicFilterTest.m similarity index 100% rename from src/tests/Public/v8.0/GRMustacheFilterTest/GRMustacheVariadicFilterTest.m rename to GRMustacheTests/Public/v8.0/GRMustacheFilterTest/GRMustacheVariadicFilterTest.m diff --git a/src/tests/Public/v8.0/GRMustacheFoundationCollectionTest.m b/GRMustacheTests/Public/v8.0/GRMustacheFoundationCollectionTest.m similarity index 100% rename from src/tests/Public/v8.0/GRMustacheFoundationCollectionTest.m rename to GRMustacheTests/Public/v8.0/GRMustacheFoundationCollectionTest.m diff --git a/src/tests/Public/v8.0/GRMustacheParsingErrorsTest.m b/GRMustacheTests/Public/v8.0/GRMustacheParsingErrorsTest.m similarity index 100% rename from src/tests/Public/v8.0/GRMustacheParsingErrorsTest.m rename to GRMustacheTests/Public/v8.0/GRMustacheParsingErrorsTest.m diff --git a/src/tests/Public/v8.0/GRMustachePositionFilterTest.m b/GRMustacheTests/Public/v8.0/GRMustachePositionFilterTest.m similarity index 100% rename from src/tests/Public/v8.0/GRMustachePositionFilterTest.m rename to GRMustacheTests/Public/v8.0/GRMustachePositionFilterTest.m diff --git a/src/tests/Public/v8.0/GRMustacheRenderingObjectTest.m b/GRMustacheTests/Public/v8.0/GRMustacheRenderingObjectTest.m similarity index 100% rename from src/tests/Public/v8.0/GRMustacheRenderingObjectTest.m rename to GRMustacheTests/Public/v8.0/GRMustacheRenderingObjectTest.m diff --git a/src/tests/Public/v8.0/GRMustacheServicesTest/GRMustacheEachFilterTest.m b/GRMustacheTests/Public/v8.0/GRMustacheServicesTest/GRMustacheEachFilterTest.m similarity index 100% rename from src/tests/Public/v8.0/GRMustacheServicesTest/GRMustacheEachFilterTest.m rename to GRMustacheTests/Public/v8.0/GRMustacheServicesTest/GRMustacheEachFilterTest.m diff --git a/src/tests/Public/v8.0/GRMustacheServicesTest/GRMustacheLocalizerTest.m b/GRMustacheTests/Public/v8.0/GRMustacheServicesTest/GRMustacheLocalizerTest.m similarity index 100% rename from src/tests/Public/v8.0/GRMustacheServicesTest/GRMustacheLocalizerTest.m rename to GRMustacheTests/Public/v8.0/GRMustacheServicesTest/GRMustacheLocalizerTest.m diff --git a/src/tests/Public/v8.0/GRMustacheServicesTest/GRMustacheLocalizerTestBundle/Localizable.strings b/GRMustacheTests/Public/v8.0/GRMustacheServicesTest/GRMustacheLocalizerTestBundle/Localizable.strings similarity index 100% rename from src/tests/Public/v8.0/GRMustacheServicesTest/GRMustacheLocalizerTestBundle/Localizable.strings rename to GRMustacheTests/Public/v8.0/GRMustacheServicesTest/GRMustacheLocalizerTestBundle/Localizable.strings diff --git a/src/tests/Public/v8.0/GRMustacheServicesTest/GRMustacheLocalizerTestBundle/Table.strings b/GRMustacheTests/Public/v8.0/GRMustacheServicesTest/GRMustacheLocalizerTestBundle/Table.strings similarity index 100% rename from src/tests/Public/v8.0/GRMustacheServicesTest/GRMustacheLocalizerTestBundle/Table.strings rename to GRMustacheTests/Public/v8.0/GRMustacheServicesTest/GRMustacheLocalizerTestBundle/Table.strings diff --git a/src/tests/Public/v8.0/GRMustacheServicesTest/GRMustacheNSFormatterTest.m b/GRMustacheTests/Public/v8.0/GRMustacheServicesTest/GRMustacheNSFormatterTest.m similarity index 100% rename from src/tests/Public/v8.0/GRMustacheServicesTest/GRMustacheNSFormatterTest.m rename to GRMustacheTests/Public/v8.0/GRMustacheServicesTest/GRMustacheNSFormatterTest.m diff --git a/src/tests/Public/v8.0/GRMustacheServicesTest/GRMustacheNSValueTransformerTest.m b/GRMustacheTests/Public/v8.0/GRMustacheServicesTest/GRMustacheNSValueTransformerTest.m similarity index 100% rename from src/tests/Public/v8.0/GRMustacheServicesTest/GRMustacheNSValueTransformerTest.m rename to GRMustacheTests/Public/v8.0/GRMustacheServicesTest/GRMustacheNSValueTransformerTest.m diff --git a/src/tests/Public/v8.0/GRMustacheServicesTest/GRMustacheStandardLibraryTest.m b/GRMustacheTests/Public/v8.0/GRMustacheServicesTest/GRMustacheStandardLibraryTest.m similarity index 100% rename from src/tests/Public/v8.0/GRMustacheServicesTest/GRMustacheStandardLibraryTest.m rename to GRMustacheTests/Public/v8.0/GRMustacheServicesTest/GRMustacheStandardLibraryTest.m diff --git a/src/tests/Public/v8.0/GRMustacheTagDelegateTest/GRMustacheTagDelegateTest.m b/GRMustacheTests/Public/v8.0/GRMustacheTagDelegateTest/GRMustacheTagDelegateTest.m similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTagDelegateTest/GRMustacheTagDelegateTest.m rename to GRMustacheTests/Public/v8.0/GRMustacheTagDelegateTest/GRMustacheTagDelegateTest.m diff --git a/src/tests/Public/v8.0/GRMustacheTagDelegateTest/GRMustacheTagDelegateTest.mustache b/GRMustacheTests/Public/v8.0/GRMustacheTagDelegateTest/GRMustacheTagDelegateTest.mustache similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTagDelegateTest/GRMustacheTagDelegateTest.mustache rename to GRMustacheTests/Public/v8.0/GRMustacheTagDelegateTest/GRMustacheTagDelegateTest.mustache diff --git a/src/tests/Public/v8.0/GRMustacheTagDelegateTest/GRMustacheTagDelegateTest_wrapper.mustache b/GRMustacheTests/Public/v8.0/GRMustacheTagDelegateTest/GRMustacheTagDelegateTest_wrapper.mustache similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTagDelegateTest/GRMustacheTagDelegateTest_wrapper.mustache rename to GRMustacheTests/Public/v8.0/GRMustacheTagDelegateTest/GRMustacheTagDelegateTest_wrapper.mustache diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryDataSourceTest.m b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryDataSourceTest.m similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryDataSourceTest.m rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryDataSourceTest.m diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest.m b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest.m similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest.m rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest.m diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest/base.mustache b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest/base.mustache similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest/base.mustache rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest/base.mustache diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest/partials/partial1.mustache b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest/partials/partial1.mustache similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest/partials/partial1.mustache rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest/partials/partial1.mustache diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest/partials/partial2.mustache b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest/partials/partial2.mustache similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest/partials/partial2.mustache rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest/partials/partial2.mustache diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file1 b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file1 similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file1 rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file1 diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file1.mustache b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file1.mustache similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file1.mustache rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file1.mustache diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file1.txt b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file1.txt similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file1.txt rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file1.txt diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file2 b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file2 similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file2 rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file2 diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file2.mustache b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file2.mustache similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file2.mustache rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file2.mustache diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file2.txt b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file2.txt similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file2.txt rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/dir/file2.txt diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file1 b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file1 similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file1 rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file1 diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file1.mustache b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file1.mustache similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file1.mustache rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file1.mustache diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file1.txt b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file1.txt similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file1.txt rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file1.txt diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file2 b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file2 similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file2 rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file2 diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file2.mustache b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file2.mustache similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file2.mustache rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file2.mustache diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file2.txt b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file2.txt similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file2.txt rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/dir/file2.txt diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file1 b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file1 similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file1 rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file1 diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file1.mustache b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file1.mustache similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file1.mustache rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file1.mustache diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file1.txt b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file1.txt similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file1.txt rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file1.txt diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file2 b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file2 similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file2 rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file2 diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file2.mustache b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file2.mustache similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file2.mustache rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file2.mustache diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file2.txt b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file2.txt similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file2.txt rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_ISOLatin1/file2.txt diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file1 b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file1 similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file1 rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file1 diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file1.mustache b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file1.mustache similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file1.mustache rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file1.mustache diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file1.txt b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file1.txt similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file1.txt rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file1.txt diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file2 b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file2 similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file2 rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file2 diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file2.mustache b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file2.mustache similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file2.mustache rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file2.mustache diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file2.txt b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file2.txt similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file2.txt rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/dir/file2.txt diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file1 b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file1 similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file1 rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file1 diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file1.mustache b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file1.mustache similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file1.mustache rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file1.mustache diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file1.txt b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file1.txt similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file1.txt rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file1.txt diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file2 b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file2 similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file2 rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file2 diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file2.mustache b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file2.mustache similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file2.mustache rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file2.mustache diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file2.txt b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file2.txt similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file2.txt rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/dir/file2.txt diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file1 b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file1 similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file1 rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file1 diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file1.mustache b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file1.mustache similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file1.mustache rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file1.mustache diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file1.txt b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file1.txt similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file1.txt rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file1.txt diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file2 b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file2 similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file2 rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file2 diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file2.mustache b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file2.mustache similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file2.mustache rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file2.mustache diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file2.txt b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file2.txt similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file2.txt rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest_UTF8/file2.txt diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBaseURLTest.m b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBaseURLTest.m similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBaseURLTest.m rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBaseURLTest.m diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest.m b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest.m similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest.m rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest.m diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest.mustache b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest.mustache similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest.mustache rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest.mustache diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest.text b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest.text similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest.text rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest.text diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTestResources/partial.mustache b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTestResources/partial.mustache similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTestResources/partial.mustache rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTestResources/partial.mustache diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTestResources/sibling.mustache b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTestResources/sibling.mustache similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTestResources/sibling.mustache rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTestResources/sibling.mustache diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest_partial b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest_partial similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest_partial rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest_partial diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest_partial.mustache b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest_partial.mustache similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest_partial.mustache rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest_partial.mustache diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest_partial.text b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest_partial.text similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest_partial.text rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest_partial.text diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithDictionaryTest.m b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithDictionaryTest.m similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithDictionaryTest.m rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithDictionaryTest.m diff --git a/src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithDirectoryTest.m b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithDirectoryTest.m similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithDirectoryTest.m rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithDirectoryTest.m diff --git a/src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateExtendBaseContextTest.m b/GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateExtendBaseContextTest.m similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateExtendBaseContextTest.m rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateExtendBaseContextTest.m diff --git a/src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest b/GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest diff --git a/src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest.json b/GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest.json similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest.json rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest.json diff --git a/src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest.m b/GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest.m similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest.m rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest.m diff --git a/src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest.mustache b/GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest.mustache similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest.mustache rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest.mustache diff --git a/src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest_compilerError.mustache b/GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest_compilerError.mustache similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest_compilerError.mustache rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest_compilerError.mustache diff --git a/src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest_compilerErrorWrapper.mustache b/GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest_compilerErrorWrapper.mustache similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest_compilerErrorWrapper.mustache rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest_compilerErrorWrapper.mustache diff --git a/src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest_parserError.mustache b/GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest_parserError.mustache similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest_parserError.mustache rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest_parserError.mustache diff --git a/src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest_parserErrorWrapper.mustache b/GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest_parserErrorWrapper.mustache similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest_parserErrorWrapper.mustache rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest_parserErrorWrapper.mustache diff --git a/src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest b/GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest diff --git a/src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest.json b/GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest.json similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest.json rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest.json diff --git a/src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest.m b/GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest.m similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest.m rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest.m diff --git a/src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest.mustache b/GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest.mustache similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest.mustache rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest.mustache diff --git a/src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateTemplateRepositoryTest.m b/GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateTemplateRepositoryTest.m similarity index 100% rename from src/tests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateTemplateRepositoryTest.m rename to GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateTemplateRepositoryTest.m diff --git a/src/tests/Public/v8.0/Suites/groue/GRMustache/GRMustacheSuitesTest.m b/GRMustacheTests/Public/v8.0/Suites/groue/GRMustache/GRMustacheSuitesTest.m similarity index 100% rename from src/tests/Public/v8.0/Suites/groue/GRMustache/GRMustacheSuitesTest.m rename to GRMustacheTests/Public/v8.0/Suites/groue/GRMustache/GRMustacheSuitesTest.m diff --git a/src/tests/Public/v8.0/Suites/mustache/spec/GRSpecificationSuitesTest.m b/GRMustacheTests/Public/v8.0/Suites/mustache/spec/GRSpecificationSuitesTest.m similarity index 100% rename from src/tests/Public/v8.0/Suites/mustache/spec/GRSpecificationSuitesTest.m rename to GRMustacheTests/Public/v8.0/Suites/mustache/spec/GRSpecificationSuitesTest.m diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/box.html b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/box.html similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/box.html rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/box.html diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/client.html b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/client.html similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/client.html rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/client.html diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/client.txt b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/client.txt similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/client.txt rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/client.txt diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/div.html b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/div.html similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/div.html rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/div.html diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/follow.html b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/follow.html similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/follow.html rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/follow.html diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/follownomenu.html b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/follownomenu.html similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/follownomenu.html rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/follownomenu.html diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/follownomenu.txt b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/follownomenu.txt similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/follownomenu.txt rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/follownomenu.txt diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/main.html b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/main.html similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/main.html rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/main.html diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/method.html b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/method.html similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/method.html rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/method.html diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/multipleextensions.html b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/multipleextensions.html similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/multipleextensions.html rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/multipleextensions.html diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/multipleextensions.txt b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/multipleextensions.txt similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/multipleextensions.txt rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/multipleextensions.txt diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/nested_inheritance.html b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/nested_inheritance.html similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/nested_inheritance.html rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/nested_inheritance.html diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/nested_inheritance.txt b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/nested_inheritance.txt similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/nested_inheritance.txt rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/nested_inheritance.txt diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/parentreplace.html b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/parentreplace.html similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/parentreplace.html rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/parentreplace.html diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/partialsub.html b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/partialsub.html similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/partialsub.html rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/partialsub.html diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/partialsubpartial.html b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/partialsubpartial.html similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/partialsubpartial.html rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/partialsubpartial.html diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/partialsubpartial.txt b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/partialsubpartial.txt similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/partialsubpartial.txt rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/partialsubpartial.txt diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/partialsuper.html b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/partialsuper.html similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/partialsuper.html rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/partialsuper.html diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recurse_base.html b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recurse_base.html similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recurse_base.html rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recurse_base.html diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial.html b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial.html similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial.html rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial.html diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial2.html b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial2.html similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial2.html rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial2.html diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial3.html b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial3.html similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial3.html rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial3.html diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial_inheritance.html b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial_inheritance.html similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial_inheritance.html rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial_inheritance.html diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial_inheritance.txt b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial_inheritance.txt similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial_inheritance.txt rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/recursive_partial_inheritance.txt diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/replace.html b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/replace.html similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/replace.html rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/replace.html diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/replace.txt b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/replace.txt similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/replace.txt rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/replace.txt diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/singlereplace.html b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/singlereplace.html similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/singlereplace.html rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/singlereplace.html diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/sub.html b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/sub.html similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/sub.html rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/sub.html diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/sub.txt b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/sub.txt similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/sub.txt rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/sub.txt diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblockchild1.html b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblockchild1.html similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblockchild1.html rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblockchild1.html diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblockchild1.txt b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblockchild1.txt similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblockchild1.txt rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblockchild1.txt diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblockchild2.html b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblockchild2.html similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblockchild2.html rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblockchild2.html diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblockchild2.txt b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblockchild2.txt similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblockchild2.txt rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblockchild2.txt diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblocksuper.html b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblocksuper.html similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblocksuper.html rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subblocksuper.html diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsub.html b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsub.html similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsub.html rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsub.html diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsub.txt b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsub.txt similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsub.txt rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsub.txt diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild1.html b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild1.html similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild1.html rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild1.html diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild1.txt b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild1.txt similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild1.txt rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild1.txt diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild2.html b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild2.html similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild2.html rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild2.html diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild2.txt b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild2.txt similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild2.txt rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild2.txt diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild3.html b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild3.html similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild3.html rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild3.html diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild3.txt b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild3.txt similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild3.txt rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubchild3.txt diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubmiddle.html b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubmiddle.html similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubmiddle.html rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubmiddle.html diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubsuper.html b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubsuper.html similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubsuper.html rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/subsubsuper.html diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/super.html b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/super.html similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/super.html rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/super.html diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/template.html b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/template.html similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/template.html rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/template.html diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/tweetbox.html b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/tweetbox.html similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/tweetbox.html rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuites/tweetbox.html diff --git a/src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuitesTest.m b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuitesTest.m similarity index 100% rename from src/tests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuitesTest.m rename to GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuitesTest.m diff --git a/src/tests/Public/v8.0/Suites/twitter/hogan.js/GRHoganSuites/inheritable_partials.json b/GRMustacheTests/Public/v8.0/Suites/twitter/hogan.js/GRHoganSuites/inheritable_partials.json similarity index 100% rename from src/tests/Public/v8.0/Suites/twitter/hogan.js/GRHoganSuites/inheritable_partials.json rename to GRMustacheTests/Public/v8.0/Suites/twitter/hogan.js/GRHoganSuites/inheritable_partials.json diff --git a/src/tests/Public/v8.0/Suites/twitter/hogan.js/GRHoganSuitesTest.m b/GRMustacheTests/Public/v8.0/Suites/twitter/hogan.js/GRHoganSuitesTest.m similarity index 100% rename from src/tests/Public/v8.0/Suites/twitter/hogan.js/GRHoganSuitesTest.m rename to GRMustacheTests/Public/v8.0/Suites/twitter/hogan.js/GRHoganSuitesTest.m diff --git a/Guides/helpers.md b/Guides/helpers.md deleted file mode 100644 index c8fff6aa..00000000 --- a/Guides/helpers.md +++ /dev/null @@ -1 +0,0 @@ -This document has been [superseded](rendering_objects.md). diff --git a/Guides/protected_contexts.md b/Guides/protected_contexts.md deleted file mode 100644 index 46929d22..00000000 --- a/Guides/protected_contexts.md +++ /dev/null @@ -1 +0,0 @@ -This document has been [superseded](security.md#priority-keys). diff --git a/Guides/proxies.md b/Guides/proxies.md deleted file mode 100644 index c8fff6aa..00000000 --- a/Guides/proxies.md +++ /dev/null @@ -1 +0,0 @@ -This document has been [superseded](rendering_objects.md). diff --git a/Guides/runtime/booleans.md b/Guides/runtime/booleans.md deleted file mode 100644 index 616abdec..00000000 --- a/Guides/runtime/booleans.md +++ /dev/null @@ -1 +0,0 @@ -This document has been [superseded](../runtime.md). diff --git a/Guides/runtime/context_stack.md b/Guides/runtime/context_stack.md deleted file mode 100644 index 616abdec..00000000 --- a/Guides/runtime/context_stack.md +++ /dev/null @@ -1 +0,0 @@ -This document has been [superseded](../runtime.md). diff --git a/Guides/runtime/loops.md b/Guides/runtime/loops.md deleted file mode 100644 index 616abdec..00000000 --- a/Guides/runtime/loops.md +++ /dev/null @@ -1 +0,0 @@ -This document has been [superseded](../runtime.md). diff --git a/Guides/runtime_patterns.md b/Guides/runtime_patterns.md deleted file mode 100644 index 97de480f..00000000 --- a/Guides/runtime_patterns.md +++ /dev/null @@ -1 +0,0 @@ -This document has been [superseded](view_model.md). diff --git a/Guides/sample_code/counters.md b/Guides/sample_code/counters.md deleted file mode 100644 index 51b583a1..00000000 --- a/Guides/sample_code/counters.md +++ /dev/null @@ -1 +0,0 @@ -This document has been [superseded](../standard_library.md#each). diff --git a/Guides/sample_code/indexes.md b/Guides/sample_code/indexes.md deleted file mode 100644 index 51b583a1..00000000 --- a/Guides/sample_code/indexes.md +++ /dev/null @@ -1 +0,0 @@ -This document has been [superseded](../standard_library.md#each). diff --git a/Guides/sample_code/localization.md b/Guides/sample_code/localization.md deleted file mode 100644 index 06d2fd9b..00000000 --- a/Guides/sample_code/localization.md +++ /dev/null @@ -1 +0,0 @@ -This document has been [superseded](../standard_library.md#localize). diff --git a/Guides/sample_code/number_formatting.md b/Guides/sample_code/number_formatting.md deleted file mode 100644 index 45a4eec8..00000000 --- a/Guides/sample_code/number_formatting.md +++ /dev/null @@ -1 +0,0 @@ -This document has been [superseded](../NSFormatter.md). diff --git a/Guides/section_helpers.md b/Guides/section_helpers.md deleted file mode 100644 index c8fff6aa..00000000 --- a/Guides/section_helpers.md +++ /dev/null @@ -1 +0,0 @@ -This document has been [superseded](rendering_objects.md). diff --git a/Guides/section_tag_helpers.md b/Guides/section_tag_helpers.md deleted file mode 100644 index c8fff6aa..00000000 --- a/Guides/section_tag_helpers.md +++ /dev/null @@ -1 +0,0 @@ -This document has been [superseded](rendering_objects.md). diff --git a/Guides/variable_helpers.md b/Guides/variable_helpers.md deleted file mode 100644 index c8fff6aa..00000000 --- a/Guides/variable_helpers.md +++ /dev/null @@ -1 +0,0 @@ -This document has been [superseded](rendering_objects.md). diff --git a/Guides/variable_tag_helpers.md b/Guides/variable_tag_helpers.md deleted file mode 100644 index c8fff6aa..00000000 --- a/Guides/variable_tag_helpers.md +++ /dev/null @@ -1 +0,0 @@ -This document has been [superseded](rendering_objects.md). diff --git a/src/bin/buildGRMustacheAvailabilityMacros b/Scripts/buildGRMustacheAvailabilityMacros similarity index 98% rename from src/bin/buildGRMustacheAvailabilityMacros rename to Scripts/buildGRMustacheAvailabilityMacros index d8f01720..b6c0f1e5 100755 --- a/src/bin/buildGRMustacheAvailabilityMacros +++ b/Scripts/buildGRMustacheAvailabilityMacros @@ -5,7 +5,7 @@ # Whenever GRMustache major or minor version changes, update the MAJOR_VERSION # and MAX_MINOR_VERSION constants below, and run: # -# src/bin/buildGRMustacheAvailabilityMacros > src/classes/Shared/GRMustacheAvailabilityMacros.h +# Scripts/buildGRMustacheAvailabilityMacros > GRMustache/Shared/GRMustacheAvailabilityMacros.h MAJOR_VERSION = 8 MAX_MINOR_VERSION = 0 From 88216431c8ba30a96f310e85f3b97b4a08488dbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sat, 26 Sep 2015 16:45:13 +0200 Subject: [PATCH 20/81] Delete tests submodules --- .gitmodules | 6 ------ src/tests/vendor/groue/GRMustacheSpec | 1 - src/tests/vendor/mustache/spec | 1 - 3 files changed, 8 deletions(-) delete mode 160000 src/tests/vendor/groue/GRMustacheSpec delete mode 160000 src/tests/vendor/mustache/spec diff --git a/.gitmodules b/.gitmodules index 59bba764..e69de29b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +0,0 @@ -[submodule "src/tests/vendor/mustache/spec"] - path = src/tests/vendor/mustache/spec - url = https://github.com/mustache/spec.git -[submodule "src/tests/vendor/groue/GRMustacheSpec"] - path = src/tests/vendor/groue/GRMustacheSpec - url = https://github.com/groue/GRMustacheSpec.git diff --git a/src/tests/vendor/groue/GRMustacheSpec b/src/tests/vendor/groue/GRMustacheSpec deleted file mode 160000 index bd813b34..00000000 --- a/src/tests/vendor/groue/GRMustacheSpec +++ /dev/null @@ -1 +0,0 @@ -Subproject commit bd813b34b972eec3785effccdd2032fa9f04d3a1 diff --git a/src/tests/vendor/mustache/spec b/src/tests/vendor/mustache/spec deleted file mode 160000 index bf6288ed..00000000 --- a/src/tests/vendor/mustache/spec +++ /dev/null @@ -1 +0,0 @@ -Subproject commit bf6288ed6bd0ce8ccea6f1dac070b3d779132c3b From 9a4b7c2df52283f2e1d689497bbb6fb581668465 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sat, 26 Sep 2015 16:49:17 +0200 Subject: [PATCH 21/81] Restore tests submodules at a different path --- .gitmodules | 6 ++++++ .../vendor/blach/NSJSONSerialization-Comments/LICENSE | 0 .../NSJSONSerialization+Comments.h | 0 .../NSJSONSerialization+Comments.m | 0 .../vendor/blach/NSJSONSerialization-Comments/README.md | 0 GRMustacheTests/vendor/groue/GRMustacheSpec | 1 + GRMustacheTests/vendor/mustache/spec | 1 + 7 files changed, 8 insertions(+) rename {src/tests => GRMustacheTests}/vendor/blach/NSJSONSerialization-Comments/LICENSE (100%) rename {src/tests => GRMustacheTests}/vendor/blach/NSJSONSerialization-Comments/NSJSONSerialization+Comments.h (100%) rename {src/tests => GRMustacheTests}/vendor/blach/NSJSONSerialization-Comments/NSJSONSerialization+Comments.m (100%) rename {src/tests => GRMustacheTests}/vendor/blach/NSJSONSerialization-Comments/README.md (100%) create mode 160000 GRMustacheTests/vendor/groue/GRMustacheSpec create mode 160000 GRMustacheTests/vendor/mustache/spec diff --git a/.gitmodules b/.gitmodules index e69de29b..8b8ad531 100644 --- a/.gitmodules +++ b/.gitmodules @@ -0,0 +1,6 @@ +[submodule "GRMustacheTests/vendor/groue/GRMustacheSpec"] + path = GRMustacheTests/vendor/groue/GRMustacheSpec + url = https://github.com/groue/GRMustacheSpec.git +[submodule "GRMustacheTests/vendor/mustache/spec"] + path = GRMustacheTests/vendor/mustache/spec + url = https://github.com/mustache/spec.git diff --git a/src/tests/vendor/blach/NSJSONSerialization-Comments/LICENSE b/GRMustacheTests/vendor/blach/NSJSONSerialization-Comments/LICENSE similarity index 100% rename from src/tests/vendor/blach/NSJSONSerialization-Comments/LICENSE rename to GRMustacheTests/vendor/blach/NSJSONSerialization-Comments/LICENSE diff --git a/src/tests/vendor/blach/NSJSONSerialization-Comments/NSJSONSerialization+Comments.h b/GRMustacheTests/vendor/blach/NSJSONSerialization-Comments/NSJSONSerialization+Comments.h similarity index 100% rename from src/tests/vendor/blach/NSJSONSerialization-Comments/NSJSONSerialization+Comments.h rename to GRMustacheTests/vendor/blach/NSJSONSerialization-Comments/NSJSONSerialization+Comments.h diff --git a/src/tests/vendor/blach/NSJSONSerialization-Comments/NSJSONSerialization+Comments.m b/GRMustacheTests/vendor/blach/NSJSONSerialization-Comments/NSJSONSerialization+Comments.m similarity index 100% rename from src/tests/vendor/blach/NSJSONSerialization-Comments/NSJSONSerialization+Comments.m rename to GRMustacheTests/vendor/blach/NSJSONSerialization-Comments/NSJSONSerialization+Comments.m diff --git a/src/tests/vendor/blach/NSJSONSerialization-Comments/README.md b/GRMustacheTests/vendor/blach/NSJSONSerialization-Comments/README.md similarity index 100% rename from src/tests/vendor/blach/NSJSONSerialization-Comments/README.md rename to GRMustacheTests/vendor/blach/NSJSONSerialization-Comments/README.md diff --git a/GRMustacheTests/vendor/groue/GRMustacheSpec b/GRMustacheTests/vendor/groue/GRMustacheSpec new file mode 160000 index 00000000..bd813b34 --- /dev/null +++ b/GRMustacheTests/vendor/groue/GRMustacheSpec @@ -0,0 +1 @@ +Subproject commit bd813b34b972eec3785effccdd2032fa9f04d3a1 diff --git a/GRMustacheTests/vendor/mustache/spec b/GRMustacheTests/vendor/mustache/spec new file mode 160000 index 00000000..83b07216 --- /dev/null +++ b/GRMustacheTests/vendor/mustache/spec @@ -0,0 +1 @@ +Subproject commit 83b0721610a4e11832e83df19c73ace3289972b9 From 964b6cfd06454cd2cbee5adac1d01425c41bbcbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sat, 26 Sep 2015 17:00:07 +0200 Subject: [PATCH 22/81] Update mustache/spec to v1.1.3. Ignore the "The empty string should be used when the named partial is not found." test, because in GRMustache, missing templates are an error. --- GRMustache.xcodeproj/project.pbxproj | 14 ++++++-------- .../mustache/spec/GRSpecificationSuitesTest.m | 12 ++++++++++-- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/GRMustache.xcodeproj/project.pbxproj b/GRMustache.xcodeproj/project.pbxproj index e735ed1c..6b1e79ae 100644 --- a/GRMustache.xcodeproj/project.pbxproj +++ b/GRMustache.xcodeproj/project.pbxproj @@ -15,10 +15,8 @@ 56214BA31BA1A5450070C6CF /* Tests in Resources */ = {isa = PBXBuildFile; fileRef = 563D66F315264B40008628C5 /* Tests */; settings = {ASSET_TAGS = (); }; }; 56214BA41BA1A5480070C6CF /* GRMustacheSuitesTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 563D66E81526497E008628C5 /* GRMustacheSuitesTest.m */; settings = {ASSET_TAGS = (); }; }; 56214BA51BA1A5480070C6CF /* GRMustacheSuitesTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 563D66E81526497E008628C5 /* GRMustacheSuitesTest.m */; settings = {ASSET_TAGS = (); }; }; - 56214BA61BA1A54C0070C6CF /* specs in Resources */ = {isa = PBXBuildFile; fileRef = 56B477A618D0E41A00EFF629 /* specs */; settings = {ASSET_TAGS = (); }; }; 56214BA71BA1A54C0070C6CF /* GRMustacheJavaSuites in Resources */ = {isa = PBXBuildFile; fileRef = 56B477A318CF9F6E00EFF629 /* GRMustacheJavaSuites */; settings = {ASSET_TAGS = (); }; }; 56214BA81BA1A54C0070C6CF /* GRHoganSuites in Resources */ = {isa = PBXBuildFile; fileRef = 56B4779918CF8D3300EFF629 /* GRHoganSuites */; settings = {ASSET_TAGS = (); }; }; - 56214BA91BA1A54C0070C6CF /* specs in Resources */ = {isa = PBXBuildFile; fileRef = 56B477A618D0E41A00EFF629 /* specs */; settings = {ASSET_TAGS = (); }; }; 56214BAA1BA1A54C0070C6CF /* GRMustacheJavaSuites in Resources */ = {isa = PBXBuildFile; fileRef = 56B477A318CF9F6E00EFF629 /* GRMustacheJavaSuites */; settings = {ASSET_TAGS = (); }; }; 56214BAB1BA1A54C0070C6CF /* GRHoganSuites in Resources */ = {isa = PBXBuildFile; fileRef = 56B4779918CF8D3300EFF629 /* GRHoganSuites */; settings = {ASSET_TAGS = (); }; }; 56214BAC1BA1A5550070C6CF /* GRSpecificationSuitesTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC3BF152639560031E8DC /* GRSpecificationSuitesTest.m */; settings = {ASSET_TAGS = (); }; }; @@ -287,7 +285,6 @@ 56DAC7551BB69F6D0010FE01 /* GRMustacheTagDelegateTest.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 56A8D4921527A23900D9C718 /* GRMustacheTagDelegateTest.mustache */; settings = {ASSET_TAGS = (); }; }; 56DAC7561BB69F6D0010FE01 /* GRMustacheTemplateRepositoryWithBundleTest_partial.text in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4AB15284ABC00ADD123 /* GRMustacheTemplateRepositoryWithBundleTest_partial.text */; settings = {ASSET_TAGS = (); }; }; 56DAC7571BB69F6D0010FE01 /* GRMustacheTemplateRepositoryWithBundleTest in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4A215284A9300ADD123 /* GRMustacheTemplateRepositoryWithBundleTest */; settings = {ASSET_TAGS = (); }; }; - 56DAC7581BB69F6D0010FE01 /* specs in Resources */ = {isa = PBXBuildFile; fileRef = 56B477A618D0E41A00EFF629 /* specs */; settings = {ASSET_TAGS = (); }; }; 56DAC7591BB69F6D0010FE01 /* GRMustacheTemplateFromMethodsTest_parserError.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 5682B4B01528C69C00ADD123 /* GRMustacheTemplateFromMethodsTest_parserError.mustache */; settings = {ASSET_TAGS = (); }; }; 56DAC75A1BB69F6D0010FE01 /* GRMustacheTemplateRepositoryTest in Resources */ = {isa = PBXBuildFile; fileRef = 568140DD16365CF500310B7F /* GRMustacheTemplateRepositoryTest */; settings = {ASSET_TAGS = (); }; }; 56DAC75B1BB69F6D0010FE01 /* GRMustacheTagDelegateTest_wrapper.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 56A8D4951527A3CE00D9C718 /* GRMustacheTagDelegateTest_wrapper.mustache */; settings = {ASSET_TAGS = (); }; }; @@ -359,6 +356,8 @@ 56DAC7BA1BB6DDAB0010FE01 /* GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DAC7B41BB6DDAB0010FE01 /* GRMustache.m */; settings = {ASSET_TAGS = (); }; }; 56DAC7BB1BB6DDAB0010FE01 /* GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DAC7B41BB6DDAB0010FE01 /* GRMustache.m */; settings = {ASSET_TAGS = (); }; }; 56DAC7BC1BB6DDAB0010FE01 /* GRMustache.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DAC7B41BB6DDAB0010FE01 /* GRMustache.m */; settings = {ASSET_TAGS = (); }; }; + 56DAC7BE1BB6E85B0010FE01 /* specs in Resources */ = {isa = PBXBuildFile; fileRef = 56DAC7BD1BB6E85B0010FE01 /* specs */; settings = {ASSET_TAGS = (); }; }; + 56DAC7BF1BB6E85B0010FE01 /* specs in Resources */ = {isa = PBXBuildFile; fileRef = 56DAC7BD1BB6E85B0010FE01 /* specs */; settings = {ASSET_TAGS = (); }; }; 6586A0691B9E2E100067C98E /* GRMustacheAvailabilityMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375619B8EF2800854524 /* GRMustacheAvailabilityMacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; 6586A06A1B9E2E100067C98E /* GRMustacheAvailabilityMacros_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375719B8EF2800854524 /* GRMustacheAvailabilityMacros_private.h */; settings = {ASSET_TAGS = (); }; }; 6586A06B1B9E2E100067C98E /* GRMustacheBuffer_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF375819B8EF2800854524 /* GRMustacheBuffer_private.h */; settings = {ASSET_TAGS = (); }; }; @@ -530,7 +529,6 @@ 56B4779918CF8D3300EFF629 /* GRHoganSuites */ = {isa = PBXFileReference; lastKnownFileType = folder; path = GRHoganSuites; sourceTree = ""; }; 56B477A018CF9F6100EFF629 /* GRMustacheJavaSuitesTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheJavaSuitesTest.m; sourceTree = ""; }; 56B477A318CF9F6E00EFF629 /* GRMustacheJavaSuites */ = {isa = PBXFileReference; lastKnownFileType = folder; path = GRMustacheJavaSuites; sourceTree = ""; }; - 56B477A618D0E41A00EFF629 /* specs */ = {isa = PBXFileReference; lastKnownFileType = folder; name = specs; path = GRMustacheTests/vendor/mustache/spec/specs; sourceTree = SOURCE_ROOT; }; 56BA242518C7A494006DA5F3 /* GRMustacheErrorHandlingTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheErrorHandlingTest.m; sourceTree = ""; }; 56BA243518C7A550006DA5F3 /* GRMustacheConfigurationBaseContextTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheConfigurationBaseContextTest.m; sourceTree = ""; }; 56BA243618C7A550006DA5F3 /* GRMustacheConfigurationTagDelimitersTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheConfigurationTagDelimitersTest.m; sourceTree = ""; }; @@ -647,6 +645,7 @@ 56DAC7B21BB6DDAB0010FE01 /* GRMustache_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustache_private.h; sourceTree = ""; }; 56DAC7B31BB6DDAB0010FE01 /* GRMustache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustache.h; sourceTree = ""; }; 56DAC7B41BB6DDAB0010FE01 /* GRMustache.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustache.m; sourceTree = ""; }; + 56DAC7BD1BB6E85B0010FE01 /* specs */ = {isa = PBXFileReference; lastKnownFileType = folder; name = specs; path = GRMustacheTests/vendor/mustache/spec/specs; sourceTree = SOURCE_ROOT; }; 56DEC1CB15262FF70031E8DC /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; 56DEC1F4152630710031E8DC /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; 56DEC3AF152638E20031E8DC /* GRMustachePrivateAPITest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustachePrivateAPITest.h; sourceTree = ""; }; @@ -774,8 +773,8 @@ 5682B47F1528399100ADD123 /* mustache/spec */ = { isa = PBXGroup; children = ( + 56DAC7BD1BB6E85B0010FE01 /* specs */, 56DEC3BF152639560031E8DC /* GRSpecificationSuitesTest.m */, - 56B477A618D0E41A00EFF629 /* specs */, ); path = mustache/spec; sourceTree = ""; @@ -1496,6 +1495,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 56DAC7BF1BB6E85B0010FE01 /* specs in Resources */, 56214C151BA1A59E0070C6CF /* GRMustacheTemplateRepositoryWithBundleTest.mustache in Resources */, 56214BF51BA1A58A0070C6CF /* GRMustacheTemplateFromMethodsTest in Resources */, 56214BF61BA1A58A0070C6CF /* GRMustacheTemplateFromMethodsTest.json in Resources */, @@ -1510,7 +1510,6 @@ 56214BE61BA1A5800070C6CF /* GRMustacheTagDelegateTest.mustache in Resources */, 56214C191BA1A59E0070C6CF /* GRMustacheTemplateRepositoryWithBundleTest_partial.text in Resources */, 56214C141BA1A59E0070C6CF /* GRMustacheTemplateRepositoryWithBundleTest in Resources */, - 56214BA91BA1A54C0070C6CF /* specs in Resources */, 56214BFA1BA1A58A0070C6CF /* GRMustacheTemplateFromMethodsTest_parserError.mustache in Resources */, 56214C211BA1A5AB0070C6CF /* GRMustacheTemplateRepositoryTest in Resources */, 56214BE71BA1A5800070C6CF /* GRMustacheTagDelegateTest_wrapper.mustache in Resources */, @@ -1530,6 +1529,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 56DAC7BE1BB6E85B0010FE01 /* specs in Resources */, 56214C0F1BA1A59D0070C6CF /* GRMustacheTemplateRepositoryWithBundleTest.mustache in Resources */, 56214BED1BA1A58A0070C6CF /* GRMustacheTemplateFromMethodsTest in Resources */, 56214BEE1BA1A58A0070C6CF /* GRMustacheTemplateFromMethodsTest.json in Resources */, @@ -1544,7 +1544,6 @@ 56214BE31BA1A5800070C6CF /* GRMustacheTagDelegateTest.mustache in Resources */, 56214C131BA1A59D0070C6CF /* GRMustacheTemplateRepositoryWithBundleTest_partial.text in Resources */, 56214C0E1BA1A59D0070C6CF /* GRMustacheTemplateRepositoryWithBundleTest in Resources */, - 56214BA61BA1A54C0070C6CF /* specs in Resources */, 56214BF21BA1A58A0070C6CF /* GRMustacheTemplateFromMethodsTest_parserError.mustache in Resources */, 56214C1E1BA1A5AB0070C6CF /* GRMustacheTemplateRepositoryTest in Resources */, 56214BE41BA1A5800070C6CF /* GRMustacheTagDelegateTest_wrapper.mustache in Resources */, @@ -1584,7 +1583,6 @@ 56DAC7551BB69F6D0010FE01 /* GRMustacheTagDelegateTest.mustache in Resources */, 56DAC7561BB69F6D0010FE01 /* GRMustacheTemplateRepositoryWithBundleTest_partial.text in Resources */, 56DAC7571BB69F6D0010FE01 /* GRMustacheTemplateRepositoryWithBundleTest in Resources */, - 56DAC7581BB69F6D0010FE01 /* specs in Resources */, 56DAC7591BB69F6D0010FE01 /* GRMustacheTemplateFromMethodsTest_parserError.mustache in Resources */, 56DAC75A1BB69F6D0010FE01 /* GRMustacheTemplateRepositoryTest in Resources */, 56DAC75B1BB69F6D0010FE01 /* GRMustacheTagDelegateTest_wrapper.mustache in Resources */, diff --git a/GRMustacheTests/Public/v8.0/Suites/mustache/spec/GRSpecificationSuitesTest.m b/GRMustacheTests/Public/v8.0/Suites/mustache/spec/GRSpecificationSuitesTest.m index 66ce341d..10d1ad2e 100644 --- a/GRMustacheTests/Public/v8.0/Suites/mustache/spec/GRSpecificationSuitesTest.m +++ b/GRMustacheTests/Public/v8.0/Suites/mustache/spec/GRSpecificationSuitesTest.m @@ -62,8 +62,16 @@ - (void)runTestsFromResource:(NSString *)name subdirectory:(NSString *)subpath NSString *expected = [test objectForKey:@"expected"]; GRMustacheTemplateRepository *repository = [GRMustacheTemplateRepository templateRepositoryWithDictionary:partialsDictionary]; - GRMustacheTemplate *template = [repository templateFromString:templateString error:NULL]; - NSString *rendering = [template renderObject:data error:NULL]; + NSError *error; + GRMustacheTemplate *template = [repository templateFromString:templateString error:&error]; + if (template == nil && [test[@"desc"] isEqual:@"The empty string should be used when the named partial is not found."]) { + // Ignore this test: it makes sure missing partials don't render. + // In GRMustache, missing partials are an error. + continue; + } + XCTAssertNotNil(template, @"Could not load template %@: %@", templateString, error); + NSString *rendering = [template renderObject:data error:&error]; + XCTAssertNotNil(rendering, @"Could not render template %@: %@", templateString, error); // GRMustache doesn't care about white space rules of the Mustache specification. // Compare rendering and expected rendering, but ignoring white space. From d7ac54f8a938ab9c4dbe47cd1f533839f84555ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sat, 26 Sep 2015 17:05:57 +0200 Subject: [PATCH 23/81] Target OSX 10.9 --- GRMustache.xcodeproj/project.pbxproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/GRMustache.xcodeproj/project.pbxproj b/GRMustache.xcodeproj/project.pbxproj index 6b1e79ae..32eded1f 100644 --- a/GRMustache.xcodeproj/project.pbxproj +++ b/GRMustache.xcodeproj/project.pbxproj @@ -1935,7 +1935,7 @@ INFOPLIST_FILE = GRMustache/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; - MACOSX_DEPLOYMENT_TARGET = 10.10; + MACOSX_DEPLOYMENT_TARGET = 10.9; MTL_ENABLE_DEBUG_INFO = YES; PRODUCT_BUNDLE_IDENTIFIER = com.github.groue.GRMustache; PRODUCT_NAME = GRMustache; @@ -1969,7 +1969,7 @@ INFOPLIST_FILE = GRMustache/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; - MACOSX_DEPLOYMENT_TARGET = 10.10; + MACOSX_DEPLOYMENT_TARGET = 10.9; MTL_ENABLE_DEBUG_INFO = NO; PRODUCT_BUNDLE_IDENTIFIER = com.github.groue.GRMustache; PRODUCT_NAME = GRMustache; From 28e1d7467d826b30dd3aa81fa6aebbe1a91ac222 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sat, 26 Sep 2015 17:09:59 +0200 Subject: [PATCH 24/81] Less TODO --- TODO.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TODO.md b/TODO.md index 8a073c68..de9bcd77 100644 --- a/TODO.md +++ b/TODO.md @@ -17,4 +17,4 @@ - [X] +[GRMustache renderingObjectForObject:] - [X] +[GRMustache renderingObjectWithBlock:] - [X] GRMustacheTag.templateRepository -- [ ] Drop GRMustacheVersion and +[GRMustache libraryVersion] +- [X] Drop GRMustacheVersion and +[GRMustache libraryVersion] From a678da7deae1f4bd905f53652b01e9132ca3a5f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Fri, 16 Oct 2015 08:40:23 +0200 Subject: [PATCH 25/81] +[GRMustache templateFromString:error:] no longer loads partials from main bundle. Remove support for current template repository (flawed), and current content type (leave it to the user). --- GRMustache/Rendering/GRMustacheRendering.m | 57 ------ .../Rendering/GRMustacheRenderingEngine.m | 17 +- .../Rendering/GRMustacheRendering_private.h | 8 - GRMustache/Templates/GRMustacheTemplate.m | 16 +- .../v8.0/GRMustacheRenderingObjectTest.m | 184 +++++++++--------- 5 files changed, 102 insertions(+), 180 deletions(-) diff --git a/GRMustache/Rendering/GRMustacheRendering.m b/GRMustache/Rendering/GRMustacheRendering.m index ed7a138d..632fb3d7 100644 --- a/GRMustache/Rendering/GRMustacheRendering.m +++ b/GRMustache/Rendering/GRMustacheRendering.m @@ -148,63 +148,6 @@ + (void)initialize } -#pragma mark - Current Template Repository - -+ (void)pushCurrentTemplateRepository:(GRMustacheTemplateRepository *)templateRepository -{ - NSMutableArray *stack = getCurrentThreadCurrentTemplateRepositoryStack(); - if (!stack) { - stack = [[NSMutableArray alloc] init]; - setCurrentThreadCurrentTemplateRepositoryStack(stack); - } - [stack addObject:templateRepository]; -} - -+ (void)popCurrentTemplateRepository -{ - NSMutableArray *stack = getCurrentThreadCurrentTemplateRepositoryStack(); - NSAssert(stack, @"Missing currentTemplateRepositoryStack"); - NSAssert(stack.count > 0, @"Empty currentTemplateRepositoryStack"); - [stack removeLastObject]; -} - -+ (GRMustacheTemplateRepository *)currentTemplateRepository -{ - NSMutableArray *stack = getCurrentThreadCurrentTemplateRepositoryStack(); - return [stack lastObject]; -} - - -#pragma mark - Current Content Type - -+ (void)pushCurrentContentType:(GRMustacheContentType)contentType -{ - NSMutableArray *stack = getCurrentThreadCurrentContentTypeStack(); - if (!stack) { - stack = [[NSMutableArray alloc] init]; - setCurrentThreadCurrentContentTypeStack(stack); - } - [stack addObject:[NSNumber numberWithUnsignedInteger:contentType]]; -} - -+ (void)popCurrentContentType -{ - NSMutableArray *stack = getCurrentThreadCurrentContentTypeStack(); - NSAssert(stack, @"Missing currentContentTypeStack"); - NSAssert(stack.count > 0, @"Empty currentContentTypeStack"); - [stack removeLastObject]; -} - -+ (GRMustacheContentType)currentContentType -{ - NSMutableArray *stack = getCurrentThreadCurrentContentTypeStack(); - if (stack.count > 0) { - return [(NSNumber *)[stack lastObject] unsignedIntegerValue]; - } - return ([self currentTemplateRepository].configuration ?: [GRMustacheConfiguration defaultConfiguration]).contentType; -} - - #pragma mark - Private /** diff --git a/GRMustache/Rendering/GRMustacheRenderingEngine.m b/GRMustache/Rendering/GRMustacheRenderingEngine.m index 6cc075e6..083b3c71 100644 --- a/GRMustache/Rendering/GRMustacheRenderingEngine.m +++ b/GRMustache/Rendering/GRMustacheRenderingEngine.m @@ -103,7 +103,13 @@ - (BOOL)visitTemplateAST:(GRMustacheTemplateAST *)templateAST error:(NSError **) // // So let's check for a content-type mismatch: GRMustacheContentType ASTContentType = templateAST.contentType; - if (_contentType != ASTContentType) + if (_contentType == ASTContentType) + { + // Content-type match + + return [self visitTemplateASTNodes:templateAST.templateASTNodes error:error]; + } + else { // Content-type mismatch: render separately... @@ -122,15 +128,6 @@ - (BOOL)visitTemplateAST:(GRMustacheTemplateAST *)templateAST error:(NSError **) GRMustacheBufferAppendString(&_buffer, rendering); return YES; } - else - { - // Content-type match - - [GRMustacheRendering pushCurrentContentType:ASTContentType]; - BOOL success = [self visitTemplateASTNodes:templateAST.templateASTNodes error:error]; - [GRMustacheRendering popCurrentContentType]; - return success; - } } - (BOOL)visitInheritedPartialNode:(GRMustacheInheritedPartialNode *)inheritedPartialNode error:(NSError **)error diff --git a/GRMustache/Rendering/GRMustacheRendering_private.h b/GRMustache/Rendering/GRMustacheRendering_private.h index 5dd1a791..ea496537 100644 --- a/GRMustache/Rendering/GRMustacheRendering_private.h +++ b/GRMustache/Rendering/GRMustacheRendering_private.h @@ -145,13 +145,5 @@ // Documented in GRMustacheRendering.h + (id)renderingObjectWithBlock:(NSString *(^)(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error))renderingBlock GRMUSTACHE_API_PUBLIC; -+ (void)pushCurrentTemplateRepository:(GRMustacheTemplateRepository *)templateRepository GRMUSTACHE_API_INTERNAL; -+ (void)popCurrentTemplateRepository GRMUSTACHE_API_INTERNAL; -+ (GRMustacheTemplateRepository *)currentTemplateRepository GRMUSTACHE_API_INTERNAL; - -+ (void)pushCurrentContentType:(GRMustacheContentType)contentType GRMUSTACHE_API_INTERNAL; -+ (void)popCurrentContentType GRMUSTACHE_API_INTERNAL; -+ (GRMustacheContentType)currentContentType GRMUSTACHE_API_INTERNAL; - @end diff --git a/GRMustache/Templates/GRMustacheTemplate.m b/GRMustache/Templates/GRMustacheTemplate.m index 00378f10..99c47837 100644 --- a/GRMustache/Templates/GRMustacheTemplate.m +++ b/GRMustache/Templates/GRMustacheTemplate.m @@ -33,12 +33,8 @@ @implementation GRMustacheTemplate + (instancetype)templateFromString:(NSString *)templateString error:(NSError **)error { - GRMustacheTemplateRepository *templateRepository = [GRMustacheRendering currentTemplateRepository]; - if (templateRepository == nil) { - templateRepository = [GRMustacheTemplateRepository templateRepositoryWithBundle:[NSBundle mainBundle]]; - } - GRMustacheContentType contentType = [GRMustacheRendering currentContentType]; - return [templateRepository templateFromString:templateString contentType:contentType error:error]; + GRMustacheTemplateRepository *templateRepository = [GRMustacheTemplateRepository templateRepository]; + return [templateRepository templateFromString:templateString error:error]; } + (instancetype)templateFromResource:(NSString *)name bundle:(NSBundle *)bundle error:(NSError **)error @@ -117,14 +113,8 @@ - (NSString *)renderObjectsFromArray:(NSArray *)objects error:(NSError **)error - (NSString *)renderContentWithContext:(GRMustacheContext *)context HTMLSafe:(BOOL *)HTMLSafe error:(NSError **)error { - NSString *rendering = nil; - - [GRMustacheRendering pushCurrentTemplateRepository:self.templateRepository]; GRMustacheRenderingEngine *renderingEngine = [GRMustacheRenderingEngine renderingEngineWithContentType:_templateAST.contentType context:context]; - rendering = [renderingEngine renderTemplateAST:_templateAST HTMLSafe:HTMLSafe error:error]; - [GRMustacheRendering popCurrentTemplateRepository]; - - return rendering; + return [renderingEngine renderTemplateAST:_templateAST HTMLSafe:HTMLSafe error:error]; } - (void)setBaseContext:(GRMustacheContext *)baseContext diff --git a/GRMustacheTests/Public/v8.0/GRMustacheRenderingObjectTest.m b/GRMustacheTests/Public/v8.0/GRMustacheRenderingObjectTest.m index ebe31f39..4a723807 100644 --- a/GRMustacheTests/Public/v8.0/GRMustacheRenderingObjectTest.m +++ b/GRMustacheTests/Public/v8.0/GRMustacheRenderingObjectTest.m @@ -345,31 +345,31 @@ - (void)testRenderingObjectCanRenderCurrentContextInDistinctTemplate } } -- (void)testRenderingObjectCanRenderCurrentContextInDistinctTemplateContainingPartial -{ - { - id object = [GRMustacheRendering renderingObjectWithBlock:^NSString *(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error) { - GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"{{> partial}}" error:NULL]; - return [template renderContentWithContext:context HTMLSafe:HTMLSafe error:error]; - }]; - NSDictionary *partials = @{@"partial": @"{{subject}}"}; - GRMustacheTemplateRepository *repository = [GRMustacheTemplateRepository templateRepositoryWithDictionary:partials]; - NSDictionary *context = @{ @"object": object, @"subject": @"---" }; - NSString *result = [[repository templateFromString:@"{{object}}" error:nil] renderObject:context error:NULL]; - XCTAssertEqualObjects(result, @"---", @""); - } - { - id object = [GRMustacheRendering renderingObjectWithBlock:^NSString *(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error) { - GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"{{> partial}}" error:NULL]; - return [template renderContentWithContext:context HTMLSafe:HTMLSafe error:error]; - }]; - NSDictionary *partials = @{@"partial": @"{{subject}}"}; - GRMustacheTemplateRepository *repository = [GRMustacheTemplateRepository templateRepositoryWithDictionary:partials]; - NSDictionary *context = @{ @"object": object, @"subject": @"---" }; - NSString *result = [[repository templateFromString:@"{{#object}}{{/object}}" error:nil] renderObject:context error:NULL]; - XCTAssertEqualObjects(result, @"---", @""); - } -} +//- (void)testRenderingObjectCanRenderCurrentContextInDistinctTemplateContainingPartial +//{ +// { +// id object = [GRMustacheRendering renderingObjectWithBlock:^NSString *(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error) { +// GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"{{> partial}}" error:NULL]; +// return [template renderContentWithContext:context HTMLSafe:HTMLSafe error:error]; +// }]; +// NSDictionary *partials = @{@"partial": @"{{subject}}"}; +// GRMustacheTemplateRepository *repository = [GRMustacheTemplateRepository templateRepositoryWithDictionary:partials]; +// NSDictionary *context = @{ @"object": object, @"subject": @"---" }; +// NSString *result = [[repository templateFromString:@"{{object}}" error:nil] renderObject:context error:NULL]; +// XCTAssertEqualObjects(result, @"---", @""); +// } +// { +// id object = [GRMustacheRendering renderingObjectWithBlock:^NSString *(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error) { +// GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"{{> partial}}" error:NULL]; +// return [template renderContentWithContext:context HTMLSafe:HTMLSafe error:error]; +// }]; +// NSDictionary *partials = @{@"partial": @"{{subject}}"}; +// GRMustacheTemplateRepository *repository = [GRMustacheTemplateRepository templateRepositoryWithDictionary:partials]; +// NSDictionary *context = @{ @"object": object, @"subject": @"---" }; +// NSString *result = [[repository templateFromString:@"{{#object}}{{/object}}" error:nil] renderObject:context error:NULL]; +// XCTAssertEqualObjects(result, @"---", @""); +// } +//} - (void)testRenderingObjectDoesNotAutomaticallyEntersCurrentContext { @@ -709,73 +709,73 @@ - (void)testTemplateAreNotHTMLEscaped XCTAssertEqualObjects(result, @"&<>&<>", @""); } -- (void)testCurrentTemplateRepositoryIsAvailableForRenderingObjects -{ - NSDictionary *partials = @{ @"partial": @"partial" }; - GRMustacheTemplateRepository *repo = [GRMustacheTemplateRepository templateRepositoryWithDictionary:partials]; - id data = @{ @"renderingObject" : [GRMustacheRendering renderingObjectWithBlock:^NSString *(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error) { - GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"{{> partial }}" error:NULL]; - return [template renderContentWithContext:context HTMLSafe:HTMLSafe error:error]; - }]}; - GRMustacheTemplate *template = [repo templateFromString:@"{{renderingObject}}" error:NULL]; - NSString *rendering = [template renderObject:data error:NULL]; - XCTAssertEqualObjects(rendering, @"partial"); -} - -- (void)testCurrentTemplateRepositoryIsUpdatedByDynamicPartials -{ - NSDictionary *partials1 = @{ @"template1": @"{{ renderingObject }}|{{ template2 }}", - @"partial": @"partial1" }; - GRMustacheTemplateRepository *repo1 = [GRMustacheTemplateRepository templateRepositoryWithDictionary:partials1]; - - NSDictionary *partials2 = @{ @"template2": @"{{ renderingObject }}", - @"partial": @"partial2" }; - GRMustacheTemplateRepository *repo2 = [GRMustacheTemplateRepository templateRepositoryWithDictionary:partials2]; - - id data = @{ @"template2": [repo2 templateNamed:@"template2" error:NULL], - @"renderingObject" : [GRMustacheRendering renderingObjectWithBlock:^NSString *(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error) { - GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"{{> partial }}" error:NULL]; - return [template renderContentWithContext:context HTMLSafe:HTMLSafe error:error]; - }]}; - GRMustacheTemplate *template = [repo1 templateNamed:@"template1" error:NULL]; - NSString *rendering = [template renderObject:data error:NULL]; - XCTAssertEqualObjects(rendering, @"partial1|partial2"); -} - -- (void)testCurrentContentTypeIsAvailableForRenderingObjects -{ - id data = @{ @"value": @"&", - @"renderingObject" : [GRMustacheRendering renderingObjectWithBlock:^NSString *(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error) { - GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"{{ value }}" error:NULL]; - return [template renderContentWithContext:context HTMLSafe:HTMLSafe error:error]; - }]}; - { - GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"{{%CONTENT_TYPE:HTML}}{{renderingObject}}" error:NULL]; - NSString *rendering = [template renderObject:data error:NULL]; - XCTAssertEqualObjects(rendering, @"&"); - } - { - GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"{{%CONTENT_TYPE:TEXT}}{{renderingObject}}" error:NULL]; - NSString *rendering = [template renderObject:data error:NULL]; - XCTAssertEqualObjects(rendering, @"&"); - } -} - -- (void)testCurrentContentTypeIsUpdatedByPartials -{ - NSDictionary *partialsHTML = @{ @"templateHTML": @"{{ renderingObject }}|{{> templateText }}", - @"templateText": @"{{% CONTENT_TYPE:TEXT }}{{ renderingObject }}"}; - GRMustacheTemplateRepository *repoHTML = [GRMustacheTemplateRepository templateRepositoryWithDictionary:partialsHTML]; - - id data = @{ @"value": @"&", - @"renderingObject" : [GRMustacheRendering renderingObjectWithBlock:^NSString *(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error) { - GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"{{ value }}" error:NULL]; - return [template renderContentWithContext:context HTMLSafe:HTMLSafe error:error]; - }]}; - GRMustacheTemplate *template = [repoHTML templateNamed:@"templateHTML" error:NULL]; - NSString *rendering = [template renderObject:data error:NULL]; - XCTAssertEqualObjects(rendering, @"&|&"); -} +//- (void)testCurrentTemplateRepositoryIsAvailableForRenderingObjects +//{ +// NSDictionary *partials = @{ @"partial": @"partial" }; +// GRMustacheTemplateRepository *repo = [GRMustacheTemplateRepository templateRepositoryWithDictionary:partials]; +// id data = @{ @"renderingObject" : [GRMustacheRendering renderingObjectWithBlock:^NSString *(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error) { +// GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"{{> partial }}" error:NULL]; +// return [template renderContentWithContext:context HTMLSafe:HTMLSafe error:error]; +// }]}; +// GRMustacheTemplate *template = [repo templateFromString:@"{{renderingObject}}" error:NULL]; +// NSString *rendering = [template renderObject:data error:NULL]; +// XCTAssertEqualObjects(rendering, @"partial"); +//} +// +//- (void)testCurrentTemplateRepositoryIsUpdatedByDynamicPartials +//{ +// NSDictionary *partials1 = @{ @"template1": @"{{ renderingObject }}|{{ template2 }}", +// @"partial": @"partial1" }; +// GRMustacheTemplateRepository *repo1 = [GRMustacheTemplateRepository templateRepositoryWithDictionary:partials1]; +// +// NSDictionary *partials2 = @{ @"template2": @"{{ renderingObject }}", +// @"partial": @"partial2" }; +// GRMustacheTemplateRepository *repo2 = [GRMustacheTemplateRepository templateRepositoryWithDictionary:partials2]; +// +// id data = @{ @"template2": [repo2 templateNamed:@"template2" error:NULL], +// @"renderingObject" : [GRMustacheRendering renderingObjectWithBlock:^NSString *(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error) { +// GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"{{> partial }}" error:NULL]; +// return [template renderContentWithContext:context HTMLSafe:HTMLSafe error:error]; +// }]}; +// GRMustacheTemplate *template = [repo1 templateNamed:@"template1" error:NULL]; +// NSString *rendering = [template renderObject:data error:NULL]; +// XCTAssertEqualObjects(rendering, @"partial1|partial2"); +//} +// +//- (void)testCurrentContentTypeIsAvailableForRenderingObjects +//{ +// id data = @{ @"value": @"&", +// @"renderingObject" : [GRMustacheRendering renderingObjectWithBlock:^NSString *(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error) { +// GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"{{ value }}" error:NULL]; +// return [template renderContentWithContext:context HTMLSafe:HTMLSafe error:error]; +// }]}; +// { +// GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"{{%CONTENT_TYPE:HTML}}{{renderingObject}}" error:NULL]; +// NSString *rendering = [template renderObject:data error:NULL]; +// XCTAssertEqualObjects(rendering, @"&"); +// } +// { +// GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"{{%CONTENT_TYPE:TEXT}}{{renderingObject}}" error:NULL]; +// NSString *rendering = [template renderObject:data error:NULL]; +// XCTAssertEqualObjects(rendering, @"&"); +// } +//} +// +//- (void)testCurrentContentTypeIsUpdatedByPartials +//{ +// NSDictionary *partialsHTML = @{ @"templateHTML": @"{{ renderingObject }}|{{> templateText }}", +// @"templateText": @"{{% CONTENT_TYPE:TEXT }}{{ renderingObject }}"}; +// GRMustacheTemplateRepository *repoHTML = [GRMustacheTemplateRepository templateRepositoryWithDictionary:partialsHTML]; +// +// id data = @{ @"value": @"&", +// @"renderingObject" : [GRMustacheRendering renderingObjectWithBlock:^NSString *(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error) { +// GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"{{ value }}" error:NULL]; +// return [template renderContentWithContext:context HTMLSafe:HTMLSafe error:error]; +// }]}; +// GRMustacheTemplate *template = [repoHTML templateNamed:@"templateHTML" error:NULL]; +// NSString *rendering = [template renderObject:data error:NULL]; +// XCTAssertEqualObjects(rendering, @"&|&"); +//} - (void)testCurrentContentTypeIsUpdatedByDynamicPartials { From 56a318da44ca5255205e838afce8bf0f3086516f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Fri, 16 Oct 2015 08:59:17 +0200 Subject: [PATCH 26/81] GRMustacheURLEscapeFilter uses -[NSString stringByAddingPercentEncodingWithAllowedCharacters:] (fixes #98) --- .../GRMustacheURLEscapeFilter.m | 31 ++----------------- 1 file changed, 3 insertions(+), 28 deletions(-) diff --git a/GRMustache/Services/StandardLibrary/GRMustacheURLEscapeFilter.m b/GRMustache/Services/StandardLibrary/GRMustacheURLEscapeFilter.m index 44a253d5..e884ca3c 100644 --- a/GRMustache/Services/StandardLibrary/GRMustacheURLEscapeFilter.m +++ b/GRMustache/Services/StandardLibrary/GRMustacheURLEscapeFilter.m @@ -108,34 +108,9 @@ - (id)mustacheTag:(GRMustacheTag *)tag willRenderObject:(id)object - (NSString *)escape:(NSString *)string { - // Perform a first escaping using Apple's implementation. - // It leaves many character unescaped. We'll have to go further. - - string = [string stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; - - static const NSString *escapeForCharacter[] = { - ['$'] = @"%24", - ['&'] = @"%26", - ['+'] = @"%2B", - [','] = @"%2C", - ['/'] = @"%2F", - [':'] = @"%3A", - [';'] = @"%3B", - ['='] = @"%3D", - ['?'] = @"%3F", - ['@'] = @"%40", - [' '] = @"%20", - ['\t'] = @"%09", - ['#'] = @"%23", - ['<'] = @"%3C", - ['>'] = @"%3E", - ['\"'] = @"%22", - ['\n'] = @"%0A", - ['\r'] = @"%0D", - }; - static const int escapeForCharacterLength = sizeof(escapeForCharacter) / sizeof(NSString *); - NSUInteger capacity = ([string length] + 20) * 1.2; - return GRMustacheTranslateCharacters(string, escapeForCharacter, escapeForCharacterLength, capacity); + NSMutableCharacterSet *cs = [[[NSCharacterSet URLQueryAllowedCharacterSet] mutableCopy] autorelease]; + [cs removeCharactersInString:@"?&="]; + return [string stringByAddingPercentEncodingWithAllowedCharacters: cs]; } @end From b5a1a93b7fb16efca0c7c67a3033eaca0a0ca577 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Fri, 16 Oct 2015 12:55:32 +0200 Subject: [PATCH 27/81] Shared schemes for Carthage --- .../{GRMustacheOSX (Shared).xcscheme => GRMustacheOSX.xcscheme} | 0 .../{GRMustacheiOS (Shared).xcscheme => GRMustacheiOS.xcscheme} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename GRMustache.xcodeproj/xcshareddata/xcschemes/{GRMustacheOSX (Shared).xcscheme => GRMustacheOSX.xcscheme} (100%) rename GRMustache.xcodeproj/xcshareddata/xcschemes/{GRMustacheiOS (Shared).xcscheme => GRMustacheiOS.xcscheme} (100%) diff --git a/GRMustache.xcodeproj/xcshareddata/xcschemes/GRMustacheOSX (Shared).xcscheme b/GRMustache.xcodeproj/xcshareddata/xcschemes/GRMustacheOSX.xcscheme similarity index 100% rename from GRMustache.xcodeproj/xcshareddata/xcschemes/GRMustacheOSX (Shared).xcscheme rename to GRMustache.xcodeproj/xcshareddata/xcschemes/GRMustacheOSX.xcscheme diff --git a/GRMustache.xcodeproj/xcshareddata/xcschemes/GRMustacheiOS (Shared).xcscheme b/GRMustache.xcodeproj/xcshareddata/xcschemes/GRMustacheiOS.xcscheme similarity index 100% rename from GRMustache.xcodeproj/xcshareddata/xcschemes/GRMustacheiOS (Shared).xcscheme rename to GRMustache.xcodeproj/xcshareddata/xcschemes/GRMustacheiOS.xcscheme From 070d9af08a73f743933472c8cab2d2ca6b903dcf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Fri, 16 Oct 2015 13:52:39 +0200 Subject: [PATCH 28/81] GRMustacheDemoiOS --- .gitignore | 100 +++- .../project.pbxproj | 449 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../GRMustacheDemoiOS/AppDelegate.h | 6 + .../GRMustacheDemoiOS/AppDelegate.m | 7 + .../AppIcon.appiconset/Contents.json | 38 ++ .../Base.lproj/LaunchScreen.storyboard | 26 + .../Base.lproj/Main.storyboard | 58 +++ .../GRMustacheDemoiOS/Info.plist | 40 ++ .../GRMustacheDemoiOS/ViewController.h | 5 + .../GRMustacheDemoiOS/ViewController.m | 19 + .../GRMustacheDemoiOS/layout.mustache | 6 + .../GRMustacheDemoiOS/main.m | 16 + .../GRMustacheDemoiOS/template.mustache | 6 + .../contents.xcworkspacedata | 7 + .../contents.xcworkspacedata | 10 + 16 files changed, 783 insertions(+), 17 deletions(-) create mode 100644 DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS.xcodeproj/project.pbxproj create mode 100644 DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/AppDelegate.h create mode 100644 DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/AppDelegate.m create mode 100644 DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/Base.lproj/LaunchScreen.storyboard create mode 100644 DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/Base.lproj/Main.storyboard create mode 100644 DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/Info.plist create mode 100644 DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/ViewController.h create mode 100644 DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/ViewController.m create mode 100644 DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/layout.mustache create mode 100644 DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/main.m create mode 100644 DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/template.mustache create mode 100644 GRMustache.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 GRMustache.xcworkspace/contents.xcworkspacedata diff --git a/.gitignore b/.gitignore index 938e5b83..853ef7b2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,78 @@ -DoxygenDocs.docset -# xcode -build/* +## https://github.com/github/gitignore/blob/master/Global/OSX.gitignore + +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +## https://github.com/github/gitignore/blob/master/Global/Windows.gitignore + +# Windows image file caches +Thumbs.db +ehthumbs.db + +# Folder config file +Desktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msm +*.msp + +# Windows shortcuts +*.lnk + +## https://github.com/github/gitignore/blob/master/Global/TextMate.gitignore + +*.tmproj +*.tmproject +tmtags + +## https://github.com/github/gitignore/blob/master/Global/Vim.gitignore + +[._]*.s[a-w][a-z] +[._]s[a-w][a-z] +*.un~ +Session.vim +.netrwhist +*~ + +## https://github.com/github/gitignore/blob/master/Objective-C.gitignore + +# Xcode +# +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + +# Build generated +build/ +DerivedData + +# Various settings *.pbxuser !default.pbxuser *.mode1v3 @@ -9,20 +81,14 @@ build/* !default.mode2v3 *.perspectivev3 !default.perspectivev3 -*.xcworkspace -!default.xcworkspace xcuserdata -*.moved-aside -# OS X -.DS_Store -.AppleDouble -.LSOverride -Icon - -# Thumbnails -._* +# Other +*.xccheckout +*.moved-aside +*.xcuserstate +*.xcscmblueprint -# Files that might appear on external disk -.Spotlight-V100 -.Trashes \ No newline at end of file +# Obj-C/Swift specific +*.hmap +*.ipa diff --git a/DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS.xcodeproj/project.pbxproj b/DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS.xcodeproj/project.pbxproj new file mode 100644 index 00000000..06504c80 --- /dev/null +++ b/DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS.xcodeproj/project.pbxproj @@ -0,0 +1,449 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 566373AA1BD118AB00E1B35D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 566373A91BD118AB00E1B35D /* main.m */; }; + 566373AD1BD118AB00E1B35D /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 566373AC1BD118AB00E1B35D /* AppDelegate.m */; }; + 566373B01BD118AB00E1B35D /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 566373AF1BD118AB00E1B35D /* ViewController.m */; }; + 566373B31BD118AB00E1B35D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 566373B11BD118AB00E1B35D /* Main.storyboard */; }; + 566373B51BD118AB00E1B35D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 566373B41BD118AB00E1B35D /* Assets.xcassets */; }; + 566373B81BD118AB00E1B35D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 566373B61BD118AB00E1B35D /* LaunchScreen.storyboard */; }; + 56A8FB461BD11AA40098CE03 /* layout.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 56A8FB451BD11AA40098CE03 /* layout.mustache */; settings = {ASSET_TAGS = (); }; }; + 56A8FB4D1BD11AAD0098CE03 /* template.mustache in Resources */ = {isa = PBXBuildFile; fileRef = 56A8FB4C1BD11AAD0098CE03 /* template.mustache */; settings = {ASSET_TAGS = (); }; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 566373C81BD118DC00E1B35D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 566373BF1BD118DC00E1B35D /* GRMustache.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 56214B6F1BA1A34A0070C6CF; + remoteInfo = GRMustacheOSX; + }; + 566373CA1BD118DC00E1B35D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 566373BF1BD118DC00E1B35D /* GRMustache.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 56214B8A1BA1A4D50070C6CF; + remoteInfo = GRMustacheOSXTests; + }; + 566373CC1BD118DC00E1B35D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 566373BF1BD118DC00E1B35D /* GRMustache.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 56AC8C981BA1F637009E4319; + remoteInfo = GRMustacheOSXPrivateTests; + }; + 566373CE1BD118DC00E1B35D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 566373BF1BD118DC00E1B35D /* GRMustache.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 6586A05D1B9E2D720067C98E; + remoteInfo = GRMustacheiOS; + }; + 566373D01BD118DC00E1B35D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 566373BF1BD118DC00E1B35D /* GRMustache.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 56214B7B1BA1A4C50070C6CF; + remoteInfo = GRMustacheiOSTests; + }; + 566373D21BD118DC00E1B35D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 566373BF1BD118DC00E1B35D /* GRMustache.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 56DAC7681BB69F6D0010FE01; + remoteInfo = GRMustacheiOSPrivateTests; + }; + 566373D51BD119DF00E1B35D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 566373BF1BD118DC00E1B35D /* GRMustache.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 6586A05C1B9E2D720067C98E; + remoteInfo = GRMustacheiOS; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 566373A51BD118AB00E1B35D /* GRMustacheDemoiOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = GRMustacheDemoiOS.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 566373A91BD118AB00E1B35D /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 566373AB1BD118AB00E1B35D /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + 566373AC1BD118AB00E1B35D /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + 566373AE1BD118AB00E1B35D /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; + 566373AF1BD118AB00E1B35D /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; + 566373B21BD118AB00E1B35D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 566373B41BD118AB00E1B35D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 566373B71BD118AB00E1B35D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 566373B91BD118AB00E1B35D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 566373BF1BD118DC00E1B35D /* GRMustache.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = GRMustache.xcodeproj; path = ../../../GRMustache.xcodeproj; sourceTree = ""; }; + 56A8FB451BD11AA40098CE03 /* layout.mustache */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = layout.mustache; sourceTree = ""; }; + 56A8FB4C1BD11AAD0098CE03 /* template.mustache */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = template.mustache; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 566373A21BD118AB00E1B35D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 5663739C1BD118AB00E1B35D = { + isa = PBXGroup; + children = ( + 566373A71BD118AB00E1B35D /* GRMustacheDemoiOS */, + 566373A61BD118AB00E1B35D /* Products */, + ); + sourceTree = ""; + }; + 566373A61BD118AB00E1B35D /* Products */ = { + isa = PBXGroup; + children = ( + 566373A51BD118AB00E1B35D /* GRMustacheDemoiOS.app */, + ); + name = Products; + sourceTree = ""; + }; + 566373A71BD118AB00E1B35D /* GRMustacheDemoiOS */ = { + isa = PBXGroup; + children = ( + 566373BF1BD118DC00E1B35D /* GRMustache.xcodeproj */, + 566373AB1BD118AB00E1B35D /* AppDelegate.h */, + 566373AC1BD118AB00E1B35D /* AppDelegate.m */, + 566373AE1BD118AB00E1B35D /* ViewController.h */, + 566373AF1BD118AB00E1B35D /* ViewController.m */, + 566373D41BD118E600E1B35D /* Resources */, + 566373A81BD118AB00E1B35D /* Supporting Files */, + ); + path = GRMustacheDemoiOS; + sourceTree = ""; + }; + 566373A81BD118AB00E1B35D /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 566373B91BD118AB00E1B35D /* Info.plist */, + 566373A91BD118AB00E1B35D /* main.m */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 566373C01BD118DC00E1B35D /* Products */ = { + isa = PBXGroup; + children = ( + 566373C91BD118DC00E1B35D /* GRMustache.framework */, + 566373CB1BD118DC00E1B35D /* GRMustacheOSXTests.xctest */, + 566373CD1BD118DC00E1B35D /* GRMustacheOSXPrivateTests.xctest */, + 566373CF1BD118DC00E1B35D /* GRMustache.framework */, + 566373D11BD118DC00E1B35D /* GRMustacheiOSTests.xctest */, + 566373D31BD118DC00E1B35D /* GRMustacheiOSPrivateTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 566373D41BD118E600E1B35D /* Resources */ = { + isa = PBXGroup; + children = ( + 566373B11BD118AB00E1B35D /* Main.storyboard */, + 566373B41BD118AB00E1B35D /* Assets.xcassets */, + 566373B61BD118AB00E1B35D /* LaunchScreen.storyboard */, + 56A8FB451BD11AA40098CE03 /* layout.mustache */, + 56A8FB4C1BD11AAD0098CE03 /* template.mustache */, + ); + name = Resources; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 566373A41BD118AB00E1B35D /* GRMustacheDemoiOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = 566373BC1BD118AB00E1B35D /* Build configuration list for PBXNativeTarget "GRMustacheDemoiOS" */; + buildPhases = ( + 566373A11BD118AB00E1B35D /* Sources */, + 566373A21BD118AB00E1B35D /* Frameworks */, + 566373A31BD118AB00E1B35D /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 566373D61BD119DF00E1B35D /* PBXTargetDependency */, + ); + name = GRMustacheDemoiOS; + productName = GRMustacheDemoiOS; + productReference = 566373A51BD118AB00E1B35D /* GRMustacheDemoiOS.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 5663739D1BD118AB00E1B35D /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0700; + ORGANIZATIONNAME = "Gwendal Roué"; + TargetAttributes = { + 566373A41BD118AB00E1B35D = { + CreatedOnToolsVersion = 7.0; + }; + }; + }; + buildConfigurationList = 566373A01BD118AB00E1B35D /* Build configuration list for PBXProject "GRMustacheDemoiOS" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 5663739C1BD118AB00E1B35D; + productRefGroup = 566373A61BD118AB00E1B35D /* Products */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 566373C01BD118DC00E1B35D /* Products */; + ProjectRef = 566373BF1BD118DC00E1B35D /* GRMustache.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 566373A41BD118AB00E1B35D /* GRMustacheDemoiOS */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 566373C91BD118DC00E1B35D /* GRMustache.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = GRMustache.framework; + remoteRef = 566373C81BD118DC00E1B35D /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 566373CB1BD118DC00E1B35D /* GRMustacheOSXTests.xctest */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = GRMustacheOSXTests.xctest; + remoteRef = 566373CA1BD118DC00E1B35D /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 566373CD1BD118DC00E1B35D /* GRMustacheOSXPrivateTests.xctest */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = GRMustacheOSXPrivateTests.xctest; + remoteRef = 566373CC1BD118DC00E1B35D /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 566373CF1BD118DC00E1B35D /* GRMustache.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = GRMustache.framework; + remoteRef = 566373CE1BD118DC00E1B35D /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 566373D11BD118DC00E1B35D /* GRMustacheiOSTests.xctest */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = GRMustacheiOSTests.xctest; + remoteRef = 566373D01BD118DC00E1B35D /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 566373D31BD118DC00E1B35D /* GRMustacheiOSPrivateTests.xctest */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = GRMustacheiOSPrivateTests.xctest; + remoteRef = 566373D21BD118DC00E1B35D /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 566373A31BD118AB00E1B35D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 566373B81BD118AB00E1B35D /* LaunchScreen.storyboard in Resources */, + 56A8FB461BD11AA40098CE03 /* layout.mustache in Resources */, + 56A8FB4D1BD11AAD0098CE03 /* template.mustache in Resources */, + 566373B51BD118AB00E1B35D /* Assets.xcassets in Resources */, + 566373B31BD118AB00E1B35D /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 566373A11BD118AB00E1B35D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 566373B01BD118AB00E1B35D /* ViewController.m in Sources */, + 566373AD1BD118AB00E1B35D /* AppDelegate.m in Sources */, + 566373AA1BD118AB00E1B35D /* main.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 566373D61BD119DF00E1B35D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GRMustacheiOS; + targetProxy = 566373D51BD119DF00E1B35D /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 566373B11BD118AB00E1B35D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 566373B21BD118AB00E1B35D /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 566373B61BD118AB00E1B35D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 566373B71BD118AB00E1B35D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 566373BA1BD118AB00E1B35D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + }; + name = Debug; + }; + 566373BB1BD118AB00E1B35D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 566373BD1BD118AB00E1B35D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + INFOPLIST_FILE = GRMustacheDemoiOS/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.github.groue.GRMustacheDemoiOS; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 566373BE1BD118AB00E1B35D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + INFOPLIST_FILE = GRMustacheDemoiOS/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.github.groue.GRMustacheDemoiOS; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 566373A01BD118AB00E1B35D /* Build configuration list for PBXProject "GRMustacheDemoiOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 566373BA1BD118AB00E1B35D /* Debug */, + 566373BB1BD118AB00E1B35D /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 566373BC1BD118AB00E1B35D /* Build configuration list for PBXNativeTarget "GRMustacheDemoiOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 566373BD1BD118AB00E1B35D /* Debug */, + 566373BE1BD118AB00E1B35D /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 5663739D1BD118AB00E1B35D /* Project object */; +} diff --git a/DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..1b5961ff --- /dev/null +++ b/DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/AppDelegate.h b/DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/AppDelegate.h new file mode 100644 index 00000000..8ec7241c --- /dev/null +++ b/DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/AppDelegate.h @@ -0,0 +1,6 @@ +#import + +@interface AppDelegate : UIResponder +@property (strong, nonatomic) UIWindow *window; +@end + diff --git a/DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/AppDelegate.m b/DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/AppDelegate.m new file mode 100644 index 00000000..987cf0ad --- /dev/null +++ b/DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/AppDelegate.m @@ -0,0 +1,7 @@ +#import "AppDelegate.h" + +@interface AppDelegate () +@end + +@implementation AppDelegate +@end diff --git a/DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/Assets.xcassets/AppIcon.appiconset/Contents.json b/DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..118c98f7 --- /dev/null +++ b/DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,38 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/Base.lproj/LaunchScreen.storyboard b/DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 00000000..5acf25dc --- /dev/null +++ b/DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/Base.lproj/Main.storyboard b/DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/Base.lproj/Main.storyboard new file mode 100644 index 00000000..d399db69 --- /dev/null +++ b/DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/Base.lproj/Main.storyboard @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/Info.plist b/DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/Info.plist new file mode 100644 index 00000000..6905cc67 --- /dev/null +++ b/DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/Info.plist @@ -0,0 +1,40 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/ViewController.h b/DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/ViewController.h new file mode 100644 index 00000000..143825c2 --- /dev/null +++ b/DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/ViewController.h @@ -0,0 +1,5 @@ +#import + +@interface ViewController : UIViewController +@end + diff --git a/DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/ViewController.m b/DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/ViewController.m new file mode 100644 index 00000000..24dcb2a2 --- /dev/null +++ b/DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/ViewController.m @@ -0,0 +1,19 @@ +@import GRMustache; +#import "ViewController.h" + +@interface ViewController () +@property (nonatomic, weak) IBOutlet UIWebView *webView; +@end + +@implementation ViewController + +- (void)viewDidLoad +{ + [super viewDidLoad]; + + GRMustacheTemplate *template = [GRMustacheTemplate templateFromResource:@"template" bundle:nil error:NULL]; + NSString *HTML = [template renderObject:@{ @"title": @"Welcome", @"paragraph": @"GRMustache is a flexible and production-ready Mustache templates for MacOS Cocoa and iOS." } error:NULL]; + [self.webView loadHTMLString:HTML baseURL:nil]; +} + +@end diff --git a/DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/layout.mustache b/DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/layout.mustache new file mode 100644 index 00000000..ad79a41a --- /dev/null +++ b/DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/layout.mustache @@ -0,0 +1,6 @@ + + + +{{$content}}Default content{{/content}} + + diff --git a/DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/main.m b/DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/main.m new file mode 100644 index 00000000..18510f71 --- /dev/null +++ b/DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/main.m @@ -0,0 +1,16 @@ +// +// main.m +// GRMustacheDemoiOS +// +// Created by Gwendal Roué on 16/10/2015. +// Copyright © 2015 Gwendal Roué. All rights reserved. +// + +#import +#import "AppDelegate.h" + +int main(int argc, char * argv[]) { + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +} diff --git a/DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/template.mustache b/DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/template.mustache new file mode 100644 index 00000000..9b0a970a --- /dev/null +++ b/DemoApps/GRMustacheDemoiOS/GRMustacheDemoiOS/template.mustache @@ -0,0 +1,6 @@ +{{{{title}} +

    {{paragraph}}

    +{{/content}} +{{/layout}} diff --git a/GRMustache.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/GRMustache.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..919434a6 --- /dev/null +++ b/GRMustache.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/GRMustache.xcworkspace/contents.xcworkspacedata b/GRMustache.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..f9d66fe4 --- /dev/null +++ b/GRMustache.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + From bf62e8b269363ddfa97aacb10a83214662c143b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Fri, 16 Oct 2015 14:17:01 +0200 Subject: [PATCH 29/81] Remove support for current template repository (flawed), and current content type (leave it to the user). --- GRMustache/Rendering/GRMustacheRendering.m | 27 ---------------------- 1 file changed, 27 deletions(-) diff --git a/GRMustache/Rendering/GRMustacheRendering.m b/GRMustache/Rendering/GRMustacheRendering.m index 632fb3d7..ecbca050 100644 --- a/GRMustache/Rendering/GRMustacheRendering.m +++ b/GRMustache/Rendering/GRMustacheRendering.m @@ -74,30 +74,6 @@ - (instancetype)initWithRenderingBlock:(NSString *(^)(GRMustacheTag *tag, GRMust static BOOL GRMustacheBoolValueNSFastEnumeration(id self, SEL _cmd); -// ============================================================================= -#pragma mark - Current Template Repository - -static pthread_key_t GRCurrentTemplateRepositoryStackKey; -void freeCurrentTemplateRepositoryStack(void *objects) { - [(NSMutableArray *)objects release]; -} -#define setupCurrentTemplateRepositoryStack() pthread_key_create(&GRCurrentTemplateRepositoryStackKey, freeCurrentTemplateRepositoryStack) -#define getCurrentThreadCurrentTemplateRepositoryStack() (NSMutableArray *)pthread_getspecific(GRCurrentTemplateRepositoryStackKey) -#define setCurrentThreadCurrentTemplateRepositoryStack(classes) pthread_setspecific(GRCurrentTemplateRepositoryStackKey, classes) - - -// ============================================================================= -#pragma mark - Current Content Type - -static pthread_key_t GRCurrentContentTypeStackKey; -void freeCurrentContentTypeStack(void *objects) { - [(NSMutableArray *)objects release]; -} -#define setupCurrentContentTypeStack() pthread_key_create(&GRCurrentContentTypeStackKey, freeCurrentContentTypeStack) -#define getCurrentThreadCurrentContentTypeStack() (NSMutableArray *)pthread_getspecific(GRCurrentContentTypeStackKey) -#define setCurrentThreadCurrentContentTypeStack(classes) pthread_setspecific(GRCurrentContentTypeStackKey, classes) - - // ============================================================================= #pragma mark - GRMustacheRendering @@ -105,9 +81,6 @@ @implementation GRMustacheRendering + (void)initialize { - setupCurrentTemplateRepositoryStack(); - setupCurrentContentTypeStack(); - nilRendering = [[GRMustacheNilRendering alloc] init]; // We could have declared categories on NSNull, NSNumber, NSString and From 81944c9269a672be158c6cc8e3fe2fe257d1507c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sat, 17 Oct 2015 12:27:11 +0200 Subject: [PATCH 30/81] GRMustacheDemoOSX --- .gitignore | 5 + DemoApps/GRMustacheDemoOSX/Cartfile | 1 + .../project.pbxproj | 328 +++++++ .../contents.xcworkspacedata | 7 + .../GRMustacheDemoOSX/AppDelegate.h | 5 + .../GRMustacheDemoOSX/AppDelegate.m | 4 + .../AppIcon.appiconset/Contents.json | 58 ++ .../Base.lproj/Main.storyboard | 919 ++++++++++++++++++ .../GRMustacheDemoOSX/Info.plist | 34 + .../GRMustacheDemoOSX/Model.h | 6 + .../GRMustacheDemoOSX/Model.m | 23 + .../GRMustacheDemoOSX/ViewController.h | 7 + .../GRMustacheDemoOSX/ViewController.m | 83 ++ .../GRMustacheDemoOSX/main.m | 13 + 14 files changed, 1493 insertions(+) create mode 100644 DemoApps/GRMustacheDemoOSX/Cartfile create mode 100644 DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX.xcodeproj/project.pbxproj create mode 100644 DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX/AppDelegate.h create mode 100644 DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX/AppDelegate.m create mode 100644 DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX/Base.lproj/Main.storyboard create mode 100644 DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX/Info.plist create mode 100644 DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX/Model.h create mode 100644 DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX/Model.m create mode 100644 DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX/ViewController.h create mode 100644 DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX/ViewController.m create mode 100644 DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX/main.m diff --git a/.gitignore b/.gitignore index 853ef7b2..c2ba4145 100644 --- a/.gitignore +++ b/.gitignore @@ -92,3 +92,8 @@ xcuserdata # Obj-C/Swift specific *.hmap *.ipa + + +DemoApps/GRMustacheDemoOSX/Carthage +DemoApps/GRMustacheDemoOSX/Cartfile.resolved +GRMustacheTests/Carthage \ No newline at end of file diff --git a/DemoApps/GRMustacheDemoOSX/Cartfile b/DemoApps/GRMustacheDemoOSX/Cartfile new file mode 100644 index 00000000..9be365f6 --- /dev/null +++ b/DemoApps/GRMustacheDemoOSX/Cartfile @@ -0,0 +1 @@ +github "groue/GRMustache" "Framework" diff --git a/DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX.xcodeproj/project.pbxproj b/DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX.xcodeproj/project.pbxproj new file mode 100644 index 00000000..6679cd5b --- /dev/null +++ b/DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX.xcodeproj/project.pbxproj @@ -0,0 +1,328 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 5626CE501BD253C90087F1C3 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 5626CE4F1BD253C90087F1C3 /* AppDelegate.m */; }; + 5626CE531BD253C90087F1C3 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 5626CE521BD253C90087F1C3 /* main.m */; }; + 5626CE561BD253C90087F1C3 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5626CE551BD253C90087F1C3 /* ViewController.m */; }; + 5626CE581BD253C90087F1C3 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5626CE571BD253C90087F1C3 /* Assets.xcassets */; }; + 5626CE5B1BD253C90087F1C3 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5626CE591BD253C90087F1C3 /* Main.storyboard */; }; + 5626CE631BD253FE0087F1C3 /* GRMustache.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5626CE621BD253FE0087F1C3 /* GRMustache.framework */; }; + 5626CE641BD253FE0087F1C3 /* GRMustache.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 5626CE621BD253FE0087F1C3 /* GRMustache.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 5626CE681BD255010087F1C3 /* Model.m in Sources */ = {isa = PBXBuildFile; fileRef = 5626CE671BD255010087F1C3 /* Model.m */; settings = {ASSET_TAGS = (); }; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 5626CE651BD253FE0087F1C3 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + 5626CE641BD253FE0087F1C3 /* GRMustache.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 5626CE4B1BD253C90087F1C3 /* GRMustacheDemoOSX.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = GRMustacheDemoOSX.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 5626CE4E1BD253C90087F1C3 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + 5626CE4F1BD253C90087F1C3 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + 5626CE521BD253C90087F1C3 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 5626CE541BD253C90087F1C3 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; + 5626CE551BD253C90087F1C3 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; + 5626CE571BD253C90087F1C3 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 5626CE5A1BD253C90087F1C3 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 5626CE5C1BD253C90087F1C3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 5626CE621BD253FE0087F1C3 /* GRMustache.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GRMustache.framework; path = Carthage/Build/Mac/GRMustache.framework; sourceTree = ""; }; + 5626CE661BD255010087F1C3 /* Model.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Model.h; sourceTree = ""; }; + 5626CE671BD255010087F1C3 /* Model.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Model.m; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 5626CE481BD253C90087F1C3 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 5626CE631BD253FE0087F1C3 /* GRMustache.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 5626CE421BD253C90087F1C3 = { + isa = PBXGroup; + children = ( + 5626CE621BD253FE0087F1C3 /* GRMustache.framework */, + 5626CE4D1BD253C90087F1C3 /* GRMustacheDemoOSX */, + 5626CE4C1BD253C90087F1C3 /* Products */, + ); + sourceTree = ""; + }; + 5626CE4C1BD253C90087F1C3 /* Products */ = { + isa = PBXGroup; + children = ( + 5626CE4B1BD253C90087F1C3 /* GRMustacheDemoOSX.app */, + ); + name = Products; + sourceTree = ""; + }; + 5626CE4D1BD253C90087F1C3 /* GRMustacheDemoOSX */ = { + isa = PBXGroup; + children = ( + 5626CE4E1BD253C90087F1C3 /* AppDelegate.h */, + 5626CE4F1BD253C90087F1C3 /* AppDelegate.m */, + 5626CE661BD255010087F1C3 /* Model.h */, + 5626CE671BD255010087F1C3 /* Model.m */, + 5626CE541BD253C90087F1C3 /* ViewController.h */, + 5626CE551BD253C90087F1C3 /* ViewController.m */, + 5626CE571BD253C90087F1C3 /* Assets.xcassets */, + 5626CE591BD253C90087F1C3 /* Main.storyboard */, + 5626CE5C1BD253C90087F1C3 /* Info.plist */, + 5626CE511BD253C90087F1C3 /* Supporting Files */, + ); + path = GRMustacheDemoOSX; + sourceTree = ""; + }; + 5626CE511BD253C90087F1C3 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 5626CE521BD253C90087F1C3 /* main.m */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 5626CE4A1BD253C90087F1C3 /* GRMustacheDemoOSX */ = { + isa = PBXNativeTarget; + buildConfigurationList = 5626CE5F1BD253C90087F1C3 /* Build configuration list for PBXNativeTarget "GRMustacheDemoOSX" */; + buildPhases = ( + 5626CE471BD253C90087F1C3 /* Sources */, + 5626CE481BD253C90087F1C3 /* Frameworks */, + 5626CE491BD253C90087F1C3 /* Resources */, + 5626CE651BD253FE0087F1C3 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = GRMustacheDemoOSX; + productName = GRMustacheDemoOSX; + productReference = 5626CE4B1BD253C90087F1C3 /* GRMustacheDemoOSX.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 5626CE431BD253C90087F1C3 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0700; + ORGANIZATIONNAME = "Gwendal Roué"; + TargetAttributes = { + 5626CE4A1BD253C90087F1C3 = { + CreatedOnToolsVersion = 7.0; + }; + }; + }; + buildConfigurationList = 5626CE461BD253C90087F1C3 /* Build configuration list for PBXProject "GRMustacheDemoOSX" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 5626CE421BD253C90087F1C3; + productRefGroup = 5626CE4C1BD253C90087F1C3 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 5626CE4A1BD253C90087F1C3 /* GRMustacheDemoOSX */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 5626CE491BD253C90087F1C3 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 5626CE581BD253C90087F1C3 /* Assets.xcassets in Resources */, + 5626CE5B1BD253C90087F1C3 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 5626CE471BD253C90087F1C3 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 5626CE561BD253C90087F1C3 /* ViewController.m in Sources */, + 5626CE531BD253C90087F1C3 /* main.m in Sources */, + 5626CE501BD253C90087F1C3 /* AppDelegate.m in Sources */, + 5626CE681BD255010087F1C3 /* Model.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 5626CE591BD253C90087F1C3 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 5626CE5A1BD253C90087F1C3 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 5626CE5D1BD253C90087F1C3 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.10; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + }; + name = Debug; + }; + 5626CE5E1BD253C90087F1C3 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.10; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + }; + name = Release; + }; + 5626CE601BD253C90087F1C3 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + COMBINE_HIDPI_IMAGES = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Carthage/Build/Mac", + ); + INFOPLIST_FILE = GRMustacheDemoOSX/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.github.groue.GRMustacheDemoOSX; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 5626CE611BD253C90087F1C3 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + COMBINE_HIDPI_IMAGES = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Carthage/Build/Mac", + ); + INFOPLIST_FILE = GRMustacheDemoOSX/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.github.groue.GRMustacheDemoOSX; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 5626CE461BD253C90087F1C3 /* Build configuration list for PBXProject "GRMustacheDemoOSX" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5626CE5D1BD253C90087F1C3 /* Debug */, + 5626CE5E1BD253C90087F1C3 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 5626CE5F1BD253C90087F1C3 /* Build configuration list for PBXNativeTarget "GRMustacheDemoOSX" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5626CE601BD253C90087F1C3 /* Debug */, + 5626CE611BD253C90087F1C3 /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; +/* End XCConfigurationList section */ + }; + rootObject = 5626CE431BD253C90087F1C3 /* Project object */; +} diff --git a/DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..3279b18d --- /dev/null +++ b/DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX/AppDelegate.h b/DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX/AppDelegate.h new file mode 100644 index 00000000..9be8356f --- /dev/null +++ b/DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX/AppDelegate.h @@ -0,0 +1,5 @@ +#import + +@interface AppDelegate : NSObject +@end + diff --git a/DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX/AppDelegate.m b/DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX/AppDelegate.m new file mode 100644 index 00000000..9432fc57 --- /dev/null +++ b/DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX/AppDelegate.m @@ -0,0 +1,4 @@ +#import "AppDelegate.h" + +@implementation AppDelegate +@end diff --git a/DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX/Assets.xcassets/AppIcon.appiconset/Contents.json b/DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..2db2b1c7 --- /dev/null +++ b/DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,58 @@ +{ + "images" : [ + { + "idiom" : "mac", + "size" : "16x16", + "scale" : "1x" + }, + { + "idiom" : "mac", + "size" : "16x16", + "scale" : "2x" + }, + { + "idiom" : "mac", + "size" : "32x32", + "scale" : "1x" + }, + { + "idiom" : "mac", + "size" : "32x32", + "scale" : "2x" + }, + { + "idiom" : "mac", + "size" : "128x128", + "scale" : "1x" + }, + { + "idiom" : "mac", + "size" : "128x128", + "scale" : "2x" + }, + { + "idiom" : "mac", + "size" : "256x256", + "scale" : "1x" + }, + { + "idiom" : "mac", + "size" : "256x256", + "scale" : "2x" + }, + { + "idiom" : "mac", + "size" : "512x512", + "scale" : "1x" + }, + { + "idiom" : "mac", + "size" : "512x512", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX/Base.lproj/Main.storyboard b/DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX/Base.lproj/Main.storyboard new file mode 100644 index 00000000..bc7d55cf --- /dev/null +++ b/DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX/Base.lproj/Main.storyboard @@ -0,0 +1,919 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Default + + + + + + + Left to Right + + + + + + + Right to Left + + + + + + + + + + + Default + + + + + + + Left to Right + + + + + + + Right to Left + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX/Info.plist b/DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX/Info.plist new file mode 100644 index 00000000..7254a8d1 --- /dev/null +++ b/DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX/Info.plist @@ -0,0 +1,34 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIconFile + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSMinimumSystemVersion + $(MACOSX_DEPLOYMENT_TARGET) + NSHumanReadableCopyright + Copyright © 2015 Gwendal Roué. All rights reserved. + NSMainStoryboardFile + Main + NSPrincipalClass + NSApplication + + diff --git a/DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX/Model.h b/DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX/Model.h new file mode 100644 index 00000000..d1105942 --- /dev/null +++ b/DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX/Model.h @@ -0,0 +1,6 @@ +#import + +@interface Model : NSObject +@property (nonatomic, copy) NSString *templateString; +@property (nonatomic, copy) NSString *JSONString; +@end diff --git a/DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX/Model.m b/DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX/Model.m new file mode 100644 index 00000000..59b770db --- /dev/null +++ b/DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX/Model.m @@ -0,0 +1,23 @@ +// +// Model.m +// GRMustacheDemoOSX +// +// Created by Gwendal Roué on 17/10/2015. +// Copyright © 2015 Gwendal Roué. All rights reserved. +// + +#import "Model.h" + +@implementation Model + +- (instancetype)init +{ + self = [super init]; + if (self) { + self.templateString = @"Hello {{ name }}!"; + self.JSONString = @"{\n \"name\": \"Arthur\"\n}"; + } + return self; +} + +@end diff --git a/DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX/ViewController.h b/DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX/ViewController.h new file mode 100644 index 00000000..91281ddc --- /dev/null +++ b/DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX/ViewController.h @@ -0,0 +1,7 @@ +#import + +@interface ViewController : NSViewController + + +@end + diff --git a/DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX/ViewController.m b/DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX/ViewController.m new file mode 100644 index 00000000..9687698f --- /dev/null +++ b/DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX/ViewController.m @@ -0,0 +1,83 @@ +// +// ViewController.m +// GRMustacheDemoOSX +// +// Created by Gwendal Roué on 17/10/2015. +// Copyright © 2015 Gwendal Roué. All rights reserved. +// + +@import GRMustache; +#import "ViewController.h" +#import "Model.h" + +@interface ViewController() +@property (nonatomic) IBOutlet NSTextView *templateTextView; +@property (nonatomic) IBOutlet NSTextView *JSONTextView; +@property (nonatomic) IBOutlet NSTextView *renderingTextView; +@property (nonatomic) IBOutlet Model *model; +@end + +@implementation ViewController + ++ (NSFont *)font +{ + static NSFont *font; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + font = [NSFont fontWithName:@"Menlo" size:12]; + }); + return font; +} + +- (void)viewDidLoad +{ + [super viewDidLoad]; + for(NSTextView *textView in @[self.templateTextView, self.JSONTextView]) { + textView.automaticQuoteSubstitutionEnabled = YES; + textView.textStorage.font = [ViewController font]; + } +} + +- (IBAction)render:(id)sender +{ + NSError *error; + NSNumberFormatter *percentFormatter = nil; + NSData *JSONData = nil; + id JSONObject = nil; + NSString *rendering = nil; + + GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:self.model.templateString error:&error]; + if (!template) { goto error; } + + percentFormatter = [[NSNumberFormatter alloc] init]; + percentFormatter.numberStyle = NSNumberFormatterPercentStyle; + [template extendBaseContextWithProtectedObject: + @{ @"percent": percentFormatter, + @"each": [GRMustache standardEach], + @"zip": [GRMustache standardZip], + @"localize": [[GRMustacheLocalizer alloc] init], + @"HTMLEscape": [GRMustache standardHTMLEscape], + @"URLEscape": [GRMustache standardURLEscape], + @"javascriptEscape": [GRMustache standardJavascriptEscape], + }]; + + JSONData = [self.model.JSONString dataUsingEncoding:NSUTF8StringEncoding]; + JSONObject = [NSJSONSerialization JSONObjectWithData:JSONData options:0 error:&error]; + if (!JSONObject) { goto error; } + + rendering = [template renderObject:JSONObject error:&error]; + if (!rendering) { goto error; } + [self presentRenderingString:rendering]; + return; + +error: + [self presentRenderingString:[NSString stringWithFormat:@"%@: %@", error.domain, error.localizedDescription]]; +} + +- (void)presentRenderingString:(NSString *)string +{ + self.renderingTextView.string = string; + self.renderingTextView.textStorage.font = [ViewController font]; +} + +@end diff --git a/DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX/main.m b/DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX/main.m new file mode 100644 index 00000000..3c9ee98c --- /dev/null +++ b/DemoApps/GRMustacheDemoOSX/GRMustacheDemoOSX/main.m @@ -0,0 +1,13 @@ +// +// main.m +// GRMustacheDemoOSX +// +// Created by Gwendal Roué on 17/10/2015. +// Copyright © 2015 Gwendal Roué. All rights reserved. +// + +#import + +int main(int argc, const char * argv[]) { + return NSApplicationMain(argc, argv); +} From b9988c7d65376a782fe87fc210c182fd705e3cb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sat, 17 Oct 2015 13:15:39 +0200 Subject: [PATCH 31/81] GRMustacheDemoOSX --- GRMustache.xcworkspace/contents.xcworkspacedata | 3 +++ 1 file changed, 3 insertions(+) diff --git a/GRMustache.xcworkspace/contents.xcworkspacedata b/GRMustache.xcworkspace/contents.xcworkspacedata index f9d66fe4..2022e213 100644 --- a/GRMustache.xcworkspace/contents.xcworkspacedata +++ b/GRMustache.xcworkspace/contents.xcworkspacedata @@ -7,4 +7,7 @@ + + From 5b7a0735efdd83f6aba881f85871b88d213438ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sat, 17 Oct 2015 13:15:48 +0200 Subject: [PATCH 32/81] README.md --- README.md | 95 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 92 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 22a62ae9..74da6512 100644 --- a/README.md +++ b/README.md @@ -11,14 +11,103 @@ It ships with built-in goodies and extensibility hooks that let you avoid the st Get release announcements and usage tips: follow [@GRMustache on Twitter](http://twitter.com/GRMustache). -System requirements -------------------- +Features +-------- -GRMustache targets iOS down to version 4.3, MacOS down to 10.6 Snow Leopard (without garbage collection), and only depends on the Foundation framework. +- Support for the full [Mustache syntax](http://mustache.github.io/mustache.5.html) +- Filters, as `{{ uppercase(name) }}` +- Template inheritance, as in [hogan.js](http://twitter.github.com/hogan.js/), [mustache.java](https://github.com/spullara/mustache.java) and [mustache.php](https://github.com/bobthecow/mustache.php). +- Built-in [goodies](Docs/Guides/goodies.md) + + +Requirements +------------ + +- iOS 7.0+ / OSX 10.9+ +- Xcode 7 + +[GRMustache 7.3.2](https://github.com/groue/GRMustache/tree/v7.3.2) used to support older systems and Xcode versions. **Swift developers**: You can use GRMustache from Swift, with a limitation: you can only render Objective-C objects. Instead, consider using [GRMustache.swift](https://github.com/groue/GRMustache.swift), a pure Swift implementation of GRMustache. +Usage +----- + +`document.mustache`: + +```mustache +Hello {{name}} +Your beard trimmer will arrive on {{format(date)}}. +{{#late}} +Well, on {{format(realDate)}} because of a Martian attack. +{{/late}} +``` + +```objc +@import GRMustache; + +// Load the `document.mustache` resource of the main bundle +GRMustacheTemplate *template = [GRMustacheTemplate templateFromResource:@"document" bundle:nil error:NULL]; + +// Let template format dates with `{{format(...)}}` +NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; +dateFormatter.dateStyle = NSDateFormatterMediumStyle; +[template extendBaseContextWithObject:@{ @"format": dateFormatter }]; + +// The rendered data +id data = @{ + @"name": @"Arthur", + @"date": [NSDate date], + @"realDate": [[NSDate date] dateByAddingTimeInterval:60*60*24*3], + @"late": @YES, +}; + +// The rendering: "Hello Arthur..." +NSString *rendering = [template renderObject:data error:NULL]; +``` + + +Installation +------------ + +### CocoaPods + +[CocoaPods](http://cocoapods.org/) is a dependency manager for Xcode projects. + +To use GRMustache with Cocoapods, specify in your Podfile: + +```ruby +source 'https://github.com/CocoaPods/Specs.git' +use_frameworks! + +pod 'GRMustache', '~> 8.0' +``` + + +### Carthage + +[Carthage](https://github.com/Carthage/Carthage) is another dependency manager for Xcode projects. + +To use GRMustache with Carthage, specify in your Cartfile: + +``` +github "groue/GRMustache" ~> 8.0 +``` + + +### Manually + +Download a copy of GRMustache, embed the `GRMustache.xcodeproj` project in your own project, and add the `GRMustacheOSX` or `GRMustacheiOS` target as a dependency of your own target. + + + + +TO BE CONTINUED +-------------------------------------------------------------------------- + + + How To ------ From a0a546f10b2e692b1134f7fad4c94d4a0b7722fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sat, 17 Oct 2015 13:34:41 +0200 Subject: [PATCH 33/81] TODO.md --- TODO.md | 1 + 1 file changed, 1 insertion(+) diff --git a/TODO.md b/TODO.md index de9bcd77..7f96061d 100644 --- a/TODO.md +++ b/TODO.md @@ -18,3 +18,4 @@ - [X] +[GRMustache renderingObjectWithBlock:] - [X] GRMustacheTag.templateRepository - [X] Drop GRMustacheVersion and +[GRMustache libraryVersion] +- [ ] use instancetype when relevant From d28f49b1d02459e4797414493ffdf4115c50805e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sat, 17 Oct 2015 13:34:48 +0200 Subject: [PATCH 34/81] README.md --- README.md | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) diff --git a/README.md b/README.md index 74da6512..f12405bd 100644 --- a/README.md +++ b/README.md @@ -101,6 +101,87 @@ github "groue/GRMustache" ~> 8.0 Download a copy of GRMustache, embed the `GRMustache.xcodeproj` project in your own project, and add the `GRMustacheOSX` or `GRMustacheiOS` target as a dependency of your own target. +Documentation +============= + +External links: + +- [The Mustache Language](http://mustache.github.io/mustache.5.html): the Mustache language itself. You should start here. +- [GRMustache.swift Reference](http://cocoadocs.org/docsets/GRMustache/7.3.2/index.html) on cocoadocs.org + +Rendering templates: + +- [Loading Templates](#loading-templates) +- [Errors](#errors) +- [Mustache Tags Reference](#mustache-tags-reference) +- [The Context Stack and Expressions](#the-context-stack-and-expressions) + +Feeding templates: + +- [Boxing Values](#boxing-values) +- [Standard Swift Types Reference](#standard-swift-types-reference) +- [Custom Types](#custom-types) +- [Lambdas](#lambdas) +- [Filters](#filters) +- [Advanced Boxes](#advanced-boxes) + +Misc: + +- [Built-in goodies](#built-in-goodies) + + +Loading Templates +----------------- + +Templates may come from various sources: + +- Raw Swift strings: + + ```objc + GRMustacheTemplate *template; + template = [GRMustacheTemplate templateFromString:@"Hello {{name}}" error:NULL]; + ``` + +- Bundle resources: + + ```objc + // Loads the "document.mustache" resource of the main bundle: + template = [GRMustacheTemplate templateFromResource:@"document" bundle:nil error:NULL]; + ``` + +- Files and URLs: + + ```objc + + template = [GRMustacheTemplate templateFromContentsOfURL:templateURL error:NULL]; + template = [GRMustacheTemplate templateFromContentsOfFile:@"/path/to/document.mustache" error:NULL]; + ``` + +- Template Repositories: + + Template repositories represent a group of templates. They can be configured independently, and provide neat features like template caching. For example: + + ```objc + // The repository of Bash templates, with extension ".sh": + GRMustacheTemplateRepository *repo; + repo = [GRMustacheTemplateRepository templateRepositoryWithBundle:nil + templateExtension:@"sh" + encoding:NSUTF8StringEncoding]; + + // Disable HTML escaping for Bash scripts: + repo.configuration.contentType = GRMustacheContentTypeText; + + // Load a template: + template = [repo templateNamed:@"script" error:NULL]; + ``` + +For more information, check: + +- [GRMustacheTemplate](http://cocoadocs.org/docsets/GRMustache/7.3.2/Classes/GRMustacheTemplate.html) +- [GRMustacheTemplateRepository](http://cocoadocs.org/docsets/GRMustache/7.3.2/Classes/GRMustacheTemplateRepository.html) + + + TO BE CONTINUED From 06bf62d54fa271f394face9a0e236c58c1f8f365 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sat, 17 Oct 2015 13:45:49 +0200 Subject: [PATCH 35/81] Headers cleanup --- GRMustache/Configuration/GRMustacheConfiguration.h | 2 +- GRMustache/Configuration/GRMustacheConfiguration.m | 4 ++-- .../Configuration/GRMustacheConfiguration_private.h | 2 +- GRMustache/GRMustache.h | 10 +++++----- GRMustache/GRMustache.m | 10 +++++----- GRMustache/GRMustache_private.h | 10 +++++----- TODO.md | 1 - 7 files changed, 19 insertions(+), 20 deletions(-) diff --git a/GRMustache/Configuration/GRMustacheConfiguration.h b/GRMustache/Configuration/GRMustacheConfiguration.h index 60cc438d..d86587e8 100644 --- a/GRMustache/Configuration/GRMustacheConfiguration.h +++ b/GRMustache/Configuration/GRMustacheConfiguration.h @@ -119,7 +119,7 @@ * * @since v6.2 */ -+ (GRMustacheConfiguration *)configuration AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; ++ (instancetype)configuration AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; //////////////////////////////////////////////////////////////////////////////// diff --git a/GRMustache/Configuration/GRMustacheConfiguration.m b/GRMustache/Configuration/GRMustacheConfiguration.m index a8caca54..085cb38c 100644 --- a/GRMustache/Configuration/GRMustacheConfiguration.m +++ b/GRMustache/Configuration/GRMustacheConfiguration.m @@ -41,9 +41,9 @@ + (GRMustacheConfiguration *)defaultConfiguration return defaultConfiguration; } -+ (GRMustacheConfiguration *)configuration ++ (instancetype)configuration { - return [[[GRMustacheConfiguration alloc] init] autorelease]; + return [[[self alloc] init] autorelease]; } - (void)dealloc diff --git a/GRMustache/Configuration/GRMustacheConfiguration_private.h b/GRMustache/Configuration/GRMustacheConfiguration_private.h index e2c155bd..234e0ab8 100644 --- a/GRMustache/Configuration/GRMustacheConfiguration_private.h +++ b/GRMustache/Configuration/GRMustacheConfiguration_private.h @@ -42,7 +42,7 @@ + (GRMustacheConfiguration *)defaultConfiguration GRMUSTACHE_API_PUBLIC; // Documented in GRMustacheConfiguration.h -+ (GRMustacheConfiguration *)configuration GRMUSTACHE_API_PUBLIC; ++ (instancetype)configuration GRMUSTACHE_API_PUBLIC; // Documented in GRMustacheConfiguration.h @property (nonatomic) GRMustacheContentType contentType GRMUSTACHE_API_PUBLIC; diff --git a/GRMustache/GRMustache.h b/GRMustache/GRMustache.h index c3e9c745..725a5bff 100644 --- a/GRMustache/GRMustache.h +++ b/GRMustache/GRMustache.h @@ -50,7 +50,7 @@ FOUNDATION_EXPORT const unsigned char GRMustacheVersionString[]; * * @since v8.0 */ -+ (NSObject *)standardEach AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; ++ (id)standardEach AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * @return The GRMustache standard `HTMLEscape`. @@ -59,7 +59,7 @@ FOUNDATION_EXPORT const unsigned char GRMustacheVersionString[]; * * @since v8.0 */ -+ (NSObject *)standardHTMLEscape AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; ++ (id)standardHTMLEscape AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * @return The GRMustache standard `URLEscape`. @@ -68,7 +68,7 @@ FOUNDATION_EXPORT const unsigned char GRMustacheVersionString[]; * * @since v8.0 */ -+ (NSObject *)standardURLEscape AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; ++ (id)standardURLEscape AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * @return The GRMustache standard `javascriptEscape`. @@ -77,7 +77,7 @@ FOUNDATION_EXPORT const unsigned char GRMustacheVersionString[]; * * @since v8.0 */ -+ (NSObject *)standardJavascriptEscape AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; ++ (id)standardJavascriptEscape AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; /** * @return The GRMustache standard `zip`. @@ -86,7 +86,7 @@ FOUNDATION_EXPORT const unsigned char GRMustacheVersionString[]; * * @since v8.0 */ -+ (NSObject *)standardZip AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; ++ (id)standardZip AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; @end diff --git a/GRMustache/GRMustache.m b/GRMustache/GRMustache.m index 2252eb7f..7bcdfa1d 100644 --- a/GRMustache/GRMustache.m +++ b/GRMustache/GRMustache.m @@ -42,31 +42,31 @@ @implementation GRMustache #pragma mark - Standard library // Documented in GRMustache.h -+ (NSObject *)standardEach ++ (id)standardEach { return [[[GRMustacheEachFilter alloc] init] autorelease]; } // Documented in GRMustache.h -+ (NSObject *)standardHTMLEscape ++ (id)standardHTMLEscape { return [[[GRMustacheHTMLEscapeFilter alloc] init] autorelease]; } // Documented in GRMustache.h -+ (NSObject *)standardURLEscape ++ (id)standardURLEscape { return [[[GRMustacheURLEscapeFilter alloc] init] autorelease]; } // Documented in GRMustache.h -+ (NSObject *)standardJavascriptEscape ++ (id)standardJavascriptEscape { return [[[GRMustacheJavascriptEscapeFilter alloc] init] autorelease]; } // Documented in GRMustache.h -+ (NSObject *)standardZip ++ (id)standardZip { return [GRMustacheFilter variadicFilterWithBlock:^id(NSArray *arguments) { diff --git a/GRMustache/GRMustache_private.h b/GRMustache/GRMustache_private.h index d09025b7..0312318c 100644 --- a/GRMustache/GRMustache_private.h +++ b/GRMustache/GRMustache_private.h @@ -30,18 +30,18 @@ @interface GRMustache: NSObject // Documented in GRMustache.h -+ (NSObject *)standardEach GRMUSTACHE_API_PUBLIC; ++ (id)standardEach GRMUSTACHE_API_PUBLIC; // Documented in GRMustache.h -+ (NSObject *)standardHTMLEscape GRMUSTACHE_API_PUBLIC; ++ (id)standardHTMLEscape GRMUSTACHE_API_PUBLIC; // Documented in GRMustache.h -+ (NSObject *)standardURLEscape GRMUSTACHE_API_PUBLIC; ++ (id)standardURLEscape GRMUSTACHE_API_PUBLIC; // Documented in GRMustache.h -+ (NSObject *)standardJavascriptEscape GRMUSTACHE_API_PUBLIC; ++ (id)standardJavascriptEscape GRMUSTACHE_API_PUBLIC; // Documented in GRMustache.h -+ (NSObject *)standardZip GRMUSTACHE_API_PUBLIC; ++ (id)standardZip GRMUSTACHE_API_PUBLIC; @end diff --git a/TODO.md b/TODO.md index 7f96061d..de9bcd77 100644 --- a/TODO.md +++ b/TODO.md @@ -18,4 +18,3 @@ - [X] +[GRMustache renderingObjectWithBlock:] - [X] GRMustacheTag.templateRepository - [X] Drop GRMustacheVersion and +[GRMustache libraryVersion] -- [ ] use instancetype when relevant From 01fcf07e4b1411ab66c422a2c201fc5b6eae78ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sat, 17 Oct 2015 13:54:03 +0200 Subject: [PATCH 36/81] TODO.md --- TODO.md | 1 + 1 file changed, 1 insertion(+) diff --git a/TODO.md b/TODO.md index de9bcd77..d12f12f8 100644 --- a/TODO.md +++ b/TODO.md @@ -18,3 +18,4 @@ - [X] +[GRMustache renderingObjectWithBlock:] - [X] GRMustacheTag.templateRepository - [X] Drop GRMustacheVersion and +[GRMustache libraryVersion] +- [?] Import "register" vocabulary from GRMustache.swift, instead of "protected objects". From a6790fcb7dc0a64cbac5a732f3200132af6a013e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sat, 17 Oct 2015 14:40:06 +0200 Subject: [PATCH 37/81] TODO.md --- TODO.md | 1 + 1 file changed, 1 insertion(+) diff --git a/TODO.md b/TODO.md index d12f12f8..c2eac03a 100644 --- a/TODO.md +++ b/TODO.md @@ -19,3 +19,4 @@ - [X] GRMustacheTag.templateRepository - [X] Drop GRMustacheVersion and +[GRMustache libraryVersion] - [?] Import "register" vocabulary from GRMustache.swift, instead of "protected objects". +- [ ] Dynamic partial overrides `{{# partial }}...{{/ partial }}` From 49d87b8334d64494faf5b5ffa6f1570bd99ba6f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sat, 17 Oct 2015 14:40:16 +0200 Subject: [PATCH 38/81] README.md --- README.md | 584 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 581 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index f12405bd..ebdf4bdd 100644 --- a/README.md +++ b/README.md @@ -107,7 +107,7 @@ Documentation External links: - [The Mustache Language](http://mustache.github.io/mustache.5.html): the Mustache language itself. You should start here. -- [GRMustache.swift Reference](http://cocoadocs.org/docsets/GRMustache/7.3.2/index.html) on cocoadocs.org +- [GRMustache Reference](http://cocoadocs.org/docsets/GRMustache/7.3.2/index.html) on cocoadocs.org Rendering templates: @@ -119,7 +119,7 @@ Rendering templates: Feeding templates: - [Boxing Values](#boxing-values) -- [Standard Swift Types Reference](#standard-swift-types-reference) +- [Standard Foundation Types Reference](#standard-foundation-types-reference) - [Custom Types](#custom-types) - [Lambdas](#lambdas) - [Filters](#filters) @@ -135,7 +135,7 @@ Loading Templates Templates may come from various sources: -- Raw Swift strings: +- Raw strings: ```objc GRMustacheTemplate *template; @@ -181,6 +181,584 @@ For more information, check: - [GRMustacheTemplateRepository](http://cocoadocs.org/docsets/GRMustache/7.3.2/Classes/GRMustacheTemplateRepository.html) +Errors +------ + +Not funny, but they happen. Standard NSErrors of domain NSCocoaErrorDomain, etc. may be thrown whenever the library needs to access the file system or other system resource. GRMustache itself can return errors are of domain `GRMustacheErrorDomain`: + +```objc +extern NSString * const GRMustacheRenderingException; +extern NSString * const GRMustacheErrorDomain; + +typedef enum { + GRMustacheErrorCodeParseError, // bad Mustache syntax + GRMustacheErrorCodeTemplateNotFound, // missing template + GRMustacheErrorCodeRenderingError, // bad food +} GRMustacheErrorCode; +``` + +Error handling follows [Cocoa conventions](https://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/ErrorHandlingCocoa/CreateCustomizeNSError/CreateCustomizeNSError.html). Especially: + +> Success or failure is indicated by the return value of the method. [...] **You should always check that the return value is nil or NO before attempting to do anything with the NSError object.** + +```objc +NSError *error; +GRMustacheTemplate *template = [GRMustacheTemplate templateFromResource:@"document" bundle:nil error:&error]; +NSString *rendering = [template renderObject:... error:&error] +if (!rendering) { + // Parse error at line 2 of template /path/to/template.mustache: + // Unclosed Mustache tag. + NSLog(@"%@", error); +} +``` + + +Mustache Tags Reference +----------------------- + +Mustache is based on tags: `{{name}}`, `{{#registered}}...{{/registered}}`, `{{>include}}`, etc. + +Each one of them performs its own little task: + +- [Variable Tags](#variable-tags) `{{name}}` render values. +- [Section Tags](#section-tags) `{{#items}}...{{/items}}` perform conditionals, loops, and object scoping. +- [Inverted Section Tags](#inverted-section-tags) `{{^items}}...{{/items}}` are sisters of regular section tags, and render when the other one does not. +- [Partial Tags](#partial-tags) `{{>partial}}` let you include a template in another one. +- [Partial Override Tags](#partial-override-tags) `{{=}}` let you change the tag delimiters. +- [Comment Tags](#comment-tags) let you comment: `{{! Wow. Such comment. }}` +- [Pragma Tags](#pragma-tags) trigger implementation-specific features. + + +### Variable Tags + +A *Variable tag* `{{value}}` renders the value associated with the key `value`, HTML-escaped. To avoid HTML-escaping, use triple mustache tags `{{{value}}}`: + +```objc +NSString *templateString = @"{{value}} - {{{value}}}"; +GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:templateString error:NULL]; + +// Mario & Luigi - Mario & Luigi +id data = @{ @"value": @"Mario & Luigi" }; +[template renderObject:data error:NULL]; +``` + + +### Section Tags + +A *Section tag* `{{#value}}...{{/value}}` is a common syntax for three different usages: + +- conditionally render a section. +- loop over a collection. +- dig inside an object. + +Those behaviors are triggered by the value associated with `value`: + + +#### Falsey values + +If the value is *falsey*, the section is not rendered. Falsey values are: + +- missing values +- false boolean +- zero numbers +- empty strings +- empty collections +- NSNull + +For example: + +```objc +NSString *templateString = @"<{{#value}}Truthy{{/value}}>"; +GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:templateString error:NULL]; + +// "" +[template renderObject:@{ @"value": @YES } error:NULL]; +// "<>" +[template renderObject:@{ } error:NULL]; // missing value +[template renderObject:@{ @"value": @NO } error:NULL]; // false boolean +``` + + +#### Collections + +If the value is a *collection*, the section is rendered as many times as there are elements in the collection, and inner tags have direct access to the keys of elements: + +Template: + +```mustache +{{# friends }} +- {{# name }} +{{/ friends }} +``` + +Data: + +```objc +@{ + @"friends": @[ + @{ @"name": @"Hulk Hogan" }, + @{ @"name": @"Albert Einstein" }, + @{ @"name": @"Tom Selleck" }, + ] +} +``` + +Rendering: + +``` +- Hulk Hogan +- Albert Einstein +- Tom Selleck +``` + +Collections can be NSArray, NSSet, and any object that conforms to NSFastEnumeration (but NSDictionary). + + +#### Other Values + +If the value is not falsey, and not a collection, then the section is rendered once, and inner tags have direct access to the value's keys: + +Template: + +```mustache +{{# user }} +- {{ name }} +- {{ score }} +{{/ user }} +``` + +Data: + +```objc +@{ + @"user": @{ + @"name": @"Mario" + @"score": @(1500) + } +} +``` + +Rendering: + +``` +- Mario +- 1500 +``` + + +### Inverted Section Tags + +An *Inverted section tag* `{{^value}}...{{/value}}` renders when a regular section `{{#value}}...{{/value}}` would not. You can think of it as the Mustache "else" or "unless". + +Template: + +``` +{{# persons }} +- {{name}} is {{#alive}}alive{{/alive}}{{^alive}}dead{{/alive}}. +{{/ persons }} +{{^ persons }} +Nobody +{{/ persons }} +``` + +Data: + +```objc +@{ + @"persons": @[] +} +``` + +Rendering: + +``` +Nobody +``` + +Data: + +```objc +@{ + @"persons": @[ + @{ @"name": @"Errol Flynn", @"alive": @NO }, + @{ @"name": @"Sacha Baron Cohen", @"alive": @YES }, + ] +} +``` + +Rendering: + +``` +- Errol Flynn is dead. +- Sacha Baron Cohen is alive. +``` + + +### Partial Tags + +A *Partial tag* `{{> partial }}` includes another template, identified by its name. The included template has access to the currently available data: + +`document.mustache`: + +```mustache +Guests: +{{# guests }} + {{> person }} +{{/ guests }} +``` + +`person.mustache`: + +```mustache +{{ name }} +``` + +Data: + +```objc +@{ + @"guests": @[ + @{ @"name": @"Frank Zappa" }, + @{ @"name": @"Lionel Richie" }, + ] +} +``` + +Rendering: + +``` +Guests: +- Frank Zappa +- Lionel Richie +``` + +Recursive partials are supported, but your data should avoid infinite loops. + +Partial lookup depends on the origin of the main template: + + +#### File system + +Partial names are **relative paths** when the template comes from the file system (via paths or URLs): + +```objc +// Load /path/to/document.mustache +NSString *templatePath = @"/path/document.mustache"; +GRMustacheTemplate *template = [GRMustacheTemplate templateFromContentsOfFile:templatePath error:NULL]; + +// {{> partial }} includes /path/partial.mustache. +// {{> shared/partial }} includes /path/shared/partial.mustache. +``` + +Partials have the same file extension as the main template. + +```objc +// Load /path/document.html +NSString *templatePath = @"/path/document.html"; +GRMustacheTemplate *template = [GRMustacheTemplate templateFromContentsOfFile:templatePath error:NULL]; + +// {{> partial }} includes /path/partial.html. +``` + +When your templates are stored in a hierarchy of directories, you can use **absolute paths** to partials, with a leading slash. For that, you need a *template repository* which will define the root of absolute partial paths: + +```objc +GRMustacheTemplateRepository *repo; +GRMustacheTemplate *template; + +NSString *templatesPath = @"/path"; +repo = [GRMustacheTemplateRepository templateRepositoryWithDirectory:templatesPath]; +template = [repo templateNamed:@"documents/profile" error:NULL]; + +// {{> /shared/partial }} includes /path/shared/partial.mustache. +``` + + +#### Bundle resources + +Partial names are interpreted as **resource names** when the template is a bundle resource: + +```objc +// Load the document.mustache resource from the main bundle +GRMustacheTemplate *template; +template = [GRMustacheTemplate templateFromResource:@"document" bundle:nil error:NULL]; + +// {{> partial }} includes the partial.mustache resource. +``` + + +#### General case + +Generally speaking, partial names are always interpreted by a **Template Repository**: + +- `+[GRMustacheTemplate templateFromResource:bundle:error:]` uses a bundle-based template repository: partial names are resource names. +- `+[GRMustacheTemplate templateFromContentsOfFile:error:]` uses a file-based template repository: partial names are relative paths. +- `+[GRMustacheTemplate templateFromContentsOfURL:error:]` uses a URL-based template repository: partial names are relative URLs. +- `+[GRMustacheTemplate templateFromString:error:]` uses a template repository that can’t load any partial. +- `-[GRMustacheTemplateRepository templateNamed:error:]` uses the partial loading mechanism of the template repository. + +Check [GRMustacheTemplateRepository](http://cocoadocs.org/docsets/GRMustache/7.3.2/Classes/GRMustacheTemplateRepository.html) for more information. + + +#### Dynamic partials + +A tag `{{> partial }}` includes a template, the one that is named "partial". One can say it is **statically** determined, since that partial has already been loaded before the template is rendered: + +```objc +GRMustacheTemplateRepository *repo; +GRMustacheTemplate *template; +repo = [GRMustacheTemplateRepository templateRepositoryWithBundle:nil]; +template = [repo templateFromString:@"{{#user}}{{>partial}}{{/user}}" error:NULL]; + +// Now the `partial.mustache` resource has been loaded. It will be used when +// the template is rendered. Nothing can change that. +``` + +You can also include **dynamic partials**. To do so, use a regular variable tag `{{ partial }}`, and provide the template of your choice for the key "partial" in your rendered data: + +```objc +// A template that delegates the rendering of a user to a partial. +// No partial has been loaded yet. +GRMustacheTemplate *template; +template = [GRMustacheTemplate templateFromString:@"{{#user}}{{partial}}{{/user}}" error:NULL]; + +// The user +id user = @{ @"firstName": @"Georges", @"lastName": @"Brassens", @"occupation": @"Singer" }; + +// Two different partials: +GRMustacheTemplate *partial1 = [GRMustacheTemplate templateFromString:@"{{firstName}} {{lastName}}" error:NULL]; +GRMustacheTemplate *partial2 = [GRMustacheTemplate templateFromString:@"{{occupation}}" error:NULL]; + +// Two different renderings of the same template: +// "Georges Brassens" +[template renderObject:@{ @"user": user, @"partial": partial1 } error:NULL]; +// "Singer" +[template renderObject:@{ @"user": user, @"partial": partial2 } error:NULL]; +``` + + +### Partial Override Tags + +GRMustache supports **Template Inheritance**, like [hogan.js](http://twitter.github.com/hogan.js/), [mustache.java](https://github.com/spullara/mustache.java) and [mustache.php](https://github.com/bobthecow/mustache.php). + +A *Partial Override Tag* `{{< layout }}...{{/ layout }}` includes another template inside the rendered template, just like a regular [partial tag](#partial-tags) `{{> partial}}`. + +However, this time, the included template can contain *blocks*, and the rendered template can override them. Blocks look like sections, but use a dollar sign: `{{$ overrideMe }}...{{/ overrideMe }}`. + +The included template `layout.mustache` below has `title` and `content` blocks that the rendered template can override: + +```mustache + + + {{$ title }}Default title{{/ title }} + + +

    {{$ title }}Default title{{/ title }}

    + {{$ content }} + Default content + {{/ content }}} + + +``` + +The rendered template `article.mustache`: + +```mustache +{{< layout }} + + {{$ title }}{{ article.title }}{{/ title }} + + {{$ content }} + {{{ article.html_body }}} +

    by {{ article.author }}

    + {{/ content }} + +{{/ layout }} +``` + +```objc +GRMustacheTemplate *template; +template = [GRMustacheTemplate templateFromResource:@"article" bundle:nil error:&error]; + +id data = @{ + @"article": @{ + @"title": @"The 10 most amazing handlebars", + @"html_body": @"

    ...

    ", + @"author": @"John Doe" + } +}; +NSString *rendering = [template renderObject:data error:NULL]; +``` + +The rendering is a full HTML page: + +```HTML + + + The 10 most amazing handlebars + + +

    The 10 most amazing handlebars

    +

    ...

    +

    by John Doe

    + + +``` + +A few things to know: + +- A block `{{$ title }}...{{/ title }}` is always rendered, and rendered once. There is no boolean checks, no collection iteration. The "title" identifier is a name that allows other templates to override the block, not a key in your rendered data. + +- A template can contain several partial override tags. + +- A template can override a partial which itself overrides another one. Recursion is possible, but your data should avoid infinite loops. + +- Generally speaking, any part of a template can be refactored with partials and partial override tags, without requiring any modification anywhere else (in other templates that depend on it, or in your code). + + +#### Dynamic partial overrides + +Like a regular partial tag, a partial override tag `{{< layout }}...{{/ layout }}` includes a statically determined template, the very one that is named "layout". + +To override a dynamic partial, use a regular section tag `{{# layout }}...{{/ layout }}`, and provide the template of your choice for the key "layout" in your rendered data. + + +### Set Delimiters Tags + +Mustache tags are generally enclosed by "mustaches" `{{` and `}}`. A *Set Delimiters Tag* can change that, right inside a template. + +``` +Default tags: {{ name }} +{{=<% %>=}} +ERB-styled tags: <% name %> +<%={{ }}=%> +Default tags again: {{ name }} +``` + +There are also APIs for setting those delimiters. Check `tagStartDelimiter` and `tagEndDelimiter` in [GRMustacheConfiguration](http://cocoadocs.org/docsets/GRMustache/7.3.2/Classes/GRMustacheConfiguration.html). + + +### Comment Tags + +`{{! Comment tags }}` are simply not rendered at all. + + +### Pragma Tags + +Several Mustache implementations use *Pragma tags*. They start with a percent `%` and are not rendered at all. Instead, they trigger implementation-specific features. + +GRMustache interprets two pragma tags that set the content type of the template: + +- `{{% CONTENT_TYPE:TEXT }}` +- `{{% CONTENT_TYPE:HTML }}` + +**HTML templates** is the default. They HTML-escape values rendered by variable tags `{{name}}`. + +In a **text template**, there is no HTML-escaping. Both `{{name}}` and `{{{name}}}` have the same rendering. Text templates are globally HTML-escaped when included in HTML templates. + +For a more complete discussion, see the documentation of `contentType` in [GRMustacheConfiguration](http://cocoadocs.org/docsets/GRMustache/7.3.2/Classes/GRMustacheConfiguration.html). + + +The Context Stack and Expressions +--------------------------------- + +### The Context Stack + +Variable and section tags fetch values in the data you feed your templates with: `{{name}}` looks for the key "name" in your input data, or, more precisely, in the *context stack*. + +That context stack grows as the rendering engine enters sections, and shrinks when it leaves. Its top value, pushed by the last entered section, is where a `{{name}}` tag starts looking for the "name" identifier. If this top value does not provide the key, the tag digs further down the stack, until it finds the name it looks for. + +For example, given the template: + +```mustache +{{#family}} +- {{firstName}} {{lastName}} +{{/family}} +``` + +Data: + +```objc +@{ + @"lastName": @"Johnson", + @"family": @[ + @{ @"firstName": @"Peter" }, + @{ @"firstName": @"Barbara" }, + @{ @"firstName": @"Emily", @"lastName": @"Scott" }, + ] +} +``` + +The rendering is: + +``` +- Peter Johnson +- Barbara Johnson +- Emily Scott +``` + +The context stack is usually initialized with the data you render your template with: + +```objc +// The rendering starts with a context stack containing `data` +[template renderObject:data error:NULL]; +``` + +Precisely speaking, a template has a *base context stack* on top of which the rendered data is added. This base context is always available whatever the rendered data. For example: + +```objc +// The base context contains `baseData` +[template extendBaseContextWithObject:baseData]; + +// The rendering starts with a context stack containing `baseData` and `data` +[template renderObject:data error:NULL]; +``` + +The base context is usually a good place to register [filters](#filters). + +See [GRMustacheTemplate](http://cocoadocs.org/docsets/GRMustache/7.3.2/Classes/GRMustacheTemplate.html). + + +### Expressions + +Variable and section tags contain *Expressions*. `name` is an expression, but also `article.title`, and `format(article.modificationDate)`. When a tag renders, it evaluates its expression, and renders the result. + +There are four kinds of expressions: + +- **The dot** `.` aka "Implicit Iterator" in the Mustache lingo: + + Implicit iterator evaluates to the top of the context stack, the value pushed by the last entered section. + + It lets you iterate over collection of strings, for example. `{{#items}}<{{.}}>{{/items}}` renders `<1><2><3>` when given [1,2,3]. + +- **Identifiers** like `name`: + + Evaluation of identifiers like `name` goes through the context stack until a value provides the `name` key. + + Identifiers can not contain white space, dots, parentheses and commas. They can not start with any of those characters: `{}&$#^/<>`. + +- **Compound expressions** like `article.title` and generally `.`: + + This time there is no going through the context stack: `article.title` evaluates to the title of the article, regardless of `title` keys defined by enclosing contexts. + + `.title` (with a leading dot) is a compound expression based on the implicit iterator: it looks for `title` at the top of the context stack. + + Compare these three templates: + + - `...{{# article }}{{ title }}{{/ article }}...` + - `...{{# article }}{{ .title }}{{/ article }}...` + - `...{{ article.title }}...` + + The first will look for `title` anywhere in the context stack, starting with the `article` object. + + The two others are identical: they ensure the `title` key comes from the very `article` object. + +- **Filter expressions** like `format(date)` and generally `(, ...)`: + + [Filters](#filters) are introduced below. + + From 4cefdb08f79cf8778c0ae87724c2b1e7bda36382 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sat, 17 Oct 2015 14:42:15 +0200 Subject: [PATCH 39/81] README.md --- README.md | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index ebdf4bdd..b1dec651 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,10 @@ Well, on {{format(realDate)}} because of a Martian attack. @import GRMustache; // Load the `document.mustache` resource of the main bundle -GRMustacheTemplate *template = [GRMustacheTemplate templateFromResource:@"document" bundle:nil error:NULL]; +GRMustacheTemplate *template; +template = [GRMustacheTemplate templateFromResource:@"document" + bundle:nil + error:NULL]; // Let template format dates with `{{format(...)}}` NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; @@ -139,22 +142,27 @@ Templates may come from various sources: ```objc GRMustacheTemplate *template; - template = [GRMustacheTemplate templateFromString:@"Hello {{name}}" error:NULL]; + template = [GRMustacheTemplate templateFromString:@"Hello {{name}}" + error:NULL]; ``` - Bundle resources: ```objc // Loads the "document.mustache" resource of the main bundle: - template = [GRMustacheTemplate templateFromResource:@"document" bundle:nil error:NULL]; + template = [GRMustacheTemplate templateFromResource:@"document" + bundle:nil + error:NULL]; ``` - Files and URLs: ```objc - template = [GRMustacheTemplate templateFromContentsOfURL:templateURL error:NULL]; - template = [GRMustacheTemplate templateFromContentsOfFile:@"/path/to/document.mustache" error:NULL]; + template = [GRMustacheTemplate templateFromContentsOfURL:templateURL + error:NULL]; + template = [GRMustacheTemplate templateFromContentsOfFile:@"/path/to/document.mustache" + error:NULL]; ``` - Template Repositories: From 81d4d2433324378567866c3ce2ff3ae4ceaf5978 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sat, 17 Oct 2015 14:43:25 +0200 Subject: [PATCH 40/81] README.md --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index b1dec651..650781d3 100644 --- a/README.md +++ b/README.md @@ -138,7 +138,7 @@ Loading Templates Templates may come from various sources: -- Raw strings: +- **Raw strings:** ```objc GRMustacheTemplate *template; @@ -146,7 +146,7 @@ Templates may come from various sources: error:NULL]; ``` -- Bundle resources: +- **Bundle resources:** ```objc // Loads the "document.mustache" resource of the main bundle: @@ -155,7 +155,7 @@ Templates may come from various sources: error:NULL]; ``` -- Files and URLs: +- **Files and URLs:** ```objc @@ -165,7 +165,7 @@ Templates may come from various sources: error:NULL]; ``` -- Template Repositories: +- **Template Repositories:** Template repositories represent a group of templates. They can be configured independently, and provide neat features like template caching. For example: From c32e630ef59f051cc72bf152580ea7efbf7f7ea7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sat, 17 Oct 2015 14:44:28 +0200 Subject: [PATCH 41/81] README.md --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 650781d3..b12a808a 100644 --- a/README.md +++ b/README.md @@ -211,8 +211,10 @@ Error handling follows [Cocoa conventions](https://developer.apple.com/library/i ```objc NSError *error; -GRMustacheTemplate *template = [GRMustacheTemplate templateFromResource:@"document" bundle:nil error:&error]; -NSString *rendering = [template renderObject:... error:&error] +GRMustacheTemplate *template; +NSString *rendering; +template = [GRMustacheTemplate templateFromResource:@"document" bundle:nil error:&error]; +rendering = [template renderObject:... error:&error] if (!rendering) { // Parse error at line 2 of template /path/to/template.mustache: // Unclosed Mustache tag. From e6b0d2055c059429e4279f9f1f814ebcf88c185c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sat, 17 Oct 2015 14:47:03 +0200 Subject: [PATCH 42/81] README.md --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b12a808a..1abc0c1f 100644 --- a/README.md +++ b/README.md @@ -453,9 +453,11 @@ Partial lookup depends on the origin of the main template: Partial names are **relative paths** when the template comes from the file system (via paths or URLs): ```objc +GRMustacheTemplate *template; + // Load /path/to/document.mustache NSString *templatePath = @"/path/document.mustache"; -GRMustacheTemplate *template = [GRMustacheTemplate templateFromContentsOfFile:templatePath error:NULL]; +template = [GRMustacheTemplate templateFromContentsOfFile:templatePath error:NULL]; // {{> partial }} includes /path/partial.mustache. // {{> shared/partial }} includes /path/shared/partial.mustache. @@ -466,7 +468,7 @@ Partials have the same file extension as the main template. ```objc // Load /path/document.html NSString *templatePath = @"/path/document.html"; -GRMustacheTemplate *template = [GRMustacheTemplate templateFromContentsOfFile:templatePath error:NULL]; +template = [GRMustacheTemplate templateFromContentsOfFile:templatePath error:NULL]; // {{> partial }} includes /path/partial.html. ``` From 7f9eaac28ba0e990e583264ec856b5659c74eef3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sat, 17 Oct 2015 14:48:18 +0200 Subject: [PATCH 43/81] README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1abc0c1f..941552cb 100644 --- a/README.md +++ b/README.md @@ -481,7 +481,7 @@ GRMustacheTemplate *template; NSString *templatesPath = @"/path"; repo = [GRMustacheTemplateRepository templateRepositoryWithDirectory:templatesPath]; -template = [repo templateNamed:@"documents/profile" error:NULL]; +template = [repo templateNamed:... error:NULL]; // {{> /shared/partial }} includes /path/shared/partial.mustache. ``` From 82db0fbf57a50537b0e679a1f4890365021f99cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sat, 17 Oct 2015 15:21:03 +0200 Subject: [PATCH 44/81] TODO.md --- TODO.md | 1 + 1 file changed, 1 insertion(+) diff --git a/TODO.md b/TODO.md index c2eac03a..76a85a3f 100644 --- a/TODO.md +++ b/TODO.md @@ -20,3 +20,4 @@ - [X] Drop GRMustacheVersion and +[GRMustache libraryVersion] - [?] Import "register" vocabulary from GRMustache.swift, instead of "protected objects". - [ ] Dynamic partial overrides `{{# partial }}...{{/ partial }}` +- [ ] Check that {{ string.length }} is correctly implemented (NSObject+GRMustacheKeyValueCoding.m) and tested (https://github.com/groue/GRMustacheSpec). From 1aada0e7e591397c8bb645c6a2ed9277e7f522fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sat, 17 Oct 2015 15:21:25 +0200 Subject: [PATCH 45/81] README.md --- README.md | 100 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 99 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 941552cb..5aa8e743 100644 --- a/README.md +++ b/README.md @@ -121,7 +121,6 @@ Rendering templates: Feeding templates: -- [Boxing Values](#boxing-values) - [Standard Foundation Types Reference](#standard-foundation-types-reference) - [Custom Types](#custom-types) - [Lambdas](#lambdas) @@ -771,8 +770,107 @@ There are four kinds of expressions: [Filters](#filters) are introduced below. +Standard Foundation Types Reference +----------------------------------- +GRMustache comes with built-in support for the following standard Foundation types: +- [NSNumber](#nsnumber): Int, UInt and Double +- [NSString](#nsstring) +- [NSDictionary](#nsdictionary) +- [NSSet](#nsset) +- [NSArray and NSFastEnumeration](#nsarray-and-nsfastenumeration) +- [NSNull](#nsnull) +- [NSObject](#nsobject) + + +### NSNumber + +- `{{number}}` renders the standard description of *number*. +- `{{#number}}...{{/number}}` renders if and only if *number* is not 0 (zero). +- `{{^number}}...{{/number}}` renders if and only if *int* is 0 (zero). + +To format numbers, use `NSNumberFormatter`: + +```objc +NSNumberFormatter *percentFormatter = [[NSNumberFormatter alloc] init]; +percentFormatter.numberStyle = NSNumberFormatterPercentStyle; + +GRMustacheTemplate *template; +NSString *templateString = @"{{ percent(x) }}"; +template = [GRMustacheTemplate templateFromString:templateString error:NULL]; + +// Rendering: 50% +id data = @{ @"x": @(0.5) }; +NSString *rendering = [template renderObject:data error:NULL]; +``` + +[More info on NSFormatter](Docs/Guides/goodies.md#nsformatter). + + +### NSString + +- `{{string}}` renders *string*, HTML-escaped. +- `{{{string}}}` renders *string*, not HTML-escaped. +- `{{#string}}...{{/string}}` renders if and only if *string* is not empty. +- `{{^string}}...{{/string}}` renders if and only if *string* is empty. + +Exposed keys: + +- `string.length`: the length of the string. + + +### NSDictionary + +- `{{dictionary}}` renders the standard description of *dictionary* (not very useful). +- `{{#dictionary}}...{{/dictionary}}` renders once, pushing the dictionary on top of the [context stack](#the-context-stack). +- `{{^dictionary}}...{{/dictionary}}` does not render. + + +### NSSet + +- `{{set}}` renders the concatenation of the renderings of set elements. +- `{{#set}}...{{/set}}` renders as many times as there are elements in the set, pushing them on top of the [context stack](#the-context-stack). +- `{{^set}}...{{/set}}` renders if and only if the set is empty. + +Exposed keys: + +- `set.first`: any element of the set. +- `set.count`: the number of elements in the set. + + +### NSArray and NSFastEnumeration + +- `{{array}}` renders the concatenation of the renderings of array elements. +- `{{#array}}...{{/array}}` renders as many times as there are elements in the array, pushing them on top of the [context stack](#the-context-stack). +- `{{^array}}...{{/array}}` renders if and only if the array is empty. + +Exposed keys: + +- `array.first`: the first element. +- `array.last`: the last element. +- `array.count`: the number of elements in the array. + +GRMustache renders as `NSArray` all types that conform to NSFastEnumeration, but [NSSet](#nsset) and [NSDictionary](#nsdictionary). + + +### NSNull + +- `{{null}}` does not render. +- `{{#null}}...{{/null}}` does not render. +- `{{^null}}...{{/null}}` renders. + + +### NSObject + +When an object is not [NSNumber](#nsnumber), [NSString](#nsstring), [NSDictionary](#nsdictionary), [NSSet](#nsset), [NSArray, NSFastEnumeration](#nsarray-and-nsfastenumeration), or [NSNull](#nsnull), it renders as follows: + +- `{{object}}` renders the `description` method, HTML-escaped. +- `{{{object}}}` renders the `description` method, not HTML-escaped. +- `{{#object}}...{{/object}}` renders once, pushing the object on top of the [context stack](#the-context-stack). +- `{{^object}}...{{/object}}` does not render. + +Templates can access object's properties: `{{ user.name }}`. TO BE CONTINUED -------------------------------------------------------------------------- From b9835b99ef9998a67f9f854b968755fb90aee6b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sat, 17 Oct 2015 15:21:48 +0200 Subject: [PATCH 46/81] README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5aa8e743..9b478873 100644 --- a/README.md +++ b/README.md @@ -775,7 +775,7 @@ Standard Foundation Types Reference GRMustache comes with built-in support for the following standard Foundation types: -- [NSNumber](#nsnumber): Int, UInt and Double +- [NSNumber](#nsnumber) - [NSString](#nsstring) - [NSDictionary](#nsdictionary) - [NSSet](#nsset) From 9dc45a2259c947063e9391ad057d8d06414cfdcc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sat, 17 Oct 2015 15:23:57 +0200 Subject: [PATCH 47/81] README.md --- README.md | 92 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 47 insertions(+), 45 deletions(-) diff --git a/README.md b/README.md index 9b478873..2a762930 100644 --- a/README.md +++ b/README.md @@ -775,13 +775,42 @@ Standard Foundation Types Reference GRMustache comes with built-in support for the following standard Foundation types: -- [NSNumber](#nsnumber) -- [NSString](#nsstring) -- [NSDictionary](#nsdictionary) -- [NSSet](#nsset) - [NSArray and NSFastEnumeration](#nsarray-and-nsfastenumeration) +- [NSDictionary](#nsdictionary) - [NSNull](#nsnull) +- [NSNumber](#nsnumber) - [NSObject](#nsobject) +- [NSSet](#nsset) +- [NSString](#nsstring) + + +### NSArray and NSFastEnumeration + +- `{{array}}` renders the concatenation of the renderings of array elements. +- `{{#array}}...{{/array}}` renders as many times as there are elements in the array, pushing them on top of the [context stack](#the-context-stack). +- `{{^array}}...{{/array}}` renders if and only if the array is empty. + +Exposed keys: + +- `array.first`: the first element. +- `array.last`: the last element. +- `array.count`: the number of elements in the array. + +GRMustache renders as `NSArray` all types that conform to NSFastEnumeration, but [NSSet](#nsset) and [NSDictionary](#nsdictionary). + + +### NSDictionary + +- `{{dictionary}}` renders the standard description of *dictionary* (not very useful). +- `{{#dictionary}}...{{/dictionary}}` renders once, pushing the dictionary on top of the [context stack](#the-context-stack). +- `{{^dictionary}}...{{/dictionary}}` does not render. + + +### NSNull + +- `{{null}}` does not render. +- `{{#null}}...{{/null}}` does not render. +- `{{^null}}...{{/null}}` renders. ### NSNumber @@ -808,23 +837,16 @@ NSString *rendering = [template renderObject:data error:NULL]; [More info on NSFormatter](Docs/Guides/goodies.md#nsformatter). -### NSString - -- `{{string}}` renders *string*, HTML-escaped. -- `{{{string}}}` renders *string*, not HTML-escaped. -- `{{#string}}...{{/string}}` renders if and only if *string* is not empty. -- `{{^string}}...{{/string}}` renders if and only if *string* is empty. - -Exposed keys: - -- `string.length`: the length of the string. - +### NSObject -### NSDictionary +When an object is not [NSNumber](#nsnumber), [NSString](#nsstring), [NSDictionary](#nsdictionary), [NSSet](#nsset), [NSArray, NSFastEnumeration](#nsarray-and-nsfastenumeration), or [NSNull](#nsnull), it renders as follows: -- `{{dictionary}}` renders the standard description of *dictionary* (not very useful). -- `{{#dictionary}}...{{/dictionary}}` renders once, pushing the dictionary on top of the [context stack](#the-context-stack). -- `{{^dictionary}}...{{/dictionary}}` does not render. +- `{{object}}` renders the `description` method, HTML-escaped. +- `{{{object}}}` renders the `description` method, not HTML-escaped. +- `{{#object}}...{{/object}}` renders once, pushing the object on top of the [context stack](#the-context-stack). +- `{{^object}}...{{/object}}` does not render. + +Templates can access object's properties: `{{ user.name }}`. ### NSSet @@ -839,38 +861,18 @@ Exposed keys: - `set.count`: the number of elements in the set. -### NSArray and NSFastEnumeration +### NSString -- `{{array}}` renders the concatenation of the renderings of array elements. -- `{{#array}}...{{/array}}` renders as many times as there are elements in the array, pushing them on top of the [context stack](#the-context-stack). -- `{{^array}}...{{/array}}` renders if and only if the array is empty. +- `{{string}}` renders *string*, HTML-escaped. +- `{{{string}}}` renders *string*, not HTML-escaped. +- `{{#string}}...{{/string}}` renders if and only if *string* is not empty. +- `{{^string}}...{{/string}}` renders if and only if *string* is empty. Exposed keys: -- `array.first`: the first element. -- `array.last`: the last element. -- `array.count`: the number of elements in the array. - -GRMustache renders as `NSArray` all types that conform to NSFastEnumeration, but [NSSet](#nsset) and [NSDictionary](#nsdictionary). - - -### NSNull - -- `{{null}}` does not render. -- `{{#null}}...{{/null}}` does not render. -- `{{^null}}...{{/null}}` renders. - - -### NSObject +- `string.length`: the length of the string. -When an object is not [NSNumber](#nsnumber), [NSString](#nsstring), [NSDictionary](#nsdictionary), [NSSet](#nsset), [NSArray, NSFastEnumeration](#nsarray-and-nsfastenumeration), or [NSNull](#nsnull), it renders as follows: -- `{{object}}` renders the `description` method, HTML-escaped. -- `{{{object}}}` renders the `description` method, not HTML-escaped. -- `{{#object}}...{{/object}}` renders once, pushing the object on top of the [context stack](#the-context-stack). -- `{{^object}}...{{/object}}` does not render. - -Templates can access object's properties: `{{ user.name }}`. TO BE CONTINUED -------------------------------------------------------------------------- From 1a4a3cd453e8f343bdf2c95f94563985a259d272 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sat, 17 Oct 2015 15:29:20 +0200 Subject: [PATCH 48/81] README.md --- README.md | 46 +++++++++++++++++++++++++++++++++------------- 1 file changed, 33 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 2a762930..b9ca6c9e 100644 --- a/README.md +++ b/README.md @@ -775,16 +775,18 @@ Standard Foundation Types Reference GRMustache comes with built-in support for the following standard Foundation types: -- [NSArray and NSFastEnumeration](#nsarray-and-nsfastenumeration) +- [NSArray](#nsarray) - [NSDictionary](#nsdictionary) +- [NSFastEnumeration](#nsfastenumeration) - [NSNull](#nsnull) - [NSNumber](#nsnumber) -- [NSObject](#nsobject) +- [NSOrderedSet](#nsorderedset) - [NSSet](#nsset) - [NSString](#nsstring) +- [NSObject](#nsobject) -### NSArray and NSFastEnumeration +### NSArray - `{{array}}` renders the concatenation of the renderings of array elements. - `{{#array}}...{{/array}}` renders as many times as there are elements in the array, pushing them on top of the [context stack](#the-context-stack). @@ -796,8 +798,6 @@ Exposed keys: - `array.last`: the last element. - `array.count`: the number of elements in the array. -GRMustache renders as `NSArray` all types that conform to NSFastEnumeration, but [NSSet](#nsset) and [NSDictionary](#nsdictionary). - ### NSDictionary @@ -806,6 +806,13 @@ GRMustache renders as `NSArray` all types that conform to NSFastEnumeration, but - `{{^dictionary}}...{{/dictionary}}` does not render. +### NSFastEnumeration + +- `{{collection}}` renders the concatenation of the renderings of collection elements. +- `{{#collection}}...{{/collection}}` renders as many times as there are elements in the collection, pushing them on top of the [context stack](#the-context-stack). +- `{{^collection}}...{{/collection}}` renders if and only if the collection is empty. + + ### NSNull - `{{null}}` does not render. @@ -837,16 +844,17 @@ NSString *rendering = [template renderObject:data error:NULL]; [More info on NSFormatter](Docs/Guides/goodies.md#nsformatter). -### NSObject +### NSOrderedSet -When an object is not [NSNumber](#nsnumber), [NSString](#nsstring), [NSDictionary](#nsdictionary), [NSSet](#nsset), [NSArray, NSFastEnumeration](#nsarray-and-nsfastenumeration), or [NSNull](#nsnull), it renders as follows: +- `{{orderedSet}}` renders the concatenation of the renderings of ordered set elements. +- `{{#orderedSet}}...{{/orderedSet}}` renders as many times as there are elements in the ordered set, pushing them on top of the [context stack](#the-context-stack). +- `{{^orderedSet}}...{{/orderedSet}}` renders if and only if the orderedSet is empty. -- `{{object}}` renders the `description` method, HTML-escaped. -- `{{{object}}}` renders the `description` method, not HTML-escaped. -- `{{#object}}...{{/object}}` renders once, pushing the object on top of the [context stack](#the-context-stack). -- `{{^object}}...{{/object}}` does not render. - -Templates can access object's properties: `{{ user.name }}`. +Exposed keys: + +- `orderedSet.first`: the first element. +- `orderedSet.last`: the last element. +- `orderedSet.count`: the number of elements in the array. ### NSSet @@ -873,6 +881,18 @@ Exposed keys: - `string.length`: the length of the string. +### NSObject + +When an object is not one of the specific ones decribed above, it renders as follows: + +- `{{object}}` renders the `description` method, HTML-escaped. +- `{{{object}}}` renders the `description` method, not HTML-escaped. +- `{{#object}}...{{/object}}` renders once, pushing the object on top of the [context stack](#the-context-stack). +- `{{^object}}...{{/object}}` does not render. + +Templates can access object's properties: `{{ user.name }}`. + + TO BE CONTINUED -------------------------------------------------------------------------- From 8af7670e570da01f1e1088b04ef59f1ed8c42f5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sat, 17 Oct 2015 15:32:06 +0200 Subject: [PATCH 49/81] README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b9ca6c9e..1392c93b 100644 --- a/README.md +++ b/README.md @@ -823,8 +823,8 @@ Exposed keys: ### NSNumber - `{{number}}` renders the standard description of *number*. -- `{{#number}}...{{/number}}` renders if and only if *number* is not 0 (zero). -- `{{^number}}...{{/number}}` renders if and only if *int* is 0 (zero). +- `{{#number}}...{{/number}}` renders if and only if `[number boolValue]` is YES. +- `{{^number}}...{{/number}}` renders if and only if `[number boolValue]` is NO. To format numbers, use `NSNumberFormatter`: From e5aa7d0298c20bf153b339afa689ad241213a9ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sat, 17 Oct 2015 16:02:29 +0200 Subject: [PATCH 50/81] README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1392c93b..a78b2c7d 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ Requirements - iOS 7.0+ / OSX 10.9+ - Xcode 7 -[GRMustache 7.3.2](https://github.com/groue/GRMustache/tree/v7.3.2) used to support older systems and Xcode versions. +See [GRMustache 7.3.2](https://github.com/groue/GRMustache/tree/v7.3.2) for older systems and Xcode versions. **Swift developers**: You can use GRMustache from Swift, with a limitation: you can only render Objective-C objects. Instead, consider using [GRMustache.swift](https://github.com/groue/GRMustache.swift), a pure Swift implementation of GRMustache. From 7903c07bce925f8467d68a3eeaa0963ead944b6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sat, 17 Oct 2015 16:09:02 +0200 Subject: [PATCH 51/81] README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a78b2c7d..7c343b2e 100644 --- a/README.md +++ b/README.md @@ -160,7 +160,7 @@ Templates may come from various sources: template = [GRMustacheTemplate templateFromContentsOfURL:templateURL error:NULL]; - template = [GRMustacheTemplate templateFromContentsOfFile:@"/path/to/document.mustache" + template = [GRMustacheTemplate templateFromContentsOfFile:@"/path/document.mustache" error:NULL]; ``` From c55d0cb5a99547a3c4633a5e1fbacb862be6d966 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sat, 17 Oct 2015 16:11:13 +0200 Subject: [PATCH 52/81] README.md --- README.md | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 7c343b2e..8316c71e 100644 --- a/README.md +++ b/README.md @@ -141,27 +141,31 @@ Templates may come from various sources: ```objc GRMustacheTemplate *template; - template = [GRMustacheTemplate templateFromString:@"Hello {{name}}" - error:NULL]; + template = [GRMustacheTemplate + templateFromString:@"Hello {{name}}" + error:NULL]; ``` - **Bundle resources:** ```objc // Loads the "document.mustache" resource of the main bundle: - template = [GRMustacheTemplate templateFromResource:@"document" - bundle:nil - error:NULL]; + template = [GRMustacheTemplate + templateFromResource:@"document" + bundle:nil + error:NULL]; ``` - **Files and URLs:** ```objc - template = [GRMustacheTemplate templateFromContentsOfURL:templateURL - error:NULL]; - template = [GRMustacheTemplate templateFromContentsOfFile:@"/path/document.mustache" - error:NULL]; + template = [GRMustacheTemplate + templateFromContentsOfURL:templateURL + error:NULL]; + template = [GRMustacheTemplate + templateFromContentsOfFile:@"/path/document.mustache" + error:NULL]; ``` - **Template Repositories:** @@ -171,9 +175,10 @@ Templates may come from various sources: ```objc // The repository of Bash templates, with extension ".sh": GRMustacheTemplateRepository *repo; - repo = [GRMustacheTemplateRepository templateRepositoryWithBundle:nil - templateExtension:@"sh" - encoding:NSUTF8StringEncoding]; + repo = [GRMustacheTemplateRepository + templateRepositoryWithBundle:nil + templateExtension:@"sh" + encoding:NSUTF8StringEncoding]; // Disable HTML escaping for Bash scripts: repo.configuration.contentType = GRMustacheContentTypeText; From b5e890128389ffec4c94dc81cc9e1f6cf9c195c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sat, 17 Oct 2015 16:12:53 +0200 Subject: [PATCH 53/81] README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8316c71e..d5d21f6d 100644 --- a/README.md +++ b/README.md @@ -217,7 +217,9 @@ Error handling follows [Cocoa conventions](https://developer.apple.com/library/i NSError *error; GRMustacheTemplate *template; NSString *rendering; -template = [GRMustacheTemplate templateFromResource:@"document" bundle:nil error:&error]; +template = [GRMustacheTemplate templateFromResource:@"document" + bundle:nil + error:&error]; rendering = [template renderObject:... error:&error] if (!rendering) { // Parse error at line 2 of template /path/to/template.mustache: From 7fe47331adc1144e30feb825edc1929f0fb88139 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sat, 17 Oct 2015 20:20:08 +0200 Subject: [PATCH 54/81] TODO.md --- TODO.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/TODO.md b/TODO.md index 76a85a3f..b8aa9e20 100644 --- a/TODO.md +++ b/TODO.md @@ -21,3 +21,5 @@ - [?] Import "register" vocabulary from GRMustache.swift, instead of "protected objects". - [ ] Dynamic partial overrides `{{# partial }}...{{/ partial }}` - [ ] Check that {{ string.length }} is correctly implemented (NSObject+GRMustacheKeyValueCoding.m) and tested (https://github.com/groue/GRMustacheSpec). +- [ ] Have Filter and renderingObject APIs closer from GRMustache.swift +- [ ] Drop support for else `{{#a}}{{^a}}{{/a}}`. From e23dbeaa31234340177282b63af5cbc39bf1ca17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sun, 18 Oct 2015 12:36:45 +0200 Subject: [PATCH 55/81] Update GRMustacheSpec --- .../groue/GRMustache/GRMustacheSuitesTest.m | 57 +++++++++++++------ GRMustacheTests/vendor/groue/GRMustacheSpec | 2 +- 2 files changed, 40 insertions(+), 19 deletions(-) diff --git a/GRMustacheTests/Public/v8.0/Suites/groue/GRMustache/GRMustacheSuitesTest.m b/GRMustacheTests/Public/v8.0/Suites/groue/GRMustache/GRMustacheSuitesTest.m index 288181df..e3bf9193 100644 --- a/GRMustacheTests/Public/v8.0/Suites/groue/GRMustache/GRMustacheSuitesTest.m +++ b/GRMustacheTests/Public/v8.0/Suites/groue/GRMustache/GRMustacheSuitesTest.m @@ -30,24 +30,45 @@ @implementation GRMustacheSuitesTest - (void)testGRMustacheSuites { - [self runTestsFromResource:@"arrays.json" subdirectory:@"Tests"]; - [self runTestsFromResource:@"blocks.json" subdirectory:@"Tests"]; - [self runTestsFromResource:@"comments.json" subdirectory:@"Tests"]; - [self runTestsFromResource:@"compound_keys.json" subdirectory:@"Tests"]; - [self runTestsFromResource:@"delimiters.json" subdirectory:@"Tests"]; - [self runTestsFromResource:@"expression_parsing_errors.json" subdirectory:@"Tests"]; - [self runTestsFromResource:@"filters.json" subdirectory:@"Tests"]; - [self runTestsFromResource:@"general.json" subdirectory:@"Tests"]; - [self runTestsFromResource:@"implicit_iterator.json" subdirectory:@"Tests"]; - [self runTestsFromResource:@"inverted_sections.json" subdirectory:@"Tests"]; - [self runTestsFromResource:@"partial_overrides.json" subdirectory:@"Tests"]; - [self runTestsFromResource:@"partials.json" subdirectory:@"Tests"]; - [self runTestsFromResource:@"pragmas.json" subdirectory:@"Tests"]; - [self runTestsFromResource:@"sections.json" subdirectory:@"Tests"]; - [self runTestsFromResource:@"standard_library.json" subdirectory:@"Tests"]; - [self runTestsFromResource:@"tag_parsing_errors.json" subdirectory:@"Tests"]; - [self runTestsFromResource:@"text_rendering.json" subdirectory:@"Tests"]; - [self runTestsFromResource:@"variables.json" subdirectory:@"Tests"]; + // General + [self runTestsFromResource:@"comments.json" subdirectory:@"Tests/general"]; + [self runTestsFromResource:@"delimiters.json" subdirectory:@"Tests/general"]; + [self runTestsFromResource:@"general.json" subdirectory:@"Tests/general"]; + [self runTestsFromResource:@"partials.json" subdirectory:@"Tests/general"]; + [self runTestsFromResource:@"pragmas.json" subdirectory:@"Tests/general"]; + [self runTestsFromResource:@"sections.json" subdirectory:@"Tests/general"]; + [self runTestsFromResource:@"inverted_sections.json" subdirectory:@"Tests/general"]; + [self runTestsFromResource:@"text_rendering.json" subdirectory:@"Tests/general"]; + [self runTestsFromResource:@"variables.json" subdirectory:@"Tests/general"]; + + // Errors + [self runTestsFromResource:@"expression_parsing_errors.json" subdirectory:@"Tests/errors"]; + [self runTestsFromResource:@"tag_parsing_errors.json" subdirectory:@"Tests/errors"]; + + // Expressions + [self runTestsFromResource:@"compound_keys.json" subdirectory:@"Tests/expressions"]; + [self runTestsFromResource:@"filters.json" subdirectory:@"Tests/expressions"]; + [self runTestsFromResource:@"implicit_iterator.json" subdirectory:@"Tests/expressions"]; + + // Inheritance + [self runTestsFromResource:@"blocks.json" subdirectory:@"Tests/inheritance"]; + [self runTestsFromResource:@"partial_overrides.json" subdirectory:@"Tests/inheritance"]; + + // Standard library + [self runTestsFromResource:@"each.json" subdirectory:@"Tests/standard_library"]; + [self runTestsFromResource:@"HTMLEscape.json" subdirectory:@"Tests/standard_library"]; + [self runTestsFromResource:@"javascriptEscape.json" subdirectory:@"Tests/standard_library"]; + [self runTestsFromResource:@"URLEscape.json" subdirectory:@"Tests/standard_library"]; + [self runTestsFromResource:@"zip.json" subdirectory:@"Tests/standard_library"]; + + // Values + [self runTestsFromResource:@"array.json" subdirectory:@"Tests/values"]; + [self runTestsFromResource:@"bool.json" subdirectory:@"Tests/values"]; + [self runTestsFromResource:@"dictionary.json" subdirectory:@"Tests/values"]; + [self runTestsFromResource:@"missing_value.json" subdirectory:@"Tests/values"]; + [self runTestsFromResource:@"null.json" subdirectory:@"Tests/values"]; + [self runTestsFromResource:@"number.json" subdirectory:@"Tests/values"]; + [self runTestsFromResource:@"string.json" subdirectory:@"Tests/values"]; } @end diff --git a/GRMustacheTests/vendor/groue/GRMustacheSpec b/GRMustacheTests/vendor/groue/GRMustacheSpec index bd813b34..6d3be275 160000 --- a/GRMustacheTests/vendor/groue/GRMustacheSpec +++ b/GRMustacheTests/vendor/groue/GRMustacheSpec @@ -1 +1 @@ -Subproject commit bd813b34b972eec3785effccdd2032fa9f04d3a1 +Subproject commit 6d3be2758f73fbd84998cb4abac57e8b5dcb1146 From b77990242fa6ef4358652c8c102442d31a34304d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sun, 18 Oct 2015 12:48:33 +0200 Subject: [PATCH 56/81] Add failing test for dynamic partial override --- .../Public/v8.0/GRMustacheRenderingObjectTest.m | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/GRMustacheTests/Public/v8.0/GRMustacheRenderingObjectTest.m b/GRMustacheTests/Public/v8.0/GRMustacheRenderingObjectTest.m index 4a723807..bc5c2592 100644 --- a/GRMustacheTests/Public/v8.0/GRMustacheRenderingObjectTest.m +++ b/GRMustacheTests/Public/v8.0/GRMustacheRenderingObjectTest.m @@ -856,6 +856,19 @@ - (void)testImplicitTrueRenderingObjectsWithBlocks } } + +- (void)testDynamicPartialOverride +{ + NSDictionary *templates = @{ @"layout": @"<{{$a}}Default{{subject}}{{/a}},{{$b}}Ignored{{/b}}>", + @"partial": @"[{{#layout}}---{{$b}}Overriden{{subject}}{{/b}}---{{/layout}}]" }; + GRMustacheTemplateRepository *repo = [GRMustacheTemplateRepository templateRepositoryWithDictionary:templates]; + GRMustacheTemplate *template = [repo templateNamed:@"partial" error:NULL]; + GRMustacheTemplate *layout = [repo templateNamed:@"layout" error:NULL]; + id data = @{ @"layout": layout, @"subject": @"---" }; + NSString *rendering = [template renderObject:data error:NULL]; + XCTAssertEqualObjects(rendering, @"[]"); +} + - (void)testArrayOfRenderingObjectsInSectionTagDoesNotNeedExplicitInvocation { id object1 = [GRMustacheRendering renderingObjectWithBlock:^NSString *(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error) { From 9c143309c7b1bf8bbf2bfb09a6c0ebe2b79b51bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sun, 18 Oct 2015 12:56:48 +0200 Subject: [PATCH 57/81] Pass dynamic partial override test --- .../GRMustacheInheritedPartialNode_private.h | 2 +- GRMustache/Templates/GRMustacheTemplate.m | 30 ++++++++++++++++++- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/GRMustache/Compiling/TemplateAST/GRMustacheInheritedPartialNode_private.h b/GRMustache/Compiling/TemplateAST/GRMustacheInheritedPartialNode_private.h index 88706b59..745e4294 100644 --- a/GRMustache/Compiling/TemplateAST/GRMustacheInheritedPartialNode_private.h +++ b/GRMustache/Compiling/TemplateAST/GRMustacheInheritedPartialNode_private.h @@ -33,7 +33,7 @@ */ @interface GRMustacheInheritedPartialNode : NSObject { @private - GRMustachePartialNode *_parentPartialNode; + GRMustachePartialNode *_parentPartialNode; // TODO: replace with AST GRMustacheTemplateAST *_overridingTemplateAST; } diff --git a/GRMustache/Templates/GRMustacheTemplate.m b/GRMustache/Templates/GRMustacheTemplate.m index 99c47837..ae2533ae 100644 --- a/GRMustache/Templates/GRMustacheTemplate.m +++ b/GRMustache/Templates/GRMustacheTemplate.m @@ -25,6 +25,10 @@ #import "GRMustacheTemplateRepository_private.h" #import "GRMustacheTemplateAST_private.h" #import "GRMustacheRenderingEngine_private.h" +#import "GRMustacheTag_private.h" +#import "GRMustacheInheritedPartialNode_private.h" +#import "GRMustachePartialNode_private.h" +#import "GRMustacheSectionTag_private.h" @implementation GRMustacheTemplate @synthesize templateRepository=_templateRepository; @@ -136,7 +140,31 @@ - (void)setBaseContext:(GRMustacheContext *)baseContext // Allows template to render as "dynamic partials" - (NSString *)renderForMustacheTag:(GRMustacheTag *)tag context:(GRMustacheContext *)context HTMLSafe:(BOOL *)HTMLSafe error:(NSError **)error { - return [self renderContentWithContext:context HTMLSafe:HTMLSafe error:error]; + switch (tag.type) { + case GRMustacheTagTypeVariable: + // {{ template }} behaves just like {{> partial }} + // + // Let's simply render the template: + return [self renderContentWithContext:context HTMLSafe:HTMLSafe error:error]; + case GRMustacheTagTypeSection: { + // {{# template }}...{{/ template }} behaves just like {{< partial }}...{{/ partial }} + // + // Let's render the template, overriding blocks with the content + // of the section. + // + // Overriding requires an PartialOverrideNode: + + // TODO: GRMustacheInheritedPartialNode should need an AST, not a GRMustachePartialNode. + GRMustachePartialNode *partialNode = [GRMustachePartialNode partialNodeWithTemplateAST:self.templateAST name:nil]; + GRMustacheInheritedPartialNode *partialOverrideNode = [GRMustacheInheritedPartialNode inheritedPartialNodeWithParentPartialNode:partialNode overridingTemplateAST:((GRMustacheSectionTag *)tag).innerTemplateAST]; + GRMustacheTemplateAST *AST = [GRMustacheTemplateAST templateASTWithASTNodes:@[partialOverrideNode] contentType:self.templateAST.contentType]; + + // Only RenderingEngine knows how to render PartialOverrideNode. + // So wrap the node into a TemplateAST, and render. + GRMustacheRenderingEngine *renderingEngine = [GRMustacheRenderingEngine renderingEngineWithContentType:self.templateAST.contentType context:context]; + return [renderingEngine renderTemplateAST:AST HTMLSafe:HTMLSafe error:error]; + } + } } @end From 5f668ab951a11269997d04236e9b43bfa2a9a18d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sun, 18 Oct 2015 13:13:10 +0200 Subject: [PATCH 58/81] Bring GRMustacheRenderingEngine closer to the Swift RenderingEngine --- .../GRMustacheInheritedPartialNode_private.h | 2 +- .../TemplateAST/GRMustacheSectionTag.m | 4 +-- .../Rendering/GRMustacheRenderingEngine.m | 26 ++++++++++++------- .../GRMustacheRenderingEngine_private.h | 8 +++--- GRMustache/Templates/GRMustacheTemplate.m | 15 +++++------ 5 files changed, 31 insertions(+), 24 deletions(-) diff --git a/GRMustache/Compiling/TemplateAST/GRMustacheInheritedPartialNode_private.h b/GRMustache/Compiling/TemplateAST/GRMustacheInheritedPartialNode_private.h index 745e4294..88706b59 100644 --- a/GRMustache/Compiling/TemplateAST/GRMustacheInheritedPartialNode_private.h +++ b/GRMustache/Compiling/TemplateAST/GRMustacheInheritedPartialNode_private.h @@ -33,7 +33,7 @@ */ @interface GRMustacheInheritedPartialNode : NSObject { @private - GRMustachePartialNode *_parentPartialNode; // TODO: replace with AST + GRMustachePartialNode *_parentPartialNode; GRMustacheTemplateAST *_overridingTemplateAST; } diff --git a/GRMustache/Compiling/TemplateAST/GRMustacheSectionTag.m b/GRMustache/Compiling/TemplateAST/GRMustacheSectionTag.m index 1a3ddca0..bc9f7feb 100644 --- a/GRMustache/Compiling/TemplateAST/GRMustacheSectionTag.m +++ b/GRMustache/Compiling/TemplateAST/GRMustacheSectionTag.m @@ -69,8 +69,8 @@ - (GRMustacheTagType)type - (NSString *)renderContentWithContext:(GRMustacheContext *)context HTMLSafe:(BOOL *)HTMLSafe error:(NSError **)error { - GRMustacheRenderingEngine *renderingEngine = [GRMustacheRenderingEngine renderingEngineWithContentType:_innerTemplateAST.contentType context:context]; - return [renderingEngine renderTemplateAST:_innerTemplateAST HTMLSafe:HTMLSafe error:error]; + GRMustacheRenderingEngine *renderingEngine = [GRMustacheRenderingEngine renderingEngineWithTemplateAST:_innerTemplateAST context:context]; + return [renderingEngine renderHTMLSafe:HTMLSafe error:error]; } diff --git a/GRMustache/Rendering/GRMustacheRenderingEngine.m b/GRMustache/Rendering/GRMustacheRenderingEngine.m index 083b3c71..6bba6568 100644 --- a/GRMustache/Rendering/GRMustacheRenderingEngine.m +++ b/GRMustache/Rendering/GRMustacheRenderingEngine.m @@ -65,17 +65,17 @@ + (void)initialize setupCurrentExpressionInvocation(); } -+ (instancetype)renderingEngineWithContentType:(GRMustacheContentType)contentType context:(GRMustacheContext *)context ++ (instancetype)renderingEngineWithTemplateAST:(GRMustacheTemplateAST *)templateAST context:(GRMustacheContext *)context { - return [[[self alloc] initWithContentType:contentType context:context] autorelease]; + return [[[self alloc] initWithTemplateAST:templateAST context:context] autorelease]; } -- (NSString *)renderTemplateAST:(GRMustacheTemplateAST *)templateAST HTMLSafe:(BOOL *)HTMLSafe error:(NSError **)error +- (NSString *)renderHTMLSafe:(BOOL *)HTMLSafe error:(NSError **)error { _buffer = GRMustacheBufferCreate(1024); NSString *result = nil; - if ([self visitTemplateAST:templateAST error:error]) { + if ([self visitTemplateAST:_templateAST error:error]) { if (HTMLSafe) { *HTMLSafe = (_contentType == GRMustacheContentTypeHTML); } @@ -113,9 +113,9 @@ - (BOOL)visitTemplateAST:(GRMustacheTemplateAST *)templateAST error:(NSError **) { // Content-type mismatch: render separately... - GRMustacheRenderingEngine *renderingEngine = [[[GRMustacheRenderingEngine alloc] initWithContentType:ASTContentType context:_context] autorelease]; + GRMustacheRenderingEngine *renderingEngine = [GRMustacheRenderingEngine renderingEngineWithTemplateAST:templateAST context:_context]; BOOL HTMLSafe; - NSString *rendering = [renderingEngine renderTemplateAST:templateAST HTMLSafe:&HTMLSafe error:error]; + NSString *rendering = [renderingEngine renderHTMLSafe:&HTMLSafe error:error]; if (!rendering) { return NO; } @@ -168,14 +168,22 @@ - (BOOL)visitTextNode:(GRMustacheTextNode *)textNode error:(NSError **)error #pragma mark - Private -- (instancetype)initWithContentType:(GRMustacheContentType)contentType context:(GRMustacheContext *)context +- (void)dealloc +{ + [_templateAST release]; + [_context release]; + [super dealloc]; +} + +- (instancetype)initWithTemplateAST:(GRMustacheTemplateAST *)templateAST context:(GRMustacheContext *)context { NSAssert(context, @"Invalid context:nil"); self = [super init]; if (self) { - _contentType = contentType; - _context = context; + _templateAST = [templateAST retain]; + _contentType = templateAST.contentType; + _context = [context retain]; } return self; } diff --git a/GRMustache/Rendering/GRMustacheRenderingEngine_private.h b/GRMustache/Rendering/GRMustacheRenderingEngine_private.h index 1b326c5c..5edd54b0 100644 --- a/GRMustache/Rendering/GRMustacheRenderingEngine_private.h +++ b/GRMustache/Rendering/GRMustacheRenderingEngine_private.h @@ -27,7 +27,6 @@ @class GRMustacheContext; @class GRMustacheSectionTag; -@class GRMustacheExpressionInvocation; @class GRMustacheTemplateAST; /** @@ -36,18 +35,19 @@ @interface GRMustacheRenderingEngine : NSObject { @private GRMustacheBuffer _buffer; - GRMustacheContentType _contentType; + GRMustacheTemplateAST *_templateAST; GRMustacheContext *_context; + GRMustacheContentType _contentType; } /** * TODO */ -- (NSString *)renderTemplateAST:(GRMustacheTemplateAST *)templateAST HTMLSafe:(BOOL *)HTMLSafe error:(NSError **)error GRMUSTACHE_API_INTERNAL; +- (NSString *)renderHTMLSafe:(BOOL *)HTMLSafe error:(NSError **)error GRMUSTACHE_API_INTERNAL; /** * TODO */ -+ (instancetype)renderingEngineWithContentType:(GRMustacheContentType)contentType context:(GRMustacheContext *)context GRMUSTACHE_API_INTERNAL; ++ (instancetype)renderingEngineWithTemplateAST:(GRMustacheTemplateAST *)templateAST context:(GRMustacheContext *)context GRMUSTACHE_API_INTERNAL; @end diff --git a/GRMustache/Templates/GRMustacheTemplate.m b/GRMustache/Templates/GRMustacheTemplate.m index ae2533ae..6f28f6dc 100644 --- a/GRMustache/Templates/GRMustacheTemplate.m +++ b/GRMustache/Templates/GRMustacheTemplate.m @@ -117,8 +117,8 @@ - (NSString *)renderObjectsFromArray:(NSArray *)objects error:(NSError **)error - (NSString *)renderContentWithContext:(GRMustacheContext *)context HTMLSafe:(BOOL *)HTMLSafe error:(NSError **)error { - GRMustacheRenderingEngine *renderingEngine = [GRMustacheRenderingEngine renderingEngineWithContentType:_templateAST.contentType context:context]; - return [renderingEngine renderTemplateAST:_templateAST HTMLSafe:HTMLSafe error:error]; + GRMustacheRenderingEngine *renderingEngine = [GRMustacheRenderingEngine renderingEngineWithTemplateAST:_templateAST context:context]; + return [renderingEngine renderHTMLSafe:HTMLSafe error:error]; } - (void)setBaseContext:(GRMustacheContext *)baseContext @@ -152,17 +152,16 @@ - (NSString *)renderForMustacheTag:(GRMustacheTag *)tag context:(GRMustacheConte // Let's render the template, overriding blocks with the content // of the section. // - // Overriding requires an PartialOverrideNode: + // Overriding requires an GRMustacheInheritedPartialNode: - // TODO: GRMustacheInheritedPartialNode should need an AST, not a GRMustachePartialNode. GRMustachePartialNode *partialNode = [GRMustachePartialNode partialNodeWithTemplateAST:self.templateAST name:nil]; GRMustacheInheritedPartialNode *partialOverrideNode = [GRMustacheInheritedPartialNode inheritedPartialNodeWithParentPartialNode:partialNode overridingTemplateAST:((GRMustacheSectionTag *)tag).innerTemplateAST]; - GRMustacheTemplateAST *AST = [GRMustacheTemplateAST templateASTWithASTNodes:@[partialOverrideNode] contentType:self.templateAST.contentType]; - // Only RenderingEngine knows how to render PartialOverrideNode. + // Only GRMustacheRenderingEngine knows how to render GRMustacheInheritedPartialNode. // So wrap the node into a TemplateAST, and render. - GRMustacheRenderingEngine *renderingEngine = [GRMustacheRenderingEngine renderingEngineWithContentType:self.templateAST.contentType context:context]; - return [renderingEngine renderTemplateAST:AST HTMLSafe:HTMLSafe error:error]; + GRMustacheTemplateAST *templateAST = [GRMustacheTemplateAST templateASTWithASTNodes:@[partialOverrideNode] contentType:self.templateAST.contentType]; + GRMustacheRenderingEngine *renderingEngine = [GRMustacheRenderingEngine renderingEngineWithTemplateAST:templateAST context:context]; + return [renderingEngine renderHTMLSafe:HTMLSafe error:error]; } } } From 5ab28af403be69c2b535c490a6066dc43414a0f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sun, 18 Oct 2015 13:23:31 +0200 Subject: [PATCH 59/81] =?UTF-8?q?Rename=20=C2=AB=C2=A0inheritable=20sectio?= =?UTF-8?q?n=C2=A0=C2=BB=20to=20=C2=AB=C2=A0block=C2=A0=C2=BB.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- GRMustache.xcodeproj/project.pbxproj | 46 +++++++++---------- GRMustache/Compiling/GRMustacheCompiler.m | 26 +++++------ ...ritableSectionNode.m => GRMustacheBlock.m} | 14 +++--- ...de_private.h => GRMustacheBlock_private.h} | 20 ++++---- .../GRMustacheInheritedPartialNode.m | 2 +- .../TemplateAST/GRMustachePartialNode.m | 2 +- .../GRMustacheTemplateASTNode_private.h | 2 +- .../GRMustacheTemplateASTVisitor_private.h | 4 +- GRMustache/Parsing/GRMustacheTemplateParser.m | 12 ++--- .../GRMustacheTemplateParser_private.h | 6 +-- GRMustache/Parsing/GRMustacheToken_private.h | 7 ++- .../Rendering/GRMustacheRenderingEngine.m | 6 +-- .../Services/GRMustacheTemplateGenerator.m | 10 ++-- 13 files changed, 78 insertions(+), 79 deletions(-) rename GRMustache/Compiling/TemplateAST/{GRMustacheInheritableSectionNode.m => GRMustacheBlock.m} (79%) rename GRMustache/Compiling/TemplateAST/{GRMustacheInheritableSectionNode_private.h => GRMustacheBlock_private.h} (74%) diff --git a/GRMustache.xcodeproj/project.pbxproj b/GRMustache.xcodeproj/project.pbxproj index 32eded1f..edd54e8c 100644 --- a/GRMustache.xcodeproj/project.pbxproj +++ b/GRMustache.xcodeproj/project.pbxproj @@ -155,7 +155,7 @@ 56214C651BA1A6F20070C6CF /* GRMustacheImplicitIteratorExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367C19B8EE9D00854524 /* GRMustacheImplicitIteratorExpression.m */; settings = {ASSET_TAGS = (); }; }; 56214C661BA1A6F20070C6CF /* GRMustacheScopedExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367E19B8EE9D00854524 /* GRMustacheScopedExpression.m */; settings = {ASSET_TAGS = (); }; }; 56214C671BA1A6F20070C6CF /* GRMustacheInheritedPartialNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368319B8EE9D00854524 /* GRMustacheInheritedPartialNode.m */; settings = {ASSET_TAGS = (); }; }; - 56214C681BA1A6F20070C6CF /* GRMustacheInheritableSectionNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368519B8EE9D00854524 /* GRMustacheInheritableSectionNode.m */; settings = {ASSET_TAGS = (); }; }; + 56214C681BA1A6F20070C6CF /* GRMustacheBlock.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368519B8EE9D00854524 /* GRMustacheBlock.m */; settings = {ASSET_TAGS = (); }; }; 56214C691BA1A6F20070C6CF /* GRMustachePartialNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368719B8EE9D00854524 /* GRMustachePartialNode.m */; settings = {ASSET_TAGS = (); }; }; 56214C6A1BA1A6F20070C6CF /* GRMustacheSectionTag.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368919B8EE9D00854524 /* GRMustacheSectionTag.m */; settings = {ASSET_TAGS = (); }; }; 56214C6B1BA1A6F20070C6CF /* GRMustacheTag.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368C19B8EE9D00854524 /* GRMustacheTag.m */; settings = {ASSET_TAGS = (); }; }; @@ -193,7 +193,7 @@ 56214C8D1BA1A70D0070C6CF /* GRMustacheImplicitIteratorExpression_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF367D19B8EE9D00854524 /* GRMustacheImplicitIteratorExpression_private.h */; settings = {ASSET_TAGS = (); }; }; 56214C8E1BA1A70D0070C6CF /* GRMustacheScopedExpression_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF367F19B8EE9D00854524 /* GRMustacheScopedExpression_private.h */; settings = {ASSET_TAGS = (); }; }; 56214C8F1BA1A70D0070C6CF /* GRMustacheInheritedPartialNode_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368419B8EE9D00854524 /* GRMustacheInheritedPartialNode_private.h */; settings = {ASSET_TAGS = (); }; }; - 56214C901BA1A70D0070C6CF /* GRMustacheInheritableSectionNode_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368619B8EE9D00854524 /* GRMustacheInheritableSectionNode_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214C901BA1A70D0070C6CF /* GRMustacheBlock_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368619B8EE9D00854524 /* GRMustacheBlock_private.h */; settings = {ASSET_TAGS = (); }; }; 56214C911BA1A70D0070C6CF /* GRMustachePartialNode_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368819B8EE9D00854524 /* GRMustachePartialNode_private.h */; settings = {ASSET_TAGS = (); }; }; 56214C921BA1A70D0070C6CF /* GRMustacheSectionTag_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368A19B8EE9D00854524 /* GRMustacheSectionTag_private.h */; settings = {ASSET_TAGS = (); }; }; 56214C931BA1A70D0070C6CF /* GRMustacheTag_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368D19B8EE9D00854524 /* GRMustacheTag_private.h */; settings = {ASSET_TAGS = (); }; }; @@ -243,7 +243,7 @@ 56AC8CAC1BA1F69B009E4319 /* GRMustacheImplicitIteratorExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367C19B8EE9D00854524 /* GRMustacheImplicitIteratorExpression.m */; settings = {ASSET_TAGS = (); }; }; 56AC8CAD1BA1F69B009E4319 /* GRMustacheScopedExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367E19B8EE9D00854524 /* GRMustacheScopedExpression.m */; settings = {ASSET_TAGS = (); }; }; 56AC8CAE1BA1F69B009E4319 /* GRMustacheInheritedPartialNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368319B8EE9D00854524 /* GRMustacheInheritedPartialNode.m */; settings = {ASSET_TAGS = (); }; }; - 56AC8CAF1BA1F69B009E4319 /* GRMustacheInheritableSectionNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368519B8EE9D00854524 /* GRMustacheInheritableSectionNode.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CAF1BA1F69B009E4319 /* GRMustacheBlock.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368519B8EE9D00854524 /* GRMustacheBlock.m */; settings = {ASSET_TAGS = (); }; }; 56AC8CB01BA1F69B009E4319 /* GRMustachePartialNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368719B8EE9D00854524 /* GRMustachePartialNode.m */; settings = {ASSET_TAGS = (); }; }; 56AC8CB11BA1F69B009E4319 /* GRMustacheSectionTag.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368919B8EE9D00854524 /* GRMustacheSectionTag.m */; settings = {ASSET_TAGS = (); }; }; 56AC8CB21BA1F69B009E4319 /* GRMustacheTag.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368C19B8EE9D00854524 /* GRMustacheTag.m */; settings = {ASSET_TAGS = (); }; }; @@ -312,7 +312,7 @@ 56DAC7761BB6A0040010FE01 /* GRMustacheImplicitIteratorExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367C19B8EE9D00854524 /* GRMustacheImplicitIteratorExpression.m */; }; 56DAC7771BB6A0040010FE01 /* GRMustacheScopedExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367E19B8EE9D00854524 /* GRMustacheScopedExpression.m */; }; 56DAC7781BB6A0040010FE01 /* GRMustacheInheritedPartialNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368319B8EE9D00854524 /* GRMustacheInheritedPartialNode.m */; }; - 56DAC7791BB6A0040010FE01 /* GRMustacheInheritableSectionNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368519B8EE9D00854524 /* GRMustacheInheritableSectionNode.m */; }; + 56DAC7791BB6A0040010FE01 /* GRMustacheBlock.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368519B8EE9D00854524 /* GRMustacheBlock.m */; }; 56DAC77A1BB6A0040010FE01 /* GRMustachePartialNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368719B8EE9D00854524 /* GRMustachePartialNode.m */; }; 56DAC77B1BB6A0040010FE01 /* GRMustacheSectionTag.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368919B8EE9D00854524 /* GRMustacheSectionTag.m */; }; 56DAC77C1BB6A0040010FE01 /* GRMustacheTag.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368C19B8EE9D00854524 /* GRMustacheTag.m */; }; @@ -410,8 +410,8 @@ 6586A09D1B9E2E550067C98E /* GRMustacheCompiler_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368119B8EE9D00854524 /* GRMustacheCompiler_private.h */; settings = {ASSET_TAGS = (); }; }; 6586A09E1B9E2E5B0067C98E /* GRMustacheInheritedPartialNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368319B8EE9D00854524 /* GRMustacheInheritedPartialNode.m */; }; 6586A09F1B9E2E5B0067C98E /* GRMustacheInheritedPartialNode_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368419B8EE9D00854524 /* GRMustacheInheritedPartialNode_private.h */; settings = {ASSET_TAGS = (); }; }; - 6586A0A01B9E2E5B0067C98E /* GRMustacheInheritableSectionNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368519B8EE9D00854524 /* GRMustacheInheritableSectionNode.m */; }; - 6586A0A11B9E2E5B0067C98E /* GRMustacheInheritableSectionNode_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368619B8EE9D00854524 /* GRMustacheInheritableSectionNode_private.h */; settings = {ASSET_TAGS = (); }; }; + 6586A0A01B9E2E5B0067C98E /* GRMustacheBlock.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368519B8EE9D00854524 /* GRMustacheBlock.m */; }; + 6586A0A11B9E2E5B0067C98E /* GRMustacheBlock_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368619B8EE9D00854524 /* GRMustacheBlock_private.h */; settings = {ASSET_TAGS = (); }; }; 6586A0A21B9E2E5B0067C98E /* GRMustachePartialNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368719B8EE9D00854524 /* GRMustachePartialNode.m */; }; 6586A0A31B9E2E5B0067C98E /* GRMustachePartialNode_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368819B8EE9D00854524 /* GRMustachePartialNode_private.h */; settings = {ASSET_TAGS = (); }; }; 6586A0A41B9E2E5B0067C98E /* GRMustacheSectionTag.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368919B8EE9D00854524 /* GRMustacheSectionTag.m */; }; @@ -571,8 +571,8 @@ 56BF368119B8EE9D00854524 /* GRMustacheCompiler_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustacheCompiler_private.h; sourceTree = ""; }; 56BF368319B8EE9D00854524 /* GRMustacheInheritedPartialNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheInheritedPartialNode.m; sourceTree = ""; }; 56BF368419B8EE9D00854524 /* GRMustacheInheritedPartialNode_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustacheInheritedPartialNode_private.h; sourceTree = ""; }; - 56BF368519B8EE9D00854524 /* GRMustacheInheritableSectionNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheInheritableSectionNode.m; sourceTree = ""; }; - 56BF368619B8EE9D00854524 /* GRMustacheInheritableSectionNode_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustacheInheritableSectionNode_private.h; sourceTree = ""; }; + 56BF368519B8EE9D00854524 /* GRMustacheBlock.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheBlock.m; sourceTree = ""; }; + 56BF368619B8EE9D00854524 /* GRMustacheBlock_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustacheBlock_private.h; sourceTree = ""; }; 56BF368719B8EE9D00854524 /* GRMustachePartialNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustachePartialNode.m; sourceTree = ""; }; 56BF368819B8EE9D00854524 /* GRMustachePartialNode_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustachePartialNode_private.h; sourceTree = ""; }; 56BF368919B8EE9D00854524 /* GRMustacheSectionTag.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheSectionTag.m; sourceTree = ""; }; @@ -987,25 +987,25 @@ 56BF368219B8EE9D00854524 /* TemplateAST */ = { isa = PBXGroup; children = ( - 56BF368319B8EE9D00854524 /* GRMustacheInheritedPartialNode.m */, + 56BF368619B8EE9D00854524 /* GRMustacheBlock_private.h */, + 56BF368519B8EE9D00854524 /* GRMustacheBlock.m */, 56BF368419B8EE9D00854524 /* GRMustacheInheritedPartialNode_private.h */, - 56BF368519B8EE9D00854524 /* GRMustacheInheritableSectionNode.m */, - 56BF368619B8EE9D00854524 /* GRMustacheInheritableSectionNode_private.h */, - 56BF368719B8EE9D00854524 /* GRMustachePartialNode.m */, + 56BF368319B8EE9D00854524 /* GRMustacheInheritedPartialNode.m */, 56BF368819B8EE9D00854524 /* GRMustachePartialNode_private.h */, - 56BF368919B8EE9D00854524 /* GRMustacheSectionTag.m */, + 56BF368719B8EE9D00854524 /* GRMustachePartialNode.m */, 56BF368A19B8EE9D00854524 /* GRMustacheSectionTag_private.h */, + 56BF368919B8EE9D00854524 /* GRMustacheSectionTag.m */, + 56BF368D19B8EE9D00854524 /* GRMustacheTag_private.h */, 56BF368B19B8EE9D00854524 /* GRMustacheTag.h */, 56BF368C19B8EE9D00854524 /* GRMustacheTag.m */, - 56BF368D19B8EE9D00854524 /* GRMustacheTag_private.h */, - 56BF368E19B8EE9D00854524 /* GRMustacheTemplateAST.m */, 56BF368F19B8EE9D00854524 /* GRMustacheTemplateAST_private.h */, + 56BF368E19B8EE9D00854524 /* GRMustacheTemplateAST.m */, 56BF369019B8EE9D00854524 /* GRMustacheTemplateASTNode_private.h */, 56BF369119B8EE9D00854524 /* GRMustacheTemplateASTVisitor_private.h */, - 56BF369219B8EE9D00854524 /* GRMustacheTextNode.m */, 56BF369319B8EE9D00854524 /* GRMustacheTextNode_private.h */, - 56BF369419B8EE9D00854524 /* GRMustacheVariableTag.m */, + 56BF369219B8EE9D00854524 /* GRMustacheTextNode.m */, 56BF369519B8EE9D00854524 /* GRMustacheVariableTag_private.h */, + 56BF369419B8EE9D00854524 /* GRMustacheVariableTag.m */, ); path = TemplateAST; sourceTree = ""; @@ -1257,7 +1257,7 @@ 56214C921BA1A70D0070C6CF /* GRMustacheSectionTag_private.h in Headers */, 56214C911BA1A70D0070C6CF /* GRMustachePartialNode_private.h in Headers */, 56214C841BA1A70D0070C6CF /* GRMustacheConfiguration_private.h in Headers */, - 56214C901BA1A70D0070C6CF /* GRMustacheInheritableSectionNode_private.h in Headers */, + 56214C901BA1A70D0070C6CF /* GRMustacheBlock_private.h in Headers */, 56214C9E1BA1A70D0070C6CF /* GRMustacheRenderingEngine_private.h in Headers */, 56214CAA1BA1A7490070C6CF /* GRMustacheFilter.h in Headers */, 56214C9F1BA1A70D0070C6CF /* GRMustacheTemplate_private.h in Headers */, @@ -1306,7 +1306,7 @@ 6586A0881B9E2E4A0067C98E /* GRMustacheTemplateRepository.h in Headers */, 6586A0A51B9E2E5B0067C98E /* GRMustacheSectionTag_private.h in Headers */, 56DAC7A51BB6C8DD0010FE01 /* GRMustacheKeyValueCoding.h in Headers */, - 6586A0A11B9E2E5B0067C98E /* GRMustacheInheritableSectionNode_private.h in Headers */, + 6586A0A11B9E2E5B0067C98E /* GRMustacheBlock_private.h in Headers */, 6586A0B71B9E2E600067C98E /* GRMustacheIdentifierExpression_private.h in Headers */, 6586A07F1B9E2E360067C98E /* GRMustacheLocalizer.h in Headers */, 6586A09B1B9E2E4F0067C98E /* GRMustacheTagDelegate.h in Headers */, @@ -1645,7 +1645,7 @@ 56214C611BA1A6F20070C6CF /* GRMustacheCompiler.m in Sources */, 56214C6F1BA1A6F20070C6CF /* GRMustacheContext.m in Sources */, 56214C631BA1A6F20070C6CF /* GRMustacheFilteredExpression.m in Sources */, - 56214C681BA1A6F20070C6CF /* GRMustacheInheritableSectionNode.m in Sources */, + 56214C681BA1A6F20070C6CF /* GRMustacheBlock.m in Sources */, 56214C791BA1A6F20070C6CF /* NSFormatter+GRMustache.m in Sources */, 56214C7A1BA1A6F20070C6CF /* NSValueTransformer+GRMustache.m in Sources */, 56214C7D1BA1A6F20070C6CF /* GRMustacheJavascriptEscapeFilter.m in Sources */, @@ -1785,7 +1785,7 @@ 56AC8CAB1BA1F69B009E4319 /* GRMustacheIdentifierExpression.m in Sources */, 56AC8CC81BA1F69B009E4319 /* GRMustacheError.m in Sources */, 56AC8CB71BA1F69B009E4319 /* GRMustacheExpressionInvocation.m in Sources */, - 56AC8CAF1BA1F69B009E4319 /* GRMustacheInheritableSectionNode.m in Sources */, + 56AC8CAF1BA1F69B009E4319 /* GRMustacheBlock.m in Sources */, 56AC8CA51BA1F69B009E4319 /* GRMustacheExpressionParser.m in Sources */, 56AC8CB81BA1F69B009E4319 /* GRMustacheFilter.m in Sources */, 56AC8CB41BA1F69B009E4319 /* GRMustacheTextNode.m in Sources */, @@ -1817,7 +1817,7 @@ 56DAC7761BB6A0040010FE01 /* GRMustacheImplicitIteratorExpression.m in Sources */, 56DAC7771BB6A0040010FE01 /* GRMustacheScopedExpression.m in Sources */, 56DAC7781BB6A0040010FE01 /* GRMustacheInheritedPartialNode.m in Sources */, - 56DAC7791BB6A0040010FE01 /* GRMustacheInheritableSectionNode.m in Sources */, + 56DAC7791BB6A0040010FE01 /* GRMustacheBlock.m in Sources */, 56DAC77A1BB6A0040010FE01 /* GRMustachePartialNode.m in Sources */, 56DAC77B1BB6A0040010FE01 /* GRMustacheSectionTag.m in Sources */, 56DAC77C1BB6A0040010FE01 /* GRMustacheTag.m in Sources */, @@ -1869,7 +1869,7 @@ 6586A0AF1B9E2E5B0067C98E /* GRMustacheVariableTag.m in Sources */, 6586A07B1B9E2E360067C98E /* GRMustacheHTMLEscapeFilter.m in Sources */, 6586A0B41B9E2E600067C98E /* GRMustacheFilteredExpression.m in Sources */, - 6586A0A01B9E2E5B0067C98E /* GRMustacheInheritableSectionNode.m in Sources */, + 6586A0A01B9E2E5B0067C98E /* GRMustacheBlock.m in Sources */, 6586A0A21B9E2E5B0067C98E /* GRMustachePartialNode.m in Sources */, 6586A0AD1B9E2E5B0067C98E /* GRMustacheTextNode.m in Sources */, 6586A0B61B9E2E600067C98E /* GRMustacheIdentifierExpression.m in Sources */, diff --git a/GRMustache/Compiling/GRMustacheCompiler.m b/GRMustache/Compiling/GRMustacheCompiler.m index 5fd91d90..1ef3fb80 100644 --- a/GRMustache/Compiling/GRMustacheCompiler.m +++ b/GRMustache/Compiling/GRMustacheCompiler.m @@ -26,7 +26,7 @@ #import "GRMustacheTextNode_private.h" #import "GRMustacheVariableTag_private.h" #import "GRMustacheSectionTag_private.h" -#import "GRMustacheInheritableSectionNode_private.h" +#import "GRMustacheBlock_private.h" #import "GRMustacheInheritedPartialNode_private.h" #import "GRMustacheExpressionParser_private.h" #import "GRMustacheExpression_private.h" @@ -350,7 +350,7 @@ - (BOOL)templateParser:(GRMustacheTemplateParser *)parser shouldContinueAfterPar _currentOpeningToken.type == GRMustacheTokenTypeSectionOpening && ((expression == nil && empty) || (expression != nil && [expression isEqual:_currentTagValue]))) { - // We found the "else" close of a regular or inheritable section: + // We found the "else" close of a section: // {{#foo}}...{{^}}...{{/foo}} // {{#foo}}...{{^foo}}...{{/foo}} @@ -402,12 +402,12 @@ - (BOOL)templateParser:(GRMustacheTemplateParser *)parser shouldContinueAfterPar } break; - case GRMustacheTokenTypeInheritableSectionOpening: { - // Inheritable section name validation - NSError *inheritableSectionError; - NSString *name = [parser parseInheritableSectionName:token.tagInnerContent empty:NULL error:&inheritableSectionError]; + case GRMustacheTokenTypeBlockOpening: { + // Block name validation + NSError *blockError; + NSString *name = [parser parseBlockName:token.tagInnerContent empty:NULL error:&blockError]; if (name == nil) { - [self failWithFatalError:[self parseErrorAtToken:token description:[NSString stringWithFormat:@"%@ in inheritable section tag", inheritableSectionError.localizedDescription]]]; + [self failWithFatalError:[self parseErrorAtToken:token description:[NSString stringWithFormat:@"%@ in block", blockError.localizedDescription]]]; return NO; } @@ -498,13 +498,13 @@ - (BOOL)templateParser:(GRMustacheTemplateParser *)parser shouldContinueAfterPar innerTemplateAST:templateAST]; } break; - case GRMustacheTokenTypeInheritableSectionOpening: { - // Inheritable section name validation - // We need a valid name that matches section opening, + case GRMustacheTokenTypeBlockOpening: { + // Block name validation + // We need a valid name that matches block opening, // or an empty `{{/}}` closing tags. NSError *error; BOOL empty; - NSString *name = [parser parseInheritableSectionName:token.tagInnerContent empty:&empty error:&error]; + NSString *name = [parser parseBlockName:token.tagInnerContent empty:&empty error:&error]; if (name && ![name isEqual:_currentTagValue]) { [self failWithFatalError:[self parseErrorAtToken:token description:[NSString stringWithFormat:@"Unexpected %@ closing tag", token.templateSubstring]]]; return NO; @@ -518,9 +518,9 @@ - (BOOL)templateParser:(GRMustacheTemplateParser *)parser shouldContinueAfterPar return NO; } - // Success: create new GRMustacheInheritableSection + // Success: create new GRMustacheBlock GRMustacheTemplateAST *templateAST = [GRMustacheTemplateAST templateASTWithASTNodes:_currentASTNodes contentType:_contentType]; - wrapperASTNode = [GRMustacheInheritableSectionNode inheritableSectionNodeWithName:(NSString *)_currentTagValue innerTemplateAST:templateAST]; + wrapperASTNode = [GRMustacheBlock blockWithName:(NSString *)_currentTagValue innerTemplateAST:templateAST]; } break; case GRMustacheTokenTypeInheritedPartial: { diff --git a/GRMustache/Compiling/TemplateAST/GRMustacheInheritableSectionNode.m b/GRMustache/Compiling/TemplateAST/GRMustacheBlock.m similarity index 79% rename from GRMustache/Compiling/TemplateAST/GRMustacheInheritableSectionNode.m rename to GRMustache/Compiling/TemplateAST/GRMustacheBlock.m index 845a2935..396f9b44 100644 --- a/GRMustache/Compiling/TemplateAST/GRMustacheInheritableSectionNode.m +++ b/GRMustache/Compiling/TemplateAST/GRMustacheBlock.m @@ -20,14 +20,14 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#import "GRMustacheInheritableSectionNode_private.h" +#import "GRMustacheBlock_private.h" #import "GRMustacheTemplateASTVisitor_private.h" -@implementation GRMustacheInheritableSectionNode +@implementation GRMustacheBlock @synthesize name=_name; @synthesize innerTemplateAST=_innerTemplateAST; -+ (instancetype)inheritableSectionNodeWithName:(NSString *)name innerTemplateAST:(GRMustacheTemplateAST *)innerTemplateAST ++ (instancetype)blockWithName:(NSString *)name innerTemplateAST:(GRMustacheTemplateAST *)innerTemplateAST { return [[[self alloc] initWithName:name innerTemplateAST:innerTemplateAST] autorelease]; } @@ -44,20 +44,20 @@ - (void)dealloc - (BOOL)acceptTemplateASTVisitor:(id)visitor error:(NSError **)error { - return [visitor visitInheritableSectionNode:self error:error]; + return [visitor visitBlock:self error:error]; } - (id)resolveTemplateASTNode:(id)templateASTNode { // {{$ name }}...{{/ name }} // - // An inheritable section is overriden by another inheritable section with the same name: + // A block is overriden by another block with the same name: - if (![templateASTNode isKindOfClass:[GRMustacheInheritableSectionNode class]]) { + if (![templateASTNode isKindOfClass:[GRMustacheBlock class]]) { return templateASTNode; } - if (![((GRMustacheInheritableSectionNode *)templateASTNode).name isEqualToString:_name]) { + if (![((GRMustacheBlock *)templateASTNode).name isEqualToString:_name]) { return templateASTNode; } diff --git a/GRMustache/Compiling/TemplateAST/GRMustacheInheritableSectionNode_private.h b/GRMustache/Compiling/TemplateAST/GRMustacheBlock_private.h similarity index 74% rename from GRMustache/Compiling/TemplateAST/GRMustacheInheritableSectionNode_private.h rename to GRMustache/Compiling/TemplateAST/GRMustacheBlock_private.h index 9e301ebe..e7d33823 100644 --- a/GRMustache/Compiling/TemplateAST/GRMustacheInheritableSectionNode_private.h +++ b/GRMustache/Compiling/TemplateAST/GRMustacheBlock_private.h @@ -27,39 +27,39 @@ @class GRMustacheTemplateAST; /** - * A GRMustacheInheritableSection is an AST node that represents inheritable - * sections as `{{$name}}...{{/name}}`. + * A GRMustacheBlock is an AST node that represents blocks such + * as `{{$name}}...{{/name}}`. */ -@interface GRMustacheInheritableSectionNode : NSObject { +@interface GRMustacheBlock : NSObject { @private NSString *_name; GRMustacheTemplateAST *_innerTemplateAST; } /** - * The AST of the inner content of the section + * The AST of the inner content of the block * * {{$ ... }} AST {{/ }} */ @property (nonatomic, retain, readonly) GRMustacheTemplateAST *innerTemplateAST GRMUSTACHE_API_INTERNAL; /** - * The name of the inheritable section: + * The name of the block: * * {{$ name }} ... {{/ }} */ @property (nonatomic, readonly) NSString *name GRMUSTACHE_API_INTERNAL; /** - * Returns a new inheritable section. + * Returns a new block. * - * @param name The name of the inheritable section - * @param innerTemplateAST The AST of the inner content of the section + * @param name The name of the block + * @param innerTemplateAST The AST of the inner content of the block * - * @return a new GRMustacheInheritableSection. + * @return a new GRMustacheBlock. * * @see GRMustacheTemplateASTNode */ -+ (instancetype)inheritableSectionNodeWithName:(NSString *)name innerTemplateAST:(GRMustacheTemplateAST *)innerTemplateAST GRMUSTACHE_API_INTERNAL; ++ (instancetype)blockWithName:(NSString *)name innerTemplateAST:(GRMustacheTemplateAST *)innerTemplateAST GRMUSTACHE_API_INTERNAL; @end diff --git a/GRMustache/Compiling/TemplateAST/GRMustacheInheritedPartialNode.m b/GRMustache/Compiling/TemplateAST/GRMustacheInheritedPartialNode.m index f67e69f0..fc25e68f 100644 --- a/GRMustache/Compiling/TemplateAST/GRMustacheInheritedPartialNode.m +++ b/GRMustache/Compiling/TemplateAST/GRMustacheInheritedPartialNode.m @@ -68,7 +68,7 @@ - (BOOL)acceptTemplateASTVisitor:(id)visitor error // "expected": "inherited" // }, // { - // "name": "Two levels of inheritance: inherited partial with overriding content containing another inherited partial with overriding content containing an inheritable section", + // "name": "Two levels of inheritance: inherited partial with overriding content containing another inherited partial with overriding content containing a block", // "data": { }, // "template": "{{)visitor error // Relevant test: // // { - // "name": "Partials in inherited partials can override inheritable sections", + // "name": "Partials in inherited partials can override blocks", // "data": { }, // "template": "{{partial1}}{{/partial2}}", // "partials": { diff --git a/GRMustache/Compiling/TemplateAST/GRMustacheTemplateASTNode_private.h b/GRMustache/Compiling/TemplateAST/GRMustacheTemplateASTNode_private.h index e6f8d35c..99fe64bc 100644 --- a/GRMustache/Compiling/TemplateAST/GRMustacheTemplateASTNode_private.h +++ b/GRMustache/Compiling/TemplateAST/GRMustacheTemplateASTNode_private.h @@ -59,7 +59,7 @@ * rendered in lieu of the node argument. * * All classes conforming to the GRMustacheTemplateASTNode protocol return - * the node argument, but GRMustacheInheritableSectionNode, + * the node argument, but GRMustacheBlock, * GRMustacheInheritedPartialNode, and GRMustachePartialNode. * * @param templateASTNode A node diff --git a/GRMustache/Compiling/TemplateAST/GRMustacheTemplateASTVisitor_private.h b/GRMustache/Compiling/TemplateAST/GRMustacheTemplateASTVisitor_private.h index 1fcab0b4..4fe1f124 100644 --- a/GRMustache/Compiling/TemplateAST/GRMustacheTemplateASTVisitor_private.h +++ b/GRMustache/Compiling/TemplateAST/GRMustacheTemplateASTVisitor_private.h @@ -25,7 +25,7 @@ @class GRMustacheTemplateAST; @class GRMustacheInheritedPartialNode; -@class GRMustacheInheritableSectionNode; +@class GRMustacheBlock; @class GRMustachePartialNode; @class GRMustacheVariableTag; @class GRMustacheSectionTag; @@ -36,7 +36,7 @@ // Don't use these methods directly. Use -[ Date: Sun, 18 Oct 2015 13:28:52 +0200 Subject: [PATCH 60/81] =?UTF-8?q?Rename=20=C2=AB=C2=A0inherited=20partial?= =?UTF-8?q?=C2=A0=C2=BB=20to=20=C2=AB=C2=A0partial=20override=C2=A0=C2=BB.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- GRMustache.xcodeproj/project.pbxproj | 32 ++++++++--------- GRMustache/Compiling/GRMustacheCompiler.m | 18 +++++----- .../TemplateAST/GRMustachePartialNode.m | 2 +- ...Node.m => GRMustachePartialOverrideNode.m} | 14 ++++---- ...> GRMustachePartialOverrideNode_private.h} | 15 ++++---- .../GRMustacheTemplateASTNode_private.h | 2 +- .../GRMustacheTemplateASTVisitor_private.h | 4 +-- GRMustache/Parsing/GRMustacheTemplateParser.m | 2 +- GRMustache/Parsing/GRMustacheToken_private.h | 7 ++-- GRMustache/Rendering/GRMustacheContext.h | 2 +- GRMustache/Rendering/GRMustacheContext.m | 36 +++++++++---------- .../Rendering/GRMustacheContext_private.h | 16 ++++----- .../Rendering/GRMustacheRenderingEngine.m | 16 ++++----- .../Services/GRMustacheTemplateGenerator.m | 8 ++--- GRMustache/Templates/GRMustacheTemplate.m | 8 ++--- 15 files changed, 90 insertions(+), 92 deletions(-) rename GRMustache/Compiling/TemplateAST/{GRMustacheInheritedPartialNode.m => GRMustachePartialOverrideNode.m} (83%) rename GRMustache/Compiling/TemplateAST/{GRMustacheInheritedPartialNode_private.h => GRMustachePartialOverrideNode_private.h} (78%) diff --git a/GRMustache.xcodeproj/project.pbxproj b/GRMustache.xcodeproj/project.pbxproj index edd54e8c..73e64fa5 100644 --- a/GRMustache.xcodeproj/project.pbxproj +++ b/GRMustache.xcodeproj/project.pbxproj @@ -154,7 +154,7 @@ 56214C641BA1A6F20070C6CF /* GRMustacheIdentifierExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367A19B8EE9D00854524 /* GRMustacheIdentifierExpression.m */; settings = {ASSET_TAGS = (); }; }; 56214C651BA1A6F20070C6CF /* GRMustacheImplicitIteratorExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367C19B8EE9D00854524 /* GRMustacheImplicitIteratorExpression.m */; settings = {ASSET_TAGS = (); }; }; 56214C661BA1A6F20070C6CF /* GRMustacheScopedExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367E19B8EE9D00854524 /* GRMustacheScopedExpression.m */; settings = {ASSET_TAGS = (); }; }; - 56214C671BA1A6F20070C6CF /* GRMustacheInheritedPartialNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368319B8EE9D00854524 /* GRMustacheInheritedPartialNode.m */; settings = {ASSET_TAGS = (); }; }; + 56214C671BA1A6F20070C6CF /* GRMustachePartialOverrideNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368319B8EE9D00854524 /* GRMustachePartialOverrideNode.m */; settings = {ASSET_TAGS = (); }; }; 56214C681BA1A6F20070C6CF /* GRMustacheBlock.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368519B8EE9D00854524 /* GRMustacheBlock.m */; settings = {ASSET_TAGS = (); }; }; 56214C691BA1A6F20070C6CF /* GRMustachePartialNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368719B8EE9D00854524 /* GRMustachePartialNode.m */; settings = {ASSET_TAGS = (); }; }; 56214C6A1BA1A6F20070C6CF /* GRMustacheSectionTag.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368919B8EE9D00854524 /* GRMustacheSectionTag.m */; settings = {ASSET_TAGS = (); }; }; @@ -192,7 +192,7 @@ 56214C8C1BA1A70D0070C6CF /* GRMustacheIdentifierExpression_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF367B19B8EE9D00854524 /* GRMustacheIdentifierExpression_private.h */; settings = {ASSET_TAGS = (); }; }; 56214C8D1BA1A70D0070C6CF /* GRMustacheImplicitIteratorExpression_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF367D19B8EE9D00854524 /* GRMustacheImplicitIteratorExpression_private.h */; settings = {ASSET_TAGS = (); }; }; 56214C8E1BA1A70D0070C6CF /* GRMustacheScopedExpression_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF367F19B8EE9D00854524 /* GRMustacheScopedExpression_private.h */; settings = {ASSET_TAGS = (); }; }; - 56214C8F1BA1A70D0070C6CF /* GRMustacheInheritedPartialNode_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368419B8EE9D00854524 /* GRMustacheInheritedPartialNode_private.h */; settings = {ASSET_TAGS = (); }; }; + 56214C8F1BA1A70D0070C6CF /* GRMustachePartialOverrideNode_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368419B8EE9D00854524 /* GRMustachePartialOverrideNode_private.h */; settings = {ASSET_TAGS = (); }; }; 56214C901BA1A70D0070C6CF /* GRMustacheBlock_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368619B8EE9D00854524 /* GRMustacheBlock_private.h */; settings = {ASSET_TAGS = (); }; }; 56214C911BA1A70D0070C6CF /* GRMustachePartialNode_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368819B8EE9D00854524 /* GRMustachePartialNode_private.h */; settings = {ASSET_TAGS = (); }; }; 56214C921BA1A70D0070C6CF /* GRMustacheSectionTag_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368A19B8EE9D00854524 /* GRMustacheSectionTag_private.h */; settings = {ASSET_TAGS = (); }; }; @@ -242,7 +242,7 @@ 56AC8CAB1BA1F69B009E4319 /* GRMustacheIdentifierExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367A19B8EE9D00854524 /* GRMustacheIdentifierExpression.m */; settings = {ASSET_TAGS = (); }; }; 56AC8CAC1BA1F69B009E4319 /* GRMustacheImplicitIteratorExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367C19B8EE9D00854524 /* GRMustacheImplicitIteratorExpression.m */; settings = {ASSET_TAGS = (); }; }; 56AC8CAD1BA1F69B009E4319 /* GRMustacheScopedExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367E19B8EE9D00854524 /* GRMustacheScopedExpression.m */; settings = {ASSET_TAGS = (); }; }; - 56AC8CAE1BA1F69B009E4319 /* GRMustacheInheritedPartialNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368319B8EE9D00854524 /* GRMustacheInheritedPartialNode.m */; settings = {ASSET_TAGS = (); }; }; + 56AC8CAE1BA1F69B009E4319 /* GRMustachePartialOverrideNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368319B8EE9D00854524 /* GRMustachePartialOverrideNode.m */; settings = {ASSET_TAGS = (); }; }; 56AC8CAF1BA1F69B009E4319 /* GRMustacheBlock.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368519B8EE9D00854524 /* GRMustacheBlock.m */; settings = {ASSET_TAGS = (); }; }; 56AC8CB01BA1F69B009E4319 /* GRMustachePartialNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368719B8EE9D00854524 /* GRMustachePartialNode.m */; settings = {ASSET_TAGS = (); }; }; 56AC8CB11BA1F69B009E4319 /* GRMustacheSectionTag.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368919B8EE9D00854524 /* GRMustacheSectionTag.m */; settings = {ASSET_TAGS = (); }; }; @@ -311,7 +311,7 @@ 56DAC7751BB6A0040010FE01 /* GRMustacheIdentifierExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367A19B8EE9D00854524 /* GRMustacheIdentifierExpression.m */; }; 56DAC7761BB6A0040010FE01 /* GRMustacheImplicitIteratorExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367C19B8EE9D00854524 /* GRMustacheImplicitIteratorExpression.m */; }; 56DAC7771BB6A0040010FE01 /* GRMustacheScopedExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF367E19B8EE9D00854524 /* GRMustacheScopedExpression.m */; }; - 56DAC7781BB6A0040010FE01 /* GRMustacheInheritedPartialNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368319B8EE9D00854524 /* GRMustacheInheritedPartialNode.m */; }; + 56DAC7781BB6A0040010FE01 /* GRMustachePartialOverrideNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368319B8EE9D00854524 /* GRMustachePartialOverrideNode.m */; }; 56DAC7791BB6A0040010FE01 /* GRMustacheBlock.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368519B8EE9D00854524 /* GRMustacheBlock.m */; }; 56DAC77A1BB6A0040010FE01 /* GRMustachePartialNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368719B8EE9D00854524 /* GRMustachePartialNode.m */; }; 56DAC77B1BB6A0040010FE01 /* GRMustacheSectionTag.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368919B8EE9D00854524 /* GRMustacheSectionTag.m */; }; @@ -408,8 +408,8 @@ 6586A09B1B9E2E4F0067C98E /* GRMustacheTagDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF36E719B8EEAE00854524 /* GRMustacheTagDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; 6586A09C1B9E2E550067C98E /* GRMustacheCompiler.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368019B8EE9D00854524 /* GRMustacheCompiler.m */; }; 6586A09D1B9E2E550067C98E /* GRMustacheCompiler_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368119B8EE9D00854524 /* GRMustacheCompiler_private.h */; settings = {ASSET_TAGS = (); }; }; - 6586A09E1B9E2E5B0067C98E /* GRMustacheInheritedPartialNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368319B8EE9D00854524 /* GRMustacheInheritedPartialNode.m */; }; - 6586A09F1B9E2E5B0067C98E /* GRMustacheInheritedPartialNode_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368419B8EE9D00854524 /* GRMustacheInheritedPartialNode_private.h */; settings = {ASSET_TAGS = (); }; }; + 6586A09E1B9E2E5B0067C98E /* GRMustachePartialOverrideNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368319B8EE9D00854524 /* GRMustachePartialOverrideNode.m */; }; + 6586A09F1B9E2E5B0067C98E /* GRMustachePartialOverrideNode_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368419B8EE9D00854524 /* GRMustachePartialOverrideNode_private.h */; settings = {ASSET_TAGS = (); }; }; 6586A0A01B9E2E5B0067C98E /* GRMustacheBlock.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368519B8EE9D00854524 /* GRMustacheBlock.m */; }; 6586A0A11B9E2E5B0067C98E /* GRMustacheBlock_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF368619B8EE9D00854524 /* GRMustacheBlock_private.h */; settings = {ASSET_TAGS = (); }; }; 6586A0A21B9E2E5B0067C98E /* GRMustachePartialNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF368719B8EE9D00854524 /* GRMustachePartialNode.m */; }; @@ -569,8 +569,8 @@ 56BF367F19B8EE9D00854524 /* GRMustacheScopedExpression_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustacheScopedExpression_private.h; sourceTree = ""; }; 56BF368019B8EE9D00854524 /* GRMustacheCompiler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheCompiler.m; sourceTree = ""; }; 56BF368119B8EE9D00854524 /* GRMustacheCompiler_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustacheCompiler_private.h; sourceTree = ""; }; - 56BF368319B8EE9D00854524 /* GRMustacheInheritedPartialNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheInheritedPartialNode.m; sourceTree = ""; }; - 56BF368419B8EE9D00854524 /* GRMustacheInheritedPartialNode_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustacheInheritedPartialNode_private.h; sourceTree = ""; }; + 56BF368319B8EE9D00854524 /* GRMustachePartialOverrideNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustachePartialOverrideNode.m; sourceTree = ""; }; + 56BF368419B8EE9D00854524 /* GRMustachePartialOverrideNode_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustachePartialOverrideNode_private.h; sourceTree = ""; }; 56BF368519B8EE9D00854524 /* GRMustacheBlock.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheBlock.m; sourceTree = ""; }; 56BF368619B8EE9D00854524 /* GRMustacheBlock_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GRMustacheBlock_private.h; sourceTree = ""; }; 56BF368719B8EE9D00854524 /* GRMustachePartialNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustachePartialNode.m; sourceTree = ""; }; @@ -989,10 +989,10 @@ children = ( 56BF368619B8EE9D00854524 /* GRMustacheBlock_private.h */, 56BF368519B8EE9D00854524 /* GRMustacheBlock.m */, - 56BF368419B8EE9D00854524 /* GRMustacheInheritedPartialNode_private.h */, - 56BF368319B8EE9D00854524 /* GRMustacheInheritedPartialNode.m */, 56BF368819B8EE9D00854524 /* GRMustachePartialNode_private.h */, 56BF368719B8EE9D00854524 /* GRMustachePartialNode.m */, + 56BF368419B8EE9D00854524 /* GRMustachePartialOverrideNode_private.h */, + 56BF368319B8EE9D00854524 /* GRMustachePartialOverrideNode.m */, 56BF368A19B8EE9D00854524 /* GRMustacheSectionTag_private.h */, 56BF368919B8EE9D00854524 /* GRMustacheSectionTag.m */, 56BF368D19B8EE9D00854524 /* GRMustacheTag_private.h */, @@ -1229,7 +1229,7 @@ 56214C8C1BA1A70D0070C6CF /* GRMustacheIdentifierExpression_private.h in Headers */, 56214C881BA1A70D0070C6CF /* GRMustacheCompiler_private.h in Headers */, 56214CA81BA1A7300070C6CF /* GRMustacheTag.h in Headers */, - 56214C8F1BA1A70D0070C6CF /* GRMustacheInheritedPartialNode_private.h in Headers */, + 56214C8F1BA1A70D0070C6CF /* GRMustachePartialOverrideNode_private.h in Headers */, 56214CA11BA1A70D0070C6CF /* GRMustacheExpressionGenerator_private.h in Headers */, 56214C331BA1A6B50070C6CF /* GRMustacheError.h in Headers */, 56214C931BA1A70D0070C6CF /* GRMustacheTag_private.h in Headers */, @@ -1300,7 +1300,7 @@ 6586A0BF1B9E2E660067C98E /* GRMustacheTemplateParser_private.h in Headers */, 6586A0721B9E2E310067C98E /* GRMustacheExpressionGenerator_private.h in Headers */, 56DAC7AD1BB6C9040010FE01 /* NSObject+GRMustacheKeyValueCoding_private.h in Headers */, - 6586A09F1B9E2E5B0067C98E /* GRMustacheInheritedPartialNode_private.h in Headers */, + 6586A09F1B9E2E5B0067C98E /* GRMustachePartialOverrideNode_private.h in Headers */, 6586A0C21B9E2E6A0067C98E /* GRMustacheConfiguration.h in Headers */, 6586A0A81B9E2E5B0067C98E /* GRMustacheTag_private.h in Headers */, 6586A0881B9E2E4A0067C98E /* GRMustacheTemplateRepository.h in Headers */, @@ -1615,7 +1615,7 @@ 56214C721BA1A6F20070C6CF /* GRMustacheKeyAccess.m in Sources */, 56214C821BA1A6F20070C6CF /* GRMustacheTranslateCharacters.m in Sources */, 56DAC7B91BB6DDAB0010FE01 /* GRMustache.m in Sources */, - 56214C671BA1A6F20070C6CF /* GRMustacheInheritedPartialNode.m in Sources */, + 56214C671BA1A6F20070C6CF /* GRMustachePartialOverrideNode.m in Sources */, 56214C6B1BA1A6F20070C6CF /* GRMustacheTag.m in Sources */, 56214C621BA1A6F20070C6CF /* GRMustacheExpression.m in Sources */, 56214C801BA1A6F20070C6CF /* GRMustacheURLEscapeFilter.m in Sources */, @@ -1780,7 +1780,7 @@ 56AC8CAA1BA1F69B009E4319 /* GRMustacheFilteredExpression.m in Sources */, 56AC8CBD1BA1F69B009E4319 /* GRMustacheTemplateRepository.m in Sources */, 56AC8CB21BA1F69B009E4319 /* GRMustacheTag.m in Sources */, - 56AC8CAE1BA1F69B009E4319 /* GRMustacheInheritedPartialNode.m in Sources */, + 56AC8CAE1BA1F69B009E4319 /* GRMustachePartialOverrideNode.m in Sources */, 56AC8CA91BA1F69B009E4319 /* GRMustacheExpression.m in Sources */, 56AC8CAB1BA1F69B009E4319 /* GRMustacheIdentifierExpression.m in Sources */, 56AC8CC81BA1F69B009E4319 /* GRMustacheError.m in Sources */, @@ -1816,7 +1816,7 @@ 56DAC7751BB6A0040010FE01 /* GRMustacheIdentifierExpression.m in Sources */, 56DAC7761BB6A0040010FE01 /* GRMustacheImplicitIteratorExpression.m in Sources */, 56DAC7771BB6A0040010FE01 /* GRMustacheScopedExpression.m in Sources */, - 56DAC7781BB6A0040010FE01 /* GRMustacheInheritedPartialNode.m in Sources */, + 56DAC7781BB6A0040010FE01 /* GRMustachePartialOverrideNode.m in Sources */, 56DAC7791BB6A0040010FE01 /* GRMustacheBlock.m in Sources */, 56DAC77A1BB6A0040010FE01 /* GRMustachePartialNode.m in Sources */, 56DAC77B1BB6A0040010FE01 /* GRMustacheSectionTag.m in Sources */, @@ -1873,7 +1873,7 @@ 6586A0A21B9E2E5B0067C98E /* GRMustachePartialNode.m in Sources */, 6586A0AD1B9E2E5B0067C98E /* GRMustacheTextNode.m in Sources */, 6586A0B61B9E2E600067C98E /* GRMustacheIdentifierExpression.m in Sources */, - 6586A09E1B9E2E5B0067C98E /* GRMustacheInheritedPartialNode.m in Sources */, + 6586A09E1B9E2E5B0067C98E /* GRMustachePartialOverrideNode.m in Sources */, 6586A0A91B9E2E5B0067C98E /* GRMustacheTemplateAST.m in Sources */, 6586A0BC1B9E2E660067C98E /* GRMustacheExpressionParser.m in Sources */, 6586A0BE1B9E2E660067C98E /* GRMustacheTemplateParser.m in Sources */, diff --git a/GRMustache/Compiling/GRMustacheCompiler.m b/GRMustache/Compiling/GRMustacheCompiler.m index 1ef3fb80..27fe9b89 100644 --- a/GRMustache/Compiling/GRMustacheCompiler.m +++ b/GRMustache/Compiling/GRMustacheCompiler.m @@ -27,7 +27,7 @@ #import "GRMustacheVariableTag_private.h" #import "GRMustacheSectionTag_private.h" #import "GRMustacheBlock_private.h" -#import "GRMustacheInheritedPartialNode_private.h" +#import "GRMustachePartialOverrideNode_private.h" #import "GRMustacheExpressionParser_private.h" #import "GRMustacheExpression_private.h" #import "GRMustacheToken_private.h" @@ -216,7 +216,7 @@ - (BOOL)templateParser:(GRMustacheTemplateParser *)parser shouldContinueAfterPar case GRMustacheTokenTypeEscapedVariable: { // Context validation - if (_currentOpeningToken && _currentOpeningToken.type == GRMustacheTokenTypeInheritedPartial) { + if (_currentOpeningToken && _currentOpeningToken.type == GRMustacheTokenTypePartialOverride) { [self failWithFatalError:[self parseErrorAtToken:token description:@"Illegal tag inside a partial override tag."]]; return NO; } @@ -241,7 +241,7 @@ - (BOOL)templateParser:(GRMustacheTemplateParser *)parser shouldContinueAfterPar case GRMustacheTokenTypeUnescapedVariable: { // Context validation - if (_currentOpeningToken && _currentOpeningToken.type == GRMustacheTokenTypeInheritedPartial) { + if (_currentOpeningToken && _currentOpeningToken.type == GRMustacheTokenTypePartialOverride) { [self failWithFatalError:[self parseErrorAtToken:token description:@"Illegal tag inside a partial override tag."]]; return NO; } @@ -266,7 +266,7 @@ - (BOOL)templateParser:(GRMustacheTemplateParser *)parser shouldContinueAfterPar case GRMustacheTokenTypeSectionOpening: { // Context validation - if (_currentOpeningToken && _currentOpeningToken.type == GRMustacheTokenTypeInheritedPartial) { + if (_currentOpeningToken && _currentOpeningToken.type == GRMustacheTokenTypePartialOverride) { [self failWithFatalError:[self parseErrorAtToken:token description:@"Illegal tag inside a partial override tag."]]; return NO; } @@ -335,7 +335,7 @@ - (BOOL)templateParser:(GRMustacheTemplateParser *)parser shouldContinueAfterPar case GRMustacheTokenTypeInvertedSectionOpening: { // Context validation - if (_currentOpeningToken && _currentOpeningToken.type == GRMustacheTokenTypeInheritedPartial) { + if (_currentOpeningToken && _currentOpeningToken.type == GRMustacheTokenTypePartialOverride) { [self failWithFatalError:[self parseErrorAtToken:token description:@"Illegal tag inside a partial override tag."]]; return NO; } @@ -426,7 +426,7 @@ - (BOOL)templateParser:(GRMustacheTemplateParser *)parser shouldContinueAfterPar } break; - case GRMustacheTokenTypeInheritedPartial: { + case GRMustacheTokenTypePartialOverride: { // Partial name validation NSError *partialError; NSString *partialName = [parser parseTemplateName:token.tagInnerContent empty:NULL error:&partialError]; @@ -523,7 +523,7 @@ - (BOOL)templateParser:(GRMustacheTemplateParser *)parser shouldContinueAfterPar wrapperASTNode = [GRMustacheBlock blockWithName:(NSString *)_currentTagValue innerTemplateAST:templateAST]; } break; - case GRMustacheTokenTypeInheritedPartial: { + case GRMustacheTokenTypePartialOverride: { // Validate token: inheritable template ending should be missing, or match inheritable template opening NSError *error; BOOL empty; @@ -560,10 +560,10 @@ - (BOOL)templateParser:(GRMustacheTemplateParser *)parser shouldContinueAfterPar return NO; } - // Success: create new GRMustacheInheritedPartialNode + // Success: create new GRMustachePartialOverrideNode GRMustachePartialNode *partialNode = [GRMustachePartialNode partialNodeWithTemplateAST:templateAST name:partialName]; GRMustacheTemplateAST *overridingTemplateAST = [GRMustacheTemplateAST templateASTWithASTNodes:_currentASTNodes contentType:_contentType]; - wrapperASTNode = [GRMustacheInheritedPartialNode inheritedPartialNodeWithParentPartialNode:partialNode overridingTemplateAST:overridingTemplateAST]; + wrapperASTNode = [GRMustachePartialOverrideNode partialOverrideNodeWithParentPartialNode:partialNode overridingTemplateAST:overridingTemplateAST]; } break; default: diff --git a/GRMustache/Compiling/TemplateAST/GRMustachePartialNode.m b/GRMustache/Compiling/TemplateAST/GRMustachePartialNode.m index 41401606..94bfb32f 100644 --- a/GRMustache/Compiling/TemplateAST/GRMustachePartialNode.m +++ b/GRMustache/Compiling/TemplateAST/GRMustachePartialNode.m @@ -55,7 +55,7 @@ - (BOOL)acceptTemplateASTVisitor:(id)visitor error // Relevant test: // // { - // "name": "Partials in inherited partials can override blocks", + // "name": "Partials in partial overrides can override blocks", // "data": { }, // "template": "{{partial1}}{{/partial2}}", // "partials": { diff --git a/GRMustache/Compiling/TemplateAST/GRMustacheInheritedPartialNode.m b/GRMustache/Compiling/TemplateAST/GRMustachePartialOverrideNode.m similarity index 83% rename from GRMustache/Compiling/TemplateAST/GRMustacheInheritedPartialNode.m rename to GRMustache/Compiling/TemplateAST/GRMustachePartialOverrideNode.m index fc25e68f..a2a8828c 100644 --- a/GRMustache/Compiling/TemplateAST/GRMustacheInheritedPartialNode.m +++ b/GRMustache/Compiling/TemplateAST/GRMustachePartialOverrideNode.m @@ -20,16 +20,16 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#import "GRMustacheInheritedPartialNode_private.h" +#import "GRMustachePartialOverrideNode_private.h" #import "GRMustachePartialNode_private.h" #import "GRMustacheTemplateAST_private.h" #import "GRMustacheTemplateASTVisitor_private.h" -@implementation GRMustacheInheritedPartialNode +@implementation GRMustachePartialOverrideNode @synthesize overridingTemplateAST=_overridingTemplateAST; @synthesize parentPartialNode=_parentPartialNode; -+ (instancetype)inheritedPartialNodeWithParentPartialNode:(GRMustachePartialNode *)parentPartialNode overridingTemplateAST:(GRMustacheTemplateAST *)overridingTemplateAST ++ (instancetype)partialOverrideNodeWithParentPartialNode:(GRMustachePartialNode *)parentPartialNode overridingTemplateAST:(GRMustacheTemplateAST *)overridingTemplateAST { return [[[self alloc] initWithParentPartialNode:parentPartialNode overridingTemplateAST:overridingTemplateAST] autorelease]; } @@ -46,20 +46,20 @@ - (void)dealloc - (BOOL)acceptTemplateASTVisitor:(id)visitor error:(NSError **)error { - return [visitor visitInheritedPartialNode:self error:error]; + return [visitor visitPartialOverrideNode:self error:error]; } - (id)resolveTemplateASTNode:(id)templateASTNode { // {{< partial }}...{{/ partial }} // - // Inherited partials can provide an override in two ways: in + // Partial overrides can provide an override in two ways: in // the parent partial, and inside the overriding section. // // Relevant tests: // // { - // "name": "Two levels of inheritance: inherited partial with overriding content containing another inherited partial", + // "name": "Two levels of inheritance: partial override with overriding content containing another partial override", // "data": { }, // "template": "{{)visitor error // "expected": "inherited" // }, // { - // "name": "Two levels of inheritance: inherited partial with overriding content containing another inherited partial with overriding content containing a block", + // "name": "Two levels of inheritance: partial override with overriding content containing another partial override with overriding content containing a block", // "data": { }, // "template": "{{ { +@interface GRMustachePartialOverrideNode : NSObject { @private GRMustachePartialNode *_parentPartialNode; GRMustacheTemplateAST *_overridingTemplateAST; } /** - * The overriding AST, built from the inner content of the inherited partial - * node: + * The overriding AST, built from the inner content of the overriding partial: * * {{< ... }} AST {{/ }} */ @@ -53,13 +52,13 @@ @property (nonatomic, retain, readonly) GRMustachePartialNode *parentPartialNode GRMUSTACHE_API_INTERNAL; /** - * Builds a GRMustacheInheritedPartialNode. + * Builds a GRMustachePartialOverrideNode. * * @param parentPartialNode The inherited partial. - * @param templateAST The AST that overrides the inherited partial template. + * @param templateAST The AST that overrides the inherited partial. * - * @return A GRMustacheInheritedPartialNode + * @return A GRMustachePartialOverrideNode */ -+ (instancetype)inheritedPartialNodeWithParentPartialNode:(GRMustachePartialNode *)parentPartialNode overridingTemplateAST:(GRMustacheTemplateAST *)overridingTemplateAST GRMUSTACHE_API_INTERNAL; ++ (instancetype)partialOverrideNodeWithParentPartialNode:(GRMustachePartialNode *)parentPartialNode overridingTemplateAST:(GRMustacheTemplateAST *)overridingTemplateAST GRMUSTACHE_API_INTERNAL; @end diff --git a/GRMustache/Compiling/TemplateAST/GRMustacheTemplateASTNode_private.h b/GRMustache/Compiling/TemplateAST/GRMustacheTemplateASTNode_private.h index 99fe64bc..b30be735 100644 --- a/GRMustache/Compiling/TemplateAST/GRMustacheTemplateASTNode_private.h +++ b/GRMustache/Compiling/TemplateAST/GRMustacheTemplateASTNode_private.h @@ -60,7 +60,7 @@ * * All classes conforming to the GRMustacheTemplateASTNode protocol return * the node argument, but GRMustacheBlock, - * GRMustacheInheritedPartialNode, and GRMustachePartialNode. + * GRMustachePartialOverrideNode, and GRMustachePartialNode. * * @param templateASTNode A node * diff --git a/GRMustache/Compiling/TemplateAST/GRMustacheTemplateASTVisitor_private.h b/GRMustache/Compiling/TemplateAST/GRMustacheTemplateASTVisitor_private.h index 4fe1f124..131931aa 100644 --- a/GRMustache/Compiling/TemplateAST/GRMustacheTemplateASTVisitor_private.h +++ b/GRMustache/Compiling/TemplateAST/GRMustacheTemplateASTVisitor_private.h @@ -24,7 +24,7 @@ #import "GRMustacheAvailabilityMacros_private.h" @class GRMustacheTemplateAST; -@class GRMustacheInheritedPartialNode; +@class GRMustachePartialOverrideNode; @class GRMustacheBlock; @class GRMustachePartialNode; @class GRMustacheVariableTag; @@ -35,7 +35,7 @@ // Don't use these methods directly. Use -[); - GRMUSTACHE_STACK_DECLARE_IVARS(inheritedPartialNodeStack, id); + GRMUSTACHE_STACK_DECLARE_IVARS(partialOverrideNodeStack, id); BOOL _unsafeKeyAccess; } diff --git a/GRMustache/Rendering/GRMustacheContext.m b/GRMustache/Rendering/GRMustacheContext.m index bc43d232..446c3ffb 100644 --- a/GRMustache/Rendering/GRMustacheContext.m +++ b/GRMustache/Rendering/GRMustacheContext.m @@ -152,7 +152,7 @@ - (void)dealloc GRMUSTACHE_STACK_RELEASE(protectedContextStack); GRMUSTACHE_STACK_RELEASE(hiddenContextStack); GRMUSTACHE_STACK_RELEASE(tagDelegateStack); - GRMUSTACHE_STACK_RELEASE(inheritedPartialNodeStack); + GRMUSTACHE_STACK_RELEASE(partialOverrideNodeStack); [super dealloc]; } @@ -172,7 +172,7 @@ - (instancetype)contextByAddingTagDelegate:(id)tagDelegat GRMUSTACHE_STACK_COPY(contextStack, self, context); GRMUSTACHE_STACK_COPY(protectedContextStack, self, context); GRMUSTACHE_STACK_COPY(hiddenContextStack, self, context); - GRMUSTACHE_STACK_COPY(inheritedPartialNodeStack, self, context); + GRMUSTACHE_STACK_COPY(partialOverrideNodeStack, self, context); GRMUSTACHE_STACK_PUSH(tagDelegateStack, self, context, tagDelegate); @@ -190,7 +190,7 @@ - (instancetype)newContextByAddingObject:(id)object GRMUSTACHE_STACK_COPY(protectedContextStack, self, context); GRMUSTACHE_STACK_COPY(hiddenContextStack, self, context); - GRMUSTACHE_STACK_COPY(inheritedPartialNodeStack, self, context); + GRMUSTACHE_STACK_COPY(partialOverrideNodeStack, self, context); GRMUSTACHE_STACK_COPY(tagDelegateStack, self, context); GRMUSTACHE_STACK_PUSH(contextStack, self, context, object); @@ -220,7 +220,7 @@ - (instancetype)contextByAddingProtectedObject:(id)object GRMUSTACHE_STACK_COPY(contextStack, self, context); GRMUSTACHE_STACK_COPY(hiddenContextStack, self, context); - GRMUSTACHE_STACK_COPY(inheritedPartialNodeStack, self, context); + GRMUSTACHE_STACK_COPY(partialOverrideNodeStack, self, context); GRMUSTACHE_STACK_COPY(tagDelegateStack, self, context); GRMUSTACHE_STACK_PUSH(protectedContextStack, self, context, object); @@ -239,7 +239,7 @@ - (instancetype)contextByAddingHiddenObject:(id)object GRMUSTACHE_STACK_COPY(contextStack, self, context); GRMUSTACHE_STACK_COPY(protectedContextStack, self, context); - GRMUSTACHE_STACK_COPY(inheritedPartialNodeStack, self, context); + GRMUSTACHE_STACK_COPY(partialOverrideNodeStack, self, context); GRMUSTACHE_STACK_COPY(tagDelegateStack, self, context); GRMUSTACHE_STACK_PUSH(hiddenContextStack, self, context, object); @@ -247,9 +247,9 @@ - (instancetype)contextByAddingHiddenObject:(id)object return context; } -- (instancetype)contextByAddingInheritedPartialNode:(GRMustacheInheritedPartialNode *)inheritedPartialNode +- (instancetype)contextByAddingPartialOverrideNode:(GRMustachePartialOverrideNode *)partialOverrideNode { - if (inheritedPartialNode == nil) { + if (partialOverrideNode == nil) { return self; } @@ -261,7 +261,7 @@ - (instancetype)contextByAddingInheritedPartialNode:(GRMustacheInheritedPartialN GRMUSTACHE_STACK_COPY(hiddenContextStack, self, context); GRMUSTACHE_STACK_COPY(tagDelegateStack, self, context); - GRMUSTACHE_STACK_PUSH(inheritedPartialNodeStack, self, context, inheritedPartialNode); + GRMUSTACHE_STACK_PUSH(partialOverrideNodeStack, self, context, partialOverrideNode); return context; } @@ -277,7 +277,7 @@ - (instancetype)contextWithUnsafeKeyAccess GRMUSTACHE_STACK_COPY(protectedContextStack, __context, __unsafeContext); \ GRMUSTACHE_STACK_COPY(hiddenContextStack, __context, __unsafeContext); \ GRMUSTACHE_STACK_COPY(tagDelegateStack, __context, __unsafeContext); \ - GRMUSTACHE_STACK_COPY(inheritedPartialNodeStack, __context, __unsafeContext); \ + GRMUSTACHE_STACK_COPY(partialOverrideNodeStack, __context, __unsafeContext); \ CFDictionarySetValue(unsafeContextForContext, __context, __unsafeContext); \ } \ } @@ -300,7 +300,7 @@ - (instancetype)contextWithUnsafeKeyAccess GRMUSTACHE_CREATE_DEEP_UNSAFE_CONTEXTS(protectedContextStack); GRMUSTACHE_CREATE_DEEP_UNSAFE_CONTEXTS(hiddenContextStack); GRMUSTACHE_CREATE_DEEP_UNSAFE_CONTEXTS(tagDelegateStack); - GRMUSTACHE_CREATE_DEEP_UNSAFE_CONTEXTS(inheritedPartialNodeStack); + GRMUSTACHE_CREATE_DEEP_UNSAFE_CONTEXTS(partialOverrideNodeStack); // Update safe parents of unsafe contexts with unsafe ones @@ -324,7 +324,7 @@ - (instancetype)contextWithUnsafeKeyAccess GRMUSTACHE_UPDATE_UNSAFE_PARENT(protectedContextStack, unsafeContext); GRMUSTACHE_UPDATE_UNSAFE_PARENT(hiddenContextStack, unsafeContext); GRMUSTACHE_UPDATE_UNSAFE_PARENT(tagDelegateStack, unsafeContext); - GRMUSTACHE_UPDATE_UNSAFE_PARENT(inheritedPartialNodeStack, unsafeContext); + GRMUSTACHE_UPDATE_UNSAFE_PARENT(partialOverrideNodeStack, unsafeContext); } free(unsafeContexts); @@ -435,18 +435,18 @@ - (NSArray *)tagDelegateStack // ============================================================================= #pragma mark - Overriding Template AST Stack -- (NSArray *)inheritedPartialNodeStack +- (NSArray *)partialOverrideNodeStack { - NSMutableArray *inheritedPartialNodeStack = nil; + NSMutableArray *partialOverrideNodeStack = nil; - GRMUSTACHE_STACK_ENUMERATE(inheritedPartialNodeStack, self, context) { - if (!inheritedPartialNodeStack) { - inheritedPartialNodeStack = [NSMutableArray array]; + GRMUSTACHE_STACK_ENUMERATE(partialOverrideNodeStack, self, context) { + if (!partialOverrideNodeStack) { + partialOverrideNodeStack = [NSMutableArray array]; } - [inheritedPartialNodeStack addObject:GRMUSTACHE_STACK_TOP(inheritedPartialNodeStack, context)]; + [partialOverrideNodeStack addObject:GRMUSTACHE_STACK_TOP(partialOverrideNodeStack, context)]; } - return inheritedPartialNodeStack; + return partialOverrideNodeStack; } @end diff --git a/GRMustache/Rendering/GRMustacheContext_private.h b/GRMustache/Rendering/GRMustacheContext_private.h index d91a690c..f4fa93c9 100644 --- a/GRMustache/Rendering/GRMustacheContext_private.h +++ b/GRMustache/Rendering/GRMustacheContext_private.h @@ -25,7 +25,7 @@ @protocol GRMustacheTagDelegate; @protocol GRMustacheTemplateASTNode; -@class GRMustacheInheritedPartialNode; +@class GRMustachePartialOverrideNode; /** * The GRMustacheContext maintains the following stacks: @@ -34,7 +34,7 @@ * - a protected context stack, * - a hidden context stack, * - a tag delegate stack, - * - an inherited partial stack. + * - a partial override stack. * * As such, it is able to: * @@ -49,7 +49,7 @@ * * - Let tag delegates interpret rendered values. * - * - Let inherited partial templates override AST nodes. + * - Let partials override AST nodes. */ @interface GRMustacheContext : NSObject { @private @@ -64,7 +64,7 @@ GRMUSTACHE_STACK_DECLARE_IVARS(protectedContextStack, id); GRMUSTACHE_STACK_DECLARE_IVARS(hiddenContextStack, id); GRMUSTACHE_STACK_DECLARE_IVARS(tagDelegateStack, id); - GRMUSTACHE_STACK_DECLARE_IVARS(inheritedPartialNodeStack, GRMustacheInheritedPartialNode *); + GRMUSTACHE_STACK_DECLARE_IVARS(partialOverrideNodeStack, GRMustachePartialOverrideNode *); BOOL _unsafeKeyAccess; } @@ -136,13 +136,13 @@ /** * Returns a GRMustacheContext object identical to the receiver, but for the - * overriding stack that is extended with _inheritedPartialNode_. + * overriding stack that is extended with _partialOverrideNode_. * - * @param inheritedPartialNode A template AST + * @param partialOverrideNode A template AST * * @return A GRMustacheContext object. */ -- (instancetype)contextByAddingInheritedPartialNode:(GRMustacheInheritedPartialNode *)inheritedPartialNode GRMUSTACHE_API_INTERNAL; +- (instancetype)contextByAddingPartialOverrideNode:(GRMustachePartialOverrideNode *)partialOverrideNode GRMUSTACHE_API_INTERNAL; /** * Performs a key lookup in the receiver's context stack, and returns the found @@ -169,6 +169,6 @@ /** * TODO */ -- (NSArray *)inheritedPartialNodeStack GRMUSTACHE_API_INTERNAL; +- (NSArray *)partialOverrideNodeStack GRMUSTACHE_API_INTERNAL; @end diff --git a/GRMustache/Rendering/GRMustacheRenderingEngine.m b/GRMustache/Rendering/GRMustacheRenderingEngine.m index 85c7cb0f..17b055ce 100644 --- a/GRMustache/Rendering/GRMustacheRenderingEngine.m +++ b/GRMustache/Rendering/GRMustacheRenderingEngine.m @@ -31,7 +31,7 @@ #import "GRMustacheContext_private.h" #import "GRMustacheRendering_private.h" #import "GRMustacheTranslateCharacters_private.h" -#import "GRMustacheInheritedPartialNode_private.h" +#import "GRMustachePartialOverrideNode_private.h" #import "GRMustacheBlock_private.h" #import "GRMustachePartialNode_private.h" #import "GRMustacheTextNode_private.h" @@ -130,11 +130,11 @@ - (BOOL)visitTemplateAST:(GRMustacheTemplateAST *)templateAST error:(NSError **) } } -- (BOOL)visitInheritedPartialNode:(GRMustacheInheritedPartialNode *)inheritedPartialNode error:(NSError **)error +- (BOOL)visitPartialOverrideNode:(GRMustachePartialOverrideNode *)partialOverrideNode error:(NSError **)error { GRMustacheContext *context = _context; - _context = [_context contextByAddingInheritedPartialNode:inheritedPartialNode]; - BOOL success = [self visitPartialNode:inheritedPartialNode.parentPartialNode error:error]; + _context = [_context contextByAddingPartialOverrideNode:partialOverrideNode]; + BOOL success = [self visitPartialNode:partialOverrideNode.parentPartialNode error:error]; _context = context; return success; } @@ -370,17 +370,17 @@ - (BOOL)visitTemplateASTNodes:(NSArray *)templateASTNodes error:(NSError **)erro - (id)resolveTemplateASTNode:(id)node { NSMutableSet *usedTemplateASTs = [NSMutableSet set]; - for (GRMustacheInheritedPartialNode *inheritedPartialNode in _context.inheritedPartialNodeStack) { + for (GRMustachePartialOverrideNode *partialOverrideNode in _context.partialOverrideNodeStack) { // for -[GRMustacheJavaSuiteTests testExtensionNested] - if (![usedTemplateASTs containsObject:inheritedPartialNode.parentPartialNode.templateAST]) { + if (![usedTemplateASTs containsObject:partialOverrideNode.parentPartialNode.templateAST]) { id resolvedNode = node; - for (id overridingNode in inheritedPartialNode.overridingTemplateAST.templateASTNodes) { + for (id overridingNode in partialOverrideNode.overridingTemplateAST.templateASTNodes) { resolvedNode = [overridingNode resolveTemplateASTNode:resolvedNode]; } // for Hogan "Recursion in inherited templates" test if (node != resolvedNode) { - [usedTemplateASTs addObject:inheritedPartialNode.parentPartialNode.templateAST]; + [usedTemplateASTs addObject:partialOverrideNode.parentPartialNode.templateAST]; } node = resolvedNode; } diff --git a/GRMustache/Services/GRMustacheTemplateGenerator.m b/GRMustache/Services/GRMustacheTemplateGenerator.m index 63f31283..94b69d4b 100644 --- a/GRMustache/Services/GRMustacheTemplateGenerator.m +++ b/GRMustache/Services/GRMustacheTemplateGenerator.m @@ -27,7 +27,7 @@ #import "GRMustacheTemplate_private.h" #import "GRMustacheConfiguration_private.h" #import "GRMustacheTemplateAST_private.h" -#import "GRMustacheInheritedPartialNode_private.h" +#import "GRMustachePartialOverrideNode_private.h" #import "GRMustacheBlock_private.h" #import "GRMustachePartialNode_private.h" #import "GRMustacheVariableTag_private.h" @@ -77,16 +77,16 @@ - (BOOL)visitTemplateAST:(GRMustacheTemplateAST *)templateAST error:(NSError **) return YES; } -- (BOOL)visitInheritedPartialNode:(GRMustacheInheritedPartialNode *)inheritedPartialNode error:(NSError **)error +- (BOOL)visitPartialOverrideNode:(GRMustachePartialOverrideNode *)partialOverrideNode error:(NSError **)error { NSString *tagStartDelimiter = _templateRepository.configuration.tagStartDelimiter; NSString *tagEndDelimiter = _templateRepository.configuration.tagEndDelimiter; - NSString *partialName = inheritedPartialNode.parentPartialNode.name; + NSString *partialName = partialOverrideNode.parentPartialNode.name; NSString *tagStartString = [NSString stringWithFormat:@"%@<%@%@", tagStartDelimiter, partialName, tagEndDelimiter]; NSString *tagEndString = [NSString stringWithFormat:@"%@/%@%@", tagStartDelimiter, partialName, tagEndDelimiter]; [_templateString appendString:tagStartString]; - [self visitTemplateAST:inheritedPartialNode.overridingTemplateAST error:error]; + [self visitTemplateAST:partialOverrideNode.overridingTemplateAST error:error]; [_templateString appendString:tagEndString]; return YES; } diff --git a/GRMustache/Templates/GRMustacheTemplate.m b/GRMustache/Templates/GRMustacheTemplate.m index 6f28f6dc..1adbaa39 100644 --- a/GRMustache/Templates/GRMustacheTemplate.m +++ b/GRMustache/Templates/GRMustacheTemplate.m @@ -26,7 +26,7 @@ #import "GRMustacheTemplateAST_private.h" #import "GRMustacheRenderingEngine_private.h" #import "GRMustacheTag_private.h" -#import "GRMustacheInheritedPartialNode_private.h" +#import "GRMustachePartialOverrideNode_private.h" #import "GRMustachePartialNode_private.h" #import "GRMustacheSectionTag_private.h" @@ -152,12 +152,12 @@ - (NSString *)renderForMustacheTag:(GRMustacheTag *)tag context:(GRMustacheConte // Let's render the template, overriding blocks with the content // of the section. // - // Overriding requires an GRMustacheInheritedPartialNode: + // Overriding requires an GRMustachePartialOverrideNode: GRMustachePartialNode *partialNode = [GRMustachePartialNode partialNodeWithTemplateAST:self.templateAST name:nil]; - GRMustacheInheritedPartialNode *partialOverrideNode = [GRMustacheInheritedPartialNode inheritedPartialNodeWithParentPartialNode:partialNode overridingTemplateAST:((GRMustacheSectionTag *)tag).innerTemplateAST]; + GRMustachePartialOverrideNode *partialOverrideNode = [GRMustachePartialOverrideNode partialOverrideNodeWithParentPartialNode:partialNode overridingTemplateAST:((GRMustacheSectionTag *)tag).innerTemplateAST]; - // Only GRMustacheRenderingEngine knows how to render GRMustacheInheritedPartialNode. + // Only GRMustacheRenderingEngine knows how to render GRMustachePartialOverrideNode. // So wrap the node into a TemplateAST, and render. GRMustacheTemplateAST *templateAST = [GRMustacheTemplateAST templateASTWithASTNodes:@[partialOverrideNode] contentType:self.templateAST.contentType]; GRMustacheRenderingEngine *renderingEngine = [GRMustacheRenderingEngine renderingEngineWithTemplateAST:templateAST context:context]; From 18388378241da23195073e1c48f448076696c7ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sun, 18 Oct 2015 13:36:54 +0200 Subject: [PATCH 61/81] Have NSString conform to GRMustacheKeyValueCoding and expose its `length` property. --- .../Rendering/NSObject+GRMustacheKeyValueCoding.m | 13 +++++++++++++ .../NSObject+GRMustacheKeyValueCoding_private.h | 3 +++ TODO.md | 4 ++-- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/GRMustache/Rendering/NSObject+GRMustacheKeyValueCoding.m b/GRMustache/Rendering/NSObject+GRMustacheKeyValueCoding.m index 2819ba65..5a901929 100644 --- a/GRMustache/Rendering/NSObject+GRMustacheKeyValueCoding.m +++ b/GRMustache/Rendering/NSObject+GRMustacheKeyValueCoding.m @@ -125,3 +125,16 @@ - (id)valueForMustacheKey:(NSString *)key } @end + +@implementation NSString(GRMustacheKeyValueCoding) + +- (id)valueForMustacheKey:(NSString *)key +{ + if ([key isEqualToString:@"length"]) { + return @(self.length); + } else { + return nil; + } +} + +@end diff --git a/GRMustache/Rendering/NSObject+GRMustacheKeyValueCoding_private.h b/GRMustache/Rendering/NSObject+GRMustacheKeyValueCoding_private.h index 506fb8fa..7ed9aecc 100644 --- a/GRMustache/Rendering/NSObject+GRMustacheKeyValueCoding_private.h +++ b/GRMustache/Rendering/NSObject+GRMustacheKeyValueCoding_private.h @@ -39,3 +39,6 @@ @interface NSSet(GRMustacheKeyValueCoding) @end + +@interface NSString(GRMustacheKeyValueCoding) +@end diff --git a/TODO.md b/TODO.md index b8aa9e20..9c8b7d08 100644 --- a/TODO.md +++ b/TODO.md @@ -19,7 +19,7 @@ - [X] GRMustacheTag.templateRepository - [X] Drop GRMustacheVersion and +[GRMustache libraryVersion] - [?] Import "register" vocabulary from GRMustache.swift, instead of "protected objects". -- [ ] Dynamic partial overrides `{{# partial }}...{{/ partial }}` -- [ ] Check that {{ string.length }} is correctly implemented (NSObject+GRMustacheKeyValueCoding.m) and tested (https://github.com/groue/GRMustacheSpec). +- [X] Dynamic partial overrides `{{# partial }}...{{/ partial }}` +- [X] Check that {{ string.length }} is correctly implemented (NSObject+GRMustacheKeyValueCoding.m) and tested (https://github.com/groue/GRMustacheSpec). - [ ] Have Filter and renderingObject APIs closer from GRMustache.swift - [ ] Drop support for else `{{#a}}{{^a}}{{/a}}`. From a1c4c233c209e27547f27b91eaeb58bc0049323a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sun, 18 Oct 2015 14:50:19 +0200 Subject: [PATCH 62/81] GRMustacheLambda provides spec-compliant lambdas. --- GRMustache.xcodeproj/project.pbxproj | 6 + GRMustache/Compiling/GRMustacheCompiler.m | 16 +- .../TemplateAST/GRMustacheSectionTag.m | 12 +- .../GRMustacheSectionTag_private.h | 4 +- .../Compiling/TemplateAST/GRMustacheTag.h | 14 ++ .../TemplateAST/GRMustacheTag_private.h | 6 + .../TemplateAST/GRMustacheVariableTag.m | 12 +- .../GRMustacheVariableTag_private.h | 14 +- GRMustache/Parsing/GRMustacheTemplateParser.m | 28 ++- GRMustache/Parsing/GRMustacheToken.m | 8 +- GRMustache/Parsing/GRMustacheToken_private.h | 14 +- GRMustache/Rendering/GRMustacheRendering.h | 26 +++ GRMustache/Rendering/GRMustacheRendering.m | 71 ++++++ .../Rendering/GRMustacheRendering_private.h | 15 ++ .../Public/v8.0/GRMustacheLambdaTest.m | 213 ++++++++++++++++++ 15 files changed, 433 insertions(+), 26 deletions(-) create mode 100644 GRMustacheTests/Public/v8.0/GRMustacheLambdaTest.m diff --git a/GRMustache.xcodeproj/project.pbxproj b/GRMustache.xcodeproj/project.pbxproj index 73e64fa5..1e95337e 100644 --- a/GRMustache.xcodeproj/project.pbxproj +++ b/GRMustache.xcodeproj/project.pbxproj @@ -7,6 +7,8 @@ objects = { /* Begin PBXBuildFile section */ + 560959BF1BD3C7A40000511D /* GRMustacheLambdaTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 560959BE1BD3C7A40000511D /* GRMustacheLambdaTest.m */; settings = {ASSET_TAGS = (); }; }; + 560959C01BD3C7A40000511D /* GRMustacheLambdaTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 560959BE1BD3C7A40000511D /* GRMustacheLambdaTest.m */; settings = {ASSET_TAGS = (); }; }; 56214B801BA1A4C50070C6CF /* GRMustache.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6586A05D1B9E2D720067C98E /* GRMustache.framework */; settings = {ASSET_TAGS = (); }; }; 56214B8F1BA1A4D50070C6CF /* GRMustache.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 56214B6F1BA1A34A0070C6CF /* GRMustache.framework */; settings = {ASSET_TAGS = (); }; }; 56214BA01BA1A5350070C6CF /* GRMustachePublicAPITest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC3B2152638E20031E8DC /* GRMustachePublicAPITest.m */; settings = {ASSET_TAGS = (); }; }; @@ -467,6 +469,7 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 560959BE1BD3C7A40000511D /* GRMustacheLambdaTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRMustacheLambdaTest.m; sourceTree = ""; }; 560CE88E1526EEF4004F935E /* GRBooleanTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRBooleanTest.m; sourceTree = ""; }; 56214B6F1BA1A34A0070C6CF /* GRMustache.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = GRMustache.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 56214B7B1BA1A4C50070C6CF /* GRMustacheiOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = GRMustacheiOSTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -1184,6 +1187,7 @@ 560CE88E1526EEF4004F935E /* GRBooleanTest.m */, 56BA242518C7A494006DA5F3 /* GRMustacheErrorHandlingTest.m */, 563A5EA6163403C000E7E810 /* GRMustacheFoundationCollectionTest.m */, + 560959BE1BD3C7A40000511D /* GRMustacheLambdaTest.m */, 5623B795152731B600DF16A6 /* GRMustacheParsingErrorsTest.m */, 568140E616365D6000310B7F /* GRMustachePositionFilterTest.m */, 568140D7163659CB00310B7F /* GRMustacheRenderingObjectTest.m */, @@ -1681,6 +1685,7 @@ 56214C091BA1A5920070C6CF /* GRMustacheTemplateRepositoryWithDictionaryTest.m in Sources */, 56214BDE1BA1A57C0070C6CF /* GRMustacheLocalizerTest.m in Sources */, 56214BC31BA1A5690070C6CF /* GRMustacheConfigurationExtendBaseContextTest.m in Sources */, + 560959C01BD3C7A40000511D /* GRMustacheLambdaTest.m in Sources */, 56214BE11BA1A57C0070C6CF /* GRMustacheStandardLibraryTest.m in Sources */, 56214C0B1BA1A5970070C6CF /* GRMustacheTemplateRepositoryWithBundleTest.m in Sources */, 56214BCE1BA1A56D0070C6CF /* GRMustacheContextHasValueForMustacheExpressionTest.m in Sources */, @@ -1729,6 +1734,7 @@ 56214C061BA1A5920070C6CF /* GRMustacheTemplateRepositoryWithDictionaryTest.m in Sources */, 56214BDA1BA1A57C0070C6CF /* GRMustacheLocalizerTest.m in Sources */, 56214BBF1BA1A5690070C6CF /* GRMustacheConfigurationExtendBaseContextTest.m in Sources */, + 560959BF1BD3C7A40000511D /* GRMustacheLambdaTest.m in Sources */, 56214BDD1BA1A57C0070C6CF /* GRMustacheStandardLibraryTest.m in Sources */, 56214C0A1BA1A5970070C6CF /* GRMustacheTemplateRepositoryWithBundleTest.m in Sources */, 56214BC71BA1A56D0070C6CF /* GRMustacheContextHasValueForMustacheExpressionTest.m in Sources */, diff --git a/GRMustache/Compiling/GRMustacheCompiler.m b/GRMustache/Compiling/GRMustacheCompiler.m index 27fe9b89..e7d4e998 100644 --- a/GRMustache/Compiling/GRMustacheCompiler.m +++ b/GRMustache/Compiling/GRMustacheCompiler.m @@ -232,7 +232,7 @@ - (BOOL)templateParser:(GRMustacheTemplateParser *)parser shouldContinueAfterPar // Success: append GRMustacheVariableTag expression.token = token; - [_currentASTNodes addObject:[GRMustacheVariableTag variableTagWithExpression:expression escapesHTML:YES contentType:_contentType]]; + [_currentASTNodes addObject:[GRMustacheVariableTag variableTagWithExpression:expression escapesHTML:YES contentType:_contentType tagStartDelimiter:token.tagStartDelimiter tagEndDelimiter:token.tagEndDelimiter]]; // lock _contentType _contentTypeLocked = YES; @@ -257,7 +257,7 @@ - (BOOL)templateParser:(GRMustacheTemplateParser *)parser shouldContinueAfterPar // Success: append GRMustacheVariableTag expression.token = token; - [_currentASTNodes addObject:[GRMustacheVariableTag variableTagWithExpression:expression escapesHTML:NO contentType:_contentType]]; + [_currentASTNodes addObject:[GRMustacheVariableTag variableTagWithExpression:expression escapesHTML:NO contentType:_contentType tagStartDelimiter:token.tagStartDelimiter tagEndDelimiter:token.tagEndDelimiter]]; // lock _contentType _contentTypeLocked = YES; @@ -294,7 +294,9 @@ - (BOOL)templateParser:(GRMustacheTemplateParser *)parser shouldContinueAfterPar inverted:YES templateString:token.templateString innerRange:innerRange - innerTemplateAST:templateAST]; + innerTemplateAST:templateAST + tagStartDelimiter:_currentOpeningToken.tagStartDelimiter + tagEndDelimiter:_currentOpeningToken.tagEndDelimiter]; [_openingTokenStack removeLastObject]; self.currentOpeningToken = token; @@ -363,7 +365,9 @@ - (BOOL)templateParser:(GRMustacheTemplateParser *)parser shouldContinueAfterPar inverted:NO templateString:token.templateString innerRange:innerRange - innerTemplateAST:templateAST]; + innerTemplateAST:templateAST + tagStartDelimiter:_currentOpeningToken.tagStartDelimiter + tagEndDelimiter:_currentOpeningToken.tagEndDelimiter]; [_openingTokenStack removeLastObject]; self.currentOpeningToken = token; @@ -495,7 +499,9 @@ - (BOOL)templateParser:(GRMustacheTemplateParser *)parser shouldContinueAfterPar inverted:(_currentOpeningToken.type == GRMustacheTokenTypeInvertedSectionOpening) templateString:token.templateString innerRange:innerRange - innerTemplateAST:templateAST]; + innerTemplateAST:templateAST + tagStartDelimiter:_currentOpeningToken.tagStartDelimiter + tagEndDelimiter:_currentOpeningToken.tagEndDelimiter]; } break; case GRMustacheTokenTypeBlockOpening: { diff --git a/GRMustache/Compiling/TemplateAST/GRMustacheSectionTag.m b/GRMustache/Compiling/TemplateAST/GRMustacheSectionTag.m index bc9f7feb..ee68ab48 100644 --- a/GRMustache/Compiling/TemplateAST/GRMustacheSectionTag.m +++ b/GRMustache/Compiling/TemplateAST/GRMustacheSectionTag.m @@ -30,18 +30,22 @@ @implementation GRMustacheSectionTag @synthesize expression=_expression; @synthesize innerTemplateAST=_innerTemplateAST; @synthesize inverted=_inverted; +@synthesize tagStartDelimiter=_tagStartDelimiter; +@synthesize tagEndDelimiter=_tagEndDelimiter; - (void)dealloc { [_expression release]; [_templateString release]; [_innerTemplateAST release]; + [_tagStartDelimiter release]; + [_tagEndDelimiter release]; [super dealloc]; } -+ (instancetype)sectionTagWithExpression:(GRMustacheExpression *)expression inverted:(BOOL)inverted templateString:(NSString *)templateString innerRange:(NSRange)innerRange innerTemplateAST:(GRMustacheTemplateAST *)innerTemplateAST ++ (instancetype)sectionTagWithExpression:(GRMustacheExpression *)expression inverted:(BOOL)inverted templateString:(NSString *)templateString innerRange:(NSRange)innerRange innerTemplateAST:(GRMustacheTemplateAST *)innerTemplateAST tagStartDelimiter:(NSString *)tagStartDelimiter tagEndDelimiter:(NSString *)tagEndDelimiter { - return [[[self alloc] initWithExpression:expression inverted:inverted templateString:templateString innerRange:innerRange innerTemplateAST:innerTemplateAST] autorelease]; + return [[[self alloc] initWithExpression:expression inverted:inverted templateString:templateString innerRange:innerRange innerTemplateAST:innerTemplateAST tagStartDelimiter:tagStartDelimiter tagEndDelimiter:tagEndDelimiter] autorelease]; } @@ -84,7 +88,7 @@ - (BOOL)acceptTemplateASTVisitor:(id)visitor error #pragma mark - Private -- (instancetype)initWithExpression:(GRMustacheExpression *)expression inverted:(BOOL)inverted templateString:(NSString *)templateString innerRange:(NSRange)innerRange innerTemplateAST:(GRMustacheTemplateAST *)innerTemplateAST +- (instancetype)initWithExpression:(GRMustacheExpression *)expression inverted:(BOOL)inverted templateString:(NSString *)templateString innerRange:(NSRange)innerRange innerTemplateAST:(GRMustacheTemplateAST *)innerTemplateAST tagStartDelimiter:(NSString *)tagStartDelimiter tagEndDelimiter:(NSString *)tagEndDelimiter { self = [super init]; if (self) { @@ -93,6 +97,8 @@ - (instancetype)initWithExpression:(GRMustacheExpression *)expression inverted:( _templateString = [templateString retain]; _innerRange = innerRange; _innerTemplateAST = [innerTemplateAST retain]; + _tagStartDelimiter = [tagStartDelimiter retain]; + _tagEndDelimiter = [tagEndDelimiter retain]; } return self; } diff --git a/GRMustache/Compiling/TemplateAST/GRMustacheSectionTag_private.h b/GRMustache/Compiling/TemplateAST/GRMustacheSectionTag_private.h index a55fa2e3..ff234b44 100644 --- a/GRMustache/Compiling/TemplateAST/GRMustacheSectionTag_private.h +++ b/GRMustache/Compiling/TemplateAST/GRMustacheSectionTag_private.h @@ -34,6 +34,8 @@ NSString *_templateString; NSRange _innerRange; GRMustacheTemplateAST *_innerTemplateAST; + NSString *_tagStartDelimiter; + NSString *_tagEndDelimiter; } @property (nonatomic, retain, readonly) GRMustacheExpression *expression GRMUSTACHE_API_INTERNAL; @@ -61,6 +63,6 @@ * * @see GRMustacheExpression */ -+ (instancetype)sectionTagWithExpression:(GRMustacheExpression *)expression inverted:(BOOL)inverted templateString:(NSString *)templateString innerRange:(NSRange)innerRange innerTemplateAST:(GRMustacheTemplateAST *)innerTemplateAST GRMUSTACHE_API_INTERNAL; ++ (instancetype)sectionTagWithExpression:(GRMustacheExpression *)expression inverted:(BOOL)inverted templateString:(NSString *)templateString innerRange:(NSRange)innerRange innerTemplateAST:(GRMustacheTemplateAST *)innerTemplateAST tagStartDelimiter:(NSString *)tagStartDelimiter tagEndDelimiter:(NSString *)tagEndDelimiter GRMUSTACHE_API_INTERNAL; @end diff --git a/GRMustache/Compiling/TemplateAST/GRMustacheTag.h b/GRMustache/Compiling/TemplateAST/GRMustacheTag.h index 02a65630..4a0da886 100644 --- a/GRMustache/Compiling/TemplateAST/GRMustacheTag.h +++ b/GRMustache/Compiling/TemplateAST/GRMustacheTag.h @@ -82,6 +82,20 @@ typedef NS_ENUM(NSUInteger, GRMustacheTagType) { */ @property (nonatomic, readonly) NSString *innerTemplateString AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; +/** + * The opening delimiter of the tag. + * + * @since v8.0 + */ +@property (nonatomic, readonly, retain) NSString *tagStartDelimiter AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; + +/** + * The closing delimiter of the tag. + * + * @since v8.0 + */ +@property (nonatomic, readonly, retain) NSString *tagEndDelimiter AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; + /** * Returns the description of the tag. * diff --git a/GRMustache/Compiling/TemplateAST/GRMustacheTag_private.h b/GRMustache/Compiling/TemplateAST/GRMustacheTag_private.h index 78e32394..a581793a 100644 --- a/GRMustache/Compiling/TemplateAST/GRMustacheTag_private.h +++ b/GRMustache/Compiling/TemplateAST/GRMustacheTag_private.h @@ -42,6 +42,12 @@ typedef NS_ENUM(NSUInteger, GRMustacheTagType) { // Documented in GRMustacheTag.h @property (nonatomic, readonly) NSString *innerTemplateString GRMUSTACHE_API_PUBLIC; +// Documented in GRMustacheTag.h +@property (nonatomic, readonly, retain) NSString *tagStartDelimiter GRMUSTACHE_API_PUBLIC; + +// Documented in GRMustacheTag.h +@property (nonatomic, readonly, retain) NSString *tagEndDelimiter GRMUSTACHE_API_PUBLIC; + // Documented in GRMustacheTag.h - (NSString *)renderContentWithContext:(GRMustacheContext *)context HTMLSafe:(BOOL *)HTMLSafe error:(NSError **)error GRMUSTACHE_API_PUBLIC; diff --git a/GRMustache/Compiling/TemplateAST/GRMustacheVariableTag.m b/GRMustache/Compiling/TemplateAST/GRMustacheVariableTag.m index bbe6ae1b..6073ba7c 100644 --- a/GRMustache/Compiling/TemplateAST/GRMustacheVariableTag.m +++ b/GRMustache/Compiling/TemplateAST/GRMustacheVariableTag.m @@ -27,16 +27,20 @@ @implementation GRMustacheVariableTag @synthesize expression=_expression; @synthesize escapesHTML=_escapesHTML; +@synthesize tagStartDelimiter=_tagStartDelimiter; +@synthesize tagEndDelimiter=_tagEndDelimiter; - (void)dealloc { [_expression release]; + [_tagStartDelimiter release]; + [_tagEndDelimiter release]; [super dealloc]; } -+ (instancetype)variableTagWithExpression:(GRMustacheExpression *)expression escapesHTML:(BOOL)escapesHTML contentType:(GRMustacheContentType)contentType ++ (instancetype)variableTagWithExpression:(GRMustacheExpression *)expression escapesHTML:(BOOL)escapesHTML contentType:(GRMustacheContentType)contentType tagStartDelimiter:(NSString *)tagStartDelimiter tagEndDelimiter:(NSString *)tagEndDelimiter { - return [[[self alloc] initWithExpression:expression escapesHTML:escapesHTML contentType:contentType] autorelease]; + return [[[self alloc] initWithExpression:expression escapesHTML:escapesHTML contentType:contentType tagStartDelimiter:tagStartDelimiter tagEndDelimiter:tagEndDelimiter] autorelease]; } @@ -86,13 +90,15 @@ - (BOOL)acceptTemplateASTVisitor:(id)visitor error #pragma mark - Private -- (instancetype)initWithExpression:(GRMustacheExpression *)expression escapesHTML:(BOOL)escapesHTML contentType:(GRMustacheContentType)contentType +- (instancetype)initWithExpression:(GRMustacheExpression *)expression escapesHTML:(BOOL)escapesHTML contentType:(GRMustacheContentType)contentType tagStartDelimiter:(NSString *)tagStartDelimiter tagEndDelimiter:(NSString *)tagEndDelimiter { self = [super init]; if (self) { _expression = [expression retain]; _escapesHTML = escapesHTML; _contentType = contentType; + _tagStartDelimiter = [tagStartDelimiter retain]; + _tagEndDelimiter = [tagEndDelimiter retain]; } return self; } diff --git a/GRMustache/Compiling/TemplateAST/GRMustacheVariableTag_private.h b/GRMustache/Compiling/TemplateAST/GRMustacheVariableTag_private.h index 8d780389..4849b456 100644 --- a/GRMustache/Compiling/TemplateAST/GRMustacheVariableTag_private.h +++ b/GRMustache/Compiling/TemplateAST/GRMustacheVariableTag_private.h @@ -31,6 +31,8 @@ GRMustacheExpression *_expression; BOOL _escapesHTML; GRMustacheContentType _contentType; + NSString *_tagStartDelimiter; + NSString *_tagEndDelimiter; } @property (nonatomic, retain, readonly) GRMustacheExpression *expression GRMUSTACHE_API_INTERNAL; @@ -39,15 +41,17 @@ /** * Builds and returns a GRMustacheVariableTag. * - * @param expression The expression that would evaluate against a rendering - * contex. - * @param escapesHTML YES if the value should be escaped. - * @param contentType The content type of the tag rendering. + * @param expression The expression that would evaluate against a + * rendering context. + * @param escapesHTML YES if the value should be escaped. + * @param contentType The content type of the tag rendering. + * @param tagStartDelimiter The opening delimiter. + * @param tagEndDelimiter The closing delimiter. * * @return a GRMustacheVariableTag * * @see GRMustacheExpression */ -+ (instancetype)variableTagWithExpression:(GRMustacheExpression *)expression escapesHTML:(BOOL)escapesHTML contentType:(GRMustacheContentType)contentType GRMUSTACHE_API_INTERNAL; ++ (instancetype)variableTagWithExpression:(GRMustacheExpression *)expression escapesHTML:(BOOL)escapesHTML contentType:(GRMustacheContentType)contentType tagStartDelimiter:(NSString *)tagStartDelimiter tagEndDelimiter:(NSString *)tagEndDelimiter GRMUSTACHE_API_INTERNAL; @end diff --git a/GRMustache/Parsing/GRMustacheTemplateParser.m b/GRMustache/Parsing/GRMustacheTemplateParser.m index 59b3ad06..b8bdc346 100644 --- a/GRMustache/Parsing/GRMustacheTemplateParser.m +++ b/GRMustache/Parsing/GRMustacheTemplateParser.m @@ -191,7 +191,9 @@ - (void)parseTemplateString:(NSString *)templateString templateID:(id)templateID templateString:templateString templateID:templateID line:lineNumber - range:(NSRange){ .location = start, .length = i-start}]; + range:(NSRange){ .location = start, .length = i-start} + tagStartDelimiter:tagStartDelimiter + tagEndDelimiter:tagEndDelimiter]; if (![self.delegate templateParser:self shouldContinueAfterParsingToken:token]) return; } tagStartLineNumber = lineNumber; @@ -207,7 +209,9 @@ - (void)parseTemplateString:(NSString *)templateString templateID:(id)templateID templateString:templateString templateID:templateID line:lineNumber - range:(NSRange){ .location = start, .length = i-start}]; + range:(NSRange){ .location = start, .length = i-start} + tagStartDelimiter:tagStartDelimiter + tagEndDelimiter:tagEndDelimiter]; if (![self.delegate templateParser:self shouldContinueAfterParsingToken:token]) return; } tagStartLineNumber = lineNumber; @@ -223,7 +227,9 @@ - (void)parseTemplateString:(NSString *)templateString templateID:(id)templateID templateString:templateString templateID:templateID line:lineNumber - range:(NSRange){ .location = start, .length = i-start}]; + range:(NSRange){ .location = start, .length = i-start} + tagStartDelimiter:tagStartDelimiter + tagEndDelimiter:tagEndDelimiter]; if (![self.delegate templateParser:self shouldContinueAfterParsingToken:token]) return; } tagStartLineNumber = lineNumber; @@ -294,7 +300,9 @@ - (void)parseTemplateString:(NSString *)templateString templateID:(id)templateID templateString:templateString templateID:templateID line:tagStartLineNumber - range:(NSRange){ .location = start, .length = (i+tagEndDelimiterLength)-start}]; + range:(NSRange){ .location = start, .length = (i+tagEndDelimiterLength)-start} + tagStartDelimiter:tagStartDelimiter + tagEndDelimiter:tagEndDelimiter]; token.tagInnerRange = tagInnerRange; if (![self.delegate templateParser:self shouldContinueAfterParsingToken:token]) return; @@ -316,7 +324,9 @@ - (void)parseTemplateString:(NSString *)templateString templateID:(id)templateID templateString:templateString templateID:templateID line:tagStartLineNumber - range:(NSRange){ .location = start, .length = (i+unescapedTagEndDelimiterLength)-start}]; + range:(NSRange){ .location = start, .length = (i+unescapedTagEndDelimiterLength)-start} + tagStartDelimiter:tagStartDelimiter + tagEndDelimiter:tagEndDelimiter]; token.tagInnerRange = (NSRange){ .location = start+unescapedTagStartDelimiterLength, .length = i-(start+unescapedTagStartDelimiterLength) }; if (![self.delegate templateParser:self shouldContinueAfterParsingToken:token]) return; @@ -351,7 +361,9 @@ - (void)parseTemplateString:(NSString *)templateString templateID:(id)templateID templateString:templateString templateID:templateID line:tagStartLineNumber - range:(NSRange){ .location = start, .length = (i+setDelimitersTagEndDelimiterLength)-start}]; + range:(NSRange){ .location = start, .length = (i+setDelimitersTagEndDelimiterLength)-start} + tagStartDelimiter:tagStartDelimiter + tagEndDelimiter:tagEndDelimiter]; token.tagInnerRange = (NSRange){ .location = start+setDelimitersTagStartDelimiterLength, .length = i-(start+setDelimitersTagStartDelimiterLength) }; if (![self.delegate templateParser:self shouldContinueAfterParsingToken:token]) return; @@ -398,7 +410,9 @@ - (void)parseTemplateString:(NSString *)templateString templateID:(id)templateID templateString:templateString templateID:templateID line:lineNumber - range:(NSRange){ .location = start, .length = i-start}]; + range:(NSRange){ .location = start, .length = i-start} + tagStartDelimiter:tagStartDelimiter + tagEndDelimiter:tagEndDelimiter]; if (![self.delegate templateParser:self shouldContinueAfterParsingToken:token]) return; } break; diff --git a/GRMustache/Parsing/GRMustacheToken.m b/GRMustache/Parsing/GRMustacheToken.m index e53f3551..30b45082 100644 --- a/GRMustache/Parsing/GRMustacheToken.m +++ b/GRMustache/Parsing/GRMustacheToken.m @@ -30,15 +30,19 @@ @implementation GRMustacheToken @synthesize line=_line; @synthesize range=_range; @synthesize tagInnerRange=_tagInnerRange; +@synthesize tagStartDelimiter=_tagStartDelimiter; +@synthesize tagEndDelimiter=_tagEndDelimiter; - (void)dealloc { [_templateString release]; [_templateID release]; + [_tagStartDelimiter release]; + [_tagEndDelimiter release]; [super dealloc]; } -+ (instancetype)tokenWithType:(GRMustacheTokenType)type templateString:(NSString *)templateString templateID:(id)templateID line:(NSUInteger)line range:(NSRange)range ++ (instancetype)tokenWithType:(GRMustacheTokenType)type templateString:(NSString *)templateString templateID:(id)templateID line:(NSUInteger)line range:(NSRange)range tagStartDelimiter:(NSString *)tagStartDelimiter tagEndDelimiter:(NSString *)tagEndDelimiter { GRMustacheToken *token = [[[self alloc] init] autorelease]; token.type = type; @@ -46,6 +50,8 @@ + (instancetype)tokenWithType:(GRMustacheTokenType)type templateString:(NSString token.templateID = templateID; token.line = line; token.range = range; + token.tagStartDelimiter = tagStartDelimiter; + token.tagEndDelimiter = tagEndDelimiter; return token; } diff --git a/GRMustache/Parsing/GRMustacheToken_private.h b/GRMustache/Parsing/GRMustacheToken_private.h index 0082897b..e80524c8 100644 --- a/GRMustache/Parsing/GRMustacheToken_private.h +++ b/GRMustache/Parsing/GRMustacheToken_private.h @@ -110,6 +110,8 @@ typedef NS_ENUM(NSInteger, GRMustacheTokenType) { NSUInteger _line; NSRange _range; NSRange _tagInnerRange; + NSString *_tagStartDelimiter; + NSString *_tagEndDelimiter; } /** @@ -174,8 +176,18 @@ typedef NS_ENUM(NSInteger, GRMustacheTokenType) { */ @property (nonatomic, readonly) NSString *tagInnerContent GRMUSTACHE_API_INTERNAL; +/** + * The opening delimiter + */ +@property (nonatomic, retain) NSString *tagStartDelimiter; + +/** + * The closing delimiter + */ +@property (nonatomic, retain) NSString *tagEndDelimiter; + /** * Builds and return a token. */ -+ (instancetype)tokenWithType:(GRMustacheTokenType)type templateString:(NSString *)templateString templateID:(id)templateID line:(NSUInteger)line range:(NSRange)range GRMUSTACHE_API_INTERNAL; ++ (instancetype)tokenWithType:(GRMustacheTokenType)type templateString:(NSString *)templateString templateID:(id)templateID line:(NSUInteger)line range:(NSRange)range tagStartDelimiter:(NSString *)tagStartDelimiter tagEndDelimiter:(NSString *)tagEndDelimiter GRMUSTACHE_API_INTERNAL; @end diff --git a/GRMustache/Rendering/GRMustacheRendering.h b/GRMustache/Rendering/GRMustacheRendering.h index c5cb2348..3ed0d8fd 100644 --- a/GRMustache/Rendering/GRMustacheRendering.h +++ b/GRMustache/Rendering/GRMustacheRendering.h @@ -127,4 +127,30 @@ @end + +// ============================================================================= +#pragma mark - GRMustacheLambda + +/** + * TODO + */ + +@interface GRMustacheLambda : NSObject + +//////////////////////////////////////////////////////////////////////////////// +/// @name Creating Lambdas +//////////////////////////////////////////////////////////////////////////////// + +/** + * TODO + */ ++ (id)lambda:(NSString *(^)(void))lambda AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; + +/** + * TODO + */ ++ (id)sectionLambda:(NSString *(^)(NSString *string))lambda AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; + +@end + #endif diff --git a/GRMustache/Rendering/GRMustacheRendering.m b/GRMustache/Rendering/GRMustacheRendering.m index ecbca050..4a8b9c4f 100644 --- a/GRMustache/Rendering/GRMustacheRendering.m +++ b/GRMustache/Rendering/GRMustacheRendering.m @@ -27,6 +27,7 @@ #import "GRMustacheConfiguration_private.h" #import "GRMustacheContext_private.h" #import "GRMustacheError.h" +#import "GRMustacheTemplate_private.h" #import "GRMustacheTemplateRepository_private.h" #import "GRMustacheBuffer_private.h" @@ -181,6 +182,76 @@ + (void)registerRenderIMP:(GRMustacheRenderIMP)renderIMP forClass:(Class)klass @end +// ============================================================================= +#pragma mark - GRMustacheLambda + +/** + * TODO + */ + +@implementation GRMustacheLambda : NSObject + ++ (id)lambda:(NSString *(^)(void))lambda +{ + return [GRMustacheRendering renderingObjectWithBlock:^NSString *(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error) { + switch (tag.type) { + case GRMustacheTagTypeVariable: { + // {{ lambda }} + // + // https://github.com/mustache/spec/blob/83b0721610a4e11832e83df19c73ace3289972b9/specs/%7Elambdas.yml#L73 + // > Lambda results should be appropriately escaped + // + // Let's render a text template: + + GRMustacheTemplateRepository *repo = [GRMustacheTemplateRepository templateRepository]; + repo.configuration.contentType = GRMustacheContentTypeText; + + NSString *templateString = lambda(); + GRMustacheTemplate *template = [repo templateFromString:templateString error:error]; + return [template renderContentWithContext:context HTMLSafe:HTMLSafe error:error]; + } + + case GRMustacheTagTypeSection: { + // {{# lambda }}...{{/ lambda }} + // + // Behave as a true object, and render the section. + context = [context contextByAddingObject:[GRMustacheLambda lambda:lambda]]; + return [tag renderContentWithContext:context HTMLSafe:HTMLSafe error:error]; + } + } + }]; +} + ++ (id)sectionLambda:(NSString *(^)(NSString *string))lambda +{ + return [GRMustacheRendering renderingObjectWithBlock:^NSString *(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error) { + switch (tag.type) { + case GRMustacheTagTypeVariable: + // {{ lambda }} + return @"(Lambda)"; + + case GRMustacheTagTypeSection: { + // {{# lambda }}...{{/ lambda }} + // + // https://github.com/mustache/spec/blob/83b0721610a4e11832e83df19c73ace3289972b9/specs/%7Elambdas.yml#L117 + // > Lambdas used for sections should parse with the current delimiters + + GRMustacheTemplateRepository *repo = [GRMustacheTemplateRepository templateRepository]; + repo.configuration.tagStartDelimiter = tag.tagStartDelimiter; + repo.configuration.tagEndDelimiter = tag.tagEndDelimiter; + + NSString *templateString = lambda(tag.innerTemplateString); + GRMustacheTemplate *template = [repo templateFromString:templateString error:error]; + return [template renderContentWithContext:context HTMLSafe:HTMLSafe error:error]; + } + } + }]; +} + +@end + + + // ============================================================================= #pragma mark - Rendering Implementations diff --git a/GRMustache/Rendering/GRMustacheRendering_private.h b/GRMustache/Rendering/GRMustacheRendering_private.h index ea496537..3e5f9f52 100644 --- a/GRMustache/Rendering/GRMustacheRendering_private.h +++ b/GRMustache/Rendering/GRMustacheRendering_private.h @@ -147,3 +147,18 @@ @end + +// ============================================================================= +#pragma mark - GRMustacheLambda + +// Documented in GRMustacheRendering.h +@interface GRMustacheLambda : NSObject + +// Documented in GRMustacheRendering.h ++ (id)lambda:(NSString *(^)(void))lambda GRMUSTACHE_API_PUBLIC; + +// Documented in GRMustacheRendering.h ++ (id)sectionLambda:(NSString *(^)(NSString *string))lambda GRMUSTACHE_API_PUBLIC; + +@end + diff --git a/GRMustacheTests/Public/v8.0/GRMustacheLambdaTest.m b/GRMustacheTests/Public/v8.0/GRMustacheLambdaTest.m new file mode 100644 index 00000000..20133194 --- /dev/null +++ b/GRMustacheTests/Public/v8.0/GRMustacheLambdaTest.m @@ -0,0 +1,213 @@ +// The MIT License +// +// Copyright (c) 2015 Gwendal Roué +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_8_0 +#import "GRMustachePublicAPITest.h" + +@interface GRMustacheLambdaTest : GRMustachePublicAPITest + +@end + +@implementation GRMustacheLambdaTest + + +- (void)testMustacheSpecInterpolation +{ + // https://github.com/mustache/spec/blob/83b0721610a4e11832e83df19c73ace3289972b9/specs/%7Elambdas.yml#L15 + id lambda = [GRMustacheLambda lambda:^NSString *{ return @"world"; }]; + GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"Hello, {{lambda}}!" error:NULL]; + id data = @{ @"lambda": lambda }; + NSString *rendering = [template renderObject:data error:NULL]; + XCTAssertEqualObjects(rendering, @"Hello, world!"); +} + +- (void)testMustacheSpecInterpolationExpansion +{ + // https://github.com/mustache/spec/blob/83b0721610a4e11832e83df19c73ace3289972b9/specs/%7Elambdas.yml#L29 + id lambda = [GRMustacheLambda lambda:^NSString *{ return @"{{planet}}"; }]; + GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"Hello, {{lambda}}!" error:NULL]; + id data = @{ + @"planet": @"world", + @"lambda": lambda, + }; + NSString *rendering = [template renderObject:data error:NULL]; + XCTAssertEqualObjects(rendering, @"Hello, world!"); +} + +- (void)testMustacheSpecInterpolationAlternateDelimiters +{ + // https://github.com/mustache/spec/blob/83b0721610a4e11832e83df19c73ace3289972b9/specs/%7Elambdas.yml#L44 + // With a difference: remove the "\n" character because GRMustache does + // not honor mustache spec white space rules. + id lambda = [GRMustacheLambda lambda:^NSString *{ return @"|planet| => {{planet}}"; }]; + GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"{{= | | =}}Hello, (|&lambda|)!" error:NULL]; + id data = @{ + @"planet": @"world", + @"lambda": lambda, + }; + NSString *rendering = [template renderObject:data error:NULL]; + XCTAssertEqualObjects(rendering, @"Hello, (|planet| => world)!"); +} + +- (void)testMustacheSpecMultipleCalls +{ + // https://github.com/mustache/spec/blob/83b0721610a4e11832e83df19c73ace3289972b9/specs/%7Elambdas.yml#L59 + __block NSUInteger calls = 0; + id lambda = [GRMustacheLambda lambda:^NSString *{ + ++calls; + return [NSString stringWithFormat:@"%@", @(calls)]; + }]; + GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"{{lambda}} == {{{lambda}}} == {{lambda}}" error:NULL]; + id data = @{ @"lambda": lambda }; + NSString *rendering = [template renderObject:data error:NULL]; + XCTAssertEqualObjects(rendering, @"1 == 2 == 3"); +} + +- (void)testMustacheSpecEscaping +{ + // https://github.com/mustache/spec/blob/83b0721610a4e11832e83df19c73ace3289972b9/specs/%7Elambdas.yml#L73 + id lambda = [GRMustacheLambda lambda:^NSString *{ return @">"; }]; + GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"<{{lambda}}{{{lambda}}}" error:NULL]; + id data = @{ @"lambda": lambda }; + NSString *rendering = [template renderObject:data error:NULL]; + XCTAssertEqualObjects(rendering, @"<>>"); +} + +- (void)testMustacheSpecSection +{ + // https://github.com/mustache/spec/blob/83b0721610a4e11832e83df19c73ace3289972b9/specs/%7Elambdas.yml#L87 + id lambda = [GRMustacheLambda sectionLambda:^NSString *(NSString *string) { + if ([string isEqualToString:@"{{x}}"]) { + return @"yes"; + } else { + return @"no"; + } + }]; + GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"<{{#lambda}}{{x}}{{/lambda}}>" error:NULL]; + id data = @{ @"lambda": lambda }; + NSString *rendering = [template renderObject:data error:NULL]; + XCTAssertEqualObjects(rendering, @""); +} + +- (void)testMustacheSpecSectionExpansion +{ + // https://github.com/mustache/spec/blob/83b0721610a4e11832e83df19c73ace3289972b9/specs/%7Elambdas.yml#L102 + id lambda = [GRMustacheLambda sectionLambda:^NSString *(NSString *string) { + return [NSString stringWithFormat:@"%@{{planet}}%@", string, string]; + }]; + GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"<{{#lambda}}-{{/lambda}}>" error:NULL]; + id data = @{ + @"planet": @"Earth", + @"lambda": lambda, + }; + NSString *rendering = [template renderObject:data error:NULL]; + XCTAssertEqualObjects(rendering, @"<-Earth->"); +} + +- (void)testMustacheSpecSectionAlternateDelimiters +{ + // https://github.com/mustache/spec/blob/83b0721610a4e11832e83df19c73ace3289972b9/specs/%7Elambdas.yml#L117 + id lambda = [GRMustacheLambda sectionLambda:^NSString *(NSString *string) { + return [NSString stringWithFormat:@"%@{{planet}} => |planet|%@", string, string]; + }]; + GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"{{= | | =}}<|#lambda|-|/lambda|>" error:NULL]; + id data = @{ + @"planet": @"Earth", + @"lambda": lambda, + }; + NSString *rendering = [template renderObject:data error:NULL]; + XCTAssertEqualObjects(rendering, @"<-{{planet}} => Earth->"); +} + +- (void)testMustacheSpecSectionMultipleCalls +{ + // https://github.com/mustache/spec/blob/83b0721610a4e11832e83df19c73ace3289972b9/specs/%7Elambdas.yml#L132 + id lambda = [GRMustacheLambda sectionLambda:^NSString *(NSString *string) { + return [NSString stringWithFormat:@"__%@__", string]; + }]; + GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"{{#lambda}}FILE{{/lambda}} != {{#lambda}}LINE{{/lambda}}" error:NULL]; + id data = @{ @"lambda": lambda }; + NSString *rendering = [template renderObject:data error:NULL]; + XCTAssertEqualObjects(rendering, @"__FILE__ != __LINE__"); +} + +- (void)testMustacheSpecInvertedSection +{ + // https://github.com/mustache/spec/blob/83b0721610a4e11832e83df19c73ace3289972b9/specs/%7Elambdas.yml#L146 + id lambda = [GRMustacheLambda sectionLambda:^NSString *(NSString *string) { + return @""; + }]; + GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"<{{^lambda}}{{static}}{{/lambda}}>" error:NULL]; + id data = @{ @"lambda": lambda }; + NSString *rendering = [template renderObject:data error:NULL]; + XCTAssertEqualObjects(rendering, @"<>"); +} + +- (void)testPartialInArity0Lambda +{ + // Lambda can't render partials + NSDictionary *partials = @{ @"partial" : @"success" }; + GRMustacheTemplateRepository *repo = [GRMustacheTemplateRepository templateRepositoryWithDictionary:partials]; + id lambda = [GRMustacheLambda lambda:^NSString *{ return @"{{>partial}}"; }]; + GRMustacheTemplate *template = [repo templateFromString:@"<{{lambda}}>" error:NULL]; + id data = @{ @"lambda": lambda }; + NSError *error; + NSString *rendering = [template renderObject:data error:&error]; + XCTAssertNil(rendering); + XCTAssertEqualObjects(error.domain, GRMustacheErrorDomain); + XCTAssertEqual(error.code, GRMustacheErrorCodeTemplateNotFound); +} + +- (void)testPartialInArity1Lambda +{ + // Lambda can't render partials + NSDictionary *partials = @{ @"partial" : @"success" }; + GRMustacheTemplateRepository *repo = [GRMustacheTemplateRepository templateRepositoryWithDictionary:partials]; + id lambda = [GRMustacheLambda sectionLambda:^NSString *(NSString *string) { return @"{{>partial}}"; }]; + GRMustacheTemplate *template = [repo templateFromString:@"<{{#lambda}}...{{/lambda}}>" error:NULL]; + id data = @{ @"lambda": lambda }; + NSError *error; + NSString *rendering = [template renderObject:data error:&error]; + XCTAssertNil(rendering); + XCTAssertEqualObjects(error.domain, GRMustacheErrorDomain); + XCTAssertEqual(error.code, GRMustacheErrorCodeTemplateNotFound); +} + +- (void)testArity0LambdaInSectionTag +{ + id lambda = [GRMustacheLambda lambda:^NSString *{ return @"success"; }]; + GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"{{#lambda}}<{{.}}>{{/lambda}}" error:NULL]; + id data = @{ @"lambda": lambda }; + NSString *rendering = [template renderObject:data error:NULL]; + XCTAssertEqualObjects(rendering, @""); +} + +- (void)testArity1LambdaInVariableTag +{ + id lambda = [GRMustacheLambda sectionLambda:^NSString *(NSString *string) { return string; }]; + GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"<{{lambda}}>" error:NULL]; + id data = @{ @"lambda": lambda }; + NSString *rendering = [template renderObject:data error:NULL]; + XCTAssertEqualObjects(rendering, @"<(Lambda)>"); +} + +@end From 12a5aebf9866e4b71d51f1c584793aa661a8afb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sun, 18 Oct 2015 14:53:04 +0200 Subject: [PATCH 63/81] Move lambda factories to the GRMustacheRendering class --- GRMustache/Rendering/GRMustacheRendering.h | 11 -- GRMustache/Rendering/GRMustacheRendering.m | 127 ++++++++---------- .../Rendering/GRMustacheRendering_private.h | 9 -- 3 files changed, 57 insertions(+), 90 deletions(-) diff --git a/GRMustache/Rendering/GRMustacheRendering.h b/GRMustache/Rendering/GRMustacheRendering.h index 3ed0d8fd..99dc0e47 100644 --- a/GRMustache/Rendering/GRMustacheRendering.h +++ b/GRMustache/Rendering/GRMustacheRendering.h @@ -125,17 +125,6 @@ */ + (id)renderingObjectWithBlock:(NSString *(^)(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error))renderingBlock AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; -@end - - -// ============================================================================= -#pragma mark - GRMustacheLambda - -/** - * TODO - */ - -@interface GRMustacheLambda : NSObject //////////////////////////////////////////////////////////////////////////////// /// @name Creating Lambdas diff --git a/GRMustache/Rendering/GRMustacheRendering.m b/GRMustache/Rendering/GRMustacheRendering.m index 4a8b9c4f..90beba87 100644 --- a/GRMustache/Rendering/GRMustacheRendering.m +++ b/GRMustache/Rendering/GRMustacheRendering.m @@ -121,6 +121,63 @@ + (void)initialize return [[[GRMustacheBlockRendering alloc] initWithRenderingBlock:renderingBlock] autorelease]; } ++ (id)lambda:(NSString *(^)(void))lambda +{ + return [GRMustacheRendering renderingObjectWithBlock:^NSString *(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error) { + switch (tag.type) { + case GRMustacheTagTypeVariable: { + // {{ lambda }} + // + // https://github.com/mustache/spec/blob/83b0721610a4e11832e83df19c73ace3289972b9/specs/%7Elambdas.yml#L73 + // > Lambda results should be appropriately escaped + // + // Let's render a text template: + + GRMustacheTemplateRepository *repo = [GRMustacheTemplateRepository templateRepository]; + repo.configuration.contentType = GRMustacheContentTypeText; + + NSString *templateString = lambda(); + GRMustacheTemplate *template = [repo templateFromString:templateString error:error]; + return [template renderContentWithContext:context HTMLSafe:HTMLSafe error:error]; + } + + case GRMustacheTagTypeSection: { + // {{# lambda }}...{{/ lambda }} + // + // Behave as a true object, and render the section. + context = [context contextByAddingObject:[GRMustacheRendering lambda:lambda]]; + return [tag renderContentWithContext:context HTMLSafe:HTMLSafe error:error]; + } + } + }]; +} + ++ (id)sectionLambda:(NSString *(^)(NSString *string))lambda +{ + return [GRMustacheRendering renderingObjectWithBlock:^NSString *(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error) { + switch (tag.type) { + case GRMustacheTagTypeVariable: + // {{ lambda }} + return @"(Lambda)"; + + case GRMustacheTagTypeSection: { + // {{# lambda }}...{{/ lambda }} + // + // https://github.com/mustache/spec/blob/83b0721610a4e11832e83df19c73ace3289972b9/specs/%7Elambdas.yml#L117 + // > Lambdas used for sections should parse with the current delimiters + + GRMustacheTemplateRepository *repo = [GRMustacheTemplateRepository templateRepository]; + repo.configuration.tagStartDelimiter = tag.tagStartDelimiter; + repo.configuration.tagEndDelimiter = tag.tagEndDelimiter; + + NSString *templateString = lambda(tag.innerTemplateString); + GRMustacheTemplate *template = [repo templateFromString:templateString error:error]; + return [template renderContentWithContext:context HTMLSafe:HTMLSafe error:error]; + } + } + }]; +} + #pragma mark - Private @@ -182,76 +239,6 @@ + (void)registerRenderIMP:(GRMustacheRenderIMP)renderIMP forClass:(Class)klass @end -// ============================================================================= -#pragma mark - GRMustacheLambda - -/** - * TODO - */ - -@implementation GRMustacheLambda : NSObject - -+ (id)lambda:(NSString *(^)(void))lambda -{ - return [GRMustacheRendering renderingObjectWithBlock:^NSString *(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error) { - switch (tag.type) { - case GRMustacheTagTypeVariable: { - // {{ lambda }} - // - // https://github.com/mustache/spec/blob/83b0721610a4e11832e83df19c73ace3289972b9/specs/%7Elambdas.yml#L73 - // > Lambda results should be appropriately escaped - // - // Let's render a text template: - - GRMustacheTemplateRepository *repo = [GRMustacheTemplateRepository templateRepository]; - repo.configuration.contentType = GRMustacheContentTypeText; - - NSString *templateString = lambda(); - GRMustacheTemplate *template = [repo templateFromString:templateString error:error]; - return [template renderContentWithContext:context HTMLSafe:HTMLSafe error:error]; - } - - case GRMustacheTagTypeSection: { - // {{# lambda }}...{{/ lambda }} - // - // Behave as a true object, and render the section. - context = [context contextByAddingObject:[GRMustacheLambda lambda:lambda]]; - return [tag renderContentWithContext:context HTMLSafe:HTMLSafe error:error]; - } - } - }]; -} - -+ (id)sectionLambda:(NSString *(^)(NSString *string))lambda -{ - return [GRMustacheRendering renderingObjectWithBlock:^NSString *(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error) { - switch (tag.type) { - case GRMustacheTagTypeVariable: - // {{ lambda }} - return @"(Lambda)"; - - case GRMustacheTagTypeSection: { - // {{# lambda }}...{{/ lambda }} - // - // https://github.com/mustache/spec/blob/83b0721610a4e11832e83df19c73ace3289972b9/specs/%7Elambdas.yml#L117 - // > Lambdas used for sections should parse with the current delimiters - - GRMustacheTemplateRepository *repo = [GRMustacheTemplateRepository templateRepository]; - repo.configuration.tagStartDelimiter = tag.tagStartDelimiter; - repo.configuration.tagEndDelimiter = tag.tagEndDelimiter; - - NSString *templateString = lambda(tag.innerTemplateString); - GRMustacheTemplate *template = [repo templateFromString:templateString error:error]; - return [template renderContentWithContext:context HTMLSafe:HTMLSafe error:error]; - } - } - }]; -} - -@end - - - // ============================================================================= #pragma mark - Rendering Implementations diff --git a/GRMustache/Rendering/GRMustacheRendering_private.h b/GRMustache/Rendering/GRMustacheRendering_private.h index 3e5f9f52..aa6c3647 100644 --- a/GRMustache/Rendering/GRMustacheRendering_private.h +++ b/GRMustache/Rendering/GRMustacheRendering_private.h @@ -145,15 +145,6 @@ // Documented in GRMustacheRendering.h + (id)renderingObjectWithBlock:(NSString *(^)(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error))renderingBlock GRMUSTACHE_API_PUBLIC; -@end - - -// ============================================================================= -#pragma mark - GRMustacheLambda - -// Documented in GRMustacheRendering.h -@interface GRMustacheLambda : NSObject - // Documented in GRMustacheRendering.h + (id)lambda:(NSString *(^)(void))lambda GRMUSTACHE_API_PUBLIC; From d6a8fb51622a2c00b89c7c3dd6e8f2359174f864 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sun, 18 Oct 2015 14:53:29 +0200 Subject: [PATCH 64/81] Tests test for GRMUSTACHE_VERSION_8_0 --- GRMustacheTests/Public/v8.0/GRBooleanTest.m | 2 +- .../GRMustacheConfigurationBaseContextTest.m | 2 +- ...stacheConfigurationExtendBaseContextTest.m | 2 +- ...GRMustacheConfigurationTagDelimitersTest.m | 2 +- .../GRMustacheConfigurationTest.m | 2 +- ...ContextHasValueForMustacheExpressionTest.m | 2 +- .../GRMustacheContextKeyAccessTest.m | 2 +- .../GRMustacheContextProtectedObjectTest.m | 2 +- .../GRMustacheContextTest.m | 2 +- .../GRMustacheContextTopMustacheObjectTest.m | 2 +- ...GRMustacheContextValueForMustacheKeyTest.m | 2 +- .../Public/v8.0/GRMustacheErrorHandlingTest.m | 2 +- .../GRMustacheFilterTest.m | 2 +- .../GRMustacheVariadicFilterTest.m | 2 +- .../v8.0/GRMustacheFoundationCollectionTest.m | 2 +- .../Public/v8.0/GRMustacheLambdaTest.m | 28 +++++++++---------- .../Public/v8.0/GRMustacheParsingErrorsTest.m | 2 +- .../v8.0/GRMustachePositionFilterTest.m | 2 +- .../v8.0/GRMustacheRenderingObjectTest.m | 2 +- .../GRMustacheLocalizerTest.m | 2 +- .../GRMustacheNSFormatterTest.m | 2 +- .../GRMustacheNSValueTransformerTest.m | 2 +- .../GRMustacheStandardLibraryTest.m | 2 +- .../GRMustacheTagDelegateTest.m | 2 +- ...MustacheTemplateRepositoryDataSourceTest.m | 2 +- .../GRMustacheTemplateRepositoryTest.m | 2 +- ...ustacheTemplateRepositoryWithBaseURLTest.m | 2 +- ...MustacheTemplateRepositoryWithBundleTest.m | 2 +- ...acheTemplateRepositoryWithDictionaryTest.m | 2 +- ...tacheTemplateRepositoryWithDirectoryTest.m | 2 +- .../GRMustacheTemplateExtendBaseContextTest.m | 2 +- .../GRMustacheTemplateFromMethodsTest.m | 2 +- .../GRMustacheTemplateRenderMethodsTest.m | 2 +- ...GRMustacheTemplateTemplateRepositoryTest.m | 2 +- .../groue/GRMustache/GRMustacheSuitesTest.m | 2 +- .../mustache/spec/GRSpecificationSuitesTest.m | 2 +- .../mustache.java/GRMustacheJavaSuitesTest.m | 2 +- .../twitter/hogan.js/GRHoganSuitesTest.m | 2 +- 38 files changed, 51 insertions(+), 51 deletions(-) diff --git a/GRMustacheTests/Public/v8.0/GRBooleanTest.m b/GRMustacheTests/Public/v8.0/GRBooleanTest.m index d969ad58..9a547de4 100644 --- a/GRMustacheTests/Public/v8.0/GRBooleanTest.m +++ b/GRMustacheTests/Public/v8.0/GRBooleanTest.m @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 +#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_8_0 #import "GRMustachePublicAPITest.h" @interface GRBooleanTest : GRMustachePublicAPITest diff --git a/GRMustacheTests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationBaseContextTest.m b/GRMustacheTests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationBaseContextTest.m index 51d33d3a..bf7eba48 100644 --- a/GRMustacheTests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationBaseContextTest.m +++ b/GRMustacheTests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationBaseContextTest.m @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 +#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_8_0 #import "GRMustachePublicAPITest.h" @interface GRMustacheConfigurationBaseContextTest : GRMustachePublicAPITest diff --git a/GRMustacheTests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationExtendBaseContextTest.m b/GRMustacheTests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationExtendBaseContextTest.m index e88a0614..9ae030d6 100644 --- a/GRMustacheTests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationExtendBaseContextTest.m +++ b/GRMustacheTests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationExtendBaseContextTest.m @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 +#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_8_0 #import "GRMustachePublicAPITest.h" #import "GRMustacheTestingDelegate.h" diff --git a/GRMustacheTests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationTagDelimitersTest.m b/GRMustacheTests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationTagDelimitersTest.m index 4086cd67..b1927080 100644 --- a/GRMustacheTests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationTagDelimitersTest.m +++ b/GRMustacheTests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationTagDelimitersTest.m @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 +#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_8_0 #import "GRMustachePublicAPITest.h" @interface GRMustacheConfigurationTagDelimitersTest : GRMustachePublicAPITest diff --git a/GRMustacheTests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationTest.m b/GRMustacheTests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationTest.m index d6745cb8..32034887 100644 --- a/GRMustacheTests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationTest.m +++ b/GRMustacheTests/Public/v8.0/GRMustacheConfigurationTest/GRMustacheConfigurationTest.m @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 +#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_8_0 #import "GRMustachePublicAPITest.h" @interface GRMustacheConfigurationTest : GRMustachePublicAPITest diff --git a/GRMustacheTests/Public/v8.0/GRMustacheContextTest/GRMustacheContextHasValueForMustacheExpressionTest.m b/GRMustacheTests/Public/v8.0/GRMustacheContextTest/GRMustacheContextHasValueForMustacheExpressionTest.m index c077e2d2..bfba30d7 100644 --- a/GRMustacheTests/Public/v8.0/GRMustacheContextTest/GRMustacheContextHasValueForMustacheExpressionTest.m +++ b/GRMustacheTests/Public/v8.0/GRMustacheContextTest/GRMustacheContextHasValueForMustacheExpressionTest.m @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 +#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_8_0 #import "GRMustachePublicAPITest.h" @interface GRMustacheContextHasValueForMustacheExpressionTest : GRMustachePublicAPITest diff --git a/GRMustacheTests/Public/v8.0/GRMustacheContextTest/GRMustacheContextKeyAccessTest.m b/GRMustacheTests/Public/v8.0/GRMustacheContextTest/GRMustacheContextKeyAccessTest.m index dec82df6..9f586cc3 100644 --- a/GRMustacheTests/Public/v8.0/GRMustacheContextTest/GRMustacheContextKeyAccessTest.m +++ b/GRMustacheTests/Public/v8.0/GRMustacheContextTest/GRMustacheContextKeyAccessTest.m @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 +#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_8_0 #import "GRMustachePublicAPITest.h" diff --git a/GRMustacheTests/Public/v8.0/GRMustacheContextTest/GRMustacheContextProtectedObjectTest.m b/GRMustacheTests/Public/v8.0/GRMustacheContextTest/GRMustacheContextProtectedObjectTest.m index 265f3d80..ddd5367e 100644 --- a/GRMustacheTests/Public/v8.0/GRMustacheContextTest/GRMustacheContextProtectedObjectTest.m +++ b/GRMustacheTests/Public/v8.0/GRMustacheContextTest/GRMustacheContextProtectedObjectTest.m @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 +#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_8_0 #import "GRMustachePublicAPITest.h" @interface GRMustacheContextProtectedObjectTest : GRMustachePublicAPITest diff --git a/GRMustacheTests/Public/v8.0/GRMustacheContextTest/GRMustacheContextTest.m b/GRMustacheTests/Public/v8.0/GRMustacheContextTest/GRMustacheContextTest.m index b81e276a..a755eaab 100644 --- a/GRMustacheTests/Public/v8.0/GRMustacheContextTest/GRMustacheContextTest.m +++ b/GRMustacheTests/Public/v8.0/GRMustacheContextTest/GRMustacheContextTest.m @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 +#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_8_0 #import "GRMustachePublicAPITest.h" #import "GRMustacheTestingDelegate.h" diff --git a/GRMustacheTests/Public/v8.0/GRMustacheContextTest/GRMustacheContextTopMustacheObjectTest.m b/GRMustacheTests/Public/v8.0/GRMustacheContextTest/GRMustacheContextTopMustacheObjectTest.m index 1ff0cd4e..8af88185 100644 --- a/GRMustacheTests/Public/v8.0/GRMustacheContextTest/GRMustacheContextTopMustacheObjectTest.m +++ b/GRMustacheTests/Public/v8.0/GRMustacheContextTest/GRMustacheContextTopMustacheObjectTest.m @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 +#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_8_0 #import "GRMustachePublicAPITest.h" #import "GRMustacheTestingDelegate.h" diff --git a/GRMustacheTests/Public/v8.0/GRMustacheContextTest/GRMustacheContextValueForMustacheKeyTest.m b/GRMustacheTests/Public/v8.0/GRMustacheContextTest/GRMustacheContextValueForMustacheKeyTest.m index 456c51ac..edc0d159 100644 --- a/GRMustacheTests/Public/v8.0/GRMustacheContextTest/GRMustacheContextValueForMustacheKeyTest.m +++ b/GRMustacheTests/Public/v8.0/GRMustacheContextTest/GRMustacheContextValueForMustacheKeyTest.m @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 +#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_8_0 #import "GRMustachePublicAPITest.h" @interface GRMustacheContextValueForMustacheKeyTest : GRMustachePublicAPITest diff --git a/GRMustacheTests/Public/v8.0/GRMustacheErrorHandlingTest.m b/GRMustacheTests/Public/v8.0/GRMustacheErrorHandlingTest.m index 01fc4718..abf7475f 100644 --- a/GRMustacheTests/Public/v8.0/GRMustacheErrorHandlingTest.m +++ b/GRMustacheTests/Public/v8.0/GRMustacheErrorHandlingTest.m @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 +#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_8_0 #import "GRMustachePublicAPITest.h" @interface GRMustacheErrorHandlingTest : GRMustachePublicAPITest diff --git a/GRMustacheTests/Public/v8.0/GRMustacheFilterTest/GRMustacheFilterTest.m b/GRMustacheTests/Public/v8.0/GRMustacheFilterTest/GRMustacheFilterTest.m index 21774006..6b42d599 100644 --- a/GRMustacheTests/Public/v8.0/GRMustacheFilterTest/GRMustacheFilterTest.m +++ b/GRMustacheTests/Public/v8.0/GRMustacheFilterTest/GRMustacheFilterTest.m @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 +#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_8_0 #import "GRMustachePublicAPITest.h" @interface GRMustacheFilterTestSupport: NSObject diff --git a/GRMustacheTests/Public/v8.0/GRMustacheFilterTest/GRMustacheVariadicFilterTest.m b/GRMustacheTests/Public/v8.0/GRMustacheFilterTest/GRMustacheVariadicFilterTest.m index 3aa3de64..169649f1 100644 --- a/GRMustacheTests/Public/v8.0/GRMustacheFilterTest/GRMustacheVariadicFilterTest.m +++ b/GRMustacheTests/Public/v8.0/GRMustacheFilterTest/GRMustacheVariadicFilterTest.m @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 +#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_8_0 #import "GRMustachePublicAPITest.h" @interface GRMustacheVariadicFilterTest : GRMustachePublicAPITest diff --git a/GRMustacheTests/Public/v8.0/GRMustacheFoundationCollectionTest.m b/GRMustacheTests/Public/v8.0/GRMustacheFoundationCollectionTest.m index cecfefb5..f577d5e2 100644 --- a/GRMustacheTests/Public/v8.0/GRMustacheFoundationCollectionTest.m +++ b/GRMustacheTests/Public/v8.0/GRMustacheFoundationCollectionTest.m @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 +#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_8_0 #import "GRMustachePublicAPITest.h" @interface GRMustacheFoundationCollectionTest : GRMustachePublicAPITest diff --git a/GRMustacheTests/Public/v8.0/GRMustacheLambdaTest.m b/GRMustacheTests/Public/v8.0/GRMustacheLambdaTest.m index 20133194..0388b50c 100644 --- a/GRMustacheTests/Public/v8.0/GRMustacheLambdaTest.m +++ b/GRMustacheTests/Public/v8.0/GRMustacheLambdaTest.m @@ -33,7 +33,7 @@ @implementation GRMustacheLambdaTest - (void)testMustacheSpecInterpolation { // https://github.com/mustache/spec/blob/83b0721610a4e11832e83df19c73ace3289972b9/specs/%7Elambdas.yml#L15 - id lambda = [GRMustacheLambda lambda:^NSString *{ return @"world"; }]; + id lambda = [GRMustacheRendering lambda:^NSString *{ return @"world"; }]; GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"Hello, {{lambda}}!" error:NULL]; id data = @{ @"lambda": lambda }; NSString *rendering = [template renderObject:data error:NULL]; @@ -43,7 +43,7 @@ - (void)testMustacheSpecInterpolation - (void)testMustacheSpecInterpolationExpansion { // https://github.com/mustache/spec/blob/83b0721610a4e11832e83df19c73ace3289972b9/specs/%7Elambdas.yml#L29 - id lambda = [GRMustacheLambda lambda:^NSString *{ return @"{{planet}}"; }]; + id lambda = [GRMustacheRendering lambda:^NSString *{ return @"{{planet}}"; }]; GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"Hello, {{lambda}}!" error:NULL]; id data = @{ @"planet": @"world", @@ -58,7 +58,7 @@ - (void)testMustacheSpecInterpolationAlternateDelimiters // https://github.com/mustache/spec/blob/83b0721610a4e11832e83df19c73ace3289972b9/specs/%7Elambdas.yml#L44 // With a difference: remove the "\n" character because GRMustache does // not honor mustache spec white space rules. - id lambda = [GRMustacheLambda lambda:^NSString *{ return @"|planet| => {{planet}}"; }]; + id lambda = [GRMustacheRendering lambda:^NSString *{ return @"|planet| => {{planet}}"; }]; GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"{{= | | =}}Hello, (|&lambda|)!" error:NULL]; id data = @{ @"planet": @"world", @@ -72,7 +72,7 @@ - (void)testMustacheSpecMultipleCalls { // https://github.com/mustache/spec/blob/83b0721610a4e11832e83df19c73ace3289972b9/specs/%7Elambdas.yml#L59 __block NSUInteger calls = 0; - id lambda = [GRMustacheLambda lambda:^NSString *{ + id lambda = [GRMustacheRendering lambda:^NSString *{ ++calls; return [NSString stringWithFormat:@"%@", @(calls)]; }]; @@ -85,7 +85,7 @@ - (void)testMustacheSpecMultipleCalls - (void)testMustacheSpecEscaping { // https://github.com/mustache/spec/blob/83b0721610a4e11832e83df19c73ace3289972b9/specs/%7Elambdas.yml#L73 - id lambda = [GRMustacheLambda lambda:^NSString *{ return @">"; }]; + id lambda = [GRMustacheRendering lambda:^NSString *{ return @">"; }]; GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"<{{lambda}}{{{lambda}}}" error:NULL]; id data = @{ @"lambda": lambda }; NSString *rendering = [template renderObject:data error:NULL]; @@ -95,7 +95,7 @@ - (void)testMustacheSpecEscaping - (void)testMustacheSpecSection { // https://github.com/mustache/spec/blob/83b0721610a4e11832e83df19c73ace3289972b9/specs/%7Elambdas.yml#L87 - id lambda = [GRMustacheLambda sectionLambda:^NSString *(NSString *string) { + id lambda = [GRMustacheRendering sectionLambda:^NSString *(NSString *string) { if ([string isEqualToString:@"{{x}}"]) { return @"yes"; } else { @@ -111,7 +111,7 @@ - (void)testMustacheSpecSection - (void)testMustacheSpecSectionExpansion { // https://github.com/mustache/spec/blob/83b0721610a4e11832e83df19c73ace3289972b9/specs/%7Elambdas.yml#L102 - id lambda = [GRMustacheLambda sectionLambda:^NSString *(NSString *string) { + id lambda = [GRMustacheRendering sectionLambda:^NSString *(NSString *string) { return [NSString stringWithFormat:@"%@{{planet}}%@", string, string]; }]; GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"<{{#lambda}}-{{/lambda}}>" error:NULL]; @@ -126,7 +126,7 @@ - (void)testMustacheSpecSectionExpansion - (void)testMustacheSpecSectionAlternateDelimiters { // https://github.com/mustache/spec/blob/83b0721610a4e11832e83df19c73ace3289972b9/specs/%7Elambdas.yml#L117 - id lambda = [GRMustacheLambda sectionLambda:^NSString *(NSString *string) { + id lambda = [GRMustacheRendering sectionLambda:^NSString *(NSString *string) { return [NSString stringWithFormat:@"%@{{planet}} => |planet|%@", string, string]; }]; GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"{{= | | =}}<|#lambda|-|/lambda|>" error:NULL]; @@ -141,7 +141,7 @@ - (void)testMustacheSpecSectionAlternateDelimiters - (void)testMustacheSpecSectionMultipleCalls { // https://github.com/mustache/spec/blob/83b0721610a4e11832e83df19c73ace3289972b9/specs/%7Elambdas.yml#L132 - id lambda = [GRMustacheLambda sectionLambda:^NSString *(NSString *string) { + id lambda = [GRMustacheRendering sectionLambda:^NSString *(NSString *string) { return [NSString stringWithFormat:@"__%@__", string]; }]; GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"{{#lambda}}FILE{{/lambda}} != {{#lambda}}LINE{{/lambda}}" error:NULL]; @@ -153,7 +153,7 @@ - (void)testMustacheSpecSectionMultipleCalls - (void)testMustacheSpecInvertedSection { // https://github.com/mustache/spec/blob/83b0721610a4e11832e83df19c73ace3289972b9/specs/%7Elambdas.yml#L146 - id lambda = [GRMustacheLambda sectionLambda:^NSString *(NSString *string) { + id lambda = [GRMustacheRendering sectionLambda:^NSString *(NSString *string) { return @""; }]; GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"<{{^lambda}}{{static}}{{/lambda}}>" error:NULL]; @@ -167,7 +167,7 @@ - (void)testPartialInArity0Lambda // Lambda can't render partials NSDictionary *partials = @{ @"partial" : @"success" }; GRMustacheTemplateRepository *repo = [GRMustacheTemplateRepository templateRepositoryWithDictionary:partials]; - id lambda = [GRMustacheLambda lambda:^NSString *{ return @"{{>partial}}"; }]; + id lambda = [GRMustacheRendering lambda:^NSString *{ return @"{{>partial}}"; }]; GRMustacheTemplate *template = [repo templateFromString:@"<{{lambda}}>" error:NULL]; id data = @{ @"lambda": lambda }; NSError *error; @@ -182,7 +182,7 @@ - (void)testPartialInArity1Lambda // Lambda can't render partials NSDictionary *partials = @{ @"partial" : @"success" }; GRMustacheTemplateRepository *repo = [GRMustacheTemplateRepository templateRepositoryWithDictionary:partials]; - id lambda = [GRMustacheLambda sectionLambda:^NSString *(NSString *string) { return @"{{>partial}}"; }]; + id lambda = [GRMustacheRendering sectionLambda:^NSString *(NSString *string) { return @"{{>partial}}"; }]; GRMustacheTemplate *template = [repo templateFromString:@"<{{#lambda}}...{{/lambda}}>" error:NULL]; id data = @{ @"lambda": lambda }; NSError *error; @@ -194,7 +194,7 @@ - (void)testPartialInArity1Lambda - (void)testArity0LambdaInSectionTag { - id lambda = [GRMustacheLambda lambda:^NSString *{ return @"success"; }]; + id lambda = [GRMustacheRendering lambda:^NSString *{ return @"success"; }]; GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"{{#lambda}}<{{.}}>{{/lambda}}" error:NULL]; id data = @{ @"lambda": lambda }; NSString *rendering = [template renderObject:data error:NULL]; @@ -203,7 +203,7 @@ - (void)testArity0LambdaInSectionTag - (void)testArity1LambdaInVariableTag { - id lambda = [GRMustacheLambda sectionLambda:^NSString *(NSString *string) { return string; }]; + id lambda = [GRMustacheRendering sectionLambda:^NSString *(NSString *string) { return string; }]; GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"<{{lambda}}>" error:NULL]; id data = @{ @"lambda": lambda }; NSString *rendering = [template renderObject:data error:NULL]; diff --git a/GRMustacheTests/Public/v8.0/GRMustacheParsingErrorsTest.m b/GRMustacheTests/Public/v8.0/GRMustacheParsingErrorsTest.m index 5519b9ce..2b79e65c 100644 --- a/GRMustacheTests/Public/v8.0/GRMustacheParsingErrorsTest.m +++ b/GRMustacheTests/Public/v8.0/GRMustacheParsingErrorsTest.m @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 +#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_8_0 #import "GRMustachePublicAPITest.h" @interface GRMustacheParsingErrorsTest : GRMustachePublicAPITest diff --git a/GRMustacheTests/Public/v8.0/GRMustachePositionFilterTest.m b/GRMustacheTests/Public/v8.0/GRMustachePositionFilterTest.m index 9f717bb2..5b6f4e9d 100644 --- a/GRMustacheTests/Public/v8.0/GRMustachePositionFilterTest.m +++ b/GRMustacheTests/Public/v8.0/GRMustachePositionFilterTest.m @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 +#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_8_0 #import "GRMustachePublicAPITest.h" @interface GRMustachePositionFilter : NSObject diff --git a/GRMustacheTests/Public/v8.0/GRMustacheRenderingObjectTest.m b/GRMustacheTests/Public/v8.0/GRMustacheRenderingObjectTest.m index bc5c2592..58bfc15c 100644 --- a/GRMustacheTests/Public/v8.0/GRMustacheRenderingObjectTest.m +++ b/GRMustacheTests/Public/v8.0/GRMustacheRenderingObjectTest.m @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 +#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_8_0 #import "GRMustachePublicAPITest.h" #import "GRMustacheTestingDelegate.h" diff --git a/GRMustacheTests/Public/v8.0/GRMustacheServicesTest/GRMustacheLocalizerTest.m b/GRMustacheTests/Public/v8.0/GRMustacheServicesTest/GRMustacheLocalizerTest.m index 75b0161d..0d997295 100644 --- a/GRMustacheTests/Public/v8.0/GRMustacheServicesTest/GRMustacheLocalizerTest.m +++ b/GRMustacheTests/Public/v8.0/GRMustacheServicesTest/GRMustacheLocalizerTest.m @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 +#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_8_0 #import "GRMustachePublicAPITest.h" @interface GRMustacheLocalizerTest : GRMustachePublicAPITest { diff --git a/GRMustacheTests/Public/v8.0/GRMustacheServicesTest/GRMustacheNSFormatterTest.m b/GRMustacheTests/Public/v8.0/GRMustacheServicesTest/GRMustacheNSFormatterTest.m index fdf7a7fd..e00fca45 100644 --- a/GRMustacheTests/Public/v8.0/GRMustacheServicesTest/GRMustacheNSFormatterTest.m +++ b/GRMustacheTests/Public/v8.0/GRMustacheServicesTest/GRMustacheNSFormatterTest.m @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 +#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_8_0 #import "GRMustachePublicAPITest.h" @interface GRMustacheNSFormatterTest : GRMustachePublicAPITest diff --git a/GRMustacheTests/Public/v8.0/GRMustacheServicesTest/GRMustacheNSValueTransformerTest.m b/GRMustacheTests/Public/v8.0/GRMustacheServicesTest/GRMustacheNSValueTransformerTest.m index 9a24f5b0..18707e82 100644 --- a/GRMustacheTests/Public/v8.0/GRMustacheServicesTest/GRMustacheNSValueTransformerTest.m +++ b/GRMustacheTests/Public/v8.0/GRMustacheServicesTest/GRMustacheNSValueTransformerTest.m @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 +#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_8_0 #import "GRMustachePublicAPITest.h" @interface GRMustacheNSValueTransformerTest : GRMustachePublicAPITest diff --git a/GRMustacheTests/Public/v8.0/GRMustacheServicesTest/GRMustacheStandardLibraryTest.m b/GRMustacheTests/Public/v8.0/GRMustacheServicesTest/GRMustacheStandardLibraryTest.m index 836d3cbd..923ecdb3 100644 --- a/GRMustacheTests/Public/v8.0/GRMustacheServicesTest/GRMustacheStandardLibraryTest.m +++ b/GRMustacheTests/Public/v8.0/GRMustacheServicesTest/GRMustacheStandardLibraryTest.m @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 +#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_8_0 #import "GRMustachePublicAPITest.h" @interface GRMustacheStandardLibraryTest : GRMustachePublicAPITest diff --git a/GRMustacheTests/Public/v8.0/GRMustacheTagDelegateTest/GRMustacheTagDelegateTest.m b/GRMustacheTests/Public/v8.0/GRMustacheTagDelegateTest/GRMustacheTagDelegateTest.m index 1eb1263a..a0bf305b 100644 --- a/GRMustacheTests/Public/v8.0/GRMustacheTagDelegateTest/GRMustacheTagDelegateTest.m +++ b/GRMustacheTests/Public/v8.0/GRMustacheTagDelegateTest/GRMustacheTagDelegateTest.m @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 +#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_8_0 #import "GRMustachePublicAPITest.h" #import "GRMustacheTestingDelegate.h" diff --git a/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryDataSourceTest.m b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryDataSourceTest.m index 848f92dd..87388090 100644 --- a/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryDataSourceTest.m +++ b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryDataSourceTest.m @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 +#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_8_0 #import "GRMustachePublicAPITest.h" @interface GRMustacheTemplateRepositoryDataSourceTest : GRMustachePublicAPITest diff --git a/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest.m b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest.m index 077773f4..24a94037 100644 --- a/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest.m +++ b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryTest.m @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 +#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_8_0 #import "GRMustachePublicAPITest.h" @interface GRMustacheTemplateRepositoryTest : GRMustachePublicAPITest diff --git a/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBaseURLTest.m b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBaseURLTest.m index 05d39994..c11b0162 100644 --- a/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBaseURLTest.m +++ b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBaseURLTest.m @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 +#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_8_0 #import "GRMustachePublicAPITest.h" @interface GRMustacheTemplateRepositoryWithBaseURL_Test : GRMustachePublicAPITest diff --git a/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest.m b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest.m index e0017cb2..7d336414 100644 --- a/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest.m +++ b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithBundleTest.m @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 +#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_8_0 #import "GRMustachePublicAPITest.h" @interface GRMustacheTemplateRepositoryWithBundleTest : GRMustachePublicAPITest diff --git a/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithDictionaryTest.m b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithDictionaryTest.m index d636bf12..fb50f9fc 100644 --- a/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithDictionaryTest.m +++ b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithDictionaryTest.m @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 +#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_8_0 #import "GRMustachePublicAPITest.h" @interface GRMustacheTemplateRepositoryWithDictionaryTest : GRMustachePublicAPITest diff --git a/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithDirectoryTest.m b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithDirectoryTest.m index 1e831ca9..0021f264 100644 --- a/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithDirectoryTest.m +++ b/GRMustacheTests/Public/v8.0/GRMustacheTemplateRepositoryTest/GRMustacheTemplateRepositoryWithDirectoryTest.m @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 +#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_8_0 #import "GRMustachePublicAPITest.h" @interface GRMustacheTemplateRepositoryWithDirectory_Test : GRMustachePublicAPITest diff --git a/GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateExtendBaseContextTest.m b/GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateExtendBaseContextTest.m index 952fce6a..18c4e6f8 100644 --- a/GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateExtendBaseContextTest.m +++ b/GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateExtendBaseContextTest.m @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 +#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_8_0 #import "GRMustachePublicAPITest.h" #import "GRMustacheTestingDelegate.h" diff --git a/GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest.m b/GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest.m index 7b49adb5..87b92e8c 100644 --- a/GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest.m +++ b/GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateFromMethodsTest.m @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 +#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_8_0 #import "GRMustachePublicAPITest.h" @interface GRMustacheTemplateFromMethodsTest : GRMustachePublicAPITest diff --git a/GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest.m b/GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest.m index ecff6abb..2ee57f2c 100644 --- a/GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest.m +++ b/GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateRenderMethodsTest.m @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 +#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_8_0 #import "GRMustachePublicAPITest.h" @interface GRMustacheTemplateRenderMethodsTest : GRMustachePublicAPITest diff --git a/GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateTemplateRepositoryTest.m b/GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateTemplateRepositoryTest.m index ba5a3eca..b8f0cdea 100644 --- a/GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateTemplateRepositoryTest.m +++ b/GRMustacheTests/Public/v8.0/GRMustacheTemplateTest/GRMustacheTemplateTemplateRepositoryTest.m @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 +#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_8_0 #import "GRMustachePublicAPITest.h" @interface GRMustacheTemplateTemplateRepositoryTest : GRMustachePublicAPITest diff --git a/GRMustacheTests/Public/v8.0/Suites/groue/GRMustache/GRMustacheSuitesTest.m b/GRMustacheTests/Public/v8.0/Suites/groue/GRMustache/GRMustacheSuitesTest.m index e3bf9193..6f13aff0 100644 --- a/GRMustacheTests/Public/v8.0/Suites/groue/GRMustache/GRMustacheSuitesTest.m +++ b/GRMustacheTests/Public/v8.0/Suites/groue/GRMustache/GRMustacheSuitesTest.m @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 +#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_8_0 #import "GRMustachePublicAPITest.h" @interface GRMustacheSuitesTest : GRMustachePublicAPISuiteTest diff --git a/GRMustacheTests/Public/v8.0/Suites/mustache/spec/GRSpecificationSuitesTest.m b/GRMustacheTests/Public/v8.0/Suites/mustache/spec/GRSpecificationSuitesTest.m index 10d1ad2e..ab3310ca 100644 --- a/GRMustacheTests/Public/v8.0/Suites/mustache/spec/GRSpecificationSuitesTest.m +++ b/GRMustacheTests/Public/v8.0/Suites/mustache/spec/GRSpecificationSuitesTest.m @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 +#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_8_0 #import "GRMustachePublicAPITest.h" @interface GRSpecificationSuitesTest : GRMustachePublicAPITest diff --git a/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuitesTest.m b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuitesTest.m index 5cd383b4..6a35f5a5 100644 --- a/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuitesTest.m +++ b/GRMustacheTests/Public/v8.0/Suites/spullara/mustache.java/GRMustacheJavaSuitesTest.m @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 +#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_8_0 #import "GRMustachePublicAPITest.h" @interface GRMustacheJavaSuitesTest : GRMustachePublicAPISuiteTest diff --git a/GRMustacheTests/Public/v8.0/Suites/twitter/hogan.js/GRHoganSuitesTest.m b/GRMustacheTests/Public/v8.0/Suites/twitter/hogan.js/GRHoganSuitesTest.m index 35e8bad7..6890ad1e 100644 --- a/GRMustacheTests/Public/v8.0/Suites/twitter/hogan.js/GRHoganSuitesTest.m +++ b/GRMustacheTests/Public/v8.0/Suites/twitter/hogan.js/GRHoganSuitesTest.m @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_7_0 +#define GRMUSTACHE_VERSION_MAX_ALLOWED GRMUSTACHE_VERSION_8_0 #import "GRMustachePublicAPITest.h" @interface GRHoganSuitesTest : GRMustachePublicAPISuiteTest From 9f094a9ee585f9004936bcb0484797fdf9699364 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sun, 18 Oct 2015 14:53:39 +0200 Subject: [PATCH 65/81] TODO.md --- TODO.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/TODO.md b/TODO.md index 9c8b7d08..1b9d2d4a 100644 --- a/TODO.md +++ b/TODO.md @@ -21,5 +21,7 @@ - [?] Import "register" vocabulary from GRMustache.swift, instead of "protected objects". - [X] Dynamic partial overrides `{{# partial }}...{{/ partial }}` - [X] Check that {{ string.length }} is correctly implemented (NSObject+GRMustacheKeyValueCoding.m) and tested (https://github.com/groue/GRMustacheSpec). -- [ ] Have Filter and renderingObject APIs closer from GRMustache.swift -- [ ] Drop support for else `{{#a}}{{^a}}{{/a}}`. +- [?] Have Filter and renderingObject APIs closer from GRMustache.swift +- [?] Drop support for else `{{#a}}{{^a}}{{/a}}`. +- [ ] Have rendering engine responsible for excluded middle (truthy, or falsey, not both) +- [ ] Remove @synthesize and explicit ivars in headers \ No newline at end of file From 59c4e345343b7ee6c5906ea31b35496d6c1f0328 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sun, 18 Oct 2015 16:32:41 +0200 Subject: [PATCH 66/81] Remove @synthesize and explicit ivars in headers --- GRMustache.xcodeproj/project.pbxproj | 52 +++++++++---------- .../Expressions/GRMustacheExpression.m | 1 - .../GRMustacheExpression_private.h | 5 +- .../GRMustacheFilteredExpression.m | 3 -- .../GRMustacheFilteredExpression_private.h | 8 +-- .../GRMustacheIdentifierExpression.m | 1 - .../GRMustacheIdentifierExpression_private.h | 6 +-- .../Expressions/GRMustacheScopedExpression.m | 2 - .../GRMustacheScopedExpression_private.h | 7 +-- GRMustache/Compiling/GRMustacheCompiler.m | 14 ++--- .../Compiling/GRMustacheCompiler_private.h | 19 +------ .../Compiling/TemplateAST/GRMustacheBlock.m | 2 - .../TemplateAST/GRMustacheBlock_private.h | 6 +-- .../TemplateAST/GRMustachePartialNode.m | 2 - .../GRMustachePartialNode_private.h | 6 +-- .../GRMustachePartialOverrideNode.m | 2 - .../GRMustachePartialOverrideNode_private.h | 6 +-- .../TemplateAST/GRMustacheSectionTag.m | 15 ++---- .../GRMustacheSectionTag_private.h | 12 +---- .../Compiling/TemplateAST/GRMustacheTag.m | 17 ++++++ .../TemplateAST/GRMustacheTag_private.h | 6 ++- .../TemplateAST/GRMustacheTemplateAST.m | 2 - .../GRMustacheTemplateAST_private.h | 6 +-- .../TemplateAST/GRMustacheTextNode.m | 4 +- .../TemplateAST/GRMustacheTextNode_private.h | 5 +- .../TemplateAST/GRMustacheVariableTag.m | 14 ++--- .../GRMustacheVariableTag_private.h | 10 +--- .../Configuration/GRMustacheConfiguration.h | 9 +--- .../Configuration/GRMustacheConfiguration.m | 5 -- .../GRMustacheConfiguration_private.h | 10 +--- GRMustache/Parsing/GRMustacheTemplateParser.m | 3 -- .../GRMustacheTemplateParser_private.h | 7 +-- GRMustache/Parsing/GRMustacheToken.m | 8 --- GRMustache/Parsing/GRMustacheToken_private.h | 12 +---- GRMustache/Rendering/GRMustacheContext.h | 18 +------ GRMustache/Rendering/GRMustacheContext.m | 19 ++++--- .../Rendering/GRMustacheContext_private.h | 19 +------ .../GRMustacheExpressionInvocation.m | 4 -- .../GRMustacheExpressionInvocation_private.h | 8 +-- GRMustache/Rendering/GRMustacheFilter.m | 20 ++++--- .../Rendering/GRMustacheKeyValueCoding.h | 7 +++ GRMustache/Rendering/GRMustacheRendering.m | 9 ++-- .../Rendering/GRMustacheRenderingEngine.m | 8 ++- .../GRMustacheRenderingEngine_private.h | 11 +--- .../Services/GRMustacheExpressionGenerator.m | 4 +- .../GRMustacheExpressionGenerator_private.h | 7 +-- .../Services/GRMustacheTemplateGenerator.m | 6 ++- .../GRMustacheTemplateGenerator_private.h | 9 +--- .../StandardLibrary/GRMustacheLocalizer.h | 7 +-- .../StandardLibrary/GRMustacheLocalizer.m | 3 -- GRMustache/Templates/GRMustacheTemplate.h | 7 +-- GRMustache/Templates/GRMustacheTemplate.m | 3 -- .../Templates/GRMustacheTemplateRepository.h | 7 +-- .../Templates/GRMustacheTemplateRepository.m | 45 ++++++++-------- .../GRMustacheTemplateRepository_private.h | 7 +-- .../Templates/GRMustacheTemplate_private.h | 7 +-- README.md | 46 ++++++++++++++-- TODO.md | 4 +- 58 files changed, 203 insertions(+), 369 deletions(-) diff --git a/GRMustache.xcodeproj/project.pbxproj b/GRMustache.xcodeproj/project.pbxproj index 1e95337e..205a002d 100644 --- a/GRMustache.xcodeproj/project.pbxproj +++ b/GRMustache.xcodeproj/project.pbxproj @@ -948,12 +948,12 @@ 56BF366019B8EE8B00854524 /* Parsing */ = { isa = PBXGroup; children = ( - 56BF366119B8EE8B00854524 /* GRMustacheExpressionParser.m */, 56BF366219B8EE8B00854524 /* GRMustacheExpressionParser_private.h */, - 56BF366319B8EE8B00854524 /* GRMustacheTemplateParser.m */, + 56BF366119B8EE8B00854524 /* GRMustacheExpressionParser.m */, 56BF366419B8EE8B00854524 /* GRMustacheTemplateParser_private.h */, - 56BF366519B8EE8B00854524 /* GRMustacheToken.m */, + 56BF366319B8EE8B00854524 /* GRMustacheTemplateParser.m */, 56BF366619B8EE8B00854524 /* GRMustacheToken_private.h */, + 56BF366519B8EE8B00854524 /* GRMustacheToken.m */, ); path = Parsing; sourceTree = ""; @@ -961,8 +961,8 @@ 56BF367319B8EE9D00854524 /* Compiling */ = { isa = PBXGroup; children = ( - 56BF368019B8EE9D00854524 /* GRMustacheCompiler.m */, 56BF368119B8EE9D00854524 /* GRMustacheCompiler_private.h */, + 56BF368019B8EE9D00854524 /* GRMustacheCompiler.m */, 56BF367419B8EE9D00854524 /* Expressions */, 56BF368219B8EE9D00854524 /* TemplateAST */, ); @@ -972,17 +972,17 @@ 56BF367419B8EE9D00854524 /* Expressions */ = { isa = PBXGroup; children = ( - 56BF367519B8EE9D00854524 /* GRMustacheExpression.m */, 56BF367619B8EE9D00854524 /* GRMustacheExpression_private.h */, + 56BF367519B8EE9D00854524 /* GRMustacheExpression.m */, 56BF367719B8EE9D00854524 /* GRMustacheExpressionVisitor_private.h */, - 56BF367819B8EE9D00854524 /* GRMustacheFilteredExpression.m */, 56BF367919B8EE9D00854524 /* GRMustacheFilteredExpression_private.h */, - 56BF367A19B8EE9D00854524 /* GRMustacheIdentifierExpression.m */, + 56BF367819B8EE9D00854524 /* GRMustacheFilteredExpression.m */, 56BF367B19B8EE9D00854524 /* GRMustacheIdentifierExpression_private.h */, - 56BF367C19B8EE9D00854524 /* GRMustacheImplicitIteratorExpression.m */, + 56BF367A19B8EE9D00854524 /* GRMustacheIdentifierExpression.m */, 56BF367D19B8EE9D00854524 /* GRMustacheImplicitIteratorExpression_private.h */, - 56BF367E19B8EE9D00854524 /* GRMustacheScopedExpression.m */, + 56BF367C19B8EE9D00854524 /* GRMustacheImplicitIteratorExpression.m */, 56BF367F19B8EE9D00854524 /* GRMustacheScopedExpression_private.h */, + 56BF367E19B8EE9D00854524 /* GRMustacheScopedExpression.m */, ); path = Expressions; sourceTree = ""; @@ -1016,23 +1016,23 @@ 56BF36D619B8EEAD00854524 /* Rendering */ = { isa = PBXGroup; children = ( + 56BF36D919B8EEAD00854524 /* GRMustacheContext_private.h */, 56BF36D719B8EEAD00854524 /* GRMustacheContext.h */, 56BF36D819B8EEAD00854524 /* GRMustacheContext.m */, - 56BF36D919B8EEAD00854524 /* GRMustacheContext_private.h */, - 56BF36DA19B8EEAD00854524 /* GRMustacheExpressionInvocation.m */, 56BF36DB19B8EEAD00854524 /* GRMustacheExpressionInvocation_private.h */, + 56BF36DA19B8EEAD00854524 /* GRMustacheExpressionInvocation.m */, + 56BF36DE19B8EEAD00854524 /* GRMustacheFilter_private.h */, 56BF36DC19B8EEAD00854524 /* GRMustacheFilter.h */, 56BF36DD19B8EEAD00854524 /* GRMustacheFilter.m */, - 56BF36DE19B8EEAD00854524 /* GRMustacheFilter_private.h */, - 56BF36DF19B8EEAE00854524 /* GRMustacheKeyAccess.m */, 56BF36E019B8EEAE00854524 /* GRMustacheKeyAccess_private.h */, + 56BF36DF19B8EEAE00854524 /* GRMustacheKeyAccess.m */, + 56DAC7A21BB6C8DD0010FE01 /* GRMustacheKeyValueCoding.h */, + 56BF36E319B8EEAE00854524 /* GRMustacheRendering_private.h */, 56BF36E119B8EEAE00854524 /* GRMustacheRendering.h */, 56BF36E219B8EEAE00854524 /* GRMustacheRendering.m */, - 56BF36E319B8EEAE00854524 /* GRMustacheRendering_private.h */, - 56BF36E419B8EEAE00854524 /* GRMustacheRenderingEngine.m */, 56BF36E519B8EEAE00854524 /* GRMustacheRenderingEngine_private.h */, + 56BF36E419B8EEAE00854524 /* GRMustacheRenderingEngine.m */, 56BF36E719B8EEAE00854524 /* GRMustacheTagDelegate.h */, - 56DAC7A21BB6C8DD0010FE01 /* GRMustacheKeyValueCoding.h */, 56DAC7AA1BB6C9040010FE01 /* NSObject+GRMustacheKeyValueCoding_private.h */, 56DAC7AB1BB6C9040010FE01 /* NSObject+GRMustacheKeyValueCoding.m */, ); @@ -1042,12 +1042,12 @@ 56BF370A19B8EEB900854524 /* Templates */ = { isa = PBXGroup; children = ( + 56BF370D19B8EEB900854524 /* GRMustacheTemplate_private.h */, 56BF370B19B8EEB900854524 /* GRMustacheTemplate.h */, 56BF370C19B8EEB900854524 /* GRMustacheTemplate.m */, - 56BF370D19B8EEB900854524 /* GRMustacheTemplate_private.h */, + 56BF371019B8EEB900854524 /* GRMustacheTemplateRepository_private.h */, 56BF370E19B8EEB900854524 /* GRMustacheTemplateRepository.h */, 56BF370F19B8EEB900854524 /* GRMustacheTemplateRepository.m */, - 56BF371019B8EEB900854524 /* GRMustacheTemplateRepository_private.h */, ); path = Templates; sourceTree = ""; @@ -1055,10 +1055,10 @@ 56BF371D19B8EEC700854524 /* Services */ = { isa = PBXGroup; children = ( - 56B01A4B19C49AF5000439C7 /* GRMustacheExpressionGenerator.m */, 56B01A4A19C49AF5000439C7 /* GRMustacheExpressionGenerator_private.h */, - 56BF371E19B8EEC700854524 /* GRMustacheTemplateGenerator.m */, + 56B01A4B19C49AF5000439C7 /* GRMustacheExpressionGenerator.m */, 56BF371F19B8EEC700854524 /* GRMustacheTemplateGenerator_private.h */, + 56BF371E19B8EEC700854524 /* GRMustacheTemplateGenerator.m */, 56BF372019B8EEC700854524 /* NSFormatter+GRMustache.h */, 56BF372119B8EEC700854524 /* NSFormatter+GRMustache.m */, 56BF372219B8EEC700854524 /* NSValueTransformer+GRMustache.h */, @@ -1071,16 +1071,16 @@ 56BF372419B8EEC700854524 /* StandardLibrary */ = { isa = PBXGroup; children = ( - 56BF372519B8EEC700854524 /* GRMustacheEachFilter.m */, 56BF372619B8EEC700854524 /* GRMustacheEachFilter_private.h */, - 56BF372719B8EEC700854524 /* GRMustacheHTMLEscapeFilter.m */, + 56BF372519B8EEC700854524 /* GRMustacheEachFilter.m */, 56BF372819B8EEC700854524 /* GRMustacheHTMLEscapeFilter_private.h */, - 56BF372919B8EEC700854524 /* GRMustacheJavascriptEscapeFilter.m */, + 56BF372719B8EEC700854524 /* GRMustacheHTMLEscapeFilter.m */, 56BF372A19B8EEC700854524 /* GRMustacheJavascriptEscapeFilter_private.h */, + 56BF372919B8EEC700854524 /* GRMustacheJavascriptEscapeFilter.m */, 56BF372B19B8EEC700854524 /* GRMustacheLocalizer.h */, 56BF372C19B8EEC700854524 /* GRMustacheLocalizer.m */, - 56BF372F19B8EEC700854524 /* GRMustacheURLEscapeFilter.m */, 56BF373019B8EEC700854524 /* GRMustacheURLEscapeFilter_private.h */, + 56BF372F19B8EEC700854524 /* GRMustacheURLEscapeFilter.m */, ); path = StandardLibrary; sourceTree = ""; @@ -1088,14 +1088,14 @@ 56BF375519B8EF2800854524 /* Shared */ = { isa = PBXGroup; children = ( - 56BF375619B8EF2800854524 /* GRMustacheAvailabilityMacros.h */, 56BF375719B8EF2800854524 /* GRMustacheAvailabilityMacros_private.h */, + 56BF375619B8EF2800854524 /* GRMustacheAvailabilityMacros.h */, 56BF375819B8EF2800854524 /* GRMustacheBuffer_private.h */, 56BF375919B8EF2800854524 /* GRMustacheContentType.h */, 56BF375A19B8EF2800854524 /* GRMustacheError.h */, 56BF375B19B8EF2800854524 /* GRMustacheError.m */, - 56BF375C19B8EF2800854524 /* GRMustacheTranslateCharacters.m */, 56BF375D19B8EF2800854524 /* GRMustacheTranslateCharacters_private.h */, + 56BF375C19B8EF2800854524 /* GRMustacheTranslateCharacters.m */, ); path = Shared; sourceTree = ""; diff --git a/GRMustache/Compiling/Expressions/GRMustacheExpression.m b/GRMustache/Compiling/Expressions/GRMustacheExpression.m index 67470d53..b758e261 100644 --- a/GRMustache/Compiling/Expressions/GRMustacheExpression.m +++ b/GRMustache/Compiling/Expressions/GRMustacheExpression.m @@ -23,7 +23,6 @@ #import "GRMustacheExpression_private.h" @implementation GRMustacheExpression -@synthesize token=_token; - (void)dealloc { diff --git a/GRMustache/Compiling/Expressions/GRMustacheExpression_private.h b/GRMustache/Compiling/Expressions/GRMustacheExpression_private.h index b10ddb97..7634e782 100644 --- a/GRMustache/Compiling/Expressions/GRMustacheExpression_private.h +++ b/GRMustache/Compiling/Expressions/GRMustacheExpression_private.h @@ -30,10 +30,7 @@ * The GRMustacheExpression is the base class for objects that represent * Mustache expression such as `name`, `uppercase(name)`, or `user.name`. */ -@interface GRMustacheExpression : NSObject { -@private - GRMustacheToken *_token; -} +@interface GRMustacheExpression : NSObject /** * This property stores a token whose sole purpose is to help the library user diff --git a/GRMustache/Compiling/Expressions/GRMustacheFilteredExpression.m b/GRMustache/Compiling/Expressions/GRMustacheFilteredExpression.m index abbbc627..ba2e40a3 100644 --- a/GRMustache/Compiling/Expressions/GRMustacheFilteredExpression.m +++ b/GRMustache/Compiling/Expressions/GRMustacheFilteredExpression.m @@ -25,9 +25,6 @@ #import "GRMustacheExpressionVisitor_private.h" @implementation GRMustacheFilteredExpression -@synthesize filterExpression=_filterExpression; -@synthesize argumentExpression=_argumentExpression; -@synthesize curried=_curried; + (instancetype)expressionWithFilterExpression:(GRMustacheExpression *)filterExpression argumentExpression:(GRMustacheExpression *)argumentExpression curried:(BOOL)curried { diff --git a/GRMustache/Compiling/Expressions/GRMustacheFilteredExpression_private.h b/GRMustache/Compiling/Expressions/GRMustacheFilteredExpression_private.h index 1b2f8e51..5152e79b 100644 --- a/GRMustache/Compiling/Expressions/GRMustacheFilteredExpression_private.h +++ b/GRMustache/Compiling/Expressions/GRMustacheFilteredExpression_private.h @@ -26,13 +26,7 @@ * The GRMustacheFilteredExpression represents expressions such as * `()`. */ -@interface GRMustacheFilteredExpression : GRMustacheExpression { -@private - GRMustacheExpression *_filterExpression; - GRMustacheExpression *_argumentExpression; - BOOL _curried; -} - +@interface GRMustacheFilteredExpression : GRMustacheExpression @property (nonatomic, retain, readonly) GRMustacheExpression *filterExpression GRMUSTACHE_API_INTERNAL; @property (nonatomic, retain, readonly) GRMustacheExpression *argumentExpression GRMUSTACHE_API_INTERNAL; @property (nonatomic, getter=isCurried, readonly) BOOL curried GRMUSTACHE_API_INTERNAL; diff --git a/GRMustache/Compiling/Expressions/GRMustacheIdentifierExpression.m b/GRMustache/Compiling/Expressions/GRMustacheIdentifierExpression.m index 43055b6c..93e9c50e 100644 --- a/GRMustache/Compiling/Expressions/GRMustacheIdentifierExpression.m +++ b/GRMustache/Compiling/Expressions/GRMustacheIdentifierExpression.m @@ -24,7 +24,6 @@ #import "GRMustacheExpressionVisitor_private.h" @implementation GRMustacheIdentifierExpression -@synthesize identifier=_identifier; + (instancetype)expressionWithIdentifier:(NSString *)identifier { diff --git a/GRMustache/Compiling/Expressions/GRMustacheIdentifierExpression_private.h b/GRMustache/Compiling/Expressions/GRMustacheIdentifierExpression_private.h index a72831cd..3d8d36f7 100644 --- a/GRMustache/Compiling/Expressions/GRMustacheIdentifierExpression_private.h +++ b/GRMustache/Compiling/Expressions/GRMustacheIdentifierExpression_private.h @@ -26,11 +26,7 @@ * The GRMustacheIdentifierExpression represents expressions such as * `identifier`. */ -@interface GRMustacheIdentifierExpression : GRMustacheExpression { -@private - NSString *_identifier; -} - +@interface GRMustacheIdentifierExpression : GRMustacheExpression @property (nonatomic, retain, readonly) NSString *identifier GRMUSTACHE_API_INTERNAL; /** diff --git a/GRMustache/Compiling/Expressions/GRMustacheScopedExpression.m b/GRMustache/Compiling/Expressions/GRMustacheScopedExpression.m index 204d415e..08f3aaee 100644 --- a/GRMustache/Compiling/Expressions/GRMustacheScopedExpression.m +++ b/GRMustache/Compiling/Expressions/GRMustacheScopedExpression.m @@ -25,8 +25,6 @@ @implementation GRMustacheScopedExpression -@synthesize baseExpression=_baseExpression; -@synthesize identifier=_identifier; + (instancetype)expressionWithBaseExpression:(GRMustacheExpression *)baseExpression identifier:(NSString *)identifier { diff --git a/GRMustache/Compiling/Expressions/GRMustacheScopedExpression_private.h b/GRMustache/Compiling/Expressions/GRMustacheScopedExpression_private.h index 282c5566..7bc25ecf 100644 --- a/GRMustache/Compiling/Expressions/GRMustacheScopedExpression_private.h +++ b/GRMustache/Compiling/Expressions/GRMustacheScopedExpression_private.h @@ -26,12 +26,7 @@ * The GRMustacheScopedExpression represents expressions such as * `.identifier`. */ -@interface GRMustacheScopedExpression : GRMustacheExpression { -@private - GRMustacheExpression *_baseExpression; - NSString *_identifier; -} - +@interface GRMustacheScopedExpression : GRMustacheExpression @property (nonatomic, retain, readonly) GRMustacheExpression *baseExpression GRMUSTACHE_API_INTERNAL; @property (nonatomic, retain, readonly) NSString *identifier GRMUSTACHE_API_INTERNAL; diff --git a/GRMustache/Compiling/GRMustacheCompiler.m b/GRMustache/Compiling/GRMustacheCompiler.m index e7d4e998..b0c239ef 100644 --- a/GRMustache/Compiling/GRMustacheCompiler.m +++ b/GRMustache/Compiling/GRMustacheCompiler.m @@ -111,16 +111,10 @@ @interface GRMustacheCompiler() @end -@implementation GRMustacheCompiler -@synthesize fatalError=_fatalError; -@synthesize templateRepository=_templateRepository; -@synthesize baseTemplateID=_baseTemplateID; -@synthesize currentOpeningToken=_currentOpeningToken; -@synthesize openingTokenStack=_openingTokenStack; -@synthesize currentTagValue=_currentTagValue; -@synthesize tagValueStack=_tagValueStack; -@synthesize currentASTNodes=_currentASTNodes; -@synthesize ASTNodesStack=_ASTNodesStack; +@implementation GRMustacheCompiler { + GRMustacheContentType _contentType; + BOOL _contentTypeLocked; +} - (instancetype)initWithContentType:(GRMustacheContentType)contentType { diff --git a/GRMustache/Compiling/GRMustacheCompiler_private.h b/GRMustache/Compiling/GRMustacheCompiler_private.h index 60133c31..50f408f0 100644 --- a/GRMustache/Compiling/GRMustacheCompiler_private.h +++ b/GRMustache/Compiling/GRMustacheCompiler_private.h @@ -37,24 +37,7 @@ * @see GRMustacheToken * @see GRMustacheTemplateParser */ -@interface GRMustacheCompiler : NSObject { -@private - NSError *_fatalError; - - NSMutableArray *_currentASTNodes; - NSMutableArray *_ASTNodesStack; - - GRMustacheToken *_currentOpeningToken; - NSMutableArray *_openingTokenStack; - - NSObject *_currentTagValue; - NSMutableArray *_tagValueStack; - - GRMustacheTemplateRepository *_templateRepository; - id _baseTemplateID; - GRMustacheContentType _contentType; - BOOL _contentTypeLocked; -} +@interface GRMustacheCompiler : NSObject /** * The template repository that provides partial templates to the compiler. diff --git a/GRMustache/Compiling/TemplateAST/GRMustacheBlock.m b/GRMustache/Compiling/TemplateAST/GRMustacheBlock.m index 396f9b44..6ba1dd12 100644 --- a/GRMustache/Compiling/TemplateAST/GRMustacheBlock.m +++ b/GRMustache/Compiling/TemplateAST/GRMustacheBlock.m @@ -24,8 +24,6 @@ #import "GRMustacheTemplateASTVisitor_private.h" @implementation GRMustacheBlock -@synthesize name=_name; -@synthesize innerTemplateAST=_innerTemplateAST; + (instancetype)blockWithName:(NSString *)name innerTemplateAST:(GRMustacheTemplateAST *)innerTemplateAST { diff --git a/GRMustache/Compiling/TemplateAST/GRMustacheBlock_private.h b/GRMustache/Compiling/TemplateAST/GRMustacheBlock_private.h index e7d33823..269eebd5 100644 --- a/GRMustache/Compiling/TemplateAST/GRMustacheBlock_private.h +++ b/GRMustache/Compiling/TemplateAST/GRMustacheBlock_private.h @@ -30,11 +30,7 @@ * A GRMustacheBlock is an AST node that represents blocks such * as `{{$name}}...{{/name}}`. */ -@interface GRMustacheBlock : NSObject { -@private - NSString *_name; - GRMustacheTemplateAST *_innerTemplateAST; -} +@interface GRMustacheBlock : NSObject /** * The AST of the inner content of the block diff --git a/GRMustache/Compiling/TemplateAST/GRMustachePartialNode.m b/GRMustache/Compiling/TemplateAST/GRMustachePartialNode.m index 94bfb32f..621660e3 100644 --- a/GRMustache/Compiling/TemplateAST/GRMustachePartialNode.m +++ b/GRMustache/Compiling/TemplateAST/GRMustachePartialNode.m @@ -26,8 +26,6 @@ @implementation GRMustachePartialNode -@synthesize templateAST=_templateAST; -@synthesize name=_name; - (void)dealloc { diff --git a/GRMustache/Compiling/TemplateAST/GRMustachePartialNode_private.h b/GRMustache/Compiling/TemplateAST/GRMustachePartialNode_private.h index 7cff6cb5..47bde5f1 100644 --- a/GRMustache/Compiling/TemplateAST/GRMustachePartialNode_private.h +++ b/GRMustache/Compiling/TemplateAST/GRMustachePartialNode_private.h @@ -29,11 +29,7 @@ * A GRMustachePartialNode is an AST node that represents partial tags as * `{{>name}}`. */ -@interface GRMustachePartialNode : NSObject { -@private - NSString *_name; - GRMustacheTemplateAST *_templateAST; -} +@interface GRMustachePartialNode : NSObject /** * The name of the partial: diff --git a/GRMustache/Compiling/TemplateAST/GRMustachePartialOverrideNode.m b/GRMustache/Compiling/TemplateAST/GRMustachePartialOverrideNode.m index a2a8828c..6cbe3abb 100644 --- a/GRMustache/Compiling/TemplateAST/GRMustachePartialOverrideNode.m +++ b/GRMustache/Compiling/TemplateAST/GRMustachePartialOverrideNode.m @@ -26,8 +26,6 @@ #import "GRMustacheTemplateASTVisitor_private.h" @implementation GRMustachePartialOverrideNode -@synthesize overridingTemplateAST=_overridingTemplateAST; -@synthesize parentPartialNode=_parentPartialNode; + (instancetype)partialOverrideNodeWithParentPartialNode:(GRMustachePartialNode *)parentPartialNode overridingTemplateAST:(GRMustacheTemplateAST *)overridingTemplateAST { diff --git a/GRMustache/Compiling/TemplateAST/GRMustachePartialOverrideNode_private.h b/GRMustache/Compiling/TemplateAST/GRMustachePartialOverrideNode_private.h index 1d0d1792..b51c3791 100644 --- a/GRMustache/Compiling/TemplateAST/GRMustachePartialOverrideNode_private.h +++ b/GRMustache/Compiling/TemplateAST/GRMustachePartialOverrideNode_private.h @@ -31,11 +31,7 @@ * A GRMustachePartialOverrideNode is an AST node that represents inherited * partials as `{{ { -@private - GRMustachePartialNode *_parentPartialNode; - GRMustacheTemplateAST *_overridingTemplateAST; -} +@interface GRMustachePartialOverrideNode : NSObject /** * The overriding AST, built from the inner content of the overriding partial: diff --git a/GRMustache/Compiling/TemplateAST/GRMustacheSectionTag.m b/GRMustache/Compiling/TemplateAST/GRMustacheSectionTag.m index ee68ab48..6ebb2f9a 100644 --- a/GRMustache/Compiling/TemplateAST/GRMustacheSectionTag.m +++ b/GRMustache/Compiling/TemplateAST/GRMustacheSectionTag.m @@ -26,20 +26,17 @@ #import "GRMustacheTemplateAST_private.h" #import "GRMustacheRenderingEngine_private.h" -@implementation GRMustacheSectionTag -@synthesize expression=_expression; -@synthesize innerTemplateAST=_innerTemplateAST; +@implementation GRMustacheSectionTag { + NSString *_templateString; + NSRange _innerRange; +} @synthesize inverted=_inverted; -@synthesize tagStartDelimiter=_tagStartDelimiter; -@synthesize tagEndDelimiter=_tagEndDelimiter; - (void)dealloc { [_expression release]; [_templateString release]; [_innerTemplateAST release]; - [_tagStartDelimiter release]; - [_tagEndDelimiter release]; [super dealloc]; } @@ -90,15 +87,13 @@ - (BOOL)acceptTemplateASTVisitor:(id)visitor error - (instancetype)initWithExpression:(GRMustacheExpression *)expression inverted:(BOOL)inverted templateString:(NSString *)templateString innerRange:(NSRange)innerRange innerTemplateAST:(GRMustacheTemplateAST *)innerTemplateAST tagStartDelimiter:(NSString *)tagStartDelimiter tagEndDelimiter:(NSString *)tagEndDelimiter { - self = [super init]; + self = [super initWithTagStartDelimiter:tagStartDelimiter tagEndDelimiter:tagEndDelimiter]; if (self) { _expression = [expression retain]; _inverted = inverted; _templateString = [templateString retain]; _innerRange = innerRange; _innerTemplateAST = [innerTemplateAST retain]; - _tagStartDelimiter = [tagStartDelimiter retain]; - _tagEndDelimiter = [tagEndDelimiter retain]; } return self; } diff --git a/GRMustache/Compiling/TemplateAST/GRMustacheSectionTag_private.h b/GRMustache/Compiling/TemplateAST/GRMustacheSectionTag_private.h index ff234b44..8f2fc2cd 100644 --- a/GRMustache/Compiling/TemplateAST/GRMustacheSectionTag_private.h +++ b/GRMustache/Compiling/TemplateAST/GRMustacheSectionTag_private.h @@ -27,17 +27,7 @@ @class GRMustacheExpression; @class GRMustacheTemplateAST; -@interface GRMustacheSectionTag : GRMustacheTag { -@private - GRMustacheExpression *_expression; - BOOL _inverted; - NSString *_templateString; - NSRange _innerRange; - GRMustacheTemplateAST *_innerTemplateAST; - NSString *_tagStartDelimiter; - NSString *_tagEndDelimiter; -} - +@interface GRMustacheSectionTag : GRMustacheTag @property (nonatomic, retain, readonly) GRMustacheExpression *expression GRMUSTACHE_API_INTERNAL; @property (nonatomic, retain, readonly) GRMustacheTemplateAST *innerTemplateAST GRMUSTACHE_API_INTERNAL; diff --git a/GRMustache/Compiling/TemplateAST/GRMustacheTag.m b/GRMustache/Compiling/TemplateAST/GRMustacheTag.m index 838e8ed7..08a03c06 100644 --- a/GRMustache/Compiling/TemplateAST/GRMustacheTag.m +++ b/GRMustache/Compiling/TemplateAST/GRMustacheTag.m @@ -26,6 +26,23 @@ @implementation GRMustacheTag +- (instancetype)initWithTagStartDelimiter:(NSString *)tagStartDelimiter tagEndDelimiter:(NSString *)tagEndDelimiter +{ + self = [super init]; + if (self) { + _tagStartDelimiter = [tagStartDelimiter retain]; + _tagEndDelimiter = [tagEndDelimiter retain]; + } + return self; +} + +- (void)dealloc +{ + [_tagStartDelimiter release]; + [_tagEndDelimiter release]; + [super dealloc]; +} + - (GRMustacheTagType)type { [self doesNotRecognizeSelector:_cmd]; diff --git a/GRMustache/Compiling/TemplateAST/GRMustacheTag_private.h b/GRMustache/Compiling/TemplateAST/GRMustacheTag_private.h index a581793a..fab6dc82 100644 --- a/GRMustache/Compiling/TemplateAST/GRMustacheTag_private.h +++ b/GRMustache/Compiling/TemplateAST/GRMustacheTag_private.h @@ -43,10 +43,10 @@ typedef NS_ENUM(NSUInteger, GRMustacheTagType) { @property (nonatomic, readonly) NSString *innerTemplateString GRMUSTACHE_API_PUBLIC; // Documented in GRMustacheTag.h -@property (nonatomic, readonly, retain) NSString *tagStartDelimiter GRMUSTACHE_API_PUBLIC; +@property (nonatomic, retain) NSString *tagStartDelimiter GRMUSTACHE_API_PUBLIC; // Documented in GRMustacheTag.h -@property (nonatomic, readonly, retain) NSString *tagEndDelimiter GRMUSTACHE_API_PUBLIC; +@property (nonatomic, retain) NSString *tagEndDelimiter GRMUSTACHE_API_PUBLIC; // Documented in GRMustacheTag.h - (NSString *)renderContentWithContext:(GRMustacheContext *)context HTMLSafe:(BOOL *)HTMLSafe error:(NSError **)error GRMUSTACHE_API_PUBLIC; @@ -56,4 +56,6 @@ typedef NS_ENUM(NSUInteger, GRMustacheTagType) { */ @property (nonatomic, readonly, getter=isInverted) BOOL inverted GRMUSTACHE_API_INTERNAL; +- (instancetype)initWithTagStartDelimiter:(NSString *)tagStartDelimiter tagEndDelimiter:(NSString *)tagEndDelimiter GRMUSTACHE_API_INTERNAL; + @end diff --git a/GRMustache/Compiling/TemplateAST/GRMustacheTemplateAST.m b/GRMustache/Compiling/TemplateAST/GRMustacheTemplateAST.m index 5904da44..8ee0a3fa 100644 --- a/GRMustache/Compiling/TemplateAST/GRMustacheTemplateAST.m +++ b/GRMustache/Compiling/TemplateAST/GRMustacheTemplateAST.m @@ -25,8 +25,6 @@ #import "GRMustacheTemplateASTVisitor_private.h" @implementation GRMustacheTemplateAST -@synthesize templateASTNodes=_templateASTNodes; -@synthesize contentType=_contentType; - (void)dealloc { diff --git a/GRMustache/Compiling/TemplateAST/GRMustacheTemplateAST_private.h b/GRMustache/Compiling/TemplateAST/GRMustacheTemplateAST_private.h index 010f94ae..e0f80085 100644 --- a/GRMustache/Compiling/TemplateAST/GRMustacheTemplateAST_private.h +++ b/GRMustache/Compiling/TemplateAST/GRMustacheTemplateAST_private.h @@ -29,11 +29,7 @@ /** * The GRMustacheTemplateAST represents the abstract syntax tree of a template. */ -@interface GRMustacheTemplateAST : NSObject { -@private - NSArray *_templateASTNodes; - GRMustacheContentType _contentType; -} +@interface GRMustacheTemplateAST : NSObject /** * An NSArray containing instances diff --git a/GRMustache/Compiling/TemplateAST/GRMustacheTextNode.m b/GRMustache/Compiling/TemplateAST/GRMustacheTextNode.m index 52a0a363..d45427f6 100644 --- a/GRMustache/Compiling/TemplateAST/GRMustacheTextNode.m +++ b/GRMustache/Compiling/TemplateAST/GRMustacheTextNode.m @@ -23,7 +23,9 @@ #import "GRMustacheTextNode_private.h" #import "GRMustacheTemplateASTVisitor_private.h" -@implementation GRMustacheTextNode +@implementation GRMustacheTextNode { + NSString *_text; +} + (instancetype)textNodeWithText:(NSString *)text { diff --git a/GRMustache/Compiling/TemplateAST/GRMustacheTextNode_private.h b/GRMustache/Compiling/TemplateAST/GRMustacheTextNode_private.h index 7b226a58..2069c4e2 100644 --- a/GRMustache/Compiling/TemplateAST/GRMustacheTextNode_private.h +++ b/GRMustache/Compiling/TemplateAST/GRMustacheTextNode_private.h @@ -27,10 +27,7 @@ /** * A GRMustacheTextNode is an AST node that represents raw text. */ -@interface GRMustacheTextNode: NSObject { -@private - NSString *_text; -} +@interface GRMustacheTextNode: NSObject /** * The text of the text node. diff --git a/GRMustache/Compiling/TemplateAST/GRMustacheVariableTag.m b/GRMustache/Compiling/TemplateAST/GRMustacheVariableTag.m index 6073ba7c..3b47909c 100644 --- a/GRMustache/Compiling/TemplateAST/GRMustacheVariableTag.m +++ b/GRMustache/Compiling/TemplateAST/GRMustacheVariableTag.m @@ -24,17 +24,13 @@ #import "GRMustacheExpression_private.h" #import "GRMustacheToken_private.h" -@implementation GRMustacheVariableTag -@synthesize expression=_expression; -@synthesize escapesHTML=_escapesHTML; -@synthesize tagStartDelimiter=_tagStartDelimiter; -@synthesize tagEndDelimiter=_tagEndDelimiter; +@implementation GRMustacheVariableTag { + GRMustacheContentType _contentType; +} - (void)dealloc { [_expression release]; - [_tagStartDelimiter release]; - [_tagEndDelimiter release]; [super dealloc]; } @@ -92,13 +88,11 @@ - (BOOL)acceptTemplateASTVisitor:(id)visitor error - (instancetype)initWithExpression:(GRMustacheExpression *)expression escapesHTML:(BOOL)escapesHTML contentType:(GRMustacheContentType)contentType tagStartDelimiter:(NSString *)tagStartDelimiter tagEndDelimiter:(NSString *)tagEndDelimiter { - self = [super init]; + self = [super initWithTagStartDelimiter:tagStartDelimiter tagEndDelimiter:tagEndDelimiter]; if (self) { _expression = [expression retain]; _escapesHTML = escapesHTML; _contentType = contentType; - _tagStartDelimiter = [tagStartDelimiter retain]; - _tagEndDelimiter = [tagEndDelimiter retain]; } return self; } diff --git a/GRMustache/Compiling/TemplateAST/GRMustacheVariableTag_private.h b/GRMustache/Compiling/TemplateAST/GRMustacheVariableTag_private.h index 4849b456..1713bb9e 100644 --- a/GRMustache/Compiling/TemplateAST/GRMustacheVariableTag_private.h +++ b/GRMustache/Compiling/TemplateAST/GRMustacheVariableTag_private.h @@ -26,15 +26,7 @@ @class GRMustacheExpression; -@interface GRMustacheVariableTag : GRMustacheTag { -@private - GRMustacheExpression *_expression; - BOOL _escapesHTML; - GRMustacheContentType _contentType; - NSString *_tagStartDelimiter; - NSString *_tagEndDelimiter; -} - +@interface GRMustacheVariableTag : GRMustacheTag @property (nonatomic, retain, readonly) GRMustacheExpression *expression GRMUSTACHE_API_INTERNAL; @property (nonatomic, readonly) BOOL escapesHTML GRMUSTACHE_API_INTERNAL; diff --git a/GRMustache/Configuration/GRMustacheConfiguration.h b/GRMustache/Configuration/GRMustacheConfiguration.h index d86587e8..4ddc2487 100644 --- a/GRMustache/Configuration/GRMustacheConfiguration.h +++ b/GRMustache/Configuration/GRMustacheConfiguration.h @@ -75,14 +75,7 @@ * * @since v6.2 */ -@interface GRMustacheConfiguration : NSObject { -@private - GRMustacheContentType _contentType; - NSString *_tagStartDelimiter; - NSString *_tagEndDelimiter; - GRMustacheContext *_baseContext; - BOOL _locked; -} +@interface GRMustacheConfiguration : NSObject //////////////////////////////////////////////////////////////////////////////// diff --git a/GRMustache/Configuration/GRMustacheConfiguration.m b/GRMustache/Configuration/GRMustacheConfiguration.m index 085cb38c..5e34501e 100644 --- a/GRMustache/Configuration/GRMustacheConfiguration.m +++ b/GRMustache/Configuration/GRMustacheConfiguration.m @@ -25,11 +25,6 @@ #import "GRMustacheContext_private.h" @implementation GRMustacheConfiguration -@synthesize contentType=_contentType; -@synthesize tagStartDelimiter=_tagStartDelimiter; -@synthesize tagEndDelimiter=_tagEndDelimiter; -@synthesize baseContext=_baseContext; -@synthesize locked=_locked; + (GRMustacheConfiguration *)defaultConfiguration { diff --git a/GRMustache/Configuration/GRMustacheConfiguration_private.h b/GRMustache/Configuration/GRMustacheConfiguration_private.h index 234e0ab8..423d1e49 100644 --- a/GRMustache/Configuration/GRMustacheConfiguration_private.h +++ b/GRMustache/Configuration/GRMustacheConfiguration_private.h @@ -28,15 +28,7 @@ @protocol GRMustacheTagDelegate; // Documented in GRMustacheConfiguration.h -@interface GRMustacheConfiguration : NSObject { -@private - GRMustacheContentType _contentType; - NSString *_tagStartDelimiter; - NSString *_tagEndDelimiter; - GRMustacheContext *_baseContext; - BOOL _locked; -} - +@interface GRMustacheConfiguration : NSObject // Documented in GRMustacheConfiguration.h + (GRMustacheConfiguration *)defaultConfiguration GRMUSTACHE_API_PUBLIC; diff --git a/GRMustache/Parsing/GRMustacheTemplateParser.m b/GRMustache/Parsing/GRMustacheTemplateParser.m index b8bdc346..b6ecdd57 100644 --- a/GRMustache/Parsing/GRMustacheTemplateParser.m +++ b/GRMustache/Parsing/GRMustacheTemplateParser.m @@ -40,9 +40,6 @@ @interface GRMustacheTemplateParser() @end @implementation GRMustacheTemplateParser -@synthesize delegate=_delegate; -@synthesize tagStartDelimiter=_tagStartDelimiter; -@synthesize tagEndDelimiter=_tagEndDelimiter; - (instancetype)initWithConfiguration:(GRMustacheConfiguration *)configuration { diff --git a/GRMustache/Parsing/GRMustacheTemplateParser_private.h b/GRMustache/Parsing/GRMustacheTemplateParser_private.h index db43395a..45ff1466 100644 --- a/GRMustache/Parsing/GRMustacheTemplateParser_private.h +++ b/GRMustache/Parsing/GRMustacheTemplateParser_private.h @@ -76,12 +76,7 @@ * @see GRMustacheToken * @see GRMustacheTemplateParserDelegate */ -@interface GRMustacheTemplateParser : NSObject { -@private - id _delegate; - NSString *_tagStartDelimiter; - NSString *_tagEndDelimiter; -} +@interface GRMustacheTemplateParser : NSObject /** * The parser's delegate. diff --git a/GRMustache/Parsing/GRMustacheToken.m b/GRMustache/Parsing/GRMustacheToken.m index 30b45082..064e1264 100644 --- a/GRMustache/Parsing/GRMustacheToken.m +++ b/GRMustache/Parsing/GRMustacheToken.m @@ -24,14 +24,6 @@ @implementation GRMustacheToken -@synthesize type=_type; -@synthesize templateString=_templateString; -@synthesize templateID=_templateID; -@synthesize line=_line; -@synthesize range=_range; -@synthesize tagInnerRange=_tagInnerRange; -@synthesize tagStartDelimiter=_tagStartDelimiter; -@synthesize tagEndDelimiter=_tagEndDelimiter; - (void)dealloc { diff --git a/GRMustache/Parsing/GRMustacheToken_private.h b/GRMustache/Parsing/GRMustacheToken_private.h index e80524c8..2ebfbb88 100644 --- a/GRMustache/Parsing/GRMustacheToken_private.h +++ b/GRMustache/Parsing/GRMustacheToken_private.h @@ -102,17 +102,7 @@ typedef NS_ENUM(NSInteger, GRMustacheTokenType) { * - a token of type GRMustacheTokenTypeEscapedVariable holding "{{name}}" * - a token of type GRMustacheTokenTypeText holding "!" */ -@interface GRMustacheToken : NSObject { -@private - GRMustacheTokenType _type; - NSString *_templateString; - id _templateID; - NSUInteger _line; - NSRange _range; - NSRange _tagInnerRange; - NSString *_tagStartDelimiter; - NSString *_tagEndDelimiter; -} +@interface GRMustacheToken : NSObject /** * The type of the token. diff --git a/GRMustache/Rendering/GRMustacheContext.h b/GRMustache/Rendering/GRMustacheContext.h index 8e50ad95..1d93a983 100644 --- a/GRMustache/Rendering/GRMustacheContext.h +++ b/GRMustache/Rendering/GRMustacheContext.h @@ -49,23 +49,7 @@ * * @see GRMustacheRendering protocol */ -@interface GRMustacheContext : NSObject { -@private -#define GRMUSTACHE_STACK_TOP_IVAR(stackName) _ ## stackName ## Object -#define GRMUSTACHE_STACK_PARENT_IVAR(stackName) _ ## stackName ## Parent -#define GRMUSTACHE_STACK_DECLARE_IVARS(stackName, type) \ - GRMustacheContext *GRMUSTACHE_STACK_PARENT_IVAR(stackName); \ - type GRMUSTACHE_STACK_TOP_IVAR(stackName) - - GRMUSTACHE_STACK_DECLARE_IVARS(contextStack, id); - GRMUSTACHE_STACK_DECLARE_IVARS(protectedContextStack, id); - GRMUSTACHE_STACK_DECLARE_IVARS(hiddenContextStack, id); - GRMUSTACHE_STACK_DECLARE_IVARS(tagDelegateStack, id); - GRMUSTACHE_STACK_DECLARE_IVARS(partialOverrideNodeStack, id); - - BOOL _unsafeKeyAccess; -} - +@interface GRMustacheContext : NSObject //////////////////////////////////////////////////////////////////////////////// /// @name Creating Rendering Contexts diff --git a/GRMustache/Rendering/GRMustacheContext.m b/GRMustache/Rendering/GRMustacheContext.m index 446c3ffb..db357839 100644 --- a/GRMustache/Rendering/GRMustacheContext.m +++ b/GRMustache/Rendering/GRMustacheContext.m @@ -94,18 +94,25 @@ static BOOL objectConformsToTagDelegateProtocol(id object) // ============================================================================= #pragma mark - GRMustacheContext -@implementation GRMustacheContext +@implementation GRMustacheContext { +#define GRMUSTACHE_STACK_TOP_IVAR(stackName) _ ## stackName ## Object +#define GRMUSTACHE_STACK_PARENT_IVAR(stackName) _ ## stackName ## Parent +#define GRMUSTACHE_STACK_DECLARE_IVARS(stackName, type) \ +GRMustacheContext *GRMUSTACHE_STACK_PARENT_IVAR(stackName); \ +type GRMUSTACHE_STACK_TOP_IVAR(stackName) + + GRMUSTACHE_STACK_DECLARE_IVARS(contextStack, id); + GRMUSTACHE_STACK_DECLARE_IVARS(protectedContextStack, id); + GRMUSTACHE_STACK_DECLARE_IVARS(hiddenContextStack, id); + GRMUSTACHE_STACK_DECLARE_IVARS(tagDelegateStack, id); + GRMUSTACHE_STACK_DECLARE_IVARS(partialOverrideNodeStack, GRMustachePartialOverrideNode *); +} + (void)initialize { setupTagDelegateClasses(); } -- (BOOL)unsafeKeyAccess -{ - return _unsafeKeyAccess; -} - // ============================================================================= #pragma mark - Creating Contexts diff --git a/GRMustache/Rendering/GRMustacheContext_private.h b/GRMustache/Rendering/GRMustacheContext_private.h index f4fa93c9..0a070007 100644 --- a/GRMustache/Rendering/GRMustacheContext_private.h +++ b/GRMustache/Rendering/GRMustacheContext_private.h @@ -24,7 +24,6 @@ #import "GRMustacheAvailabilityMacros_private.h" @protocol GRMustacheTagDelegate; -@protocol GRMustacheTemplateASTNode; @class GRMustachePartialOverrideNode; /** @@ -51,23 +50,7 @@ * * - Let partials override AST nodes. */ -@interface GRMustacheContext : NSObject { -@private - -#define GRMUSTACHE_STACK_TOP_IVAR(stackName) _ ## stackName ## Object -#define GRMUSTACHE_STACK_PARENT_IVAR(stackName) _ ## stackName ## Parent -#define GRMUSTACHE_STACK_DECLARE_IVARS(stackName, type) \ - GRMustacheContext *GRMUSTACHE_STACK_PARENT_IVAR(stackName); \ - type GRMUSTACHE_STACK_TOP_IVAR(stackName) - - GRMUSTACHE_STACK_DECLARE_IVARS(contextStack, id); - GRMUSTACHE_STACK_DECLARE_IVARS(protectedContextStack, id); - GRMUSTACHE_STACK_DECLARE_IVARS(hiddenContextStack, id); - GRMUSTACHE_STACK_DECLARE_IVARS(tagDelegateStack, id); - GRMUSTACHE_STACK_DECLARE_IVARS(partialOverrideNodeStack, GRMustachePartialOverrideNode *); - - BOOL _unsafeKeyAccess; -} +@interface GRMustacheContext : NSObject // Documented in GRMustacheContext.h + (instancetype)context GRMUSTACHE_API_PUBLIC; diff --git a/GRMustache/Rendering/GRMustacheExpressionInvocation.m b/GRMustache/Rendering/GRMustacheExpressionInvocation.m index 973fc2c9..494ab918 100644 --- a/GRMustache/Rendering/GRMustacheExpressionInvocation.m +++ b/GRMustache/Rendering/GRMustacheExpressionInvocation.m @@ -36,10 +36,6 @@ @interface GRMustacheExpressionInvocation() @end @implementation GRMustacheExpressionInvocation -@synthesize context=_context; -@synthesize expression=_expression; -@synthesize value=_value; -@synthesize valueIsProtected=_valueIsProtected; - (BOOL)invokeReturningError:(NSError **)error { diff --git a/GRMustache/Rendering/GRMustacheExpressionInvocation_private.h b/GRMustache/Rendering/GRMustacheExpressionInvocation_private.h index 316fd537..c76b6a4e 100644 --- a/GRMustache/Rendering/GRMustacheExpressionInvocation_private.h +++ b/GRMustache/Rendering/GRMustacheExpressionInvocation_private.h @@ -29,13 +29,7 @@ /** * TODO */ -@interface GRMustacheExpressionInvocation : NSObject { -@private - GRMustacheContext *_context; - GRMustacheExpression *_expression; - id _value; - BOOL _valueIsProtected; -} +@interface GRMustacheExpressionInvocation : NSObject /** * TODO diff --git a/GRMustache/Rendering/GRMustacheFilter.m b/GRMustache/Rendering/GRMustacheFilter.m index bbbc5496..d5c7bf33 100644 --- a/GRMustache/Rendering/GRMustacheFilter.m +++ b/GRMustache/Rendering/GRMustacheFilter.m @@ -29,10 +29,7 @@ * Private subclass of GRMustacheFilter that filters a single argument by * calling a block. */ -@interface GRMustacheBlockFilter: GRMustacheFilter { -@private - id(^_block)(id value); -} +@interface GRMustacheBlockFilter: GRMustacheFilter - (instancetype)initWithBlock:(id(^)(id value))block; @end @@ -44,11 +41,7 @@ - (instancetype)initWithBlock:(id(^)(id value))block; * Private subclass of GRMustacheFilter that filters an array of arguments by * calling a block. */ -@interface GRMustacheBlockVariadicFilter: GRMustacheFilter { -@private - NSArray *_arguments; - id(^_block)(NSArray *arguments); -} +@interface GRMustacheBlockVariadicFilter: GRMustacheFilter - (instancetype)initWithBlock:(id(^)(NSArray *arguments))block arguments:(NSArray *)arguments; @end @@ -79,7 +72,9 @@ - (id)transformedValue:(id)object // ============================================================================= #pragma mark - Private concrete class GRMustacheBlockFilter -@implementation GRMustacheBlockFilter +@implementation GRMustacheBlockFilter { + id(^_block)(id value); +} - (instancetype)initWithBlock:(id(^)(id value))block { @@ -114,7 +109,10 @@ - (id)transformedValue:(id)object // ============================================================================= #pragma mark - Private concrete class GRMustacheBlockVariadicFilter -@implementation GRMustacheBlockVariadicFilter +@implementation GRMustacheBlockVariadicFilter { + NSArray *_arguments; + id(^_block)(NSArray *arguments); +} - (instancetype)initWithBlock:(id(^)(NSArray *arguments))block arguments:(NSArray *)arguments { diff --git a/GRMustache/Rendering/GRMustacheKeyValueCoding.h b/GRMustache/Rendering/GRMustacheKeyValueCoding.h index 275612d8..05c388e5 100644 --- a/GRMustache/Rendering/GRMustacheKeyValueCoding.h +++ b/GRMustache/Rendering/GRMustacheKeyValueCoding.h @@ -23,6 +23,13 @@ #import #import "GRMustacheAvailabilityMacros.h" +/** + * TODO + */ @protocol GRMustacheKeyValueCoding + +/** + * TODO + */ - (id)valueForMustacheKey:(NSString *)key; @end diff --git a/GRMustache/Rendering/GRMustacheRendering.m b/GRMustache/Rendering/GRMustacheRendering.m index 90beba87..422c3bdb 100644 --- a/GRMustache/Rendering/GRMustacheRendering.m +++ b/GRMustache/Rendering/GRMustacheRendering.m @@ -45,10 +45,7 @@ @interface GRMustacheNilRendering : NSObject { -@private - NSString *(^_renderingBlock)(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error); -} +@interface GRMustacheBlockRendering : NSObject - (instancetype)initWithRenderingBlock:(NSString *(^)(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error))renderingBlock; @end @@ -271,7 +268,9 @@ - (NSString *)renderForMustacheTag:(GRMustacheTag *)tag asEnumerationItem:(BOOL) @end -@implementation GRMustacheBlockRendering +@implementation GRMustacheBlockRendering { + NSString *(^_renderingBlock)(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error); +} - (void)dealloc { diff --git a/GRMustache/Rendering/GRMustacheRenderingEngine.m b/GRMustache/Rendering/GRMustacheRenderingEngine.m index 17b055ce..d13ff0e6 100644 --- a/GRMustache/Rendering/GRMustacheRenderingEngine.m +++ b/GRMustache/Rendering/GRMustacheRenderingEngine.m @@ -37,6 +37,7 @@ #import "GRMustacheTextNode_private.h" #import "GRMustacheTagDelegate.h" #import "GRMustacheExpressionInvocation_private.h" +#import "GRMustacheBuffer_private.h" @interface GRMustacheRenderingEngine() @end @@ -58,7 +59,12 @@ void freeCurrentExpressionInvocation(void *object) { } -@implementation GRMustacheRenderingEngine +@implementation GRMustacheRenderingEngine { + GRMustacheBuffer _buffer; + GRMustacheTemplateAST *_templateAST; + GRMustacheContext *_context; + GRMustacheContentType _contentType; +} + (void)initialize { diff --git a/GRMustache/Rendering/GRMustacheRenderingEngine_private.h b/GRMustache/Rendering/GRMustacheRenderingEngine_private.h index 5edd54b0..5e11057d 100644 --- a/GRMustache/Rendering/GRMustacheRenderingEngine_private.h +++ b/GRMustache/Rendering/GRMustacheRenderingEngine_private.h @@ -22,23 +22,14 @@ #import #import "GRMustacheAvailabilityMacros_private.h" -#import "GRMustacheContentType.h" -#import "GRMustacheBuffer_private.h" @class GRMustacheContext; -@class GRMustacheSectionTag; @class GRMustacheTemplateAST; /** * TODO */ -@interface GRMustacheRenderingEngine : NSObject { -@private - GRMustacheBuffer _buffer; - GRMustacheTemplateAST *_templateAST; - GRMustacheContext *_context; - GRMustacheContentType _contentType; -} +@interface GRMustacheRenderingEngine : NSObject /** * TODO diff --git a/GRMustache/Services/GRMustacheExpressionGenerator.m b/GRMustache/Services/GRMustacheExpressionGenerator.m index 6be0ca47..c6e872c2 100644 --- a/GRMustache/Services/GRMustacheExpressionGenerator.m +++ b/GRMustache/Services/GRMustacheExpressionGenerator.m @@ -31,7 +31,9 @@ @interface GRMustacheExpressionGenerator() @end -@implementation GRMustacheExpressionGenerator +@implementation GRMustacheExpressionGenerator { + NSString *_expressionString; +} - (NSString *)stringWithExpression:(GRMustacheExpression *)expression { diff --git a/GRMustache/Services/GRMustacheExpressionGenerator_private.h b/GRMustache/Services/GRMustacheExpressionGenerator_private.h index 355e3786..923f2ba2 100644 --- a/GRMustache/Services/GRMustacheExpressionGenerator_private.h +++ b/GRMustache/Services/GRMustacheExpressionGenerator_private.h @@ -25,11 +25,6 @@ @class GRMustacheExpression; -@interface GRMustacheExpressionGenerator : NSObject { -@private - NSString *_expressionString; -} - +@interface GRMustacheExpressionGenerator : NSObject - (NSString *)stringWithExpression:(GRMustacheExpression *)expression GRMUSTACHE_API_INTERNAL; - @end diff --git a/GRMustache/Services/GRMustacheTemplateGenerator.m b/GRMustache/Services/GRMustacheTemplateGenerator.m index 94b69d4b..3744bfa4 100644 --- a/GRMustache/Services/GRMustacheTemplateGenerator.m +++ b/GRMustache/Services/GRMustacheTemplateGenerator.m @@ -38,8 +38,10 @@ @interface GRMustacheTemplateGenerator() @end -@implementation GRMustacheTemplateGenerator -@synthesize templateRepository=_templateRepository; +@implementation GRMustacheTemplateGenerator { + GRMustacheExpressionGenerator *_expressionGenerator; + NSMutableString *_templateString; +} - (void)dealloc { diff --git a/GRMustache/Services/GRMustacheTemplateGenerator_private.h b/GRMustache/Services/GRMustacheTemplateGenerator_private.h index 722b243d..359d0feb 100644 --- a/GRMustache/Services/GRMustacheTemplateGenerator_private.h +++ b/GRMustache/Services/GRMustacheTemplateGenerator_private.h @@ -26,15 +26,8 @@ @class GRMustacheTemplate; @class GRMustacheTemplateAST; @class GRMustacheTemplateRepository; -@class GRMustacheExpressionGenerator; - -@interface GRMustacheTemplateGenerator : NSObject { -@private - GRMustacheTemplateRepository *_templateRepository; - GRMustacheExpressionGenerator *_expressionGenerator; - NSMutableString *_templateString; -} +@interface GRMustacheTemplateGenerator : NSObject @property (nonatomic, retain, readonly) GRMustacheTemplateRepository *templateRepository GRMUSTACHE_API_INTERNAL; + (instancetype)templateGeneratorWithTemplateRepository:(GRMustacheTemplateRepository *)templateRepository GRMUSTACHE_API_INTERNAL; diff --git a/GRMustache/Services/StandardLibrary/GRMustacheLocalizer.h b/GRMustache/Services/StandardLibrary/GRMustacheLocalizer.h index 4769361a..a8a5f59b 100644 --- a/GRMustache/Services/StandardLibrary/GRMustacheLocalizer.h +++ b/GRMustache/Services/StandardLibrary/GRMustacheLocalizer.h @@ -66,12 +66,7 @@ * * @since v6.4 */ -@interface GRMustacheLocalizer : NSObject { -@private - NSBundle *_bundle; - NSString *_tableName; - NSMutableArray *_formatArguments; -} +@interface GRMustacheLocalizer : NSObject /** * Returns an initialized localizing helper. diff --git a/GRMustache/Services/StandardLibrary/GRMustacheLocalizer.m b/GRMustache/Services/StandardLibrary/GRMustacheLocalizer.m index 3f7fb2b7..4de52044 100644 --- a/GRMustache/Services/StandardLibrary/GRMustacheLocalizer.m +++ b/GRMustache/Services/StandardLibrary/GRMustacheLocalizer.m @@ -34,9 +34,6 @@ - (NSString *)stringWithFormat:(NSString *)format argumentArray:(NSArray *)argum @end @implementation GRMustacheLocalizer -@synthesize formatArguments=_formatArguments; -@synthesize bundle=_bundle; -@synthesize tableName=_tableName; - (void)dealloc { diff --git a/GRMustache/Templates/GRMustacheTemplate.h b/GRMustache/Templates/GRMustacheTemplate.h index 81200282..0a21fb48 100644 --- a/GRMustache/Templates/GRMustacheTemplate.h +++ b/GRMustache/Templates/GRMustacheTemplate.h @@ -36,12 +36,7 @@ * * @since v1.0 */ -@interface GRMustacheTemplate: NSObject { -@private - GRMustacheTemplateRepository *_templateRepository; - id _templateAST; - GRMustacheContext *_baseContext; -} +@interface GRMustacheTemplate: NSObject //////////////////////////////////////////////////////////////////////////////// diff --git a/GRMustache/Templates/GRMustacheTemplate.m b/GRMustache/Templates/GRMustacheTemplate.m index 1adbaa39..b4052d97 100644 --- a/GRMustache/Templates/GRMustacheTemplate.m +++ b/GRMustache/Templates/GRMustacheTemplate.m @@ -31,9 +31,6 @@ #import "GRMustacheSectionTag_private.h" @implementation GRMustacheTemplate -@synthesize templateRepository=_templateRepository; -@synthesize templateAST=_templateAST; -@synthesize baseContext=_baseContext; + (instancetype)templateFromString:(NSString *)templateString error:(NSError **)error { diff --git a/GRMustache/Templates/GRMustacheTemplateRepository.h b/GRMustache/Templates/GRMustacheTemplateRepository.h index 3ce8593c..ebfb2d67 100644 --- a/GRMustache/Templates/GRMustacheTemplateRepository.h +++ b/GRMustache/Templates/GRMustacheTemplateRepository.h @@ -129,12 +129,7 @@ * * @since v1.13 */ -@interface GRMustacheTemplateRepository : NSObject { -@private - id _dataSource; - NSMutableDictionary *_templateASTForTemplateID; - GRMustacheConfiguration *_configuration; -} +@interface GRMustacheTemplateRepository : NSObject //////////////////////////////////////////////////////////////////////////////// diff --git a/GRMustache/Templates/GRMustacheTemplateRepository.m b/GRMustache/Templates/GRMustacheTemplateRepository.m index 30e50568..a4bc5605 100644 --- a/GRMustache/Templates/GRMustacheTemplateRepository.m +++ b/GRMustache/Templates/GRMustacheTemplateRepository.m @@ -38,12 +38,7 @@ * Private subclass of GRMustacheTemplateRepository that is its own data source, * and loads templates from a base URL. */ -@interface GRMustacheTemplateRepositoryBaseURL : GRMustacheTemplateRepository { -@private - NSURL *_baseURL; - NSString *_templateExtension; - NSStringEncoding _encoding; -} +@interface GRMustacheTemplateRepositoryBaseURL : GRMustacheTemplateRepository - (instancetype)initWithBaseURL:(NSURL *)baseURL templateExtension:(NSString *)templateExtension encoding:(NSStringEncoding)encoding; @end @@ -55,12 +50,7 @@ - (instancetype)initWithBaseURL:(NSURL *)baseURL templateExtension:(NSString *)t * Private subclass of GRMustacheTemplateRepository that is its own data source, * and loads templates from a directory identified by its path. */ -@interface GRMustacheTemplateRepositoryDirectory : GRMustacheTemplateRepository { -@private - NSString *_directoryPath; - NSString *_templateExtension; - NSStringEncoding _encoding; -} +@interface GRMustacheTemplateRepositoryDirectory : GRMustacheTemplateRepository - (instancetype)initWithDirectory:(NSString *)directoryPath templateExtension:(NSString *)templateExtension encoding:(NSStringEncoding)encoding; @end @@ -72,12 +62,7 @@ - (instancetype)initWithDirectory:(NSString *)directoryPath templateExtension:(N * Private subclass of GRMustacheTemplateRepository that is its own data source, * and loads templates from a bundle. */ -@interface GRMustacheTemplateRepositoryBundle : GRMustacheTemplateRepository { -@private - NSBundle *_bundle; - NSString *_templateExtension; - NSStringEncoding _encoding; -} +@interface GRMustacheTemplateRepositoryBundle : GRMustacheTemplateRepository - (instancetype)initWithBundle:(NSBundle *)bundle templateExtension:(NSString *)templateExtension encoding:(NSStringEncoding)encoding; @end @@ -100,9 +85,9 @@ - (instancetype)initWithPartialsDictionary:(NSDictionary *)partialsDictionary; // ============================================================================= #pragma mark - GRMustacheTemplateRepository -@implementation GRMustacheTemplateRepository -@synthesize dataSource=_dataSource; -@synthesize configuration=_configuration; +@implementation GRMustacheTemplateRepository { + NSMutableDictionary *_templateASTForTemplateID; +} + (instancetype)templateRepositoryWithBaseURL:(NSURL *)URL { @@ -337,7 +322,11 @@ - (GRMustacheTemplateAST *)templateASTNamed:(NSString *)name relativeToTemplateI @interface GRMustacheTemplateRepositoryBaseURL() @end -@implementation GRMustacheTemplateRepositoryBaseURL +@implementation GRMustacheTemplateRepositoryBaseURL { + NSURL *_baseURL; + NSString *_templateExtension; + NSStringEncoding _encoding; +} - (instancetype)initWithBaseURL:(NSURL *)baseURL templateExtension:(NSString *)templateExtension encoding:(NSStringEncoding)encoding { @@ -400,7 +389,11 @@ - (NSString *)templateRepository:(GRMustacheTemplateRepository *)templateReposit @interface GRMustacheTemplateRepositoryDirectory() @end -@implementation GRMustacheTemplateRepositoryDirectory +@implementation GRMustacheTemplateRepositoryDirectory { + NSString *_directoryPath; + NSString *_templateExtension; + NSStringEncoding _encoding; +} - (instancetype)initWithDirectory:(NSString *)directoryPath templateExtension:(NSString *)templateExtension encoding:(NSStringEncoding)encoding { @@ -464,7 +457,11 @@ - (NSString *)templateRepository:(GRMustacheTemplateRepository *)templateReposit @interface GRMustacheTemplateRepositoryBundle() @end -@implementation GRMustacheTemplateRepositoryBundle +@implementation GRMustacheTemplateRepositoryBundle { + NSBundle *_bundle; + NSString *_templateExtension; + NSStringEncoding _encoding; +} - (instancetype)initWithBundle:(NSBundle *)bundle templateExtension:(NSString *)templateExtension encoding:(NSStringEncoding)encoding { diff --git a/GRMustache/Templates/GRMustacheTemplateRepository_private.h b/GRMustache/Templates/GRMustacheTemplateRepository_private.h index 1707c67d..6d0dfdbd 100644 --- a/GRMustache/Templates/GRMustacheTemplateRepository_private.h +++ b/GRMustache/Templates/GRMustacheTemplateRepository_private.h @@ -40,12 +40,7 @@ @end // Documented in GRMustacheTemplateRepository.h -@interface GRMustacheTemplateRepository : NSObject { -@private - id _dataSource; - NSMutableDictionary *_templateASTForTemplateID; - GRMustacheConfiguration *_configuration; -} +@interface GRMustacheTemplateRepository : NSObject // Documented in GRMustacheTemplateRepository.h @property (nonatomic, assign) id dataSource GRMUSTACHE_API_PUBLIC; diff --git a/GRMustache/Templates/GRMustacheTemplate_private.h b/GRMustache/Templates/GRMustacheTemplate_private.h index 8231764e..c0b60ff3 100644 --- a/GRMustache/Templates/GRMustacheTemplate_private.h +++ b/GRMustache/Templates/GRMustacheTemplate_private.h @@ -30,12 +30,7 @@ @protocol GRMustacheTagDelegate; // Documented in GRMustacheTemplate.h -@interface GRMustacheTemplate: NSObject { -@private - GRMustacheTemplateRepository *_templateRepository; - GRMustacheTemplateAST *_templateAST; - GRMustacheContext *_baseContext; -} +@interface GRMustacheTemplate: NSObject @property (nonatomic, retain) GRMustacheTemplateAST *templateAST GRMUSTACHE_API_INTERNAL; diff --git a/README.md b/README.md index d5d21f6d..d91faccb 100644 --- a/README.md +++ b/README.md @@ -790,7 +790,6 @@ GRMustache comes with built-in support for the following standard Foundation typ - [NSOrderedSet](#nsorderedset) - [NSSet](#nsset) - [NSString](#nsstring) -- [NSObject](#nsobject) ### NSArray @@ -888,7 +887,8 @@ Exposed keys: - `string.length`: the length of the string. -### NSObject +Custom Types +------------ When an object is not one of the specific ones decribed above, it renders as follows: @@ -897,7 +897,47 @@ When an object is not one of the specific ones decribed above, it renders as fol - `{{#object}}...{{/object}}` renders once, pushing the object on top of the [context stack](#the-context-stack). - `{{^object}}...{{/object}}` does not render. -Templates can access object's properties: `{{ user.name }}`. +Templates can access object's **safe keys**: `{{ user.name }}`. Safe keys are declared properties and NSManagedObject attributes. + +```objc +@interface Person : NSObject +@property (nonatomic, copy) NSString *name; +@end + +// Freddy Mercury has a mustache. +Person *person = [Person personWithName: @"Freddy Mercury"]; +NSString *templateString = @"{{name}} has a mustache."; +GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:templateString error:NULL]; +NSString *rendering = [template renderObject:person error:NULL]; +``` + +Lambdas +------- + +Mustache lambdas are functions that let you perform custom rendering. There are two kinds of lambdas: those that process section tags, and those that render variable tags. + +```swift +// `{{fullName}}` renders just as `{{firstName}} {{lastName}}.` +let fullName = Lambda { "{{firstName}} {{lastName}}" } + +// `{{#wrapped}}...{{/wrapped}}` renders the content of the section, wrapped in +// a HTML tag. +let wrapped = Lambda { (string) in "\(string)" } + +// Frank Zappa is awesome. +let templateString = "{{#wrapped}}{{fullName}} is awesome.{{/wrapped}}" +let template = try Template(string: templateString) +let data = [ + "firstName": Box("Frank"), + "lastName": Box("Zappa"), + "fullName": Box(fullName), + "wrapped": Box(wrapped)] +let rendering = try template.render(Box(data)) +``` + +Lambdas are a special case of custom rendering functions. The raw `RenderFunction` type gives you extra flexibility when you need to perform custom rendering. See [CoreFunctions.swift](Mustache/Rendering/CoreFunctions.swift) ([read on cocoadocs.org](http://cocoadocs.org/docsets/GRMustache.swift/0.11.0/Typealiases.html)). + + diff --git a/TODO.md b/TODO.md index 1b9d2d4a..0f348c4f 100644 --- a/TODO.md +++ b/TODO.md @@ -23,5 +23,5 @@ - [X] Check that {{ string.length }} is correctly implemented (NSObject+GRMustacheKeyValueCoding.m) and tested (https://github.com/groue/GRMustacheSpec). - [?] Have Filter and renderingObject APIs closer from GRMustache.swift - [?] Drop support for else `{{#a}}{{^a}}{{/a}}`. -- [ ] Have rendering engine responsible for excluded middle (truthy, or falsey, not both) -- [ ] Remove @synthesize and explicit ivars in headers \ No newline at end of file +- [ ] Have rendering engine responsible for bivalence (truthy objects, or falsey, not both) +- [X] Remove @synthesize and explicit ivars in headers \ No newline at end of file From a8d75025fee2ae57afb8853486e7941b4afc40df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sun, 18 Oct 2015 16:46:17 +0200 Subject: [PATCH 67/81] TODO.md --- TODO.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/TODO.md b/TODO.md index 0f348c4f..858b2a96 100644 --- a/TODO.md +++ b/TODO.md @@ -23,5 +23,4 @@ - [X] Check that {{ string.length }} is correctly implemented (NSObject+GRMustacheKeyValueCoding.m) and tested (https://github.com/groue/GRMustacheSpec). - [?] Have Filter and renderingObject APIs closer from GRMustache.swift - [?] Drop support for else `{{#a}}{{^a}}{{/a}}`. -- [ ] Have rendering engine responsible for bivalence (truthy objects, or falsey, not both) -- [X] Remove @synthesize and explicit ivars in headers \ No newline at end of file +- [X] Remove @synthesize and explicit ivars in headers From 88807c8b9430b36b486166110f87659be5aa8e1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Sun, 18 Oct 2015 16:47:14 +0200 Subject: [PATCH 68/81] TODO.md --- TODO.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/TODO.md b/TODO.md index 858b2a96..65849a78 100644 --- a/TODO.md +++ b/TODO.md @@ -5,7 +5,6 @@ - [X] Drop GRMustacheSafeKeyAccess - [X] Drop default support for objectForKeyedSubscript: - [X] Add GRMustacheKeyValueCoding -- [ ] ARC. Since GRMustache 8 is all about framework and targetting iOS8+ and OSX10.9+, there is no longer any reason for manual memory management. - [X] Share JSON tests suite with GRMustache.swift. - [X] Use submodule - [X] Arrays should only have "count", "first" and "last" keys. @@ -18,9 +17,11 @@ - [X] +[GRMustache renderingObjectWithBlock:] - [X] GRMustacheTag.templateRepository - [X] Drop GRMustacheVersion and +[GRMustache libraryVersion] -- [?] Import "register" vocabulary from GRMustache.swift, instead of "protected objects". - [X] Dynamic partial overrides `{{# partial }}...{{/ partial }}` - [X] Check that {{ string.length }} is correctly implemented (NSObject+GRMustacheKeyValueCoding.m) and tested (https://github.com/groue/GRMustacheSpec). -- [?] Have Filter and renderingObject APIs closer from GRMustache.swift -- [?] Drop support for else `{{#a}}{{^a}}{{/a}}`. - [X] Remove @synthesize and explicit ivars in headers + +- [ ] Drop support for else `{{#a}}{{^a}}{{/a}}`. +- [?] Have Filter and renderingObject APIs closer from GRMustache.swift +- [?] Import "register" vocabulary from GRMustache.swift, instead of "protected objects". +- [?] ARC. Since GRMustache 8 is all about framework and targetting iOS8+ and OSX10.9+, there is no longer any reason for manual memory management. From fa143793188fef3a089bf57949c067eba62c1dfd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Mon, 19 Oct 2015 08:01:44 +0200 Subject: [PATCH 69/81] Simplify lambda tests --- .../Public/v8.0/GRMustacheLambdaTest.m | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/GRMustacheTests/Public/v8.0/GRMustacheLambdaTest.m b/GRMustacheTests/Public/v8.0/GRMustacheLambdaTest.m index 0388b50c..09a1a9bf 100644 --- a/GRMustacheTests/Public/v8.0/GRMustacheLambdaTest.m +++ b/GRMustacheTests/Public/v8.0/GRMustacheLambdaTest.m @@ -33,7 +33,7 @@ @implementation GRMustacheLambdaTest - (void)testMustacheSpecInterpolation { // https://github.com/mustache/spec/blob/83b0721610a4e11832e83df19c73ace3289972b9/specs/%7Elambdas.yml#L15 - id lambda = [GRMustacheRendering lambda:^NSString *{ return @"world"; }]; + id lambda = [GRMustacheRendering lambda:^{ return @"world"; }]; GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"Hello, {{lambda}}!" error:NULL]; id data = @{ @"lambda": lambda }; NSString *rendering = [template renderObject:data error:NULL]; @@ -43,7 +43,7 @@ - (void)testMustacheSpecInterpolation - (void)testMustacheSpecInterpolationExpansion { // https://github.com/mustache/spec/blob/83b0721610a4e11832e83df19c73ace3289972b9/specs/%7Elambdas.yml#L29 - id lambda = [GRMustacheRendering lambda:^NSString *{ return @"{{planet}}"; }]; + id lambda = [GRMustacheRendering lambda:^{ return @"{{planet}}"; }]; GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"Hello, {{lambda}}!" error:NULL]; id data = @{ @"planet": @"world", @@ -58,7 +58,7 @@ - (void)testMustacheSpecInterpolationAlternateDelimiters // https://github.com/mustache/spec/blob/83b0721610a4e11832e83df19c73ace3289972b9/specs/%7Elambdas.yml#L44 // With a difference: remove the "\n" character because GRMustache does // not honor mustache spec white space rules. - id lambda = [GRMustacheRendering lambda:^NSString *{ return @"|planet| => {{planet}}"; }]; + id lambda = [GRMustacheRendering lambda:^{ return @"|planet| => {{planet}}"; }]; GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"{{= | | =}}Hello, (|&lambda|)!" error:NULL]; id data = @{ @"planet": @"world", @@ -72,7 +72,7 @@ - (void)testMustacheSpecMultipleCalls { // https://github.com/mustache/spec/blob/83b0721610a4e11832e83df19c73ace3289972b9/specs/%7Elambdas.yml#L59 __block NSUInteger calls = 0; - id lambda = [GRMustacheRendering lambda:^NSString *{ + id lambda = [GRMustacheRendering lambda:^{ ++calls; return [NSString stringWithFormat:@"%@", @(calls)]; }]; @@ -85,7 +85,7 @@ - (void)testMustacheSpecMultipleCalls - (void)testMustacheSpecEscaping { // https://github.com/mustache/spec/blob/83b0721610a4e11832e83df19c73ace3289972b9/specs/%7Elambdas.yml#L73 - id lambda = [GRMustacheRendering lambda:^NSString *{ return @">"; }]; + id lambda = [GRMustacheRendering lambda:^{ return @">"; }]; GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"<{{lambda}}{{{lambda}}}" error:NULL]; id data = @{ @"lambda": lambda }; NSString *rendering = [template renderObject:data error:NULL]; @@ -95,7 +95,7 @@ - (void)testMustacheSpecEscaping - (void)testMustacheSpecSection { // https://github.com/mustache/spec/blob/83b0721610a4e11832e83df19c73ace3289972b9/specs/%7Elambdas.yml#L87 - id lambda = [GRMustacheRendering sectionLambda:^NSString *(NSString *string) { + id lambda = [GRMustacheRendering sectionLambda:^(NSString *string) { if ([string isEqualToString:@"{{x}}"]) { return @"yes"; } else { @@ -111,7 +111,7 @@ - (void)testMustacheSpecSection - (void)testMustacheSpecSectionExpansion { // https://github.com/mustache/spec/blob/83b0721610a4e11832e83df19c73ace3289972b9/specs/%7Elambdas.yml#L102 - id lambda = [GRMustacheRendering sectionLambda:^NSString *(NSString *string) { + id lambda = [GRMustacheRendering sectionLambda:^(NSString *string) { return [NSString stringWithFormat:@"%@{{planet}}%@", string, string]; }]; GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"<{{#lambda}}-{{/lambda}}>" error:NULL]; @@ -126,7 +126,7 @@ - (void)testMustacheSpecSectionExpansion - (void)testMustacheSpecSectionAlternateDelimiters { // https://github.com/mustache/spec/blob/83b0721610a4e11832e83df19c73ace3289972b9/specs/%7Elambdas.yml#L117 - id lambda = [GRMustacheRendering sectionLambda:^NSString *(NSString *string) { + id lambda = [GRMustacheRendering sectionLambda:^(NSString *string) { return [NSString stringWithFormat:@"%@{{planet}} => |planet|%@", string, string]; }]; GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"{{= | | =}}<|#lambda|-|/lambda|>" error:NULL]; @@ -141,7 +141,7 @@ - (void)testMustacheSpecSectionAlternateDelimiters - (void)testMustacheSpecSectionMultipleCalls { // https://github.com/mustache/spec/blob/83b0721610a4e11832e83df19c73ace3289972b9/specs/%7Elambdas.yml#L132 - id lambda = [GRMustacheRendering sectionLambda:^NSString *(NSString *string) { + id lambda = [GRMustacheRendering sectionLambda:^(NSString *string) { return [NSString stringWithFormat:@"__%@__", string]; }]; GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"{{#lambda}}FILE{{/lambda}} != {{#lambda}}LINE{{/lambda}}" error:NULL]; @@ -153,7 +153,7 @@ - (void)testMustacheSpecSectionMultipleCalls - (void)testMustacheSpecInvertedSection { // https://github.com/mustache/spec/blob/83b0721610a4e11832e83df19c73ace3289972b9/specs/%7Elambdas.yml#L146 - id lambda = [GRMustacheRendering sectionLambda:^NSString *(NSString *string) { + id lambda = [GRMustacheRendering sectionLambda:^(NSString *string) { return @""; }]; GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"<{{^lambda}}{{static}}{{/lambda}}>" error:NULL]; @@ -167,7 +167,7 @@ - (void)testPartialInArity0Lambda // Lambda can't render partials NSDictionary *partials = @{ @"partial" : @"success" }; GRMustacheTemplateRepository *repo = [GRMustacheTemplateRepository templateRepositoryWithDictionary:partials]; - id lambda = [GRMustacheRendering lambda:^NSString *{ return @"{{>partial}}"; }]; + id lambda = [GRMustacheRendering lambda:^{ return @"{{>partial}}"; }]; GRMustacheTemplate *template = [repo templateFromString:@"<{{lambda}}>" error:NULL]; id data = @{ @"lambda": lambda }; NSError *error; @@ -182,7 +182,7 @@ - (void)testPartialInArity1Lambda // Lambda can't render partials NSDictionary *partials = @{ @"partial" : @"success" }; GRMustacheTemplateRepository *repo = [GRMustacheTemplateRepository templateRepositoryWithDictionary:partials]; - id lambda = [GRMustacheRendering sectionLambda:^NSString *(NSString *string) { return @"{{>partial}}"; }]; + id lambda = [GRMustacheRendering sectionLambda:^(NSString *string) { return @"{{>partial}}"; }]; GRMustacheTemplate *template = [repo templateFromString:@"<{{#lambda}}...{{/lambda}}>" error:NULL]; id data = @{ @"lambda": lambda }; NSError *error; @@ -194,7 +194,7 @@ - (void)testPartialInArity1Lambda - (void)testArity0LambdaInSectionTag { - id lambda = [GRMustacheRendering lambda:^NSString *{ return @"success"; }]; + id lambda = [GRMustacheRendering lambda:^{ return @"success"; }]; GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"{{#lambda}}<{{.}}>{{/lambda}}" error:NULL]; id data = @{ @"lambda": lambda }; NSString *rendering = [template renderObject:data error:NULL]; @@ -203,7 +203,7 @@ - (void)testArity0LambdaInSectionTag - (void)testArity1LambdaInVariableTag { - id lambda = [GRMustacheRendering sectionLambda:^NSString *(NSString *string) { return string; }]; + id lambda = [GRMustacheRendering sectionLambda:^(NSString *string) { return string; }]; GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"<{{lambda}}>" error:NULL]; id data = @{ @"lambda": lambda }; NSString *rendering = [template renderObject:data error:NULL]; From fce9629a81306d8a8a817c37edda54d555ca75bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Mon, 19 Oct 2015 08:01:48 +0200 Subject: [PATCH 70/81] README.md --- README.md | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index d91faccb..45994cc7 100644 --- a/README.md +++ b/README.md @@ -918,27 +918,28 @@ Mustache lambdas are functions that let you perform custom rendering. There are ```swift // `{{fullName}}` renders just as `{{firstName}} {{lastName}}.` -let fullName = Lambda { "{{firstName}} {{lastName}}" } +id fullName = [GRMustacheRendering lambda:^{ + return @"{{firstName}} {{lastName}}"; +}]; // `{{#wrapped}}...{{/wrapped}}` renders the content of the section, wrapped in // a HTML tag. -let wrapped = Lambda { (string) in "\(string)" } +id wrapped = [GRMustacheRendering sectionLambda:^(NSString *string) { + return [NSString stringWithFormat:@"%@", string]; +}]; // Frank Zappa is awesome. -let templateString = "{{#wrapped}}{{fullName}} is awesome.{{/wrapped}}" -let template = try Template(string: templateString) -let data = [ - "firstName": Box("Frank"), - "lastName": Box("Zappa"), - "fullName": Box(fullName), - "wrapped": Box(wrapped)] -let rendering = try template.render(Box(data)) +NSString *templateString = @"{{#wrapped}}{{fullName}} is awesome.{{/wrapped}}"; +GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:templateString error:NULL]; +id data = @{ + @"firstName": @"Frank", + @"lastName": @"Zappa", + @"fullName": fullName, + @"wrapped": wrapped }; +NSString *rendering = [template renderObject:data error:NULL]; ``` -Lambdas are a special case of custom rendering functions. The raw `RenderFunction` type gives you extra flexibility when you need to perform custom rendering. See [CoreFunctions.swift](Mustache/Rendering/CoreFunctions.swift) ([read on cocoadocs.org](http://cocoadocs.org/docsets/GRMustache.swift/0.11.0/Typealiases.html)). - - - +Lambdas are a special case of custom rendering objects, implemented around the [GRMustacheRendering protocol](http://cocoadocs.org/docsets/GRMustache/7.3.2/Protocols/GRMustacheRendering.html), and [GRMustacheRendering factory methods](http://cocoadocs.org/docsets/GRMustache/7.3.2/Classes/GRMustacheRendering.html). Those give you extra flexibility when you need to perform custom rendering. TO BE CONTINUED From 04d7227f04451c8ecb85b10d1b48f38522edcf88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Mon, 19 Oct 2015 08:04:28 +0200 Subject: [PATCH 71/81] README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 45994cc7..2a83ec21 100644 --- a/README.md +++ b/README.md @@ -176,7 +176,7 @@ Templates may come from various sources: // The repository of Bash templates, with extension ".sh": GRMustacheTemplateRepository *repo; repo = [GRMustacheTemplateRepository - templateRepositoryWithBundle:nil + templateRepositoryWithBundle:[NSBundle mainBundle] templateExtension:@"sh" encoding:NSUTF8StringEncoding]; From 3321b537a1ae061961cd7cd304a07fd6a603bae2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Mon, 19 Oct 2015 08:05:32 +0200 Subject: [PATCH 72/81] README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2a83ec21..7b88d6d0 100644 --- a/README.md +++ b/README.md @@ -183,7 +183,7 @@ Templates may come from various sources: // Disable HTML escaping for Bash scripts: repo.configuration.contentType = GRMustacheContentTypeText; - // Load a template: + // Load the "script.sh" resource: template = [repo templateNamed:@"script" error:NULL]; ``` From 10aaa33257e35e6bb558b154d3bd8f683eec1463 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Mon, 19 Oct 2015 08:26:45 +0200 Subject: [PATCH 73/81] README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 7b88d6d0..021da6f9 100644 --- a/README.md +++ b/README.md @@ -818,6 +818,8 @@ Exposed keys: - `{{#collection}}...{{/collection}}` renders as many times as there are elements in the collection, pushing them on top of the [context stack](#the-context-stack). - `{{^collection}}...{{/collection}}` renders if and only if the collection is empty. +[NSArray](#nsarray), [NSDictionary](#nsdictionary), [NSOrderedSet](#nsorderedset), and [NSSet](#nsset) all conform to NSFastEnumeration, but have their own custom rendering. + ### NSNull From bee8030fa30b3b2e7f9a6567e55d4fd4833d0abb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Mon, 19 Oct 2015 21:00:33 +0200 Subject: [PATCH 74/81] Update GRMustacheSpec --- GRMustacheTests/vendor/groue/GRMustacheSpec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GRMustacheTests/vendor/groue/GRMustacheSpec b/GRMustacheTests/vendor/groue/GRMustacheSpec index 6d3be275..18540f32 160000 --- a/GRMustacheTests/vendor/groue/GRMustacheSpec +++ b/GRMustacheTests/vendor/groue/GRMustacheSpec @@ -1 +1 @@ -Subproject commit 6d3be2758f73fbd84998cb4abac57e8b5dcb1146 +Subproject commit 18540f32b49b16e4248e49e80b434cbafcfc5db9 From b445a35e6c969a7e6918fa7dbd9a9af1dd639836 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Tue, 20 Oct 2015 07:47:48 +0200 Subject: [PATCH 75/81] TODO.md --- TODO.md | 1 + 1 file changed, 1 insertion(+) diff --git a/TODO.md b/TODO.md index 65849a78..2aa49218 100644 --- a/TODO.md +++ b/TODO.md @@ -25,3 +25,4 @@ - [?] Have Filter and renderingObject APIs closer from GRMustache.swift - [?] Import "register" vocabulary from GRMustache.swift, instead of "protected objects". - [?] ARC. Since GRMustache 8 is all about framework and targetting iOS8+ and OSX10.9+, there is no longer any reason for manual memory management. +- [?] What happens if NSObject behaves as NSDictionary? (nil for missing keys, NSNull when present key returns nil) \ No newline at end of file From 48abc5a9cdf6cb41ebc89cba111078ee36d208b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Tue, 20 Oct 2015 07:52:25 +0200 Subject: [PATCH 76/81] Have NSObject behave live NSDictionary: only present keys stop context stack lookup. --- GRMustache/Rendering/NSObject+GRMustacheKeyValueCoding.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GRMustache/Rendering/NSObject+GRMustacheKeyValueCoding.m b/GRMustache/Rendering/NSObject+GRMustacheKeyValueCoding.m index 5a901929..2effebec 100644 --- a/GRMustache/Rendering/NSObject+GRMustacheKeyValueCoding.m +++ b/GRMustache/Rendering/NSObject+GRMustacheKeyValueCoding.m @@ -55,7 +55,7 @@ - (id)valueForMustacheKey:(NSString *)key unsafeKeyAccess:(BOOL)unsafeKeyAccess } @try { - return [self valueForKey:key]; + return [self valueForKey:key] ?: [NSNull null]; } @catch (NSException *exception) { // Swallow NSUndefinedKeyException only From 26bd67bed2a2db8406d4c74a4e627a36010b82e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Tue, 20 Oct 2015 08:01:20 +0200 Subject: [PATCH 77/81] Tests that NSObject behaves live NSDictionary: only present keys stop context stack lookup (related issue: #66) --- .../NSObject+GRMustacheKeyValueCoding.m | 3 ++ .../GRMustacheContextKeyAccessTest.m | 33 +++++++++++++++---- 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/GRMustache/Rendering/NSObject+GRMustacheKeyValueCoding.m b/GRMustache/Rendering/NSObject+GRMustacheKeyValueCoding.m index 2effebec..b337e36f 100644 --- a/GRMustache/Rendering/NSObject+GRMustacheKeyValueCoding.m +++ b/GRMustache/Rendering/NSObject+GRMustacheKeyValueCoding.m @@ -55,6 +55,8 @@ - (id)valueForMustacheKey:(NSString *)key unsafeKeyAccess:(BOOL)unsafeKeyAccess } @try { + // If there is no exception, then the key is present. + // Turn nil value into NSNull in order to stop contact stack lookup. return [self valueForKey:key] ?: [NSNull null]; } @catch (NSException *exception) { @@ -62,6 +64,7 @@ - (id)valueForMustacheKey:(NSString *)key unsafeKeyAccess:(BOOL)unsafeKeyAccess if (![[exception name] isEqualToString:NSUndefinedKeyException]) { [exception raise]; } + // Missing key return nil; } } diff --git a/GRMustacheTests/Public/v8.0/GRMustacheContextTest/GRMustacheContextKeyAccessTest.m b/GRMustacheTests/Public/v8.0/GRMustacheContextTest/GRMustacheContextKeyAccessTest.m index 9f586cc3..4efa70ca 100644 --- a/GRMustacheTests/Public/v8.0/GRMustacheContextTest/GRMustacheContextKeyAccessTest.m +++ b/GRMustacheTests/Public/v8.0/GRMustacheContextTest/GRMustacheContextKeyAccessTest.m @@ -25,14 +25,24 @@ @interface GRMustacheContextKeyAccess_ClassWithProperties : NSObject -@property (nonatomic, readonly) NSString *property; +@property (nonatomic, copy) NSString *property; @end @implementation GRMustacheContextKeyAccess_ClassWithProperties -- (NSString *)property +- (void)dealloc { - return @"property"; + self.property = nil; + [super dealloc]; +} + +- (instancetype)initWithProperty:(NSString *)property +{ + self = [self init]; + if (self) { + self.property = property; + } + return self; } - (NSString *)method @@ -71,7 +81,7 @@ @implementation GRMustacheContextKeyAccessTest - (void)testPropertiesAreAllowed { - GRMustacheContextKeyAccess_ClassWithProperties *object = [[[GRMustacheContextKeyAccess_ClassWithProperties alloc] init] autorelease]; + GRMustacheContextKeyAccess_ClassWithProperties *object = [[[GRMustacheContextKeyAccess_ClassWithProperties alloc] initWithProperty:@"property"] autorelease]; // test setup XCTAssertFalse([object respondsToSelector:@selector(objectForKeyedSubscript:)], @""); @@ -83,9 +93,18 @@ - (void)testPropertiesAreAllowed XCTAssertEqualObjects([context valueForMustacheKey:@"property"], @"property", @""); } +- (void)testNilPropertyEvaluatesToNSNullAndStopsContextStackLookup +{ + GRMustacheContextKeyAccess_ClassWithProperties *object = [[[GRMustacheContextKeyAccess_ClassWithProperties alloc] initWithProperty:nil] autorelease]; + GRMustacheContext *context = [GRMustacheContext contextWithObject:@{@"property": @"root"}]; + XCTAssertEqualObjects([context valueForMustacheKey:@"property"], @"root", @""); + context = [context contextByAddingObject:object]; + XCTAssertEqualObjects([context valueForMustacheKey:@"property"], [NSNull null]); +} + - (void)testMethodAreDisallowed { - GRMustacheContextKeyAccess_ClassWithProperties *object = [[[GRMustacheContextKeyAccess_ClassWithProperties alloc] init] autorelease]; + GRMustacheContextKeyAccess_ClassWithProperties *object = [[[GRMustacheContextKeyAccess_ClassWithProperties alloc] initWithProperty:@"property"] autorelease]; // test setup XCTAssertFalse([object respondsToSelector:@selector(objectForKeyedSubscript:)], @""); @@ -99,7 +118,7 @@ - (void)testMethodAreDisallowed - (void)testUnsafeKeyAccess { - GRMustacheContextKeyAccess_ClassWithProperties *object = [[[GRMustacheContextKeyAccess_ClassWithProperties alloc] init] autorelease]; + GRMustacheContextKeyAccess_ClassWithProperties *object = [[[GRMustacheContextKeyAccess_ClassWithProperties alloc] initWithProperty:@"property"] autorelease]; // test setup XCTAssertFalse([object respondsToSelector:@selector(objectForKeyedSubscript:)], @""); @@ -117,7 +136,7 @@ - (void)testUnsafeKeyAccess - (void)testUnsafeKeyAccessInDerivedContexts { - GRMustacheContextKeyAccess_ClassWithProperties *object1 = [[[GRMustacheContextKeyAccess_ClassWithProperties alloc] init] autorelease]; + GRMustacheContextKeyAccess_ClassWithProperties *object1 = [[[GRMustacheContextKeyAccess_ClassWithProperties alloc] initWithProperty:@"property"] autorelease]; GRMustacheContextKeyAccess_ClassWithProperties2 *object2 = [[[GRMustacheContextKeyAccess_ClassWithProperties2 alloc] init] autorelease]; // test setup From 8cad35539a3cd41c514b01419893123cab485448 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Tue, 20 Oct 2015 11:36:30 +0200 Subject: [PATCH 78/81] TODO.md --- TODO.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/TODO.md b/TODO.md index 2aa49218..2018a89e 100644 --- a/TODO.md +++ b/TODO.md @@ -25,4 +25,6 @@ - [?] Have Filter and renderingObject APIs closer from GRMustache.swift - [?] Import "register" vocabulary from GRMustache.swift, instead of "protected objects". - [?] ARC. Since GRMustache 8 is all about framework and targetting iOS8+ and OSX10.9+, there is no longer any reason for manual memory management. -- [?] What happens if NSObject behaves as NSDictionary? (nil for missing keys, NSNull when present key returns nil) \ No newline at end of file +- [ ] What happens if NSObject behaves as NSDictionary? (nil for missing keys, NSNull when present key returns nil). Bad thins: it "breaks" the context stack, because when an object has a nil name, GRMustache would stop digging further for a name. Revert 48abc5a9cdf6cb41ebc89cba111078ee36d208b6. +- [ ] Turn -[GRMustacheKeyValueCoding valueForMustacheKey:] into -[GRMustacheKeyValueCoding hasValue:forMustacheKey:]. This prevents making NSNull a magic value. +- [ ] Drop support for unsafe contexts. GRMustacheKeyValueCoding is there if one wants to escape default behavior. From ec11f147d39b3f68e1d24be20edfbe1c336fe046 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Tue, 20 Oct 2015 13:24:47 +0200 Subject: [PATCH 79/81] Refactor GRMustacheKeyValueCoding, drop support for unsafe contexts. --- GRMustache/Rendering/GRMustacheContext.h | 102 +----------------- GRMustache/Rendering/GRMustacheContext.m | 89 +-------------- .../Rendering/GRMustacheContext_private.h | 9 -- .../GRMustacheExpressionInvocation.m | 4 +- .../Rendering/GRMustacheKeyValueCoding.h | 2 +- .../NSObject+GRMustacheKeyValueCoding.m | 94 ++++++++-------- ...SObject+GRMustacheKeyValueCoding_private.h | 4 +- .../Private/GRMustacheContextPrivateTest.m | 15 +-- GRMustacheTests/Public/v8.0/GRBooleanTest.m | 5 +- .../GRMustacheContextKeyAccessTest.m | 71 +----------- TODO.md | 5 +- 11 files changed, 71 insertions(+), 329 deletions(-) diff --git a/GRMustache/Rendering/GRMustacheContext.h b/GRMustache/Rendering/GRMustacheContext.h index 1d93a983..28050a24 100644 --- a/GRMustache/Rendering/GRMustacheContext.h +++ b/GRMustache/Rendering/GRMustacheContext.h @@ -309,7 +309,7 @@ * 1. If the object responds to the `objectForKeyedSubscript:` instance method, * return the result of this method. * - * 2. Otherwise, build the list of safe keys: + * 2. Otherwise, build the list of safe keys (TODO): * a. If the object responds to the `safeMustacheKeys` class method defined * by the `GRMustacheSafeKeyAccess` protocol, use this method. * b. Otherwise, use the list of Objective-C properties declared with @@ -322,8 +322,6 @@ * * 4. Otherwise, return nil. * - * Contexts with unsafe key access skip the key validation step. - * * In this method, the following search pattern is used: * * 1. Searches the priority context stack for an object that has a non-nil @@ -341,7 +339,6 @@ * * @return The value found in the context stack for the given key. * - * @see contextWithUnsafeKeyAccess * @see hasValue:forMustacheExpression:error: * * @since v6.6 @@ -366,101 +363,4 @@ */ - (BOOL)hasValue:(id *)value forMustacheExpression:(NSString *)expression error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; - -//////////////////////////////////////////////////////////////////////////////// -/// @name Unsafe Key Access -//////////////////////////////////////////////////////////////////////////////// - -/** - * Returns whether this context allows unsafe key access or not. - * - * @since v7.0 - */ -@property (nonatomic, readonly) BOOL unsafeKeyAccess AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; - -/** - * Returns a new context with unsafe key access. - * - * Unsafe key access allows this context, and all contexts derived from it, to - * access keys that are normally forbidden: keys that are not declared as - * Objective-C properties, or keys that do not belong to the result of the - * `safeMustacheKeys` method. - * - * Compare: - * - * ``` - * @interface DBRecord : NSObject - * - (void)deleteRecord; - * @end - * - * @implementation DBRecord - * - (void)deleteRecord - * { - *     NSLog(@"Oooops, your record was just deleted!"); - * } - * @end - * - * DBRecord *record = ...; - * NSString *templateString = @"{{ deleteRecord }}"; - * GRMustacheTemplate * template = [GRMustacheTemplate templateWithString:templateString error:NULL]; - * - * // Safe rendering of the dangerous template: record is not deleted. - * [template renderObject:record error:NULL]; - * - * // Unsafe rendering of the dangerous template: record is deleted. - * template.baseContext = [GRMustacheContext contextWithUnsafeKeyAccess]; - * [template renderObject:record error:NULL]; - * ``` - * - * **Companion guide:** https://github.com/groue/GRMustache/blob/master/Guides/security.md - * - * @see GRMustacheSafeKeyAccess - * - * @since v7.0 - */ -+ (instancetype)contextWithUnsafeKeyAccess AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; - -/** - * Returns a new rendering context that is the copy of the receiver, with unsafe - * key access. - * - * Unsafe key access allows this context, and all contexts derived from it, to - * access keys that are normally forbidden: keys that are not declared as - * Objective-C properties, or keys that do not belong to the result of the - * `safeMustacheKeys` method. - * - * Compare: - * - * ``` - * @interface DBRecord : NSObject - * - (void)deleteRecord; - * @end - * - * @implementation DBRecord - * - (void)deleteRecord - * { - *     NSLog(@"Oooops, your record was just deleted!"); - * } - * @end - * - * DBRecord *record = ...; - * NSString *templateString = @"{{ deleteRecord }}"; - * GRMustacheTemplate * template = [GRMustacheTemplate templateWithString:templateString error:NULL]; - * - * // Safe rendering of the dangerous template: record is not deleted. - * [template renderObject:record error:NULL]; - * - * // Unsafe rendering of the dangerous template: record is deleted. - * template.baseContext = [template.baseContext contextWithUnsafeKeyAccess]; - * [template renderObject:record error:NULL]; - * ``` - * - * **Companion guide:** https://github.com/groue/GRMustache/blob/master/Guides/security.md - * - * @see GRMustacheSafeKeyAccess - * - * @since v7.0 - */ -- (instancetype)contextWithUnsafeKeyAccess AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER; - @end diff --git a/GRMustache/Rendering/GRMustacheContext.m b/GRMustache/Rendering/GRMustacheContext.m index db357839..49eac5da 100644 --- a/GRMustache/Rendering/GRMustacheContext.m +++ b/GRMustache/Rendering/GRMustacheContext.m @@ -122,13 +122,6 @@ + (instancetype)context return [[[self alloc] init] autorelease]; } -+ (instancetype)contextWithUnsafeKeyAccess -{ - GRMustacheContext *context = [[[self alloc] init] autorelease]; - context->_unsafeKeyAccess = YES; - return context; -} - + (instancetype)contextWithObject:(id)object { GRMustacheContext *context = [[[self alloc] init] autorelease]; @@ -174,7 +167,6 @@ - (instancetype)contextByAddingTagDelegate:(id)tagDelegat } GRMustacheContext *context = [GRMustacheContext context]; - context->_unsafeKeyAccess = _unsafeKeyAccess; GRMUSTACHE_STACK_COPY(contextStack, self, context); GRMUSTACHE_STACK_COPY(protectedContextStack, self, context); @@ -193,7 +185,6 @@ - (instancetype)newContextByAddingObject:(id)object } GRMustacheContext *context = [[GRMustacheContext alloc] init]; - context->_unsafeKeyAccess = _unsafeKeyAccess; GRMUSTACHE_STACK_COPY(protectedContextStack, self, context); GRMUSTACHE_STACK_COPY(hiddenContextStack, self, context); @@ -223,7 +214,6 @@ - (instancetype)contextByAddingProtectedObject:(id)object } GRMustacheContext *context = [GRMustacheContext context]; - context->_unsafeKeyAccess = _unsafeKeyAccess; GRMUSTACHE_STACK_COPY(contextStack, self, context); GRMUSTACHE_STACK_COPY(hiddenContextStack, self, context); @@ -242,7 +232,6 @@ - (instancetype)contextByAddingHiddenObject:(id)object } GRMustacheContext *context = [GRMustacheContext context]; - context->_unsafeKeyAccess = _unsafeKeyAccess; GRMUSTACHE_STACK_COPY(contextStack, self, context); GRMUSTACHE_STACK_COPY(protectedContextStack, self, context); @@ -261,7 +250,6 @@ - (instancetype)contextByAddingPartialOverrideNode:(GRMustachePartialOverrideNod } GRMustacheContext *context = [GRMustacheContext context]; - context->_unsafeKeyAccess = _unsafeKeyAccess; GRMUSTACHE_STACK_COPY(contextStack, self, context); GRMUSTACHE_STACK_COPY(protectedContextStack, self, context); @@ -273,75 +261,6 @@ - (instancetype)contextByAddingPartialOverrideNode:(GRMustachePartialOverrideNod return context; } -- (instancetype)contextWithUnsafeKeyAccess -{ -#define GRMUSTACHE_CREATE_DEEP_UNSAFE_CONTEXTS(stackName) \ - GRMUSTACHE_STACK_ENUMERATE(stackName, self, __context) { \ - GRMustacheContext *__unsafeContext = CFDictionaryGetValue(unsafeContextForContext, __context); \ - if (!__unsafeContext) { \ - __unsafeContext = [GRMustacheContext contextWithUnsafeKeyAccess]; \ - GRMUSTACHE_STACK_COPY(contextStack, __context, __unsafeContext); \ - GRMUSTACHE_STACK_COPY(protectedContextStack, __context, __unsafeContext); \ - GRMUSTACHE_STACK_COPY(hiddenContextStack, __context, __unsafeContext); \ - GRMUSTACHE_STACK_COPY(tagDelegateStack, __context, __unsafeContext); \ - GRMUSTACHE_STACK_COPY(partialOverrideNodeStack, __context, __unsafeContext); \ - CFDictionarySetValue(unsafeContextForContext, __context, __unsafeContext); \ - } \ - } - -#define GRMUSTACHE_UPDATE_UNSAFE_PARENT(stackName, context) { \ - GRMustacheContext *__safeParent = GRMUSTACHE_STACK_PARENT(stackName, context); \ - if (__safeParent) { \ - GRMustacheContext *__unsafeParent = CFDictionaryGetValue(unsafeContextForContext, __safeParent); \ - [__safeParent release]; \ - GRMUSTACHE_STACK_PARENT(stackName, context) = [__unsafeParent retain]; \ - } \ -} - - // Duplicate contexts of all stacks into unsafe contexts. - // The parents of unsafe contexts are still the safe ones, that we'll update later. - - CFMutableDictionaryRef unsafeContextForContext = CFDictionaryCreateMutable(NULL, 0, NULL, NULL); - - GRMUSTACHE_CREATE_DEEP_UNSAFE_CONTEXTS(contextStack); - GRMUSTACHE_CREATE_DEEP_UNSAFE_CONTEXTS(protectedContextStack); - GRMUSTACHE_CREATE_DEEP_UNSAFE_CONTEXTS(hiddenContextStack); - GRMUSTACHE_CREATE_DEEP_UNSAFE_CONTEXTS(tagDelegateStack); - GRMUSTACHE_CREATE_DEEP_UNSAFE_CONTEXTS(partialOverrideNodeStack); - - - // Update safe parents of unsafe contexts with unsafe ones - - CFIndex count = CFDictionaryGetCount(unsafeContextForContext); - GRMustacheContext **unsafeContexts = malloc(count * sizeof(GRMustacheContext *)); - if (unsafeContexts == NULL) { - // Allocation failed. - // - // This method is supposed to return a newly created object, so we can - // behave like failing allocating methods and return nil. - // - // And make sure we cleanup allocated memory before. - CFRelease(unsafeContextForContext); - return nil; - } - CFDictionaryGetKeysAndValues(unsafeContextForContext, NULL, (const void **)unsafeContexts); - for (CFIndex i = 0; i < count; ++i) { - GRMustacheContext *unsafeContext = unsafeContexts[i]; - GRMUSTACHE_UPDATE_UNSAFE_PARENT(contextStack, unsafeContext); - GRMUSTACHE_UPDATE_UNSAFE_PARENT(protectedContextStack, unsafeContext); - GRMUSTACHE_UPDATE_UNSAFE_PARENT(hiddenContextStack, unsafeContext); - GRMUSTACHE_UPDATE_UNSAFE_PARENT(tagDelegateStack, unsafeContext); - GRMUSTACHE_UPDATE_UNSAFE_PARENT(partialOverrideNodeStack, unsafeContext); - } - free(unsafeContexts); - - - // Done - - GRMustacheContext *unsafeContext = CFDictionaryGetValue(unsafeContextForContext, self); - CFRelease(unsafeContextForContext); - return unsafeContext; -} // ============================================================================= #pragma mark - Context Stack @@ -361,8 +280,8 @@ - (id)valueForMustacheKey:(NSString *)key protected:(BOOL *)protected // First look for in the protected context stack GRMUSTACHE_STACK_ENUMERATE(protectedContextStack, self, context) { - id value = [GRMUSTACHE_STACK_TOP(protectedContextStack, context) valueForMustacheKey:key unsafeKeyAccess:context->_unsafeKeyAccess]; - if (value != nil) { + id value; + if ([GRMUSTACHE_STACK_TOP(protectedContextStack, context) exceptionSafeHasValue:&value forMustacheKey:key]) { if (protected != NULL) { *protected = YES; } @@ -387,8 +306,8 @@ - (id)valueForMustacheKey:(NSString *)key protected:(BOOL *)protected } } if (hidden) { continue; } - id value = [contextObject valueForMustacheKey:key unsafeKeyAccess:context->_unsafeKeyAccess]; - if (value != nil) { + id value; + if ([contextObject exceptionSafeHasValue:&value forMustacheKey:key]) { if (protected != NULL) { *protected = NO; } diff --git a/GRMustache/Rendering/GRMustacheContext_private.h b/GRMustache/Rendering/GRMustacheContext_private.h index 0a070007..a5c1a33a 100644 --- a/GRMustache/Rendering/GRMustacheContext_private.h +++ b/GRMustache/Rendering/GRMustacheContext_private.h @@ -55,9 +55,6 @@ // Documented in GRMustacheContext.h + (instancetype)context GRMUSTACHE_API_PUBLIC; -// Documented in GRMustacheContext.h -+ (instancetype)contextWithUnsafeKeyAccess GRMUSTACHE_API_PUBLIC; - // Documented in GRMustacheContext.h + (instancetype)contextWithObject:(id)object GRMUSTACHE_API_PUBLIC; @@ -76,9 +73,6 @@ // Documented in GRMustacheContext.h - (instancetype)contextByAddingTagDelegate:(id)tagDelegate GRMUSTACHE_API_PUBLIC; -// Documented in GRMustacheContext.h -- (instancetype)contextWithUnsafeKeyAccess GRMUSTACHE_API_PUBLIC; - // Documented in GRMustacheContext.h - (BOOL)hasValue:(id *)value forMustacheExpression:(NSString *)expression error:(NSError **)error GRMUSTACHE_API_PUBLIC; @@ -89,9 +83,6 @@ // @see -[GRMustacheImplicitIteratorExpression hasValue:withContext:protected:error:] @property (nonatomic, readonly) id topMustacheObject GRMUSTACHE_API_PUBLIC; -// Documented in GRMustacheContext.h -@property (nonatomic, readonly) BOOL unsafeKeyAccess GRMUSTACHE_API_PUBLIC; - /** * Same as [contextByAddingObject:object], but returns a retained object. * This method helps efficiently managing memory, and targeting slow methods. diff --git a/GRMustache/Rendering/GRMustacheExpressionInvocation.m b/GRMustache/Rendering/GRMustacheExpressionInvocation.m index 494ab918..c6f75bba 100644 --- a/GRMustache/Rendering/GRMustacheExpressionInvocation.m +++ b/GRMustache/Rendering/GRMustacheExpressionInvocation.m @@ -117,7 +117,9 @@ - (BOOL)visitScopedExpression:(GRMustacheScopedExpression *)expression error:(NS return NO; } - _value = [_value valueForMustacheKey:expression.identifier unsafeKeyAccess:_context.unsafeKeyAccess]; + if (![_value exceptionSafeHasValue:&_value forMustacheKey:expression.identifier]) { + _value = nil; + } _valueIsProtected = NO; return YES; } diff --git a/GRMustache/Rendering/GRMustacheKeyValueCoding.h b/GRMustache/Rendering/GRMustacheKeyValueCoding.h index 05c388e5..3df4133f 100644 --- a/GRMustache/Rendering/GRMustacheKeyValueCoding.h +++ b/GRMustache/Rendering/GRMustacheKeyValueCoding.h @@ -31,5 +31,5 @@ /** * TODO */ -- (id)valueForMustacheKey:(NSString *)key; +- (BOOL)hasValue:(id *)value forMustacheKey:(NSString *)key; @end diff --git a/GRMustache/Rendering/NSObject+GRMustacheKeyValueCoding.m b/GRMustache/Rendering/NSObject+GRMustacheKeyValueCoding.m index b337e36f..831d9039 100644 --- a/GRMustache/Rendering/NSObject+GRMustacheKeyValueCoding.m +++ b/GRMustache/Rendering/NSObject+GRMustacheKeyValueCoding.m @@ -24,40 +24,12 @@ #import "NSObject+GRMustacheKeyValueCoding_private.h" #import "GRMustacheKeyAccess_private.h" -@interface NSObject(KeyedSubscripting) -- (id)valueForMustacheKey:(id)key; -@end - @implementation NSObject(GRMustacheKeyValueCoding) -- (id)valueForMustacheKey:(NSString *)key unsafeKeyAccess:(BOOL)unsafeKeyAccess +- (BOOL)exceptionSafeHasValue:(id *)value forMustacheKey:(NSString *)key { - // Try valueForMustacheKey: - - if ([self respondsToSelector:@selector(valueForMustacheKey:)]) { - @try { - return [self valueForMustacheKey:key]; - } - @catch (NSException *exception) { - // Swallow NSUndefinedKeyException only - if (![[exception name] isEqualToString:NSUndefinedKeyException]) { - [exception raise]; - } - return nil; - } - } - - - // Then try valueForKey: for safe keys - - if (!unsafeKeyAccess && ![GRMustacheKeyAccess isSafeMustacheKey:key forObject:self]) { - return nil; - } - @try { - // If there is no exception, then the key is present. - // Turn nil value into NSNull in order to stop contact stack lookup. - return [self valueForKey:key] ?: [NSNull null]; + return [self hasValue:value forMustacheKey:key]; } @catch (NSException *exception) { // Swallow NSUndefinedKeyException only @@ -65,33 +37,49 @@ - (id)valueForMustacheKey:(NSString *)key unsafeKeyAccess:(BOOL)unsafeKeyAccess [exception raise]; } // Missing key - return nil; + return NO; + } +} + +- (BOOL)hasValue:(id *)value forMustacheKey:(NSString *)key +{ + // Try valueForKey: for safe keys onlys + if (![GRMustacheKeyAccess isSafeMustacheKey:key forObject:self]) { + return NO; } + + // If property is nil, behave as if the key was missing. + *value = [self valueForKey:key]; + return (*value != nil); } @end @implementation NSDictionary(GRMustacheKeyValueCoding) -- (id)valueForMustacheKey:(NSString *)key +- (BOOL)hasValue:(id *)value forMustacheKey:(NSString *)key { - return [self objectForKey:key]; + *value = [self objectForKey:key]; + return (*value != nil); } @end @implementation NSArray(GRMustacheKeyValueCoding) -- (id)valueForMustacheKey:(NSString *)key +- (BOOL)hasValue:(id *)value forMustacheKey:(NSString *)key { if ([key isEqualToString:@"count"]) { - return @(self.count); + *value = @(self.count); + return YES; } else if ([key isEqualToString:@"first"]) { - return self.firstObject; + *value = self.firstObject; + return YES; } else if ([key isEqualToString:@"last"]) { - return self.lastObject; + *value = self.lastObject; + return YES; } else { - return nil; + return NO; } } @@ -99,16 +87,19 @@ - (id)valueForMustacheKey:(NSString *)key @implementation NSOrderedSet(GRMustacheKeyValueCoding) -- (id)valueForMustacheKey:(NSString *)key +- (BOOL)hasValue:(id *)value forMustacheKey:(NSString *)key { if ([key isEqualToString:@"count"]) { - return @(self.count); + *value = @(self.count); + return YES; } else if ([key isEqualToString:@"first"]) { - return self.firstObject; + *value = self.firstObject; + return YES; } else if ([key isEqualToString:@"last"]) { - return self.lastObject; + *value = self.lastObject; + return YES; } else { - return nil; + return NO; } } @@ -116,14 +107,16 @@ - (id)valueForMustacheKey:(NSString *)key @implementation NSSet(GRMustacheKeyValueCoding) -- (id)valueForMustacheKey:(NSString *)key +- (BOOL)hasValue:(id *)value forMustacheKey:(NSString *)key { if ([key isEqualToString:@"count"]) { - return @(self.count); + *value = @(self.count); + return YES; } else if ([key isEqualToString:@"first"]) { - return self.anyObject; + *value = self.anyObject; + return YES; } else { - return nil; + return NO; } } @@ -131,12 +124,13 @@ - (id)valueForMustacheKey:(NSString *)key @implementation NSString(GRMustacheKeyValueCoding) -- (id)valueForMustacheKey:(NSString *)key +- (BOOL)hasValue:(id *)value forMustacheKey:(NSString *)key { if ([key isEqualToString:@"length"]) { - return @(self.length); + *value = @(self.length); + return YES; } else { - return nil; + return NO; } } diff --git a/GRMustache/Rendering/NSObject+GRMustacheKeyValueCoding_private.h b/GRMustache/Rendering/NSObject+GRMustacheKeyValueCoding_private.h index 7ed9aecc..90f25f50 100644 --- a/GRMustache/Rendering/NSObject+GRMustacheKeyValueCoding_private.h +++ b/GRMustache/Rendering/NSObject+GRMustacheKeyValueCoding_private.h @@ -24,8 +24,8 @@ #import "GRMustacheAvailabilityMacros.h" #import "GRMustacheKeyValueCoding.h" -@interface NSObject(GRMustacheKeyValueCoding) -- (id)valueForMustacheKey:(NSString *)key unsafeKeyAccess:(BOOL)unsafeKeyAccess; +@interface NSObject(GRMustacheKeyValueCoding) +- (BOOL)exceptionSafeHasValue:(id *)value forMustacheKey:(NSString *)key; @end @interface NSDictionary(GRMustacheKeyValueCoding) diff --git a/GRMustacheTests/Private/GRMustacheContextPrivateTest.m b/GRMustacheTests/Private/GRMustacheContextPrivateTest.m index 2becebcd..662deec6 100644 --- a/GRMustacheTests/Private/GRMustacheContextPrivateTest.m +++ b/GRMustacheTests/Private/GRMustacheContextPrivateTest.m @@ -41,9 +41,10 @@ @implementation GRKVCRecorder @synthesize lastAccessedKey; @synthesize keys; -- (id)valueForMustacheKey:(NSString *)key +- (BOOL)hasValue:(id *)value forMustacheKey:(NSString *)key { - return [self valueForKey:key]; + *value = [self valueForKey:key]; + return YES; } + (instancetype)recorderWithRecognizedKeys:(NSArray *)keys @@ -83,9 +84,10 @@ @interface ThrowingObjectFromValueForKey: NSObject @implementation ThrowingObjectFromValueForKey -- (id)valueForMustacheKey:(NSString *)key +- (BOOL)hasValue:(id *)value forMustacheKey:(NSString *)key { - return [self valueForKey:key]; + *value = [self valueForKey:key]; + return YES; } - (id)valueForKey:(NSString *)key @@ -109,9 +111,10 @@ @interface ThrowingObjectFromValueForUndefinedKey: NSObject Date: Tue, 20 Oct 2015 13:30:39 +0200 Subject: [PATCH 80/81] TODO.md --- TODO.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TODO.md b/TODO.md index 62924d2a..22296f10 100644 --- a/TODO.md +++ b/TODO.md @@ -23,7 +23,7 @@ - [X] Turn -[GRMustacheKeyValueCoding valueForMustacheKey:] into -[GRMustacheKeyValueCoding hasValue:forMustacheKey:]. This prevents making NSNull a magic value. - [X] Drop support for unsafe contexts. GRMustacheKeyValueCoding is there if one wants to escape default behavior. -- [ ] Drop support for else `{{#a}}{{^a}}{{/a}}`. +- [?] Drop support for else `{{#a}}{{^a}}{{/a}}`. - [?] Have Filter and renderingObject APIs closer from GRMustache.swift - [?] Import "register" vocabulary from GRMustache.swift, instead of "protected objects". - [?] ARC. Since GRMustache 8 is all about framework and targetting iOS8+ and OSX10.9+, there is no longer any reason for manual memory management. From cdc2ef8d057785c2d24e2292b19a1d5391807eb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwendal=20Roue=CC=81?= Date: Tue, 20 Oct 2015 13:30:53 +0200 Subject: [PATCH 81/81] Explicit requirement of -fno-objc-arc --- GRMustache/Compiling/Expressions/GRMustacheExpression.m | 4 ++++ .../Compiling/Expressions/GRMustacheFilteredExpression.m | 4 ++++ .../Compiling/Expressions/GRMustacheIdentifierExpression.m | 4 ++++ .../Expressions/GRMustacheImplicitIteratorExpression.m | 4 ++++ .../Compiling/Expressions/GRMustacheScopedExpression.m | 4 ++++ GRMustache/Compiling/GRMustacheCompiler.m | 4 ++++ GRMustache/Compiling/TemplateAST/GRMustacheBlock.m | 4 ++++ GRMustache/Compiling/TemplateAST/GRMustachePartialNode.m | 4 ++++ .../Compiling/TemplateAST/GRMustachePartialOverrideNode.m | 4 ++++ GRMustache/Compiling/TemplateAST/GRMustacheSectionTag.m | 4 ++++ GRMustache/Compiling/TemplateAST/GRMustacheTag.m | 4 ++++ GRMustache/Compiling/TemplateAST/GRMustacheTemplateAST.m | 4 ++++ GRMustache/Compiling/TemplateAST/GRMustacheTextNode.m | 4 ++++ GRMustache/Compiling/TemplateAST/GRMustacheVariableTag.m | 4 ++++ GRMustache/Configuration/GRMustacheConfiguration.m | 5 +++++ GRMustache/GRMustache.m | 5 +++++ GRMustache/Parsing/GRMustacheExpressionParser.m | 4 ++++ GRMustache/Parsing/GRMustacheTemplateParser.m | 4 ++++ GRMustache/Parsing/GRMustacheToken.m | 4 ++++ GRMustache/Rendering/GRMustacheContext.m | 4 ++++ GRMustache/Rendering/GRMustacheExpressionInvocation.m | 4 ++++ GRMustache/Rendering/GRMustacheFilter.m | 4 ++++ GRMustache/Rendering/GRMustacheKeyAccess.m | 4 ++++ GRMustache/Rendering/GRMustacheRendering.m | 4 ++++ GRMustache/Rendering/GRMustacheRenderingEngine.m | 4 ++++ GRMustache/Rendering/NSObject+GRMustacheKeyValueCoding.m | 3 +++ GRMustache/Services/GRMustacheExpressionGenerator.m | 4 ++++ GRMustache/Services/GRMustacheTemplateGenerator.m | 4 ++++ GRMustache/Services/NSFormatter+GRMustache.m | 4 ++++ GRMustache/Services/NSValueTransformer+GRMustache.m | 4 ++++ GRMustache/Services/StandardLibrary/GRMustacheEachFilter.m | 4 ++++ .../Services/StandardLibrary/GRMustacheHTMLEscapeFilter.m | 4 ++++ .../StandardLibrary/GRMustacheJavascriptEscapeFilter.m | 4 ++++ GRMustache/Services/StandardLibrary/GRMustacheLocalizer.m | 4 ++++ .../Services/StandardLibrary/GRMustacheURLEscapeFilter.m | 4 ++++ GRMustache/Shared/GRMustacheError.m | 4 ++++ GRMustache/Shared/GRMustacheTranslateCharacters.m | 4 ++++ GRMustache/Templates/GRMustacheTemplate.m | 4 ++++ GRMustache/Templates/GRMustacheTemplateRepository.m | 4 ++++ 39 files changed, 157 insertions(+) diff --git a/GRMustache/Compiling/Expressions/GRMustacheExpression.m b/GRMustache/Compiling/Expressions/GRMustacheExpression.m index b758e261..c3835683 100644 --- a/GRMustache/Compiling/Expressions/GRMustacheExpression.m +++ b/GRMustache/Compiling/Expressions/GRMustacheExpression.m @@ -20,6 +20,10 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#if __has_feature(objc_arc) +#error Manual Reference Counting required: use -fno-objc-arc. +#endif + #import "GRMustacheExpression_private.h" @implementation GRMustacheExpression diff --git a/GRMustache/Compiling/Expressions/GRMustacheFilteredExpression.m b/GRMustache/Compiling/Expressions/GRMustacheFilteredExpression.m index ba2e40a3..ee9edabb 100644 --- a/GRMustache/Compiling/Expressions/GRMustacheFilteredExpression.m +++ b/GRMustache/Compiling/Expressions/GRMustacheFilteredExpression.m @@ -20,6 +20,10 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#if __has_feature(objc_arc) +#error Manual Reference Counting required: use -fno-objc-arc. +#endif + #import #import "GRMustacheFilteredExpression_private.h" #import "GRMustacheExpressionVisitor_private.h" diff --git a/GRMustache/Compiling/Expressions/GRMustacheIdentifierExpression.m b/GRMustache/Compiling/Expressions/GRMustacheIdentifierExpression.m index 93e9c50e..5965b910 100644 --- a/GRMustache/Compiling/Expressions/GRMustacheIdentifierExpression.m +++ b/GRMustache/Compiling/Expressions/GRMustacheIdentifierExpression.m @@ -20,6 +20,10 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#if __has_feature(objc_arc) +#error Manual Reference Counting required: use -fno-objc-arc. +#endif + #import "GRMustacheIdentifierExpression_private.h" #import "GRMustacheExpressionVisitor_private.h" diff --git a/GRMustache/Compiling/Expressions/GRMustacheImplicitIteratorExpression.m b/GRMustache/Compiling/Expressions/GRMustacheImplicitIteratorExpression.m index b28fc786..2a09f94c 100644 --- a/GRMustache/Compiling/Expressions/GRMustacheImplicitIteratorExpression.m +++ b/GRMustache/Compiling/Expressions/GRMustacheImplicitIteratorExpression.m @@ -20,6 +20,10 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#if __has_feature(objc_arc) +#error Manual Reference Counting required: use -fno-objc-arc. +#endif + #import "GRMustacheImplicitIteratorExpression_private.h" #import "GRMustacheExpressionVisitor_private.h" diff --git a/GRMustache/Compiling/Expressions/GRMustacheScopedExpression.m b/GRMustache/Compiling/Expressions/GRMustacheScopedExpression.m index 08f3aaee..da7eb0f6 100644 --- a/GRMustache/Compiling/Expressions/GRMustacheScopedExpression.m +++ b/GRMustache/Compiling/Expressions/GRMustacheScopedExpression.m @@ -20,6 +20,10 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#if __has_feature(objc_arc) +#error Manual Reference Counting required: use -fno-objc-arc. +#endif + #import "GRMustacheScopedExpression_private.h" #import "GRMustacheExpressionVisitor_private.h" diff --git a/GRMustache/Compiling/GRMustacheCompiler.m b/GRMustache/Compiling/GRMustacheCompiler.m index b0c239ef..26b72857 100644 --- a/GRMustache/Compiling/GRMustacheCompiler.m +++ b/GRMustache/Compiling/GRMustacheCompiler.m @@ -20,6 +20,10 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#if __has_feature(objc_arc) +#error Manual Reference Counting required: use -fno-objc-arc. +#endif + #import "GRMustacheCompiler_private.h" #import "GRMustachePartialNode_private.h" #import "GRMustacheTemplateRepository_private.h" diff --git a/GRMustache/Compiling/TemplateAST/GRMustacheBlock.m b/GRMustache/Compiling/TemplateAST/GRMustacheBlock.m index 6ba1dd12..96a9ca10 100644 --- a/GRMustache/Compiling/TemplateAST/GRMustacheBlock.m +++ b/GRMustache/Compiling/TemplateAST/GRMustacheBlock.m @@ -20,6 +20,10 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#if __has_feature(objc_arc) +#error Manual Reference Counting required: use -fno-objc-arc. +#endif + #import "GRMustacheBlock_private.h" #import "GRMustacheTemplateASTVisitor_private.h" diff --git a/GRMustache/Compiling/TemplateAST/GRMustachePartialNode.m b/GRMustache/Compiling/TemplateAST/GRMustachePartialNode.m index 621660e3..a5b5b223 100644 --- a/GRMustache/Compiling/TemplateAST/GRMustachePartialNode.m +++ b/GRMustache/Compiling/TemplateAST/GRMustachePartialNode.m @@ -20,6 +20,10 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#if __has_feature(objc_arc) +#error Manual Reference Counting required: use -fno-objc-arc. +#endif + #import "GRMustachePartialNode_private.h" #import "GRMustacheTemplateAST_private.h" #import "GRMustacheTemplateASTVisitor_private.h" diff --git a/GRMustache/Compiling/TemplateAST/GRMustachePartialOverrideNode.m b/GRMustache/Compiling/TemplateAST/GRMustachePartialOverrideNode.m index 6cbe3abb..a4076416 100644 --- a/GRMustache/Compiling/TemplateAST/GRMustachePartialOverrideNode.m +++ b/GRMustache/Compiling/TemplateAST/GRMustachePartialOverrideNode.m @@ -20,6 +20,10 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#if __has_feature(objc_arc) +#error Manual Reference Counting required: use -fno-objc-arc. +#endif + #import "GRMustachePartialOverrideNode_private.h" #import "GRMustachePartialNode_private.h" #import "GRMustacheTemplateAST_private.h" diff --git a/GRMustache/Compiling/TemplateAST/GRMustacheSectionTag.m b/GRMustache/Compiling/TemplateAST/GRMustacheSectionTag.m index 6ebb2f9a..557f97fc 100644 --- a/GRMustache/Compiling/TemplateAST/GRMustacheSectionTag.m +++ b/GRMustache/Compiling/TemplateAST/GRMustacheSectionTag.m @@ -20,6 +20,10 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#if __has_feature(objc_arc) +#error Manual Reference Counting required: use -fno-objc-arc. +#endif + #import "GRMustacheSectionTag_private.h" #import "GRMustacheExpression_private.h" #import "GRMustacheToken_private.h" diff --git a/GRMustache/Compiling/TemplateAST/GRMustacheTag.m b/GRMustache/Compiling/TemplateAST/GRMustacheTag.m index 08a03c06..4d15550a 100644 --- a/GRMustache/Compiling/TemplateAST/GRMustacheTag.m +++ b/GRMustache/Compiling/TemplateAST/GRMustacheTag.m @@ -20,6 +20,10 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#if __has_feature(objc_arc) +#error Manual Reference Counting required: use -fno-objc-arc. +#endif + #import #import "GRMustacheTag_private.h" #import "GRMustacheRendering_private.h" diff --git a/GRMustache/Compiling/TemplateAST/GRMustacheTemplateAST.m b/GRMustache/Compiling/TemplateAST/GRMustacheTemplateAST.m index 8ee0a3fa..b2f8d88f 100644 --- a/GRMustache/Compiling/TemplateAST/GRMustacheTemplateAST.m +++ b/GRMustache/Compiling/TemplateAST/GRMustacheTemplateAST.m @@ -20,6 +20,10 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#if __has_feature(objc_arc) +#error Manual Reference Counting required: use -fno-objc-arc. +#endif + #import "GRMustacheTemplateAST_private.h" #import "GRMustacheTemplateASTNode_private.h" #import "GRMustacheTemplateASTVisitor_private.h" diff --git a/GRMustache/Compiling/TemplateAST/GRMustacheTextNode.m b/GRMustache/Compiling/TemplateAST/GRMustacheTextNode.m index d45427f6..f025600c 100644 --- a/GRMustache/Compiling/TemplateAST/GRMustacheTextNode.m +++ b/GRMustache/Compiling/TemplateAST/GRMustacheTextNode.m @@ -20,6 +20,10 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#if __has_feature(objc_arc) +#error Manual Reference Counting required: use -fno-objc-arc. +#endif + #import "GRMustacheTextNode_private.h" #import "GRMustacheTemplateASTVisitor_private.h" diff --git a/GRMustache/Compiling/TemplateAST/GRMustacheVariableTag.m b/GRMustache/Compiling/TemplateAST/GRMustacheVariableTag.m index 3b47909c..a0acb844 100644 --- a/GRMustache/Compiling/TemplateAST/GRMustacheVariableTag.m +++ b/GRMustache/Compiling/TemplateAST/GRMustacheVariableTag.m @@ -20,6 +20,10 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#if __has_feature(objc_arc) +#error Manual Reference Counting required: use -fno-objc-arc. +#endif + #import "GRMustacheVariableTag_private.h" #import "GRMustacheExpression_private.h" #import "GRMustacheToken_private.h" diff --git a/GRMustache/Configuration/GRMustacheConfiguration.m b/GRMustache/Configuration/GRMustacheConfiguration.m index 5e34501e..c5c78958 100644 --- a/GRMustache/Configuration/GRMustacheConfiguration.m +++ b/GRMustache/Configuration/GRMustacheConfiguration.m @@ -20,10 +20,15 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#if __has_feature(objc_arc) +#error Manual Reference Counting required: use -fno-objc-arc. +#endif + #import "GRMustacheConfiguration_private.h" #import "GRMustache_private.h" #import "GRMustacheContext_private.h" + @implementation GRMustacheConfiguration + (GRMustacheConfiguration *)defaultConfiguration diff --git a/GRMustache/GRMustache.m b/GRMustache/GRMustache.m index 7bcdfa1d..075ab190 100644 --- a/GRMustache/GRMustache.m +++ b/GRMustache/GRMustache.m @@ -20,6 +20,10 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#if __has_feature(objc_arc) +#error Manual Reference Counting required: use -fno-objc-arc. +#endif + #import "GRMustache_private.h" #import "GRMustacheKeyAccess_private.h" #import "GRMustacheRendering_private.h" @@ -32,6 +36,7 @@ #import "GRMustacheError.h" #import "GRMustacheTag_private.h" + // ============================================================================= #pragma mark - GRMustache diff --git a/GRMustache/Parsing/GRMustacheExpressionParser.m b/GRMustache/Parsing/GRMustacheExpressionParser.m index 0a8d0e1e..d309f2af 100644 --- a/GRMustache/Parsing/GRMustacheExpressionParser.m +++ b/GRMustache/Parsing/GRMustacheExpressionParser.m @@ -20,6 +20,10 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#if __has_feature(objc_arc) +#error Manual Reference Counting required: use -fno-objc-arc. +#endif + #import "GRMustacheExpressionParser_private.h" #import "GRMustacheImplicitIteratorExpression_private.h" #import "GRMustacheFilteredExpression_private.h" diff --git a/GRMustache/Parsing/GRMustacheTemplateParser.m b/GRMustache/Parsing/GRMustacheTemplateParser.m index b6ecdd57..d3a2020c 100644 --- a/GRMustache/Parsing/GRMustacheTemplateParser.m +++ b/GRMustache/Parsing/GRMustacheTemplateParser.m @@ -20,6 +20,10 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#if __has_feature(objc_arc) +#error Manual Reference Counting required: use -fno-objc-arc. +#endif + #import "GRMustacheTemplateParser_private.h" #import "GRMustacheConfiguration_private.h" #import "GRMustacheToken_private.h" diff --git a/GRMustache/Parsing/GRMustacheToken.m b/GRMustache/Parsing/GRMustacheToken.m index 064e1264..217a2886 100644 --- a/GRMustache/Parsing/GRMustacheToken.m +++ b/GRMustache/Parsing/GRMustacheToken.m @@ -20,6 +20,10 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#if __has_feature(objc_arc) +#error Manual Reference Counting required: use -fno-objc-arc. +#endif + #import "GRMustacheToken_private.h" diff --git a/GRMustache/Rendering/GRMustacheContext.m b/GRMustache/Rendering/GRMustacheContext.m index 49eac5da..d81d75b1 100644 --- a/GRMustache/Rendering/GRMustacheContext.m +++ b/GRMustache/Rendering/GRMustacheContext.m @@ -20,6 +20,10 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#if __has_feature(objc_arc) +#error Manual Reference Counting required: use -fno-objc-arc. +#endif + #import #import #import "GRMustacheContext_private.h" diff --git a/GRMustache/Rendering/GRMustacheExpressionInvocation.m b/GRMustache/Rendering/GRMustacheExpressionInvocation.m index c6f75bba..bd70de93 100644 --- a/GRMustache/Rendering/GRMustacheExpressionInvocation.m +++ b/GRMustache/Rendering/GRMustacheExpressionInvocation.m @@ -20,6 +20,10 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#if __has_feature(objc_arc) +#error Manual Reference Counting required: use -fno-objc-arc. +#endif + #import "GRMustacheExpressionInvocation_private.h" #import "GRMustacheExpressionVisitor_private.h" #import "GRMustacheFilter_private.h" diff --git a/GRMustache/Rendering/GRMustacheFilter.m b/GRMustache/Rendering/GRMustacheFilter.m index d5c7bf33..24b1e7a6 100644 --- a/GRMustache/Rendering/GRMustacheFilter.m +++ b/GRMustache/Rendering/GRMustacheFilter.m @@ -20,6 +20,10 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#if __has_feature(objc_arc) +#error Manual Reference Counting required: use -fno-objc-arc. +#endif + #import "GRMustacheFilter_private.h" // ============================================================================= diff --git a/GRMustache/Rendering/GRMustacheKeyAccess.m b/GRMustache/Rendering/GRMustacheKeyAccess.m index 61db6681..127e9f11 100644 --- a/GRMustache/Rendering/GRMustacheKeyAccess.m +++ b/GRMustache/Rendering/GRMustacheKeyAccess.m @@ -20,6 +20,10 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#if __has_feature(objc_arc) +#error Manual Reference Counting required: use -fno-objc-arc. +#endif + #import #import #import "GRMustacheKeyAccess_private.h" diff --git a/GRMustache/Rendering/GRMustacheRendering.m b/GRMustache/Rendering/GRMustacheRendering.m index 422c3bdb..f510004e 100644 --- a/GRMustache/Rendering/GRMustacheRendering.m +++ b/GRMustache/Rendering/GRMustacheRendering.m @@ -20,6 +20,10 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#if __has_feature(objc_arc) +#error Manual Reference Counting required: use -fno-objc-arc. +#endif + #import #import #import "GRMustacheRendering_private.h" diff --git a/GRMustache/Rendering/GRMustacheRenderingEngine.m b/GRMustache/Rendering/GRMustacheRenderingEngine.m index d13ff0e6..35055ae4 100644 --- a/GRMustache/Rendering/GRMustacheRenderingEngine.m +++ b/GRMustache/Rendering/GRMustacheRenderingEngine.m @@ -20,6 +20,10 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#if __has_feature(objc_arc) +#error Manual Reference Counting required: use -fno-objc-arc. +#endif + #import #import "GRMustacheRenderingEngine_private.h" #import "GRMustacheTemplateASTVisitor_private.h" diff --git a/GRMustache/Rendering/NSObject+GRMustacheKeyValueCoding.m b/GRMustache/Rendering/NSObject+GRMustacheKeyValueCoding.m index 831d9039..0c36ff04 100644 --- a/GRMustache/Rendering/NSObject+GRMustacheKeyValueCoding.m +++ b/GRMustache/Rendering/NSObject+GRMustacheKeyValueCoding.m @@ -20,6 +20,9 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#if __has_feature(objc_arc) +#error Manual Reference Counting required: use -fno-objc-arc. +#endif #import "NSObject+GRMustacheKeyValueCoding_private.h" #import "GRMustacheKeyAccess_private.h" diff --git a/GRMustache/Services/GRMustacheExpressionGenerator.m b/GRMustache/Services/GRMustacheExpressionGenerator.m index c6e872c2..6f7c8300 100644 --- a/GRMustache/Services/GRMustacheExpressionGenerator.m +++ b/GRMustache/Services/GRMustacheExpressionGenerator.m @@ -20,6 +20,10 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#if __has_feature(objc_arc) +#error Manual Reference Counting required: use -fno-objc-arc. +#endif + #import "GRMustacheExpressionGenerator_private.h" #import "GRMustacheExpressionVisitor_private.h" #import "GRMustacheFilteredExpression_private.h" diff --git a/GRMustache/Services/GRMustacheTemplateGenerator.m b/GRMustache/Services/GRMustacheTemplateGenerator.m index 3744bfa4..542ddcac 100644 --- a/GRMustache/Services/GRMustacheTemplateGenerator.m +++ b/GRMustache/Services/GRMustacheTemplateGenerator.m @@ -20,6 +20,10 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#if __has_feature(objc_arc) +#error Manual Reference Counting required: use -fno-objc-arc. +#endif + #import "GRMustacheTemplateGenerator_private.h" #import "GRMustacheExpressionGenerator_private.h" #import "GRMustacheTemplateASTVisitor_private.h" diff --git a/GRMustache/Services/NSFormatter+GRMustache.m b/GRMustache/Services/NSFormatter+GRMustache.m index a7e42f73..64ada60c 100644 --- a/GRMustache/Services/NSFormatter+GRMustache.m +++ b/GRMustache/Services/NSFormatter+GRMustache.m @@ -20,6 +20,10 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#if __has_feature(objc_arc) +#error Manual Reference Counting required: use -fno-objc-arc. +#endif + #import "NSFormatter+GRMustache.h" #import "GRMustacheTag.h" #import "GRMustacheContext.h" diff --git a/GRMustache/Services/NSValueTransformer+GRMustache.m b/GRMustache/Services/NSValueTransformer+GRMustache.m index e82afccb..8b3b7ffd 100644 --- a/GRMustache/Services/NSValueTransformer+GRMustache.m +++ b/GRMustache/Services/NSValueTransformer+GRMustache.m @@ -20,6 +20,10 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#if __has_feature(objc_arc) +#error Manual Reference Counting required: use -fno-objc-arc. +#endif + #import "NSValueTransformer+GRMustache.h" @implementation NSValueTransformer (GRMustache) diff --git a/GRMustache/Services/StandardLibrary/GRMustacheEachFilter.m b/GRMustache/Services/StandardLibrary/GRMustacheEachFilter.m index 3c5d5d76..ddcf18fd 100644 --- a/GRMustache/Services/StandardLibrary/GRMustacheEachFilter.m +++ b/GRMustache/Services/StandardLibrary/GRMustacheEachFilter.m @@ -20,6 +20,10 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#if __has_feature(objc_arc) +#error Manual Reference Counting required: use -fno-objc-arc. +#endif + #import "GRMustacheEachFilter_private.h" #import "GRMustacheRendering_private.h" #import "GRMustacheContext_private.h" diff --git a/GRMustache/Services/StandardLibrary/GRMustacheHTMLEscapeFilter.m b/GRMustache/Services/StandardLibrary/GRMustacheHTMLEscapeFilter.m index 42a448a9..1b36a9d9 100644 --- a/GRMustache/Services/StandardLibrary/GRMustacheHTMLEscapeFilter.m +++ b/GRMustache/Services/StandardLibrary/GRMustacheHTMLEscapeFilter.m @@ -20,6 +20,10 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#if __has_feature(objc_arc) +#error Manual Reference Counting required: use -fno-objc-arc. +#endif + #import "GRMustacheHTMLEscapeFilter_private.h" #import "GRMustacheTag_private.h" #import "GRMustacheContext_private.h" diff --git a/GRMustache/Services/StandardLibrary/GRMustacheJavascriptEscapeFilter.m b/GRMustache/Services/StandardLibrary/GRMustacheJavascriptEscapeFilter.m index b926bc80..9d4c06c8 100644 --- a/GRMustache/Services/StandardLibrary/GRMustacheJavascriptEscapeFilter.m +++ b/GRMustache/Services/StandardLibrary/GRMustacheJavascriptEscapeFilter.m @@ -20,6 +20,10 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#if __has_feature(objc_arc) +#error Manual Reference Counting required: use -fno-objc-arc. +#endif + #import "GRMustacheJavascriptEscapeFilter_private.h" #import "GRMustacheTag_private.h" #import "GRMustacheContext_private.h" diff --git a/GRMustache/Services/StandardLibrary/GRMustacheLocalizer.m b/GRMustache/Services/StandardLibrary/GRMustacheLocalizer.m index 4de52044..adf5e1b4 100644 --- a/GRMustache/Services/StandardLibrary/GRMustacheLocalizer.m +++ b/GRMustache/Services/StandardLibrary/GRMustacheLocalizer.m @@ -20,6 +20,10 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#if __has_feature(objc_arc) +#error Manual Reference Counting required: use -fno-objc-arc. +#endif + #import "GRMustacheLocalizer.h" #import "GRMustacheContext.h" #import "GRMustacheTag.h" diff --git a/GRMustache/Services/StandardLibrary/GRMustacheURLEscapeFilter.m b/GRMustache/Services/StandardLibrary/GRMustacheURLEscapeFilter.m index e884ca3c..24a1e1c7 100644 --- a/GRMustache/Services/StandardLibrary/GRMustacheURLEscapeFilter.m +++ b/GRMustache/Services/StandardLibrary/GRMustacheURLEscapeFilter.m @@ -20,6 +20,10 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#if __has_feature(objc_arc) +#error Manual Reference Counting required: use -fno-objc-arc. +#endif + #import "GRMustacheURLEscapeFilter_private.h" #import "GRMustacheTag_private.h" #import "GRMustacheContext_private.h" diff --git a/GRMustache/Shared/GRMustacheError.m b/GRMustache/Shared/GRMustacheError.m index 59e0469e..c200f7ad 100644 --- a/GRMustache/Shared/GRMustacheError.m +++ b/GRMustache/Shared/GRMustacheError.m @@ -20,6 +20,10 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#if __has_feature(objc_arc) +#error Manual Reference Counting required: use -fno-objc-arc. +#endif + #import "GRMustacheError.h" diff --git a/GRMustache/Shared/GRMustacheTranslateCharacters.m b/GRMustache/Shared/GRMustacheTranslateCharacters.m index f300958d..a9130d95 100644 --- a/GRMustache/Shared/GRMustacheTranslateCharacters.m +++ b/GRMustache/Shared/GRMustacheTranslateCharacters.m @@ -20,6 +20,10 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#if __has_feature(objc_arc) +#error Manual Reference Counting required: use -fno-objc-arc. +#endif + #import "GRMustacheTranslateCharacters_private.h" #import "GRMustacheBuffer_private.h" diff --git a/GRMustache/Templates/GRMustacheTemplate.m b/GRMustache/Templates/GRMustacheTemplate.m index b4052d97..34aa60d0 100644 --- a/GRMustache/Templates/GRMustacheTemplate.m +++ b/GRMustache/Templates/GRMustacheTemplate.m @@ -20,6 +20,10 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#if __has_feature(objc_arc) +#error Manual Reference Counting required: use -fno-objc-arc. +#endif + #import "GRMustacheTemplate_private.h" #import "GRMustacheContext_private.h" #import "GRMustacheTemplateRepository_private.h" diff --git a/GRMustache/Templates/GRMustacheTemplateRepository.m b/GRMustache/Templates/GRMustacheTemplateRepository.m index a4bc5605..c91b8acb 100644 --- a/GRMustache/Templates/GRMustacheTemplateRepository.m +++ b/GRMustache/Templates/GRMustacheTemplateRepository.m @@ -20,6 +20,10 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#if __has_feature(objc_arc) +#error Manual Reference Counting required: use -fno-objc-arc. +#endif + #import "GRMustacheTemplateRepository_private.h" #import "GRMustacheTemplate_private.h" #import "GRMustacheCompiler_private.h"

    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%0D32o`RxFn59DtVEazt6 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≫3xS*kX^B1mkTG+{EVLKBMTLtS5Nb=u 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 diff --git a/lib/libGRMustache7-iOS.a b/lib/libGRMustache7-iOS.a deleted file mode 100644 index ba4fc22a23eed02993a77c55c5e6e86f45c58c70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3996232 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