diff --git a/.gitignore b/.gitignore
index 938e5b83..c2ba4145 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,19 @@ build/*
!default.mode2v3
*.perspectivev3
!default.perspectivev3
-*.xcworkspace
-!default.xcworkspace
xcuserdata
+
+# Other
+*.xccheckout
*.moved-aside
+*.xcuserstate
+*.xcscmblueprint
-# OS X
-.DS_Store
-.AppleDouble
-.LSOverride
-Icon
+# Obj-C/Swift specific
+*.hmap
+*.ipa
-# Thumbnails
-._*
-# Files that might appear on external disk
-.Spotlight-V100
-.Trashes
\ No newline at end of file
+DemoApps/GRMustacheDemoOSX/Carthage
+DemoApps/GRMustacheDemoOSX/Cartfile.resolved
+GRMustacheTests/Carthage
\ No newline at end of file
diff --git a/.gitmodules b/.gitmodules
index 5063bde4..8b8ad531 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +1,6 @@
-[submodule "src/tests/vendor/mustache/spec"]
- path = src/tests/vendor/mustache/spec
+[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/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
+
+
+
+
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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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);
+}
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/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/GRMustache.podspec b/GRMustache.podspec
index f5393957..d3afbc49 100644
--- a/GRMustache.podspec
+++ b/GRMustache.podspec
@@ -8,9 +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'
end
diff --git a/src/GRMustache.xcodeproj/project.pbxproj b/GRMustache.xcodeproj/project.pbxproj
similarity index 54%
rename from src/GRMustache.xcodeproj/project.pbxproj
rename to GRMustache.xcodeproj/project.pbxproj
index c331ebf6..205a002d 100644
--- a/src/GRMustache.xcodeproj/project.pbxproj
+++ b/GRMustache.xcodeproj/project.pbxproj
@@ -7,486 +7,483 @@
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 */; };
- 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"; }; };
- 6586A0681B9E2DBC0067C98E /* GRMustacheVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DEC2BB152631300031E8DC /* GRMustacheVersion.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 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 = (); }; };
+ 56214BA11BA1A5350070C6CF /* GRMustachePublicAPITest.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEC3B2152638E20031E8DC /* GRMustachePublicAPITest.m */; 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 = (); }; };
+ 56214BA71BA1A54C0070C6CF /* GRMustacheJavaSuites in Resources */ = {isa = PBXBuildFile; fileRef = 56B477A318CF9F6E00EFF629 /* GRMustacheJavaSuites */; settings = {ASSET_TAGS = (); }; };
+ 56214BA81BA1A54C0070C6CF /* GRHoganSuites in Resources */ = {isa = PBXBuildFile; fileRef = 56B4779918CF8D3300EFF629 /* GRHoganSuites */; 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 = (); }; };
+ 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 = (); }; };
+ 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 = (); }; };
+ 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 /* 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 = (); }; };
+ 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 /* 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 = (); }; };
+ 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 /* 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 = (); }; };
+ 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 = (); }; };
+ 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 /* 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 = (); }; };
+ 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 /* 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, ); }; };
+ 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, ); }; };
+ 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 = (); }; };
+ 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 /* 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 = (); }; };
+ 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 /* 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 = (); }; };
+ 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 = (); }; };
+ 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 = (); }; };
+ 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 = (); }; };
+ 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 /* 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 */; };
+ 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 /* 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 */; };
+ 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 */; };
+ 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 = (); }; };
+ 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 = (); }; };
+ 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 = (); }; };
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"; }; };
- 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"; }; };
- 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 */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
- 6586A0811B9E2E360067C98E /* GRMustacheStandardLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372D19B8EEC700854524 /* GRMustacheStandardLibrary.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
- 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"; }; };
- 6586A0841B9E2E360067C98E /* GRMustacheURLLibrary_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 56BF373019B8EEC700854524 /* GRMustacheURLLibrary_private.h */; settings = {ASSET_TAGS = (); }; };
+ 6586A0801B9E2E360067C98E /* GRMustacheLocalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BF372C19B8EEC700854524 /* GRMustacheLocalizer.m */; };
+ 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 */; 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"; }; };
- 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"; }; };
- 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"; }; };
+ 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 */; };
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 */
+ 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; };
+ 56214B8A1BA1A4D50070C6CF /* GRMustacheOSXTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = GRMustacheOSXTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+ 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 = ""; };
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 = 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 = ""; };
@@ -519,7 +516,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 = ""; };
@@ -528,15 +524,14 @@
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 = ""; };
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 = ""; };
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; };
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 = ""; };
@@ -577,10 +572,10 @@
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 = ""; };
- 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 = ""; };
+ 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 = ""; };
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 = ""; };
@@ -611,7 +606,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 = ""; };
@@ -627,16 +621,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 = ""; };
@@ -645,70 +637,65 @@
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 = ""; };
+ 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 = ""; };
+ 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; };
- 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 = ""; };
- 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 = ""; };
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 = ""; };
+ 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 = ""; };
- ABAF86A816A0A852001ADE96 /* GRMustache7Tests-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GRMustache7Tests-Info.plist"; sourceTree = ""; };
+ 6586A0C71B9E2F070067C98E /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = 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 */,
+ 56214B8F1BA1A4D50070C6CF /* GRMustache.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
- 56DEC2771526311C0031E8DC /* Frameworks */ = {
+ 56AC8C951BA1F637009E4319 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 56DAC7461BB69F6D0010FE01 /* 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 */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -726,16 +713,25 @@
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 */ = {
isa = PBXGroup;
children = (
- 563D66F315264B40008628C5 /* GRMustacheSuites */,
+ 563D66F315264B40008628C5 /* Tests */,
563D66E81526497E008628C5 /* GRMustacheSuitesTest.m */,
);
path = groue/GRMustache;
@@ -780,8 +776,8 @@
5682B47F1528399100ADD123 /* mustache/spec */ = {
isa = PBXGroup;
children = (
+ 56DAC7BD1BB6E85B0010FE01 /* specs */,
56DEC3BF152639560031E8DC /* GRSpecificationSuitesTest.m */,
- 56B477A618D0E41A00EFF629 /* specs */,
);
path = mustache/spec;
sourceTree = "";
@@ -907,6 +903,7 @@
56BA245318C7A5BE006DA5F3 /* GRMustacheServicesTest */ = {
isa = PBXGroup;
children = (
+ 56DAC7951BB6A7DC0010FE01 /* GRMustacheEachFilterTest.m */,
56BA245418C7A5BE006DA5F3 /* GRMustacheLocalizerTest.m */,
56BA247318C7A5CB006DA5F3 /* GRMustacheLocalizerTestBundle */,
56BA245818C7A5BE006DA5F3 /* GRMustacheNSFormatterTest.m */,
@@ -928,7 +925,6 @@
56BA248318C7A62E006DA5F3 /* GRMustacheContextTest */ = {
isa = PBXGroup;
children = (
- 56B4778C18CF8A7600EFF629 /* GRMustacheKeyedSubscriptingTest.m */,
56BA249818C7A65E006DA5F3 /* GRMustacheContextHasValueForMustacheExpressionTest.m */,
56B4779018CF8AD100EFF629 /* GRMustacheContextProtectedObjectTest.m */,
56BA248518C7A62E006DA5F3 /* GRMustacheContextTest.m */,
@@ -952,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 = "";
@@ -965,8 +961,8 @@
56BF367319B8EE9D00854524 /* Compiling */ = {
isa = PBXGroup;
children = (
- 56BF368019B8EE9D00854524 /* GRMustacheCompiler.m */,
56BF368119B8EE9D00854524 /* GRMustacheCompiler_private.h */,
+ 56BF368019B8EE9D00854524 /* GRMustacheCompiler.m */,
56BF367419B8EE9D00854524 /* Expressions */,
56BF368219B8EE9D00854524 /* TemplateAST */,
);
@@ -976,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 = "";
@@ -994,25 +990,25 @@
56BF368219B8EE9D00854524 /* TemplateAST */ = {
isa = PBXGroup;
children = (
- 56BF368319B8EE9D00854524 /* GRMustacheInheritedPartialNode.m */,
- 56BF368419B8EE9D00854524 /* GRMustacheInheritedPartialNode_private.h */,
- 56BF368519B8EE9D00854524 /* GRMustacheInheritableSectionNode.m */,
- 56BF368619B8EE9D00854524 /* GRMustacheInheritableSectionNode_private.h */,
- 56BF368719B8EE9D00854524 /* GRMustachePartialNode.m */,
+ 56BF368619B8EE9D00854524 /* GRMustacheBlock_private.h */,
+ 56BF368519B8EE9D00854524 /* GRMustacheBlock.m */,
56BF368819B8EE9D00854524 /* GRMustachePartialNode_private.h */,
- 56BF368919B8EE9D00854524 /* GRMustacheSectionTag.m */,
+ 56BF368719B8EE9D00854524 /* GRMustachePartialNode.m */,
+ 56BF368419B8EE9D00854524 /* GRMustachePartialOverrideNode_private.h */,
+ 56BF368319B8EE9D00854524 /* GRMustachePartialOverrideNode.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 = "";
@@ -1020,23 +1016,25 @@
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 */,
- 56BF36E619B8EEAE00854524 /* GRMustacheSafeKeyAccess.h */,
+ 56BF36E419B8EEAE00854524 /* GRMustacheRenderingEngine.m */,
56BF36E719B8EEAE00854524 /* GRMustacheTagDelegate.h */,
+ 56DAC7AA1BB6C9040010FE01 /* NSObject+GRMustacheKeyValueCoding_private.h */,
+ 56DAC7AB1BB6C9040010FE01 /* NSObject+GRMustacheKeyValueCoding.m */,
);
path = Rendering;
sourceTree = "";
@@ -1044,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 = "";
@@ -1057,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 */,
@@ -1073,18 +1071,16 @@
56BF372419B8EEC700854524 /* StandardLibrary */ = {
isa = PBXGroup;
children = (
- 56BF372519B8EEC700854524 /* GRMustacheEachFilter.m */,
56BF372619B8EEC700854524 /* GRMustacheEachFilter_private.h */,
- 56BF372719B8EEC700854524 /* GRMustacheHTMLLibrary.m */,
- 56BF372819B8EEC700854524 /* GRMustacheHTMLLibrary_private.h */,
- 56BF372919B8EEC700854524 /* GRMustacheJavascriptLibrary.m */,
- 56BF372A19B8EEC700854524 /* GRMustacheJavascriptLibrary_private.h */,
+ 56BF372519B8EEC700854524 /* GRMustacheEachFilter.m */,
+ 56BF372819B8EEC700854524 /* GRMustacheHTMLEscapeFilter_private.h */,
+ 56BF372719B8EEC700854524 /* GRMustacheHTMLEscapeFilter.m */,
+ 56BF372A19B8EEC700854524 /* GRMustacheJavascriptEscapeFilter_private.h */,
+ 56BF372919B8EEC700854524 /* GRMustacheJavascriptEscapeFilter.m */,
56BF372B19B8EEC700854524 /* GRMustacheLocalizer.h */,
56BF372C19B8EEC700854524 /* GRMustacheLocalizer.m */,
- 56BF372D19B8EEC700854524 /* GRMustacheStandardLibrary.m */,
- 56BF372E19B8EEC700854524 /* GRMustacheStandardLibrary_private.h */,
- 56BF372F19B8EEC700854524 /* GRMustacheURLLibrary.m */,
- 56BF373019B8EEC700854524 /* GRMustacheURLLibrary_private.h */,
+ 56BF373019B8EEC700854524 /* GRMustacheURLEscapeFilter_private.h */,
+ 56BF372F19B8EEC700854524 /* GRMustacheURLEscapeFilter.m */,
);
path = StandardLibrary;
sourceTree = "";
@@ -1092,51 +1088,22 @@
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 = "";
};
- 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 = (
5662BA3E15A05268001FD2CA /* AppledocSettings.plist */,
- 56A731B818123F1900B8570A /* Makefile */,
56E2F2E616BA49A500F01DC2 /* TODO.md */,
567AEC4E15278C9A0009CA61 /* GRMustache */,
56DEC3AE152638CD0031E8DC /* Tests */,
@@ -1147,11 +1114,12 @@
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 */,
+ 56AC8C981BA1F637009E4319 /* GRMustacheOSXPrivateTests.xctest */,
+ 56DAC7681BB69F6D0010FE01 /* GRMustacheiOSPrivateTests.xctest */,
);
name = Products;
sourceTree = "";
@@ -1167,24 +1135,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 */,
- 56DEC2BB152631300031E8DC /* GRMustacheVersion.h */,
- );
- path = classes;
- sourceTree = "";
- };
56DEC34A152636000031E8DC /* vendor */ = {
isa = PBXGroup;
children = (
@@ -1196,16 +1146,16 @@
56DEC3AE152638CD0031E8DC /* Tests */ = {
isa = PBXGroup;
children = (
- ABAF86A816A0A852001ADE96 /* GRMustache7Tests-Info.plist */,
- 56DEC3B3152638E20031E8DC /* GRMustacheTestBase.h */,
- 56DEC3B4152638E20031E8DC /* GRMustacheTestBase.m */,
+ 56214B951BA1A5100070C6CF /* Info.plist */,
+ 56DAC7111BB69DAC0010FE01 /* GRMustacheTestingDelegate.m */,
+ 56DAC7121BB69DAC0010FE01 /* GRMustacheTestingDelegate.h */,
56DEC3BB152638FB0031E8DC /* Private */,
56DEC3BC152639050031E8DC /* Public */,
56DEC34A152636000031E8DC /* vendor */,
56DEC1A815262FC90031E8DC /* Frameworks */,
);
name = Tests;
- path = tests;
+ path = GRMustacheTests;
sourceTree = "";
};
56DEC3BB152638FB0031E8DC /* Private */ = {
@@ -1225,19 +1175,19 @@
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 */,
560CE88E1526EEF4004F935E /* GRBooleanTest.m */,
56BA242518C7A494006DA5F3 /* GRMustacheErrorHandlingTest.m */,
563A5EA6163403C000E7E810 /* GRMustacheFoundationCollectionTest.m */,
+ 560959BE1BD3C7A40000511D /* GRMustacheLambdaTest.m */,
5623B795152731B600DF16A6 /* GRMustacheParsingErrorsTest.m */,
568140E616365D6000310B7F /* GRMustachePositionFilterTest.m */,
568140D7163659CB00310B7F /* GRMustacheRenderingObjectTest.m */,
@@ -1249,137 +1199,72 @@
56B4779318CF8BB500EFF629 /* GRMustacheTemplateTest */,
5682B49B1528487700ADD123 /* GRMustacheTemplateRepositoryTest */,
);
- path = v7.0;
+ path = v8.0;
sourceTree = "";
};
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
- 56DEC246152631040031E8DC /* Headers */ = {
+ 56214B6C1BA1A34A0070C6CF /* 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 */ = {
- 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 */,
+ 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 */,
+ 56214CB11BA1A7490070C6CF /* NSValueTransformer+GRMustache.h in Headers */,
+ 56214C8C1BA1A70D0070C6CF /* GRMustacheIdentifierExpression_private.h in Headers */,
+ 56214C881BA1A70D0070C6CF /* GRMustacheCompiler_private.h in Headers */,
+ 56214CA81BA1A7300070C6CF /* GRMustacheTag.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 */,
+ 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 */,
+ 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 */,
+ 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 /* GRMustacheURLEscapeFilter_private.h in Headers */,
+ 56214C921BA1A70D0070C6CF /* GRMustacheSectionTag_private.h in Headers */,
+ 56214C911BA1A70D0070C6CF /* GRMustachePartialNode_private.h in Headers */,
+ 56214C841BA1A70D0070C6CF /* GRMustacheConfiguration_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 */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1387,23 +1272,22 @@
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 */,
- 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 */,
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 /* 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 */,
+ 56DAC7B61BB6DDAB0010FE01 /* GRMustache_private.h in Headers */,
6586A0871B9E2E4A0067C98E /* GRMustacheTemplate_private.h in Headers */,
6586A08F1B9E2E4F0067C98E /* GRMustacheExpressionInvocation_private.h in Headers */,
6586A08D1B9E2E4F0067C98E /* GRMustacheContext_private.h in Headers */,
@@ -1412,21 +1296,21 @@
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 */,
+ 56DAC7AD1BB6C9040010FE01 /* NSObject+GRMustacheKeyValueCoding_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 */,
6586A0A51B9E2E5B0067C98E /* GRMustacheSectionTag_private.h in Headers */,
- 6586A0A11B9E2E5B0067C98E /* GRMustacheInheritableSectionNode_private.h in Headers */,
+ 56DAC7A51BB6C8DD0010FE01 /* GRMustacheKeyValueCoding.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 */,
@@ -1450,81 +1334,97 @@
/* 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";
+ name = GRMustacheOSXTests;
+ productName = GRMustacheOSXTests;
+ productReference = 56214B8A1BA1A4D50070C6CF /* GRMustacheOSXTests.xctest */;
+ productType = "com.apple.product-type.bundle.unit-test";
};
- 56DEC27A1526311C0031E8DC /* GRMustache7-iOSTests */ = {
+ 56AC8C971BA1F637009E4319 /* GRMustacheOSXPrivateTests */ = {
isa = PBXNativeTarget;
- buildConfigurationList = 56DEC28E1526311C0031E8DC /* Build configuration list for PBXNativeTarget "GRMustache7-iOSTests" */;
+ buildConfigurationList = 56AC8C9D1BA1F637009E4319 /* Build configuration list for PBXNativeTarget "GRMustacheOSXPrivateTests" */;
buildPhases = (
- 56DEC2761526311C0031E8DC /* Sources */,
- 56DEC2771526311C0031E8DC /* Frameworks */,
- 56DEC2781526311C0031E8DC /* Resources */,
- 56DEC2791526311C0031E8DC /* ShellScript */,
+ 56AC8C941BA1F637009E4319 /* Sources */,
+ 56AC8C951BA1F637009E4319 /* Frameworks */,
+ 56AC8C961BA1F637009E4319 /* Resources */,
);
buildRules = (
);
dependencies = (
- 56DEC2801526311C0031E8DC /* PBXTargetDependency */,
);
- name = "GRMustache7-iOSTests";
- productName = "GRMustache7-iOSTests";
- productReference = 56DEC27B1526311C0031E8DC /* GRMustache7-iOSTests.xctest */;
+ name = GRMustacheOSXPrivateTests;
+ productName = GRMustacheOSXPrivateTests;
+ productReference = 56AC8C981BA1F637009E4319 /* GRMustacheOSXPrivateTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
- 6586A05C1B9E2D720067C98E /* GRMustache */ = {
+ 56DAC7161BB69F6D0010FE01 /* GRMustacheiOSPrivateTests */ = {
isa = PBXNativeTarget;
- buildConfigurationList = 6586A0641B9E2D720067C98E /* Build configuration list for PBXNativeTarget "GRMustache" */;
+ 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" */;
buildPhases = (
6586A0581B9E2D720067C98E /* Sources */,
6586A0591B9E2D720067C98E /* Frameworks */,
@@ -1535,7 +1435,7 @@
);
dependencies = (
);
- name = GRMustache;
+ name = GRMustacheiOS;
productName = GRMustache;
productReference = 6586A05D1B9E2D720067C98E /* GRMustache.framework */;
productType = "com.apple.product-type.framework";
@@ -1546,8 +1446,20 @@
56DEC19C15262FC80031E8DC /* Project object */ = {
isa = PBXProject;
attributes = {
- LastUpgradeCheck = 0630;
+ LastUpgradeCheck = 0700;
TargetAttributes = {
+ 56214B6E1BA1A34A0070C6CF = {
+ CreatedOnToolsVersion = 7.0;
+ };
+ 56214B7A1BA1A4C50070C6CF = {
+ CreatedOnToolsVersion = 7.0;
+ };
+ 56214B891BA1A4D50070C6CF = {
+ CreatedOnToolsVersion = 7.0;
+ };
+ 56AC8C971BA1F637009E4319 = {
+ CreatedOnToolsVersion = 7.0;
+ };
6586A05C1B9E2D720067C98E = {
CreatedOnToolsVersion = 7.0;
};
@@ -1565,324 +1477,383 @@
projectDirPath = "";
projectRoot = "";
targets = (
- 56DEC247152631040031E8DC /* GRMustache7-MacOS */,
- 56DEC254152631040031E8DC /* GRMustache7-MacOSTests */,
- 56DEC26D1526311B0031E8DC /* GRMustache7-iOS */,
- 56DEC27A1526311C0031E8DC /* GRMustache7-iOSTests */,
- 6586A05C1B9E2D720067C98E /* GRMustache */,
+ 56214B6E1BA1A34A0070C6CF /* GRMustacheOSX */,
+ 56214B891BA1A4D50070C6CF /* GRMustacheOSXTests */,
+ 56AC8C971BA1F637009E4319 /* GRMustacheOSXPrivateTests */,
+ 6586A05C1B9E2D720067C98E /* GRMustacheiOS */,
+ 56214B7A1BA1A4C50070C6CF /* GRMustacheiOSTests */,
+ 56DAC7161BB69F6D0010FE01 /* GRMustacheiOSPrivateTests */,
);
};
/* 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 */,
+ 56DAC7BF1BB6E85B0010FE01 /* specs 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 /* Tests in Resources */,
+ 56214BE61BA1A5800070C6CF /* GRMustacheTagDelegateTest.mustache in Resources */,
+ 56214C191BA1A59E0070C6CF /* GRMustacheTemplateRepositoryWithBundleTest_partial.text in Resources */,
+ 56214C141BA1A59E0070C6CF /* GRMustacheTemplateRepositoryWithBundleTest 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 = (
+ 56DAC7BE1BB6E85B0010FE01 /* specs in Resources */,
+ 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 /* Tests in Resources */,
+ 56214BE31BA1A5800070C6CF /* GRMustacheTagDelegateTest.mustache in Resources */,
+ 56214C131BA1A59D0070C6CF /* GRMustacheTemplateRepositoryWithBundleTest_partial.text in Resources */,
+ 56214C0E1BA1A59D0070C6CF /* GRMustacheTemplateRepositoryWithBundleTest 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;
+ 56AC8C961BA1F637009E4319 /* 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;
+ 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 */,
+ 56DAC7551BB69F6D0010FE01 /* GRMustacheTagDelegateTest.mustache in Resources */,
+ 56DAC7561BB69F6D0010FE01 /* GRMustacheTemplateRepositoryWithBundleTest_partial.text in Resources */,
+ 56DAC7571BB69F6D0010FE01 /* GRMustacheTemplateRepositoryWithBundleTest 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 */,
);
- inputPaths = (
- );
- outputPaths = (
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 6586A05B1B9E2D720067C98E /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
);
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 */ = {
+ 56214B6A1BA1A34A0070C6CF /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 56214C721BA1A6F20070C6CF /* GRMustacheKeyAccess.m in Sources */,
+ 56214C821BA1A6F20070C6CF /* GRMustacheTranslateCharacters.m in Sources */,
+ 56DAC7B91BB6DDAB0010FE01 /* GRMustache.m in Sources */,
+ 56214C671BA1A6F20070C6CF /* GRMustachePartialOverrideNode.m in Sources */,
+ 56214C6B1BA1A6F20070C6CF /* GRMustacheTag.m in Sources */,
+ 56214C621BA1A6F20070C6CF /* GRMustacheExpression.m in Sources */,
+ 56214C801BA1A6F20070C6CF /* GRMustacheURLEscapeFilter.m in Sources */,
+ 56214C761BA1A6F20070C6CF /* GRMustacheTemplateRepository.m in Sources */,
+ 56214C601BA1A6F20070C6CF /* GRMustacheToken.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 /* 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 */,
+ 56214C6A1BA1A6F20070C6CF /* GRMustacheSectionTag.m in Sources */,
+ 56214C6C1BA1A6F20070C6CF /* GRMustacheTemplateAST.m in Sources */,
+ 56214C5D1BA1A6F20070C6CF /* GRMustacheConfiguration.m in Sources */,
+ 56214C611BA1A6F20070C6CF /* GRMustacheCompiler.m in Sources */,
+ 56214C6F1BA1A6F20070C6CF /* GRMustacheContext.m in Sources */,
+ 56214C631BA1A6F20070C6CF /* GRMustacheFilteredExpression.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 */,
+ 56214C5E1BA1A6F20070C6CF /* GRMustacheExpressionParser.m in Sources */,
+ 56214C691BA1A6F20070C6CF /* GRMustachePartialNode.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 56214B771BA1A4C50070C6CF /* 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 */,
+ 56214BB71BA1A5560070C6CF /* GRHoganSuitesTest.m in Sources */,
+ 56214BC41BA1A5690070C6CF /* GRMustacheConfigurationTagDelimitersTest.m in Sources */,
+ 56DAC7151BB69F170010FE01 /* GRMustacheTestingDelegate.m in Sources */,
+ 56214BA51BA1A5480070C6CF /* GRMustacheSuitesTest.m in Sources */,
+ 56214C071BA1A5920070C6CF /* GRMustacheTemplateRepositoryTest.m in Sources */,
+ 56214BEA1BA1A5850070C6CF /* GRMustacheTemplateExtendBaseContextTest.m in Sources */,
+ 56214BD21BA1A56D0070C6CF /* GRMustacheContextValueForMustacheKeyTest.m in Sources */,
+ 56214BD31BA1A56D0070C6CF /* GRMustacheContextKeyAccessTest.m in Sources */,
+ 56214BBB1BA1A5560070C6CF /* GRMustacheParsingErrorsTest.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 */,
+ 560959C01BD3C7A40000511D /* GRMustacheLambdaTest.m in Sources */,
+ 56214BE11BA1A57C0070C6CF /* GRMustacheStandardLibraryTest.m in Sources */,
+ 56214C0B1BA1A5970070C6CF /* GRMustacheTemplateRepositoryWithBundleTest.m in Sources */,
+ 56214BCE1BA1A56D0070C6CF /* GRMustacheContextHasValueForMustacheExpressionTest.m in Sources */,
+ 56214BC51BA1A5690070C6CF /* GRMustacheConfigurationTest.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 */,
+ 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;
};
- 56DEC250152631040031E8DC /* Sources */ = {
+ 56214B861BA1A4D50070C6CF /* 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 */,
+ 56214BAE1BA1A5550070C6CF /* GRHoganSuitesTest.m in Sources */,
+ 56214BC01BA1A5690070C6CF /* GRMustacheConfigurationTagDelimitersTest.m in Sources */,
+ 56DAC7141BB69F160010FE01 /* GRMustacheTestingDelegate.m in Sources */,
+ 56214BA41BA1A5480070C6CF /* GRMustacheSuitesTest.m in Sources */,
+ 56214C041BA1A5920070C6CF /* GRMustacheTemplateRepositoryTest.m in Sources */,
+ 56214BE81BA1A5850070C6CF /* GRMustacheTemplateExtendBaseContextTest.m in Sources */,
+ 56214BCB1BA1A56D0070C6CF /* GRMustacheContextValueForMustacheKeyTest.m in Sources */,
+ 56214BCC1BA1A56D0070C6CF /* GRMustacheContextKeyAccessTest.m in Sources */,
+ 56214BB21BA1A5550070C6CF /* GRMustacheParsingErrorsTest.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 */,
+ 560959BF1BD3C7A40000511D /* GRMustacheLambdaTest.m in Sources */,
+ 56214BDD1BA1A57C0070C6CF /* GRMustacheStandardLibraryTest.m in Sources */,
+ 56214C0A1BA1A5970070C6CF /* GRMustacheTemplateRepositoryWithBundleTest.m in Sources */,
+ 56214BC71BA1A56D0070C6CF /* GRMustacheContextHasValueForMustacheExpressionTest.m in Sources */,
+ 56214BC11BA1A5690070C6CF /* GRMustacheConfigurationTest.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 */,
+ 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;
};
- 56DEC26A1526311B0031E8DC /* Sources */ = {
+ 56AC8C941BA1F637009E4319 /* 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 */,
+ 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 */,
+ 56AC8CB91BA1F69B009E4319 /* GRMustacheKeyAccess.m in Sources */,
+ 56AC8CB61BA1F69B009E4319 /* GRMustacheContext.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 /* 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 */,
+ 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 /* GRMustachePartialOverrideNode.m in Sources */,
+ 56AC8CA91BA1F69B009E4319 /* GRMustacheExpression.m in Sources */,
+ 56AC8CAB1BA1F69B009E4319 /* GRMustacheIdentifierExpression.m in Sources */,
+ 56AC8CC81BA1F69B009E4319 /* GRMustacheError.m in Sources */,
+ 56AC8CB71BA1F69B009E4319 /* GRMustacheExpressionInvocation.m in Sources */,
+ 56AC8CAF1BA1F69B009E4319 /* GRMustacheBlock.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 */,
+ 56DAC7BA1BB6DDAB0010FE01 /* GRMustache.m in Sources */,
+ 56AC8CC51BA1F69B009E4319 /* GRMustacheLocalizer.m in Sources */,
+ 56AC8CC11BA1F69B009E4319 /* NSValueTransformer+GRMustache.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
- 56DEC2761526311C0031E8DC /* Sources */ = {
+ 56DAC7191BB69F6D0010FE01 /* 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 */,
+ 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 */,
+ 56DAC7B11BB6C9040010FE01 /* NSObject+GRMustacheKeyValueCoding.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 /* GRMustachePartialOverrideNode.m in Sources */,
+ 56DAC7791BB6A0040010FE01 /* GRMustacheBlock.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 */,
+ 56DAC7BC1BB6DDAB0010FE01 /* GRMustache.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 /* GRMustacheHTMLEscapeFilter.m in Sources */,
+ 56DAC78E1BB6A0040010FE01 /* GRMustacheJavascriptEscapeFilter.m in Sources */,
+ 56DAC78F1BB6A0040010FE01 /* GRMustacheLocalizer.m in Sources */,
+ 56DAC7911BB6A0040010FE01 /* GRMustacheURLEscapeFilter.m in Sources */,
+ 56DAC7921BB6A0040010FE01 /* GRMustacheError.m in Sources */,
+ 56DAC7931BB6A0040010FE01 /* GRMustacheTranslateCharacters.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;
};
@@ -1892,8 +1863,9 @@
files = (
6586A0781B9E2E310067C98E /* NSValueTransformer+GRMustache.m in Sources */,
6586A0961B9E2E4F0067C98E /* GRMustacheRendering.m in Sources */,
+ 56DAC7BB1BB6DDAB0010FE01 /* GRMustache.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 */,
@@ -1901,17 +1873,18 @@
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 */,
+ 6586A0A01B9E2E5B0067C98E /* GRMustacheBlock.m in Sources */,
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 */,
- 6586A07D1B9E2E360067C98E /* GRMustacheJavascriptLibrary.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 */,
@@ -1919,7 +1892,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 */,
@@ -1927,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;
@@ -1935,19 +1906,264 @@
/* 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.9;
+ 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 = "";
+ };
+ 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.9;
+ 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 = "";
+ };
+ 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 = GRMustacheTests/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 = GRMustacheTests/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 = GRMustacheTests/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 = GRMustacheTests/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;
+ };
+ 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 = GRMustacheTests/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 = GRMustacheTests/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 = GRMustacheTests/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 = GRMustacheTests/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 = {
@@ -1961,6 +2177,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;
@@ -1982,7 +2199,6 @@
IPHONEOS_DEPLOYMENT_TARGET = 4.3;
MACOSX_DEPLOYMENT_TARGET = "";
ONLY_ACTIVE_ARCH = YES;
- PUBLIC_HEADERS_FOLDER_PATH = include/GRMustache;
SDKROOT = macosx;
};
name = Debug;
@@ -2014,140 +2230,17 @@
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 4.3;
MACOSX_DEPLOYMENT_TARGET = "";
- PUBLIC_HEADERS_FOLDER_PATH = include/GRMustache;
SDKROOT = macosx;
};
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 +2259,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 +2275,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 +2294,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 +2308,61 @@
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
- 56DEC19F15262FC80031E8DC /* Build configuration list for PBXProject "GRMustache" */ = {
+ 56214B741BA1A34A0070C6CF /* Build configuration list for PBXNativeTarget "GRMustacheOSX" */ = {
isa = XCConfigurationList;
buildConfigurations = (
- 56DEC1B215262FC90031E8DC /* Debug */,
- 56DEC1B315262FC90031E8DC /* Release */,
+ 56214B751BA1A34A0070C6CF /* Debug */,
+ 56214B761BA1A34A0070C6CF /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
- 56DEC264152631040031E8DC /* Build configuration list for PBXNativeTarget "GRMustache7-MacOS" */ = {
+ 56214B831BA1A4C50070C6CF /* Build configuration list for PBXNativeTarget "GRMustacheiOSTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
- 56DEC265152631040031E8DC /* Debug */,
- 56DEC266152631040031E8DC /* Release */,
+ 56214B841BA1A4C50070C6CF /* Debug */,
+ 56214B851BA1A4C50070C6CF /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
- 56DEC267152631040031E8DC /* Build configuration list for PBXNativeTarget "GRMustache7-MacOSTests" */ = {
+ 56214B921BA1A4D50070C6CF /* Build configuration list for PBXNativeTarget "GRMustacheOSXTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
- 56DEC268152631040031E8DC /* Debug */,
- 56DEC269152631040031E8DC /* Release */,
+ 56214B931BA1A4D50070C6CF /* Debug */,
+ 56214B941BA1A4D50070C6CF /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
- 56DEC28B1526311C0031E8DC /* Build configuration list for PBXNativeTarget "GRMustache7-iOS" */ = {
+ 56AC8C9D1BA1F637009E4319 /* Build configuration list for PBXNativeTarget "GRMustacheOSXPrivateTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
- 56DEC28C1526311C0031E8DC /* Debug */,
- 56DEC28D1526311C0031E8DC /* Release */,
+ 56AC8C9E1BA1F637009E4319 /* Debug */,
+ 56AC8C9F1BA1F637009E4319 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
- 56DEC28E1526311C0031E8DC /* Build configuration list for PBXNativeTarget "GRMustache7-iOSTests" */ = {
+ 56DAC7651BB69F6D0010FE01 /* Build configuration list for PBXNativeTarget "GRMustacheiOSPrivateTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
- 56DEC28F1526311C0031E8DC /* Debug */,
- 56DEC2901526311C0031E8DC /* Release */,
+ 56DAC7661BB69F6D0010FE01 /* Debug */,
+ 56DAC7671BB69F6D0010FE01 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 56DEC19F15262FC80031E8DC /* Build configuration list for PBXProject "GRMustache" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 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/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.xcodeproj/xcshareddata/xcschemes/GRMustacheOSX.xcscheme b/GRMustache.xcodeproj/xcshareddata/xcschemes/GRMustacheOSX.xcscheme
new file mode 100644
index 00000000..5e47245c
--- /dev/null
+++ b/GRMustache.xcodeproj/xcshareddata/xcschemes/GRMustacheOSX.xcscheme
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/GRMustache.xcodeproj/xcshareddata/xcschemes/GRMustache.xcscheme b/GRMustache.xcodeproj/xcshareddata/xcschemes/GRMustacheiOS.xcscheme
similarity index 95%
rename from src/GRMustache.xcodeproj/xcshareddata/xcschemes/GRMustache.xcscheme
rename to GRMustache.xcodeproj/xcshareddata/xcschemes/GRMustacheiOS.xcscheme
index afb0b6a7..a8b761ba 100644
--- a/src/GRMustache.xcodeproj/xcshareddata/xcschemes/GRMustache.xcscheme
+++ b/GRMustache.xcodeproj/xcshareddata/xcschemes/GRMustacheiOS.xcscheme
@@ -16,7 +16,7 @@
BuildableIdentifier = "primary"
BlueprintIdentifier = "6586A05C1B9E2D720067C98E"
BuildableName = "GRMustache.framework"
- BlueprintName = "GRMustache"
+ BlueprintName = "GRMustacheiOS"
ReferencedContainer = "container:GRMustache.xcodeproj">
@@ -47,7 +47,7 @@
BuildableIdentifier = "primary"
BlueprintIdentifier = "6586A05C1B9E2D720067C98E"
BuildableName = "GRMustache.framework"
- BlueprintName = "GRMustache"
+ BlueprintName = "GRMustacheiOS"
ReferencedContainer = "container:GRMustache.xcodeproj">
@@ -65,7 +65,7 @@
BuildableIdentifier = "primary"
BlueprintIdentifier = "6586A05C1B9E2D720067C98E"
BuildableName = "GRMustache.framework"
- BlueprintName = "GRMustache"
+ BlueprintName = "GRMustacheiOS"
ReferencedContainer = "container:GRMustache.xcodeproj">
diff --git a/GRMustache.xcworkspace/contents.xcworkspacedata b/GRMustache.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 00000000..2022e213
--- /dev/null
+++ b/GRMustache.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/classes/Compiling/Expressions/GRMustacheExpression.m b/GRMustache/Compiling/Expressions/GRMustacheExpression.m
similarity index 93%
rename from src/classes/Compiling/Expressions/GRMustacheExpression.m
rename to GRMustache/Compiling/Expressions/GRMustacheExpression.m
index 67470d53..c3835683 100644
--- a/src/classes/Compiling/Expressions/GRMustacheExpression.m
+++ b/GRMustache/Compiling/Expressions/GRMustacheExpression.m
@@ -20,10 +20,13 @@
// 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
-@synthesize token=_token;
- (void)dealloc
{
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 96%
rename from src/classes/Compiling/Expressions/GRMustacheExpression_private.h
rename to GRMustache/Compiling/Expressions/GRMustacheExpression_private.h
index b10ddb97..7634e782 100644
--- a/src/classes/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/src/classes/Compiling/Expressions/GRMustacheFilteredExpression.m b/GRMustache/Compiling/Expressions/GRMustacheFilteredExpression.m
similarity index 95%
rename from src/classes/Compiling/Expressions/GRMustacheFilteredExpression.m
rename to GRMustache/Compiling/Expressions/GRMustacheFilteredExpression.m
index abbbc627..ee9edabb 100644
--- a/src/classes/Compiling/Expressions/GRMustacheFilteredExpression.m
+++ b/GRMustache/Compiling/Expressions/GRMustacheFilteredExpression.m
@@ -20,14 +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
#import "GRMustacheFilteredExpression_private.h"
#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/src/classes/Compiling/Expressions/GRMustacheFilteredExpression_private.h b/GRMustache/Compiling/Expressions/GRMustacheFilteredExpression_private.h
similarity index 93%
rename from src/classes/Compiling/Expressions/GRMustacheFilteredExpression_private.h
rename to GRMustache/Compiling/Expressions/GRMustacheFilteredExpression_private.h
index 1b2f8e51..5152e79b 100644
--- a/src/classes/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/src/classes/Compiling/Expressions/GRMustacheIdentifierExpression.m b/GRMustache/Compiling/Expressions/GRMustacheIdentifierExpression.m
similarity index 95%
rename from src/classes/Compiling/Expressions/GRMustacheIdentifierExpression.m
rename to GRMustache/Compiling/Expressions/GRMustacheIdentifierExpression.m
index 43055b6c..5965b910 100644
--- a/src/classes/Compiling/Expressions/GRMustacheIdentifierExpression.m
+++ b/GRMustache/Compiling/Expressions/GRMustacheIdentifierExpression.m
@@ -20,11 +20,14 @@
// 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"
@implementation GRMustacheIdentifierExpression
-@synthesize identifier=_identifier;
+ (instancetype)expressionWithIdentifier:(NSString *)identifier
{
diff --git a/src/classes/Compiling/Expressions/GRMustacheIdentifierExpression_private.h b/GRMustache/Compiling/Expressions/GRMustacheIdentifierExpression_private.h
similarity index 97%
rename from src/classes/Compiling/Expressions/GRMustacheIdentifierExpression_private.h
rename to GRMustache/Compiling/Expressions/GRMustacheIdentifierExpression_private.h
index a72831cd..3d8d36f7 100644
--- a/src/classes/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/src/classes/Compiling/Expressions/GRMustacheImplicitIteratorExpression.m b/GRMustache/Compiling/Expressions/GRMustacheImplicitIteratorExpression.m
similarity index 94%
rename from src/classes/Compiling/Expressions/GRMustacheImplicitIteratorExpression.m
rename to GRMustache/Compiling/Expressions/GRMustacheImplicitIteratorExpression.m
index b28fc786..2a09f94c 100644
--- a/src/classes/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/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 96%
rename from src/classes/Compiling/Expressions/GRMustacheScopedExpression.m
rename to GRMustache/Compiling/Expressions/GRMustacheScopedExpression.m
index 204d415e..da7eb0f6 100644
--- a/src/classes/Compiling/Expressions/GRMustacheScopedExpression.m
+++ b/GRMustache/Compiling/Expressions/GRMustacheScopedExpression.m
@@ -20,13 +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 "GRMustacheScopedExpression_private.h"
#import "GRMustacheExpressionVisitor_private.h"
@implementation GRMustacheScopedExpression
-@synthesize baseExpression=_baseExpression;
-@synthesize identifier=_identifier;
+ (instancetype)expressionWithBaseExpression:(GRMustacheExpression *)baseExpression identifier:(NSString *)identifier
{
diff --git a/src/classes/Compiling/Expressions/GRMustacheScopedExpression_private.h b/GRMustache/Compiling/Expressions/GRMustacheScopedExpression_private.h
similarity index 93%
rename from src/classes/Compiling/Expressions/GRMustacheScopedExpression_private.h
rename to GRMustache/Compiling/Expressions/GRMustacheScopedExpression_private.h
index 282c5566..7bc25ecf 100644
--- a/src/classes/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/src/classes/Compiling/GRMustacheCompiler.m b/GRMustache/Compiling/GRMustacheCompiler.m
similarity index 87%
rename from src/classes/Compiling/GRMustacheCompiler.m
rename to GRMustache/Compiling/GRMustacheCompiler.m
index 8c56bfe4..26b72857 100644
--- a/src/classes/Compiling/GRMustacheCompiler.m
+++ b/GRMustache/Compiling/GRMustacheCompiler.m
@@ -20,14 +20,18 @@
// 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"
#import "GRMustacheTextNode_private.h"
#import "GRMustacheVariableTag_private.h"
#import "GRMustacheSectionTag_private.h"
-#import "GRMustacheInheritableSectionNode_private.h"
-#import "GRMustacheInheritedPartialNode_private.h"
+#import "GRMustacheBlock_private.h"
+#import "GRMustachePartialOverrideNode_private.h"
#import "GRMustacheExpressionParser_private.h"
#import "GRMustacheExpression_private.h"
#import "GRMustacheToken_private.h"
@@ -111,16 +115,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
{
@@ -215,6 +213,12 @@ - (BOOL)templateParser:(GRMustacheTemplateParser *)parser shouldContinueAfterPar
case GRMustacheTokenTypeEscapedVariable: {
+ // Context validation
+ if (_currentOpeningToken && _currentOpeningToken.type == GRMustacheTokenTypePartialOverride) {
+ [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];
@@ -226,7 +230,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;
@@ -234,6 +238,12 @@ - (BOOL)templateParser:(GRMustacheTemplateParser *)parser shouldContinueAfterPar
case GRMustacheTokenTypeUnescapedVariable: {
+ // Context validation
+ if (_currentOpeningToken && _currentOpeningToken.type == GRMustacheTokenTypePartialOverride) {
+ [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];
@@ -245,7 +255,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;
@@ -253,6 +263,12 @@ - (BOOL)templateParser:(GRMustacheTemplateParser *)parser shouldContinueAfterPar
case GRMustacheTokenTypeSectionOpening: {
+ // Context validation
+ if (_currentOpeningToken && _currentOpeningToken.type == GRMustacheTokenTypePartialOverride) {
+ [self failWithFatalError:[self parseErrorAtToken:token description:@"Illegal tag inside a partial override tag."]];
+ return NO;
+ }
+
// Expression validation
NSError *error;
BOOL empty;
@@ -276,7 +292,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;
@@ -316,6 +334,12 @@ - (BOOL)templateParser:(GRMustacheTemplateParser *)parser shouldContinueAfterPar
case GRMustacheTokenTypeInvertedSectionOpening: {
+ // Context validation
+ if (_currentOpeningToken && _currentOpeningToken.type == GRMustacheTokenTypePartialOverride) {
+ [self failWithFatalError:[self parseErrorAtToken:token description:@"Illegal tag inside a partial override tag."]];
+ return NO;
+ }
+
// Expression validation
NSError *error;
BOOL empty;
@@ -326,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}}
@@ -339,7 +363,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;
@@ -378,12 +404,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;
}
@@ -402,7 +428,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];
@@ -471,16 +497,18 @@ - (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 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;
@@ -494,12 +522,12 @@ - (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: {
+ case GRMustacheTokenTypePartialOverride: {
// Validate token: inheritable template ending should be missing, or match inheritable template opening
NSError *error;
BOOL empty;
@@ -536,10 +564,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/src/classes/Compiling/GRMustacheCompiler_private.h b/GRMustache/Compiling/GRMustacheCompiler_private.h
similarity index 88%
rename from src/classes/Compiling/GRMustacheCompiler_private.h
rename to GRMustache/Compiling/GRMustacheCompiler_private.h
index 60133c31..50f408f0 100644
--- a/src/classes/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/src/classes/Compiling/TemplateAST/GRMustacheInheritableSectionNode.m b/GRMustache/Compiling/TemplateAST/GRMustacheBlock.m
similarity index 76%
rename from src/classes/Compiling/TemplateAST/GRMustacheInheritableSectionNode.m
rename to GRMustache/Compiling/TemplateAST/GRMustacheBlock.m
index 845a2935..96a9ca10 100644
--- a/src/classes/Compiling/TemplateAST/GRMustacheInheritableSectionNode.m
+++ b/GRMustache/Compiling/TemplateAST/GRMustacheBlock.m
@@ -20,14 +20,16 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
-#import "GRMustacheInheritableSectionNode_private.h"
+#if __has_feature(objc_arc)
+#error Manual Reference Counting required: use -fno-objc-arc.
+#endif
+
+#import "GRMustacheBlock_private.h"
#import "GRMustacheTemplateASTVisitor_private.h"
-@implementation GRMustacheInheritableSectionNode
-@synthesize name=_name;
-@synthesize innerTemplateAST=_innerTemplateAST;
+@implementation GRMustacheBlock
-+ (instancetype)inheritableSectionNodeWithName:(NSString *)name innerTemplateAST:(GRMustacheTemplateAST *)innerTemplateAST
++ (instancetype)blockWithName:(NSString *)name innerTemplateAST:(GRMustacheTemplateAST *)innerTemplateAST
{
return [[[self alloc] initWithName:name innerTemplateAST:innerTemplateAST] autorelease];
}
@@ -44,20 +46,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/src/classes/Compiling/TemplateAST/GRMustacheInheritableSectionNode_private.h b/GRMustache/Compiling/TemplateAST/GRMustacheBlock_private.h
similarity index 71%
rename from src/classes/Compiling/TemplateAST/GRMustacheInheritableSectionNode_private.h
rename to GRMustache/Compiling/TemplateAST/GRMustacheBlock_private.h
index 9e301ebe..269eebd5 100644
--- a/src/classes/Compiling/TemplateAST/GRMustacheInheritableSectionNode_private.h
+++ b/GRMustache/Compiling/TemplateAST/GRMustacheBlock_private.h
@@ -27,39 +27,35 @@
@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 {
-@private
- NSString *_name;
- GRMustacheTemplateAST *_innerTemplateAST;
-}
+@interface GRMustacheBlock : NSObject
/**
- * 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/src/classes/Compiling/TemplateAST/GRMustachePartialNode.m b/GRMustache/Compiling/TemplateAST/GRMustachePartialNode.m
similarity index 94%
rename from src/classes/Compiling/TemplateAST/GRMustachePartialNode.m
rename to GRMustache/Compiling/TemplateAST/GRMustachePartialNode.m
index 5ed53455..a5b5b223 100644
--- a/src/classes/Compiling/TemplateAST/GRMustachePartialNode.m
+++ b/GRMustache/Compiling/TemplateAST/GRMustachePartialNode.m
@@ -20,14 +20,16 @@
// 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"
@implementation GRMustachePartialNode
-@synthesize templateAST=_templateAST;
-@synthesize name=_name;
- (void)dealloc
{
@@ -55,7 +57,7 @@ - (BOOL)acceptTemplateASTVisitor:(id)visitor error
// Relevant test:
//
// {
- // "name": "Partials in inherited partials can override inheritable sections",
+ // "name": "Partials in partial overrides can override blocks",
// "data": { },
// "template": "{{partial1}}{{/partial2}}",
// "partials": {
diff --git a/src/classes/Compiling/TemplateAST/GRMustachePartialNode_private.h b/GRMustache/Compiling/TemplateAST/GRMustachePartialNode_private.h
similarity index 96%
rename from src/classes/Compiling/TemplateAST/GRMustachePartialNode_private.h
rename to GRMustache/Compiling/TemplateAST/GRMustachePartialNode_private.h
index 7cff6cb5..47bde5f1 100644
--- a/src/classes/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/src/classes/Compiling/TemplateAST/GRMustacheInheritedPartialNode.m b/GRMustache/Compiling/TemplateAST/GRMustachePartialOverrideNode.m
similarity index 80%
rename from src/classes/Compiling/TemplateAST/GRMustacheInheritedPartialNode.m
rename to GRMustache/Compiling/TemplateAST/GRMustachePartialOverrideNode.m
index f67e69f0..a4076416 100644
--- a/src/classes/Compiling/TemplateAST/GRMustacheInheritedPartialNode.m
+++ b/GRMustache/Compiling/TemplateAST/GRMustachePartialOverrideNode.m
@@ -20,16 +20,18 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
-#import "GRMustacheInheritedPartialNode_private.h"
+#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"
#import "GRMustacheTemplateASTVisitor_private.h"
-@implementation GRMustacheInheritedPartialNode
-@synthesize overridingTemplateAST=_overridingTemplateAST;
-@synthesize parentPartialNode=_parentPartialNode;
+@implementation GRMustachePartialOverrideNode
-+ (instancetype)inheritedPartialNodeWithParentPartialNode:(GRMustachePartialNode *)parentPartialNode overridingTemplateAST:(GRMustacheTemplateAST *)overridingTemplateAST
++ (instancetype)partialOverrideNodeWithParentPartialNode:(GRMustachePartialNode *)parentPartialNode overridingTemplateAST:(GRMustacheTemplateAST *)overridingTemplateAST
{
return [[[self alloc] initWithParentPartialNode:parentPartialNode overridingTemplateAST:overridingTemplateAST] autorelease];
}
@@ -46,20 +48,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 an inheritable section",
+ // "name": "Two levels of inheritance: partial override with overriding content containing another partial override with overriding content containing a block",
// "data": { },
// "template": "{{ {
-@private
- GRMustachePartialNode *_parentPartialNode;
- GRMustacheTemplateAST *_overridingTemplateAST;
-}
+@interface GRMustachePartialOverrideNode : NSObject
/**
- * 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 +48,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/src/classes/Compiling/TemplateAST/GRMustacheSectionTag.m b/GRMustache/Compiling/TemplateAST/GRMustacheSectionTag.m
similarity index 80%
rename from src/classes/Compiling/TemplateAST/GRMustacheSectionTag.m
rename to GRMustache/Compiling/TemplateAST/GRMustacheSectionTag.m
index 1a3ddca0..557f97fc 100644
--- a/src/classes/Compiling/TemplateAST/GRMustacheSectionTag.m
+++ b/GRMustache/Compiling/TemplateAST/GRMustacheSectionTag.m
@@ -20,15 +20,20 @@
// 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"
#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;
- (void)dealloc
@@ -39,9 +44,9 @@ - (void)dealloc
[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];
}
@@ -69,8 +74,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];
}
@@ -84,9 +89,9 @@ - (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];
+ self = [super initWithTagStartDelimiter:tagStartDelimiter tagEndDelimiter:tagEndDelimiter];
if (self) {
_expression = [expression retain];
_inverted = inverted;
diff --git a/src/classes/Compiling/TemplateAST/GRMustacheSectionTag_private.h b/GRMustache/Compiling/TemplateAST/GRMustacheSectionTag_private.h
similarity index 89%
rename from src/classes/Compiling/TemplateAST/GRMustacheSectionTag_private.h
rename to GRMustache/Compiling/TemplateAST/GRMustacheSectionTag_private.h
index a55fa2e3..8f2fc2cd 100644
--- a/src/classes/Compiling/TemplateAST/GRMustacheSectionTag_private.h
+++ b/GRMustache/Compiling/TemplateAST/GRMustacheSectionTag_private.h
@@ -27,15 +27,7 @@
@class GRMustacheExpression;
@class GRMustacheTemplateAST;
-@interface GRMustacheSectionTag : GRMustacheTag {
-@private
- GRMustacheExpression *_expression;
- BOOL _inverted;
- NSString *_templateString;
- NSRange _innerRange;
- GRMustacheTemplateAST *_innerTemplateAST;
-}
-
+@interface GRMustacheSectionTag : GRMustacheTag
@property (nonatomic, retain, readonly) GRMustacheExpression *expression GRMUSTACHE_API_INTERNAL;
@property (nonatomic, retain, readonly) GRMustacheTemplateAST *innerTemplateAST GRMUSTACHE_API_INTERNAL;
@@ -61,6 +53,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/src/classes/Compiling/TemplateAST/GRMustacheTag.h b/GRMustache/Compiling/TemplateAST/GRMustacheTag.h
similarity index 82%
rename from src/classes/Compiling/TemplateAST/GRMustacheTag.h
rename to GRMustache/Compiling/TemplateAST/GRMustacheTag.h
index 64795082..4a0da886 100644
--- a/src/classes/Compiling/TemplateAST/GRMustacheTag.h
+++ b/GRMustache/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,21 @@ 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;
+
+/**
+ * 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.
@@ -106,20 +111,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 +137,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/GRMustache/Compiling/TemplateAST/GRMustacheTag.m
similarity index 80%
rename from src/classes/Compiling/TemplateAST/GRMustacheTag.m
rename to GRMustache/Compiling/TemplateAST/GRMustacheTag.m
index 8491c88b..4d15550a 100644
--- a/src/classes/Compiling/TemplateAST/GRMustacheTag.m
+++ b/GRMustache/Compiling/TemplateAST/GRMustacheTag.m
@@ -20,21 +20,37 @@
// 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"
@implementation GRMustacheTag
-- (GRMustacheTagType)type
+- (instancetype)initWithTagStartDelimiter:(NSString *)tagStartDelimiter tagEndDelimiter:(NSString *)tagEndDelimiter
{
- [self doesNotRecognizeSelector:_cmd];
- return 0;
+ self = [super init];
+ if (self) {
+ _tagStartDelimiter = [tagStartDelimiter retain];
+ _tagEndDelimiter = [tagEndDelimiter retain];
+ }
+ return self;
+}
+
+- (void)dealloc
+{
+ [_tagStartDelimiter release];
+ [_tagEndDelimiter release];
+ [super dealloc];
}
-- (GRMustacheTemplateRepository *)templateRepository
+- (GRMustacheTagType)type
{
- return [GRMustacheRendering currentTemplateRepository];
+ [self doesNotRecognizeSelector:_cmd];
+ return 0;
}
- (NSString *)innerTemplateString
diff --git a/src/classes/Compiling/TemplateAST/GRMustacheTag_private.h b/GRMustache/Compiling/TemplateAST/GRMustacheTag_private.h
similarity index 86%
rename from src/classes/Compiling/TemplateAST/GRMustacheTag_private.h
rename to GRMustache/Compiling/TemplateAST/GRMustacheTag_private.h
index 0485c731..fab6dc82 100644
--- a/src/classes/Compiling/TemplateAST/GRMustacheTag_private.h
+++ b/GRMustache/Compiling/TemplateAST/GRMustacheTag_private.h
@@ -43,7 +43,10 @@ typedef NS_ENUM(NSUInteger, GRMustacheTagType) {
@property (nonatomic, readonly) NSString *innerTemplateString GRMUSTACHE_API_PUBLIC;
// Documented in GRMustacheTag.h
-@property (nonatomic, readonly) GRMustacheTemplateRepository *templateRepository GRMUSTACHE_API_PUBLIC_BUT_DEPRECATED;
+@property (nonatomic, retain) NSString *tagStartDelimiter GRMUSTACHE_API_PUBLIC;
+
+// Documented in GRMustacheTag.h
+@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;
@@ -53,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/src/classes/Compiling/TemplateAST/GRMustacheTemplateAST.m b/GRMustache/Compiling/TemplateAST/GRMustacheTemplateAST.m
similarity index 96%
rename from src/classes/Compiling/TemplateAST/GRMustacheTemplateAST.m
rename to GRMustache/Compiling/TemplateAST/GRMustacheTemplateAST.m
index 5904da44..b2f8d88f 100644
--- a/src/classes/Compiling/TemplateAST/GRMustacheTemplateAST.m
+++ b/GRMustache/Compiling/TemplateAST/GRMustacheTemplateAST.m
@@ -20,13 +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 "GRMustacheTemplateAST_private.h"
#import "GRMustacheTemplateASTNode_private.h"
#import "GRMustacheTemplateASTVisitor_private.h"
@implementation GRMustacheTemplateAST
-@synthesize templateASTNodes=_templateASTNodes;
-@synthesize contentType=_contentType;
- (void)dealloc
{
diff --git a/src/classes/Compiling/TemplateAST/GRMustacheTemplateASTNode_private.h b/GRMustache/Compiling/TemplateAST/GRMustacheTemplateASTNode_private.h
similarity index 95%
rename from src/classes/Compiling/TemplateAST/GRMustacheTemplateASTNode_private.h
rename to GRMustache/Compiling/TemplateAST/GRMustacheTemplateASTNode_private.h
index e6f8d35c..b30be735 100644
--- a/src/classes/Compiling/TemplateAST/GRMustacheTemplateASTNode_private.h
+++ b/GRMustache/Compiling/TemplateAST/GRMustacheTemplateASTNode_private.h
@@ -59,8 +59,8 @@
* rendered in lieu of the node argument.
*
* All classes conforming to the GRMustacheTemplateASTNode protocol return
- * the node argument, but GRMustacheInheritableSectionNode,
- * GRMustacheInheritedPartialNode, and GRMustachePartialNode.
+ * the node argument, but GRMustacheBlock,
+ * GRMustachePartialOverrideNode, and GRMustachePartialNode.
*
* @param templateASTNode A node
*
diff --git a/src/classes/Compiling/TemplateAST/GRMustacheTemplateASTVisitor_private.h b/GRMustache/Compiling/TemplateAST/GRMustacheTemplateASTVisitor_private.h
similarity index 85%
rename from src/classes/Compiling/TemplateAST/GRMustacheTemplateASTVisitor_private.h
rename to GRMustache/Compiling/TemplateAST/GRMustacheTemplateASTVisitor_private.h
index 1fcab0b4..131931aa 100644
--- a/src/classes/Compiling/TemplateAST/GRMustacheTemplateASTVisitor_private.h
+++ b/GRMustache/Compiling/TemplateAST/GRMustacheTemplateASTVisitor_private.h
@@ -24,8 +24,8 @@
#import "GRMustacheAvailabilityMacros_private.h"
@class GRMustacheTemplateAST;
-@class GRMustacheInheritedPartialNode;
-@class GRMustacheInheritableSectionNode;
+@class GRMustachePartialOverrideNode;
+@class GRMustacheBlock;
@class GRMustachePartialNode;
@class GRMustacheVariableTag;
@class GRMustacheSectionTag;
@@ -35,8 +35,8 @@
// Don't use these methods directly. Use -[ {
-@private
- NSArray *_templateASTNodes;
- GRMustacheContentType _contentType;
-}
+@interface GRMustacheTemplateAST : NSObject
/**
* An NSArray containing instances
diff --git a/src/classes/Compiling/TemplateAST/GRMustacheTextNode.m b/GRMustache/Compiling/TemplateAST/GRMustacheTextNode.m
similarity index 92%
rename from src/classes/Compiling/TemplateAST/GRMustacheTextNode.m
rename to GRMustache/Compiling/TemplateAST/GRMustacheTextNode.m
index 52a0a363..f025600c 100644
--- a/src/classes/Compiling/TemplateAST/GRMustacheTextNode.m
+++ b/GRMustache/Compiling/TemplateAST/GRMustacheTextNode.m
@@ -20,10 +20,16 @@
// 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"
-@implementation GRMustacheTextNode
+@implementation GRMustacheTextNode {
+ NSString *_text;
+}
+ (instancetype)textNodeWithText:(NSString *)text
{
diff --git a/src/classes/Compiling/TemplateAST/GRMustacheTextNode_private.h b/GRMustache/Compiling/TemplateAST/GRMustacheTextNode_private.h
similarity index 97%
rename from src/classes/Compiling/TemplateAST/GRMustacheTextNode_private.h
rename to GRMustache/Compiling/TemplateAST/GRMustacheTextNode_private.h
index 7b226a58..2069c4e2 100644
--- a/src/classes/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/src/classes/Compiling/TemplateAST/GRMustacheVariableTag.m b/GRMustache/Compiling/TemplateAST/GRMustacheVariableTag.m
similarity index 82%
rename from src/classes/Compiling/TemplateAST/GRMustacheVariableTag.m
rename to GRMustache/Compiling/TemplateAST/GRMustacheVariableTag.m
index bbe6ae1b..a0acb844 100644
--- a/src/classes/Compiling/TemplateAST/GRMustacheVariableTag.m
+++ b/GRMustache/Compiling/TemplateAST/GRMustacheVariableTag.m
@@ -20,13 +20,17 @@
// 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"
-@implementation GRMustacheVariableTag
-@synthesize expression=_expression;
-@synthesize escapesHTML=_escapesHTML;
+@implementation GRMustacheVariableTag {
+ GRMustacheContentType _contentType;
+}
- (void)dealloc
{
@@ -34,9 +38,9 @@ - (void)dealloc
[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,9 +90,9 @@ - (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];
+ self = [super initWithTagStartDelimiter:tagStartDelimiter tagEndDelimiter:tagEndDelimiter];
if (self) {
_expression = [expression retain];
_escapesHTML = escapesHTML;
diff --git a/src/classes/Compiling/TemplateAST/GRMustacheVariableTag_private.h b/GRMustache/Compiling/TemplateAST/GRMustacheVariableTag_private.h
similarity index 75%
rename from src/classes/Compiling/TemplateAST/GRMustacheVariableTag_private.h
rename to GRMustache/Compiling/TemplateAST/GRMustacheVariableTag_private.h
index 8d780389..1713bb9e 100644
--- a/src/classes/Compiling/TemplateAST/GRMustacheVariableTag_private.h
+++ b/GRMustache/Compiling/TemplateAST/GRMustacheVariableTag_private.h
@@ -26,28 +26,24 @@
@class GRMustacheExpression;
-@interface GRMustacheVariableTag : GRMustacheTag {
-@private
- GRMustacheExpression *_expression;
- BOOL _escapesHTML;
- GRMustacheContentType _contentType;
-}
-
+@interface GRMustacheVariableTag : GRMustacheTag
@property (nonatomic, retain, readonly) GRMustacheExpression *expression GRMUSTACHE_API_INTERNAL;
@property (nonatomic, readonly) BOOL escapesHTML GRMUSTACHE_API_INTERNAL;
/**
* 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/include/GRMustacheConfiguration.h b/GRMustache/Configuration/GRMustacheConfiguration.h
similarity index 93%
rename from include/GRMustacheConfiguration.h
rename to GRMustache/Configuration/GRMustacheConfiguration.h
index 2d061ae9..4ddc2487 100644
--- a/include/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
////////////////////////////////////////////////////////////////////////////////
@@ -103,7 +96,7 @@
*
* @since v6.2
*/
-+ (GRMustacheConfiguration *)defaultConfiguration AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER;
++ (GRMustacheConfiguration *)defaultConfiguration AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER;
////////////////////////////////////////////////////////////////////////////////
@@ -119,7 +112,7 @@
*
* @since v6.2
*/
-+ (GRMustacheConfiguration *)configuration AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER;
++ (instancetype)configuration AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER;
////////////////////////////////////////////////////////////////////////////////
@@ -135,7 +128,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 +169,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 +204,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 +224,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 +264,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 +274,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 +284,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/Configuration/GRMustacheConfiguration.m b/GRMustache/Configuration/GRMustacheConfiguration.m
similarity index 91%
rename from src/classes/Configuration/GRMustacheConfiguration.m
rename to GRMustache/Configuration/GRMustacheConfiguration.m
index 0f09254c..c5c78958 100644
--- a/src/classes/Configuration/GRMustacheConfiguration.m
+++ b/GRMustache/Configuration/GRMustacheConfiguration.m
@@ -20,16 +20,16 @@
// 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
-@synthesize contentType=_contentType;
-@synthesize tagStartDelimiter=_tagStartDelimiter;
-@synthesize tagEndDelimiter=_tagEndDelimiter;
-@synthesize baseContext=_baseContext;
-@synthesize locked=_locked;
+ (GRMustacheConfiguration *)defaultConfiguration
{
@@ -41,9 +41,9 @@ + (GRMustacheConfiguration *)defaultConfiguration
return defaultConfiguration;
}
-+ (GRMustacheConfiguration *)configuration
++ (instancetype)configuration
{
- return [[[GRMustacheConfiguration alloc] init] autorelease];
+ return [[[self alloc] init] autorelease];
}
- (void)dealloc
@@ -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/Configuration/GRMustacheConfiguration_private.h b/GRMustache/Configuration/GRMustacheConfiguration_private.h
similarity index 90%
rename from src/classes/Configuration/GRMustacheConfiguration_private.h
rename to GRMustache/Configuration/GRMustacheConfiguration_private.h
index e2c155bd..423d1e49 100644
--- a/src/classes/Configuration/GRMustacheConfiguration_private.h
+++ b/GRMustache/Configuration/GRMustacheConfiguration_private.h
@@ -28,21 +28,13 @@
@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;
// 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/src/classes/GRMustache.h b/GRMustache/GRMustache.h
similarity index 54%
rename from src/classes/GRMustache.h
rename to GRMustache/GRMustache.h
index e926703e..725a5bff 100644
--- a/src/classes/GRMustache.h
+++ b/GRMustache/GRMustache.h
@@ -23,20 +23,11 @@
#import
#import "GRMustacheAvailabilityMacros.h"
-@protocol GRMustacheRendering;
-@class GRMustacheTag;
-@class GRMustacheContext;
+//! Project version number for GRMustache.
+FOUNDATION_EXPORT double GRMustacheVersionNumber;
-/**
- * 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;
+//! Project version string for GRMustache.
+FOUNDATION_EXPORT const unsigned char GRMustacheVersionString[];
/**
@@ -47,57 +38,55 @@ typedef struct {
*/
@interface GRMustache: NSObject
+
////////////////////////////////////////////////////////////////////////////////
-/// @name Getting the GRMustache version
+/// @name Standard Library
////////////////////////////////////////////////////////////////////////////////
/**
- * @return The version of GRMustache as a GRMustacheVersion struct.
+ * @return The GRMustache standard `each`.
*
- * @since v7.0
+ * **Companion guide:** https://github.com/groue/GRMustache/blob/master/Guides/standard_library.md
+ *
+ * @since v8.0
*/
-+ (GRMustacheVersion)libraryVersion AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER;
-
-
-////////////////////////////////////////////////////////////////////////////////
-/// @name Standard Library
-////////////////////////////////////////////////////////////////////////////////
++ (id)standardEach AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER;
/**
- * @return The GRMustache standard library.
+ * @return The GRMustache standard `HTMLEscape`.
*
* **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;
-
++ (id)standardHTMLEscape AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER;
-////////////////////////////////////////////////////////////////////////////////
-/// @name Building rendering objects
-////////////////////////////////////////////////////////////////////////////////
+/**
+ * @return The GRMustache standard `URLEscape`.
+ *
+ * **Companion guide:** https://github.com/groue/GRMustache/blob/master/Guides/standard_library.md
+ *
+ * @since v8.0
+ */
++ (id)standardURLEscape AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER;
/**
- * This method is deprecated. Use
- * `+[GRMustacheRendering renderingObjectForObject:]` instead.
+ * @return The GRMustache standard `javascriptEscape`.
*
- * @see GRMustacheRendering class
+ * **Companion guide:** https://github.com/groue/GRMustache/blob/master/Guides/standard_library.md
*
- * @since v6.0
- * @deprecated v7.0
+ * @since v8.0
*/
-+ (id)renderingObjectForObject:(id)object AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER_BUT_DEPRECATED;
++ (id)standardJavascriptEscape AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER;
/**
- * This method is deprecated. Use
- * `+[GRMustacheRendering renderingObjectWithBlock:]` instead.
+ * @return The GRMustache standard `zip`.
*
- * @see GRMustacheRendering class
+ * **Companion guide:** https://github.com/groue/GRMustache/blob/master/Guides/standard_library.md
*
- * @since v6.0
- * @deprecated v7.0
+ * @since v8.0
*/
-+ (id)renderingObjectWithBlock:(NSString *(^)(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error))block AVAILABLE_GRMUSTACHE_VERSION_7_0_AND_LATER_BUT_DEPRECATED;
++ (id)standardZip AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER;
@end
@@ -106,13 +95,12 @@ typedef struct {
#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 "GRMustacheKeyValueCoding.h"
#import "NSValueTransformer+GRMustache.h"
#import "NSFormatter+GRMustache.h"
diff --git a/GRMustache/GRMustache.m b/GRMustache/GRMustache.m
new file mode 100644
index 00000000..075ab190
--- /dev/null
+++ b/GRMustache/GRMustache.m
@@ -0,0 +1,159 @@
+// 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.
+
+#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"
+#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
+
+@implementation GRMustache
+
+
+// =============================================================================
+#pragma mark - Standard library
+
+// Documented in GRMustache.h
++ (id)standardEach
+{
+ return [[[GRMustacheEachFilter alloc] init] autorelease];
+}
+
+// Documented in GRMustache.h
++ (id)standardHTMLEscape
+{
+ return [[[GRMustacheHTMLEscapeFilter alloc] init] autorelease];
+}
+
+// Documented in GRMustache.h
++ (id)standardURLEscape
+{
+ return [[[GRMustacheURLEscapeFilter alloc] init] autorelease];
+}
+
+// Documented in GRMustache.h
++ (id)standardJavascriptEscape
+{
+ return [[[GRMustacheJavascriptEscapeFilter alloc] init] autorelease];
+}
+
+// Documented in GRMustache.h
++ (id)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;
+ }];
+}
+
+@end
diff --git a/src/classes/GRMustache_private.h b/GRMustache/GRMustache_private.h
similarity index 75%
rename from src/classes/GRMustache_private.h
rename to GRMustache/GRMustache_private.h
index fb9d4cff..0312318c 100644
--- a/src/classes/GRMustache_private.h
+++ b/GRMustache/GRMustache_private.h
@@ -27,25 +27,21 @@
@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;
++ (id)standardEach GRMUSTACHE_API_PUBLIC;
+
+// Documented in GRMustache.h
++ (id)standardHTMLEscape GRMUSTACHE_API_PUBLIC;
// Documented in GRMustache.h
-+ (NSObject *)standardLibrary GRMUSTACHE_API_PUBLIC;
++ (id)standardURLEscape GRMUSTACHE_API_PUBLIC;
// Documented in GRMustache.h
-+ (id)renderingObjectForObject:(id)object GRMUSTACHE_API_PUBLIC_BUT_DEPRECATED;
++ (id)standardJavascriptEscape GRMUSTACHE_API_PUBLIC;
// Documented in GRMustache.h
-+ (id)renderingObjectWithBlock:(NSString *(^)(GRMustacheTag *tag, GRMustacheContext *context, BOOL *HTMLSafe, NSError **error))block GRMUSTACHE_API_PUBLIC_BUT_DEPRECATED;
++ (id)standardZip GRMUSTACHE_API_PUBLIC;
@end
diff --git a/src/GRMustache/Info.plist b/GRMustache/Info.plist
similarity index 97%
rename from src/GRMustache/Info.plist
rename to GRMustache/Info.plist
index 913ca181..11bf68aa 100644
--- a/src/GRMustache/Info.plist
+++ b/GRMustache/Info.plist
@@ -15,7 +15,7 @@
CFBundlePackageType
FMWK
CFBundleShortVersionString
- 8.0
+ 8.0.0
CFBundleSignature
????
CFBundleVersion
diff --git a/src/classes/Parsing/GRMustacheExpressionParser.m b/GRMustache/Parsing/GRMustacheExpressionParser.m
similarity index 99%
rename from src/classes/Parsing/GRMustacheExpressionParser.m
rename to GRMustache/Parsing/GRMustacheExpressionParser.m
index 0a8d0e1e..d309f2af 100644
--- a/src/classes/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/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 92%
rename from src/classes/Parsing/GRMustacheTemplateParser.m
rename to GRMustache/Parsing/GRMustacheTemplateParser.m
index 491d9c02..d3a2020c 100644
--- a/src/classes/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"
@@ -40,9 +44,6 @@ @interface GRMustacheTemplateParser()
@end
@implementation GRMustacheTemplateParser
-@synthesize delegate=_delegate;
-@synthesize tagStartDelimiter=_tagStartDelimiter;
-@synthesize tagEndDelimiter=_tagEndDelimiter;
- (instancetype)initWithConfiguration:(GRMustacheConfiguration *)configuration
{
@@ -191,7 +192,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 +210,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 +228,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;
@@ -258,7 +265,7 @@ - (void)parseTemplateString:(NSString *)templateString templateID:(id)templateID
tagInnerRange = (NSRange){ .location = start+tagStartDelimiterLength+1, .length = i-(start+tagStartDelimiterLength+1) };
break;
case '$':
- type = GRMustacheTokenTypeInheritableSectionOpening;
+ type = GRMustacheTokenTypeBlockOpening;
tagInnerRange = (NSRange){ .location = start+tagStartDelimiterLength+1, .length = i-(start+tagStartDelimiterLength+1) };
break;
case '/':
@@ -270,7 +277,7 @@ - (void)parseTemplateString:(NSString *)templateString templateID:(id)templateID
tagInnerRange = (NSRange){ .location = start+tagStartDelimiterLength+1, .length = i-(start+tagStartDelimiterLength+1) };
break;
case '<':
- type = GRMustacheTokenTypeInheritedPartial;
+ type = GRMustacheTokenTypePartialOverride;
tagInnerRange = (NSRange){ .location = start+tagStartDelimiterLength+1, .length = i-(start+tagStartDelimiterLength+1) };
break;
case '{':
@@ -294,7 +301,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 +325,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 +362,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 +411,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;
@@ -411,35 +426,35 @@ - (void)parseTemplateString:(NSString *)templateString templateID:(id)templateID
}
}
-- (NSString *)parseInheritableSectionName:(NSString *)string empty:(BOOL *)empty error:(NSError **)error
+- (NSString *)parseBlockName:(NSString *)string empty:(BOOL *)empty error:(NSError **)error
{
NSCharacterSet *whiteSpace = [NSCharacterSet whitespaceAndNewlineCharacterSet];
- NSString *inheritableSectionName = [string stringByTrimmingCharactersInSet:whiteSpace];
- if (inheritableSectionName.length == 0) {
+ NSString *blockName = [string stringByTrimmingCharactersInSet:whiteSpace];
+ if (blockName.length == 0) {
if (empty != NULL) {
*empty = YES;
}
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;
}
- if ([inheritableSectionName rangeOfCharacterFromSet:whiteSpace].location != NSNotFound) {
+ if ([blockName rangeOfCharacterFromSet:whiteSpace].location != NSNotFound) {
if (empty != NULL) {
*empty = NO;
}
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;
}
- return inheritableSectionName;
+ return blockName;
}
- (NSString *)parseTemplateName:(NSString *)string empty:(BOOL *)empty error:(NSError **)error
diff --git a/src/classes/Parsing/GRMustacheTemplateParser_private.h b/GRMustache/Parsing/GRMustacheTemplateParser_private.h
similarity index 91%
rename from src/classes/Parsing/GRMustacheTemplateParser_private.h
rename to GRMustache/Parsing/GRMustacheTemplateParser_private.h
index 52b3b2fa..45ff1466 100644
--- a/src/classes/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.
@@ -125,7 +120,7 @@
- (NSString *)parseTemplateName:(NSString *)string empty:(BOOL *)empty error:(NSError **)error GRMUSTACHE_API_INTERNAL;
/**
- * Returns an inheritable section name from a string.
+ * Returns a block name from a string.
*
* @param string A string.
* @param empty If there is an error parsing an identifier, upon return
@@ -133,9 +128,9 @@
* @param error If there is an error parsing an identifier, upon return
* contains an NSError object that describes the problem.
*
- * @return a template name, or nil if the string is not a partial name.
+ * @return a block name, or nil if the string is not a partial name.
*/
-- (NSString *)parseInheritableSectionName:(NSString *)string empty:(BOOL *)empty error:(NSError **)error GRMUSTACHE_API_INTERNAL;
+- (NSString *)parseBlockName:(NSString *)string empty:(BOOL *)empty error:(NSError **)error GRMUSTACHE_API_INTERNAL;
/**
* Returns a pragma from a string
diff --git a/src/classes/Parsing/GRMustacheToken.m b/GRMustache/Parsing/GRMustacheToken.m
similarity index 82%
rename from src/classes/Parsing/GRMustacheToken.m
rename to GRMustache/Parsing/GRMustacheToken.m
index e53f3551..217a2886 100644
--- a/src/classes/Parsing/GRMustacheToken.m
+++ b/GRMustache/Parsing/GRMustacheToken.m
@@ -20,25 +20,25 @@
// 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"
@implementation GRMustacheToken
-@synthesize type=_type;
-@synthesize templateString=_templateString;
-@synthesize templateID=_templateID;
-@synthesize line=_line;
-@synthesize range=_range;
-@synthesize tagInnerRange=_tagInnerRange;
- (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 +46,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/src/classes/Parsing/GRMustacheToken_private.h b/GRMustache/Parsing/GRMustacheToken_private.h
similarity index 87%
rename from src/classes/Parsing/GRMustacheToken_private.h
rename to GRMustache/Parsing/GRMustacheToken_private.h
index 44bdc898..2ebfbb88 100644
--- a/src/classes/Parsing/GRMustacheToken_private.h
+++ b/GRMustache/Parsing/GRMustacheToken_private.h
@@ -81,16 +81,14 @@ typedef NS_ENUM(NSInteger, GRMustacheTokenType) {
GRMustacheTokenTypePragma,
/**
- * The kind of tokens representing inherited partial tags such as
- * `{{);
- GRMUSTACHE_STACK_DECLARE_IVARS(inheritedPartialNodeStack, id);
-
- BOOL _unsafeKeyAccess;
-}
-
+@interface GRMustacheContext : NSObject
////////////////////////////////////////////////////////////////////////////////
/// @name Creating Rendering Contexts
@@ -110,7 +94,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 +121,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 +150,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 +172,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 +216,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 +244,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 +267,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 +293,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.
@@ -325,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
@@ -338,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
@@ -357,12 +339,11 @@
*
* @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;
+- (id)valueForMustacheKey:(NSString *)key AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER;
/**
* Evaluates an expression such as `name`, or `uppercase(user.name)`.
@@ -380,103 +361,6 @@
*
* @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;
+- (BOOL)hasValue:(id *)value forMustacheExpression:(NSString *)expression error:(NSError **)error AVAILABLE_GRMUSTACHE_VERSION_8_0_AND_LATER;
@end
diff --git a/src/classes/Rendering/GRMustacheContext.m b/GRMustache/Rendering/GRMustacheContext.m
similarity index 68%
rename from src/classes/Rendering/GRMustacheContext.m
rename to GRMustache/Rendering/GRMustacheContext.m
index e966ea43..d81d75b1 100644
--- a/src/classes/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"
@@ -30,6 +34,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]; \
@@ -93,18 +98,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
@@ -114,13 +126,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];
@@ -151,7 +156,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];
}
@@ -166,12 +171,11 @@ - (instancetype)contextByAddingTagDelegate:(id)tagDelegat
}
GRMustacheContext *context = [GRMustacheContext context];
- context->_unsafeKeyAccess = _unsafeKeyAccess;
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);
@@ -185,11 +189,10 @@ - (instancetype)newContextByAddingObject:(id)object
}
GRMustacheContext *context = [[GRMustacheContext alloc] init];
- context->_unsafeKeyAccess = _unsafeKeyAccess;
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);
@@ -215,11 +218,10 @@ - (instancetype)contextByAddingProtectedObject:(id)object
}
GRMustacheContext *context = [GRMustacheContext context];
- context->_unsafeKeyAccess = _unsafeKeyAccess;
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);
@@ -234,11 +236,10 @@ - (instancetype)contextByAddingHiddenObject:(id)object
}
GRMustacheContext *context = [GRMustacheContext context];
- context->_unsafeKeyAccess = _unsafeKeyAccess;
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);
@@ -246,94 +247,24 @@ - (instancetype)contextByAddingHiddenObject:(id)object
return context;
}
-- (instancetype)contextByAddingInheritedPartialNode:(GRMustacheInheritedPartialNode *)inheritedPartialNode
+- (instancetype)contextByAddingPartialOverrideNode:(GRMustachePartialOverrideNode *)partialOverrideNode
{
- if (inheritedPartialNode == nil) {
+ if (partialOverrideNode == nil) {
return self;
}
GRMustacheContext *context = [GRMustacheContext context];
- context->_unsafeKeyAccess = _unsafeKeyAccess;
GRMUSTACHE_STACK_COPY(contextStack, self, context);
GRMUSTACHE_STACK_COPY(protectedContextStack, self, context);
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;
}
-- (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(inheritedPartialNodeStack, __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(inheritedPartialNodeStack);
-
-
- // 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(inheritedPartialNodeStack, unsafeContext);
- }
- free(unsafeContexts);
-
-
- // Done
-
- GRMustacheContext *unsafeContext = CFDictionaryGetValue(unsafeContextForContext, self);
- CFRelease(unsafeContextForContext);
- return unsafeContext;
-}
// =============================================================================
#pragma mark - Context Stack
@@ -353,8 +284,8 @@ - (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];
- if (value != nil) {
+ id value;
+ if ([GRMUSTACHE_STACK_TOP(protectedContextStack, context) exceptionSafeHasValue:&value forMustacheKey:key]) {
if (protected != NULL) {
*protected = YES;
}
@@ -379,8 +310,8 @@ - (id)valueForMustacheKey:(NSString *)key protected:(BOOL *)protected
}
}
if (hidden) { continue; }
- id value = [GRMustacheKeyAccess valueForMustacheKey:key inObject:contextObject unsafeKeyAccess:context->_unsafeKeyAccess];
- if (value != nil) {
+ id value;
+ if ([contextObject exceptionSafeHasValue:&value forMustacheKey:key]) {
if (protected != NULL) {
*protected = NO;
}
@@ -434,18 +365,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/src/classes/Rendering/GRMustacheContext_private.h b/GRMustache/Rendering/GRMustacheContext_private.h
similarity index 76%
rename from src/classes/Rendering/GRMustacheContext_private.h
rename to GRMustache/Rendering/GRMustacheContext_private.h
index d91a690c..a5c1a33a 100644
--- a/src/classes/Rendering/GRMustacheContext_private.h
+++ b/GRMustache/Rendering/GRMustacheContext_private.h
@@ -24,8 +24,7 @@
#import "GRMustacheAvailabilityMacros_private.h"
@protocol GRMustacheTagDelegate;
-@protocol GRMustacheTemplateASTNode;
-@class GRMustacheInheritedPartialNode;
+@class GRMustachePartialOverrideNode;
/**
* The GRMustacheContext maintains the following stacks:
@@ -34,7 +33,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,32 +48,13 @@
*
* - Let tag delegates interpret rendered values.
*
- * - Let inherited partial templates override AST nodes.
+ * - 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(inheritedPartialNodeStack, GRMustacheInheritedPartialNode *);
-
- BOOL _unsafeKeyAccess;
-}
+@interface GRMustacheContext : NSObject
// 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;
@@ -93,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;
@@ -106,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.
@@ -136,13 +110,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 +143,6 @@
/**
* TODO
*/
-- (NSArray *)inheritedPartialNodeStack GRMUSTACHE_API_INTERNAL;
+- (NSArray *)partialOverrideNodeStack GRMUSTACHE_API_INTERNAL;
@end
diff --git a/src/classes/Rendering/GRMustacheExpressionInvocation.m b/GRMustache/Rendering/GRMustacheExpressionInvocation.m
similarity index 95%
rename from src/classes/Rendering/GRMustacheExpressionInvocation.m
rename to GRMustache/Rendering/GRMustacheExpressionInvocation.m
index 435242ed..bd70de93 100644
--- a/src/classes/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"
@@ -30,15 +34,12 @@
#import "GRMustacheToken_private.h"
#import "GRMustacheKeyAccess_private.h"
#import "GRMustacheError.h"
+#import "NSObject+GRMustacheKeyValueCoding_private.h"
@interface GRMustacheExpressionInvocation()
@end
@implementation GRMustacheExpressionInvocation
-@synthesize context=_context;
-@synthesize expression=_expression;
-@synthesize value=_value;
-@synthesize valueIsProtected=_valueIsProtected;
- (BOOL)invokeReturningError:(NSError **)error
{
@@ -120,7 +121,9 @@ - (BOOL)visitScopedExpression:(GRMustacheScopedExpression *)expression error:(NS
return NO;
}
- _value = [GRMustacheKeyAccess valueForMustacheKey:expression.identifier inObject:_value unsafeKeyAccess:_context.unsafeKeyAccess];
+ if (![_value exceptionSafeHasValue:&_value forMustacheKey:expression.identifier]) {
+ _value = nil;
+ }
_valueIsProtected = NO;
return YES;
}
diff --git a/src/classes/Rendering/GRMustacheExpressionInvocation_private.h b/GRMustache/Rendering/GRMustacheExpressionInvocation_private.h
similarity index 90%
rename from src/classes/Rendering/GRMustacheExpressionInvocation_private.h
rename to GRMustache/Rendering/GRMustacheExpressionInvocation_private.h
index 316fd537..c76b6a4e 100644
--- a/src/classes/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/src/classes/Rendering/GRMustacheFilter.h b/GRMustache/Rendering/GRMustacheFilter.h
similarity index 95%
rename from src/classes/Rendering/GRMustacheFilter.h
rename to GRMustache/Rendering/GRMustacheFilter.h
index b89e2eca..2d700cb0 100644
--- a/src/classes/Rendering/GRMustacheFilter.h
+++ b/GRMustache/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/GRMustacheFilter.m b/GRMustache/Rendering/GRMustacheFilter.m
similarity index 93%
rename from src/classes/Rendering/GRMustacheFilter.m
rename to GRMustache/Rendering/GRMustacheFilter.m
index bbbc5496..24b1e7a6 100644
--- a/src/classes/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"
// =============================================================================
@@ -29,10 +33,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 +45,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 +76,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 +113,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/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/GRMustache/Rendering/GRMustacheKeyAccess.m b/GRMustache/Rendering/GRMustacheKeyAccess.m
new file mode 100644
index 00000000..127e9f11
--- /dev/null
+++ b/GRMustache/Rendering/GRMustacheKeyAccess.m
@@ -0,0 +1,168 @@
+// 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.
+
+#if __has_feature(objc_arc)
+#error Manual Reference Counting required: use -fno-objc-arc.
+#endif
+
+#import
+#import
+#import "GRMustacheKeyAccess_private.h"
+
+#if !defined(NS_BLOCK_ASSERTIONS)
+// For testing purpose
+BOOL GRMustacheKeyAccessDidCatchNSUndefinedKeyException;
+#endif
+
+
+// =============================================================================
+#pragma mark - Safe key access
+
+static pthread_key_t GRSafeKeysForClassKey;
+void freeSafeKeysForClass(void *objects) {
+ CFRelease((CFMutableDictionaryRef)objects);
+}
+#define setupSafeKeysForClass() pthread_key_create(&GRSafeKeysForClassKey, freeSafeKeysForClass)
+#define getCurrentThreadSafeKeysForClass() (CFMutableDictionaryRef)pthread_getspecific(GRSafeKeysForClassKey)
+#define setCurrentThreadSafeKeysForClass(classes) pthread_setspecific(GRSafeKeysForClassKey, classes)
+
+
+// =============================================================================
+#pragma mark - NSUndefinedKeyException prevention declarations
+
+@interface NSObject(GRMustacheKeyAccessPreventionOfNSUndefinedKeyException)
+- (id)GRMustacheKeyAccessValueForUndefinedKey_NSObject:(NSString *)key;
+- (id)GRMustacheKeyAccessValueForUndefinedKey_NSManagedObject:(NSString *)key;
+@end;
+
+
+// =============================================================================
+#pragma mark - GRMustacheKeyAccess
+
+static Class NSManagedObjectClass;
+
+@interface NSObject(GRMustacheCoreDataMethods)
+- (NSDictionary *)propertiesByName;
+- (id)entity;
+@end
+
+@implementation GRMustacheKeyAccess
+
++ (void)initialize
+{
+ NSManagedObjectClass = NSClassFromString(@"NSManagedObject");
+ setupSafeKeysForClass();
+}
+
+
+// =============================================================================
+#pragma mark - Foundation
+
+/**
+ * Return the set of methods without arguments, up to NSObject, non including NSObject.
+ */
++ (NSMutableSet *)allPublicKeysForClass:(Class)klass
+{
+ NSMutableSet *keys = [NSMutableSet set];
+ Class NSObjectClass = [NSObject class];
+ while (klass && klass != NSObjectClass) {
+ unsigned int methodCount;
+ Method *methods = class_copyMethodList(klass, &methodCount);
+ for (unsigned int i = 0; i < methodCount; ++i) {
+ SEL selector = method_getName(methods[i]);
+ const char *selectorName = sel_getName(selector);
+ if (selectorName[0] != '_' && selectorName[strlen(selectorName) - 1] != '_' && strstr(selectorName, ":") == NULL) {
+ [keys addObject:NSStringFromSelector(selector)];
+ }
+ }
+ free (methods);
+ klass = class_getSuperclass(klass);
+ }
+
+ return keys;
+}
+
+
+// =============================================================================
+#pragma mark - Safe key access
+
++ (BOOL)isSafeMustacheKey:(NSString *)key forObject:(id)object
+{
+ NSSet *safeKeys = nil;
+ {
+ CFMutableDictionaryRef safeKeysForClass = getCurrentThreadSafeKeysForClass();
+ if (!safeKeysForClass) {
+ safeKeysForClass = CFDictionaryCreateMutable(NULL, 0, NULL, &kCFTypeDictionaryValueCallBacks);
+ setCurrentThreadSafeKeysForClass(safeKeysForClass);
+ }
+
+ Class klass = [object class];
+ safeKeys = (NSSet *)CFDictionaryGetValue(safeKeysForClass, klass);
+ if (safeKeys == nil) {
+ NSMutableSet *keys = [self propertyGettersForClass:klass];
+ if (NSManagedObjectClass && [object isKindOfClass:NSManagedObjectClass]) {
+ [keys unionSet:[NSSet setWithArray:[[[object entity] propertiesByName] allKeys]]];
+ }
+ safeKeys = keys;
+ CFDictionarySetValue(safeKeysForClass, klass, safeKeys);
+ }
+ }
+
+ return [safeKeys containsObject:key];
+}
+
++ (NSMutableSet *)propertyGettersForClass:(Class)klass
+{
+ NSMutableSet *safeKeys = [NSMutableSet set];
+ while (klass) {
+ // Iterate properties
+
+ unsigned int count;
+ objc_property_t *properties = class_copyPropertyList(klass, &count);
+
+ for (unsigned int i=0; i
+#import "GRMustacheAvailabilityMacros_private.h"
+
+@interface GRMustacheKeyAccess : NSObject
++ (BOOL)isSafeMustacheKey:(NSString *)key forObject:(id)object GRMUSTACHE_API_INTERNAL;
+@end
diff --git a/src/classes/Services/NSValueTransformer+GRMustache.h b/GRMustache/Rendering/GRMustacheKeyValueCoding.h
similarity index 84%
rename from src/classes/Services/NSValueTransformer+GRMustache.h
rename to GRMustache/Rendering/GRMustacheKeyValueCoding.h
index 1e7ff34b..3df4133f 100644
--- a/src/classes/Services/NSValueTransformer+GRMustache.h
+++ b/GRMustache/Rendering/GRMustacheKeyValueCoding.h
@@ -22,13 +22,14 @@
#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
+ * TODO
*/
-@interface NSValueTransformer (GRMustache)
+@protocol GRMustacheKeyValueCoding
+
+/**
+ * TODO
+ */
+- (BOOL)hasValue:(id *)value forMustacheKey:(NSString *)key;
@end
diff --git a/include/GRMustacheRendering.h b/GRMustache/Rendering/GRMustacheRendering.h
similarity index 89%
rename from include/GRMustacheRendering.h
rename to GRMustache/Rendering/GRMustacheRendering.h
index f1b526a2..99dc0e47 100644
--- a/include/GRMustacheRendering.h
+++ b/GRMustache/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,22 @@
*
* @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;
+
+
+////////////////////////////////////////////////////////////////////////////////
+/// @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
diff --git a/src/classes/Rendering/GRMustacheRendering.m b/GRMustache/Rendering/GRMustacheRendering.m
similarity index 86%
rename from src/classes/Rendering/GRMustacheRendering.m
rename to GRMustache/Rendering/GRMustacheRendering.m
index ed7a138d..f510004e 100644
--- a/src/classes/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"
@@ -27,6 +31,7 @@
#import "GRMustacheConfiguration_private.h"
#import "GRMustacheContext_private.h"
#import "GRMustacheError.h"
+#import "GRMustacheTemplate_private.h"
#import "GRMustacheTemplateRepository_private.h"
#import "GRMustacheBuffer_private.h"
@@ -44,10 +49,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
@@ -74,30 +76,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 +83,6 @@ @implementation GRMustacheRendering
+ (void)initialize
{
- setupCurrentTemplateRepositoryStack();
- setupCurrentContentTypeStack();
-
nilRendering = [[GRMustacheNilRendering alloc] init];
// We could have declared categories on NSNull, NSNumber, NSString and
@@ -147,61 +122,61 @@ + (void)initialize
return [[[GRMustacheBlockRendering alloc] initWithRenderingBlock:renderingBlock] autorelease];
}
-
-#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
++ (id)lambda:(NSString *(^)(void))lambda
{
- NSMutableArray *stack = getCurrentThreadCurrentContentTypeStack();
- NSAssert(stack, @"Missing currentContentTypeStack");
- NSAssert(stack.count > 0, @"Empty currentContentTypeStack");
- [stack removeLastObject];
+ 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];
+ }
+ }
+ }];
}
-+ (GRMustacheContentType)currentContentType
++ (id)sectionLambda:(NSString *(^)(NSString *string))lambda
{
- NSMutableArray *stack = getCurrentThreadCurrentContentTypeStack();
- if (stack.count > 0) {
- return [(NSNumber *)[stack lastObject] unsignedIntegerValue];
- }
- return ([self currentTemplateRepository].configuration ?: [GRMustacheConfiguration defaultConfiguration]).contentType;
+ 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];
+ }
+ }
+ }];
}
@@ -297,7 +272,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/src/classes/Rendering/GRMustacheRenderingEngine.m b/GRMustache/Rendering/GRMustacheRenderingEngine.m
similarity index 86%
rename from src/classes/Rendering/GRMustacheRenderingEngine.m
rename to GRMustache/Rendering/GRMustacheRenderingEngine.m
index 6cc075e6..35055ae4 100644
--- a/src/classes/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"
@@ -31,12 +35,13 @@
#import "GRMustacheContext_private.h"
#import "GRMustacheRendering_private.h"
#import "GRMustacheTranslateCharacters_private.h"
-#import "GRMustacheInheritedPartialNode_private.h"
-#import "GRMustacheInheritableSectionNode_private.h"
+#import "GRMustachePartialOverrideNode_private.h"
+#import "GRMustacheBlock_private.h"
#import "GRMustachePartialNode_private.h"
#import "GRMustacheTextNode_private.h"
#import "GRMustacheTagDelegate.h"
#import "GRMustacheExpressionInvocation_private.h"
+#import "GRMustacheBuffer_private.h"
@interface GRMustacheRenderingEngine()
@end
@@ -58,24 +63,29 @@ void freeCurrentExpressionInvocation(void *object) {
}
-@implementation GRMustacheRenderingEngine
+@implementation GRMustacheRenderingEngine {
+ GRMustacheBuffer _buffer;
+ GRMustacheTemplateAST *_templateAST;
+ GRMustacheContext *_context;
+ GRMustacheContentType _contentType;
+}
+ (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);
}
@@ -103,13 +113,19 @@ - (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...
- 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;
}
@@ -122,29 +138,20 @@ - (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
+- (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;
}
-- (BOOL)visitInheritableSectionNode:(GRMustacheInheritableSectionNode *)inheritableSectionNode error:(NSError **)error
+- (BOOL)visitBlock:(GRMustacheBlock *)block error:(NSError **)error
{
- return [self visitTemplateAST:inheritableSectionNode.innerTemplateAST error:error];
+ return [self visitTemplateAST:block.innerTemplateAST error:error];
}
- (BOOL)visitPartialNode:(GRMustachePartialNode *)partialNode error:(NSError **)error
@@ -171,14 +178,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;
}
@@ -365,17 +380,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/Rendering/GRMustacheRenderingEngine_private.h b/GRMustache/Rendering/GRMustacheRenderingEngine_private.h
new file mode 100644
index 00000000..5e11057d
--- /dev/null
+++ b/GRMustache/Rendering/GRMustacheRenderingEngine_private.h
@@ -0,0 +1,44 @@
+// 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_private.h"
+
+@class GRMustacheContext;
+@class GRMustacheTemplateAST;
+
+/**
+ * TODO
+ */
+@interface GRMustacheRenderingEngine : NSObject
+
+/**
+ * TODO
+ */
+- (NSString *)renderHTMLSafe:(BOOL *)HTMLSafe error:(NSError **)error GRMUSTACHE_API_INTERNAL;
+
+/**
+ * TODO
+ */
++ (instancetype)renderingEngineWithTemplateAST:(GRMustacheTemplateAST *)templateAST context:(GRMustacheContext *)context GRMUSTACHE_API_INTERNAL;
+
+@end
diff --git a/src/classes/Rendering/GRMustacheRendering_private.h b/GRMustache/Rendering/GRMustacheRendering_private.h
similarity index 91%
rename from src/classes/Rendering/GRMustacheRendering_private.h
rename to GRMustache/Rendering/GRMustacheRendering_private.h
index 9ff0b29d..aa6c3647 100644
--- a/src/classes/Rendering/GRMustacheRendering_private.h
+++ b/GRMustache/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
@@ -145,13 +145,11 @@
// 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;
+// Documented in GRMustacheRendering.h
++ (id)lambda:(NSString *(^)(void))lambda GRMUSTACHE_API_PUBLIC;
-+ (void)pushCurrentContentType:(GRMustacheContentType)contentType GRMUSTACHE_API_INTERNAL;
-+ (void)popCurrentContentType GRMUSTACHE_API_INTERNAL;
-+ (GRMustacheContentType)currentContentType GRMUSTACHE_API_INTERNAL;
+// Documented in GRMustacheRendering.h
++ (id)sectionLambda:(NSString *(^)(NSString *string))lambda GRMUSTACHE_API_PUBLIC;
@end
diff --git a/include/GRMustacheTagDelegate.h b/GRMustache/Rendering/GRMustacheTagDelegate.h
similarity index 95%
rename from include/GRMustacheTagDelegate.h
rename to GRMustache/Rendering/GRMustacheTagDelegate.h
index 573410f3..7a77279d 100644
--- a/include/GRMustacheTagDelegate.h
+++ b/GRMustache/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/GRMustache/Rendering/NSObject+GRMustacheKeyValueCoding.m b/GRMustache/Rendering/NSObject+GRMustacheKeyValueCoding.m
new file mode 100644
index 00000000..0c36ff04
--- /dev/null
+++ b/GRMustache/Rendering/NSObject+GRMustacheKeyValueCoding.m
@@ -0,0 +1,140 @@
+// 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.
+
+#if __has_feature(objc_arc)
+#error Manual Reference Counting required: use -fno-objc-arc.
+#endif
+
+#import "NSObject+GRMustacheKeyValueCoding_private.h"
+#import "GRMustacheKeyAccess_private.h"
+
+@implementation NSObject(GRMustacheKeyValueCoding)
+
+- (BOOL)exceptionSafeHasValue:(id *)value forMustacheKey:(NSString *)key
+{
+ @try {
+ return [self hasValue:value forMustacheKey:key];
+ }
+ @catch (NSException *exception) {
+ // Swallow NSUndefinedKeyException only
+ if (![[exception name] isEqualToString:NSUndefinedKeyException]) {
+ [exception raise];
+ }
+ // Missing key
+ 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)
+
+- (BOOL)hasValue:(id *)value forMustacheKey:(NSString *)key
+{
+ *value = [self objectForKey:key];
+ return (*value != nil);
+}
+
+@end
+
+@implementation NSArray(GRMustacheKeyValueCoding)
+
+- (BOOL)hasValue:(id *)value forMustacheKey:(NSString *)key
+{
+ if ([key isEqualToString:@"count"]) {
+ *value = @(self.count);
+ return YES;
+ } else if ([key isEqualToString:@"first"]) {
+ *value = self.firstObject;
+ return YES;
+ } else if ([key isEqualToString:@"last"]) {
+ *value = self.lastObject;
+ return YES;
+ } else {
+ return NO;
+ }
+}
+
+@end
+
+@implementation NSOrderedSet(GRMustacheKeyValueCoding)
+
+- (BOOL)hasValue:(id *)value forMustacheKey:(NSString *)key
+{
+ if ([key isEqualToString:@"count"]) {
+ *value = @(self.count);
+ return YES;
+ } else if ([key isEqualToString:@"first"]) {
+ *value = self.firstObject;
+ return YES;
+ } else if ([key isEqualToString:@"last"]) {
+ *value = self.lastObject;
+ return YES;
+ } else {
+ return NO;
+ }
+}
+
+@end
+
+@implementation NSSet(GRMustacheKeyValueCoding)
+
+- (BOOL)hasValue:(id *)value forMustacheKey:(NSString *)key
+{
+ if ([key isEqualToString:@"count"]) {
+ *value = @(self.count);
+ return YES;
+ } else if ([key isEqualToString:@"first"]) {
+ *value = self.anyObject;
+ return YES;
+ } else {
+ return NO;
+ }
+}
+
+@end
+
+@implementation NSString(GRMustacheKeyValueCoding)
+
+- (BOOL)hasValue:(id *)value forMustacheKey:(NSString *)key
+{
+ if ([key isEqualToString:@"length"]) {
+ *value = @(self.length);
+ return YES;
+ } else {
+ return NO;
+ }
+}
+
+@end
diff --git a/GRMustache/Rendering/NSObject+GRMustacheKeyValueCoding_private.h b/GRMustache/Rendering/NSObject+GRMustacheKeyValueCoding_private.h
new file mode 100644
index 00000000..90f25f50
--- /dev/null
+++ b/GRMustache/Rendering/NSObject+GRMustacheKeyValueCoding_private.h
@@ -0,0 +1,44 @@
+// 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 "GRMustacheKeyValueCoding.h"
+
+@interface NSObject(GRMustacheKeyValueCoding)
+- (BOOL)exceptionSafeHasValue:(id *)value forMustacheKey:(NSString *)key;
+@end
+
+@interface NSDictionary(GRMustacheKeyValueCoding)
+@end
+
+@interface NSArray(GRMustacheKeyValueCoding)
+@end
+
+@interface NSOrderedSet(GRMustacheKeyValueCoding)
+@end
+
+@interface NSSet(GRMustacheKeyValueCoding)
+@end
+
+@interface NSString(GRMustacheKeyValueCoding)
+@end
diff --git a/src/classes/Services/GRMustacheExpressionGenerator.m b/GRMustache/Services/GRMustacheExpressionGenerator.m
similarity index 93%
rename from src/classes/Services/GRMustacheExpressionGenerator.m
rename to GRMustache/Services/GRMustacheExpressionGenerator.m
index 6be0ca47..6f7c8300 100644
--- a/src/classes/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"
@@ -31,7 +35,9 @@
@interface GRMustacheExpressionGenerator()