Browse code

Too much to mention. Off the top of my head: Added MulleMongoose functionality to mulls-scion. Added @selector(). Fixed a ton of Bugs. Restructured demo templates. Wrote a man page.

Nat! authored on 04-03-2013 16:38:24
Showing 97 changed files
... ...
@@ -3,3 +3,4 @@ MulleScionTemplates.xcodeproj/project.xcworkspace
3 3
 MulleScionTemplates.xcodeproj/xcuserdata
4 4
 *.pch
5 5
 *~
6
+Build
... ...
@@ -7,30 +7,40 @@
7 7
 	objects = {
8 8
 
9 9
 /* Begin PBXBuildFile section */
10
-		410B32E416DB769C005D0EAD /* ifthenelse.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 410B32DD16DB6971005D0EAD /* ifthenelse.scion */; };
11
-		410B32F016DBD6B3005D0EAD /* extends.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 410B32EF16DBD5DC005D0EAD /* extends.scion */; };
10
+		410B32E416DB769C005D0EAD /* if.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 410B32DD16DB6971005D0EAD /* if.scion */; };
11
+		410B32F016DBD6B3005D0EAD /* ~extends.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 410B32EF16DBD5DC005D0EAD /* ~extends.scion */; };
12 12
 		410B32F116DBD6B5005D0EAD /* _footer.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 410B32EE16DBD5D4005D0EAD /* _footer.scion */; };
13 13
 		410B32F216DBD6B6005D0EAD /* _body.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 410B32ED16DBD5C8005D0EAD /* _body.scion */; };
14 14
 		410B32F316DBD6B8005D0EAD /* _header.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 410B32EC16DBD5BC005D0EAD /* _header.scion */; };
15 15
 		410B32F416DBD6BA005D0EAD /* _base.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 410B32EB16DBD57B005D0EAD /* _base.scion */; };
16
-		4121DAEE16DCCE6A00BFD60C /* spaces.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4121DAED16DCCE0B00BFD60C /* spaces.scion */; };
17
-		4121DAF016DCDD3D00BFD60C /* preserve_whitespace.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4121DAEF16DCDC7600BFD60C /* preserve_whitespace.scion */; };
16
+		410C7FD316E0CE4100DC2465 /* MulleScionObjectModel+BlockExpansion.m in Sources */ = {isa = PBXBuildFile; fileRef = 410C7FD216E0CE4100DC2465 /* MulleScionObjectModel+BlockExpansion.m */; };
17
+		410C7FD616E0CF5A00DC2465 /* MulleScionObjectModel+Parsing.m in Sources */ = {isa = PBXBuildFile; fileRef = 410C7FD516E0CF5A00DC2465 /* MulleScionObjectModel+Parsing.m */; };
18
+		410C7FD716E0D85500DC2465 /* MulleScionObjectModel+BlockExpansion.h in Headers */ = {isa = PBXBuildFile; fileRef = 410C7FD116E0CE4100DC2465 /* MulleScionObjectModel+BlockExpansion.h */; settings = {ATTRIBUTES = (Private, ); }; };
19
+		410C7FD816E0D85800DC2465 /* MulleScionObjectModel+MacroExpansion.h in Headers */ = {isa = PBXBuildFile; fileRef = 4178D2FB16DFD2D4001C9FB0 /* MulleScionObjectModel+MacroExpansion.h */; settings = {ATTRIBUTES = (Private, ); }; };
20
+		410C7FD916E0D85E00DC2465 /* MulleScionObjectModel+Parsing.h in Headers */ = {isa = PBXBuildFile; fileRef = 410C7FD416E0CF5A00DC2465 /* MulleScionObjectModel+Parsing.h */; settings = {ATTRIBUTES = (Private, ); }; };
21
+		411F98AE16E0FC6700738250 /* Global Variables.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 411F98AD16E0FBE600738250 /* Global Variables.scion */; };
22
+		411F98B516E1035A00738250 /* error1.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 411F98AF16E1035400738250 /* error1.scion */; };
23
+		411F98B616E1035C00738250 /* error2.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 411F98B016E1035400738250 /* error2.scion */; };
24
+		411F98B716E1035E00738250 /* error3.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 411F98B116E1035400738250 /* error3.scion */; };
25
+		411F98B816E1035F00738250 /* error4.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 411F98B216E1035400738250 /* error4.scion */; };
26
+		411F98B916E1036100738250 /* error5.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 411F98B316E1035400738250 /* error5.scion */; };
27
+		411F98BB16E1108900738250 /* libMulleScionDebugging.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 41D6DF1416DE521C004833D6 /* libMulleScionDebugging.a */; };
28
+		4121DAEE16DCCE6A00BFD60C /* ~spaces.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4121DAED16DCCE0B00BFD60C /* ~spaces.scion */; };
29
+		4121DAF016DCDD3D00BFD60C /* ~preserve_whitespace.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4121DAEF16DCDC7600BFD60C /* ~preserve_whitespace.scion */; };
18 30
 		4121DAF216DCE47500BFD60C /* for.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4121DAF116DCE0FB00BFD60C /* for.scion */; };
19
-		4121DAF416DCEC5200BFD60C /* for_comma.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4121DAF316DCE79C00BFD60C /* for_comma.scion */; };
20 31
 		4121DAF616DCFAAB00BFD60C /* _hackish.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4121DAF516DCFAA600BFD60C /* _hackish.scion */; };
21 32
 		4121DAF816DCFBC800BFD60C /* _empty.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4121DAF716DCFBB700BFD60C /* _empty.scion */; };
22 33
 		4121DAFA16DCFE2D00BFD60C /* while.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4121DAF916DCFD9D00BFD60C /* while.scion */; };
23
-		4121DAFF16DD050100BFD60C /* formatting.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4121DAFE16DD048800BFD60C /* formatting.scion */; };
34
+		4121DAFF16DD050100BFD60C /* Formatting Options.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4121DAFE16DD048800BFD60C /* Formatting Options.scion */; };
24 35
 		4121DB0416DD2B6900BFD60C /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 4121DB0316DD2B6900BFD60C /* libz.dylib */; };
25
-		4121DB0A16DD459700BFD60C /* pipes.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4121DB0916DD451C00BFD60C /* pipes.scion */; };
26
-		4121DB0C16DD65BA00BFD60C /* properties.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4121DB0B16DD5E0B00BFD60C /* properties.scion */; };
27
-		4121DB0E16DD677F00BFD60C /* range.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4121DB0D16DD667900BFD60C /* range.scion */; };
36
+		4121DB0A16DD459700BFD60C /* |.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4121DB0916DD451C00BFD60C /* |.scion */; };
37
+		4121DB0C16DD65BA00BFD60C /*  Introduction.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4121DB0B16DD5E0B00BFD60C /*  Introduction.scion */; };
38
+		4121DB0E16DD677F00BFD60C /* NSMakeRange.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4121DB0D16DD667900BFD60C /* NSMakeRange.scion */; };
28 39
 		4121DB1316DD781700BFD60C /* dot.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4121DB1216DD779800BFD60C /* dot.scion */; };
29 40
 		41764B9016DA511200560FCF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 41764B8F16DA511200560FCF /* Foundation.framework */; };
30 41
 		41764B9316DA511200560FCF /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 41764B9216DA511200560FCF /* main.m */; };
31 42
 		41764B9716DA511200560FCF /* mulle-scion.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = 41764B9616DA511200560FCF /* mulle-scion.1 */; };
32 43
 		41764BB116DAC92400560FCF /* properties.plist in CopyFiles */ = {isa = PBXBuildFile; fileRef = 41764BAE16DAAAA400560FCF /* properties.plist */; };
33
-		4178D2F616DF73BD001C9FB0 /* libMulleScionDebugging.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 41D6DF1416DE521C004833D6 /* libMulleScionDebugging.a */; };
34 44
 		4178D2F816DFA742001C9FB0 /* define.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4178D2F716DFA5D0001C9FB0 /* define.scion */; };
35 45
 		4178D2FA16DFBB43001C9FB0 /* macro.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4178D2F916DFAC8C001C9FB0 /* macro.scion */; };
36 46
 		4178D2FD16DFD2D4001C9FB0 /* MulleScionObjectModel+MacroExpansion.m in Sources */ = {isa = PBXBuildFile; fileRef = 4178D2FC16DFD2D4001C9FB0 /* MulleScionObjectModel+MacroExpansion.m */; };
... ...
@@ -89,20 +99,43 @@
89 99
 		41D6DF8A16DE5415004833D6 /* NSValue+CheatAndHack.h in Headers */ = {isa = PBXBuildFile; fileRef = 4121DB0F16DD685B00BFD60C /* NSValue+CheatAndHack.h */; settings = {ATTRIBUTES = (Private, ); }; };
90 100
 		41D6DF8B16DE5415004833D6 /* MulleMutableLineNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = 410B32E816DB8A7D005D0EAD /* MulleMutableLineNumber.h */; settings = {ATTRIBUTES = (Private, ); }; };
91 101
 		41D6DF8C16DE5415004833D6 /* MulleScionParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 41764B9D16DA51A200560FCF /* MulleScionParser.h */; settings = {ATTRIBUTES = (Public, ); }; };
92
-		41D6DF8D16DE5415004833D6 /* MulleScionParser+Parsing.h in Headers */ = {isa = PBXBuildFile; fileRef = 4121DAFB16DCFFD600BFD60C /* MulleScionParser+Parsing.h */; settings = {ATTRIBUTES = (Public, ); }; };
102
+		41D6DF8D16DE5415004833D6 /* MulleScionParser+Parsing.h in Headers */ = {isa = PBXBuildFile; fileRef = 4121DAFB16DCFFD600BFD60C /* MulleScionParser+Parsing.h */; settings = {ATTRIBUTES = (Private, ); }; };
93 103
 		41D6DF8E16DE5415004833D6 /* NSData+ZLib.h in Headers */ = {isa = PBXBuildFile; fileRef = 4121DB0016DD251900BFD60C /* NSData+ZLib.h */; settings = {ATTRIBUTES = (Private, ); }; };
94 104
 		41D6DF8F16DE5415004833D6 /* MulleScionObjectModel+Description.h in Headers */ = {isa = PBXBuildFile; fileRef = 410B32E516DB7732005D0EAD /* MulleScionObjectModel+Description.h */; settings = {ATTRIBUTES = (Private, ); }; };
95
-		41D6DF9416DE5443004833D6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 41D6DF6216DE53AE004833D6 /* Foundation.framework */; };
96 105
 		41DCAF7916DE576F00C5A74E /* libMulleScionConvenience.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 41D6DF2416DE523D004833D6 /* libMulleScionConvenience.a */; };
97 106
 		41DCAF7A16DE576F00C5A74E /* libMulleScionParser.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 41D6DF0416DE51C9004833D6 /* libMulleScionParser.a */; };
98 107
 		41DCAF7B16DE576F00C5A74E /* libMulleScionPrinter.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 41D6DED916DE509E004833D6 /* libMulleScionPrinter.a */; };
99 108
 		41DCAF7C16DE576F00C5A74E /* libMulleScionTemplate.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 41D6DEF016DE513F004833D6 /* libMulleScionTemplate.a */; };
100
-		41ECE09816DC36C000E891A0 /* simple_extends.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 41ECE09716DC367200E891A0 /* simple_extends.scion */; };
109
+		41DD569F16E376F600C4D68A /* mongoose.c in Sources */ = {isa = PBXBuildFile; fileRef = 41DD569E16E376F600C4D68A /* mongoose.c */; };
110
+		41DD56A216E376FF00C4D68A /* MulleMongoose.m in Sources */ = {isa = PBXBuildFile; fileRef = 41DD56A116E376FF00C4D68A /* MulleMongoose.m */; };
111
+		41DD56A416E37F0B00C4D68A /* [].scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 41DD56A316E37E7500C4D68A /* [].scion */; };
112
+		41DD56A616E3990300C4D68A /* verbatim.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 41DD56A516E397D800C4D68A /* verbatim.scion */; };
113
+		41DD56A816E39CDF00C4D68A /* index.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 41DD56A716E39BF200C4D68A /* index.scion */; };
114
+		41DD56AE16E3D3B800C4D68A /* __scion_footer.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 41DD56AC16E3D15C00C4D68A /* __scion_footer.scion */; };
115
+		41DD56AF16E3D3BA00C4D68A /* __scion_page.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 41DD56AB16E3D14100C4D68A /* __scion_page.scion */; };
116
+		41DD56B016E3D3BB00C4D68A /* __page.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 41DD56AA16E3CFF300C4D68A /* __page.scion */; };
117
+		41DD56B116E3D3BC00C4D68A /* __scion_navigation.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 41DD56A916E3CF3F00C4D68A /* __scion_navigation.scion */; };
118
+		41DD56B216E3D3BE00C4D68A /* __scion_banner.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 41DD56AD16E3D1FF00C4D68A /* __scion_banner.scion */; };
119
+		41DD56B316E3D88B00C4D68A /* README in CopyFiles */ = {isa = PBXBuildFile; fileRef = 41D6DEAA16DE3D37004833D6 /* README */; };
120
+		41DD56B716E3F7A700C4D68A /* MulleScionObjectModel+MulleMongoose.m in Sources */ = {isa = PBXBuildFile; fileRef = 41DD56B616E3F7A600C4D68A /* MulleScionObjectModel+MulleMongoose.m */; };
121
+		41DD56BB16E404FF00C4D68A /* _wrapper.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 41DD56B416E3E95C00C4D68A /* _wrapper.scion */; };
122
+		41DD56BE16E4145000C4D68A /* NSString+HTMLEscape.m in Sources */ = {isa = PBXBuildFile; fileRef = 41DD56BD16E4145000C4D68A /* NSString+HTMLEscape.m */; };
123
+		41EA51A616E4E44600D3B0AD /* includes.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 41EA51A516E4E42A00D3B0AD /* includes.scion */; };
124
+		41EA51A916E4E6D900D3B0AD /* block.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 41EA51A716E4E61A00D3B0AD /* block.scion */; };
125
+		41EA51AA16E4E6DC00D3B0AD /* set.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 41EA51A816E4E63500D3B0AD /* set.scion */; };
126
+		41EA51AC16E4E96200D3B0AD /* extends.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 41EA51AB16E4E7D900D3B0AD /* extends.scion */; };
127
+		41ECE09816DC36C000E891A0 /* ~simple_extends.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 41ECE09716DC367200E891A0 /* ~simple_extends.scion */; };
101 128
 		41ECE09916DC36C200E891A0 /* _simple_base.scion in CopyFiles */ = {isa = PBXBuildFile; fileRef = 41ECE09616DC363E00E891A0 /* _simple_base.scion */; };
129
+		41F12D3C16E2486600120E63 /* MulleScionTemplates.h in Headers */ = {isa = PBXBuildFile; fileRef = 41F12D3B16E2486600120E63 /* MulleScionTemplates.h */; settings = {ATTRIBUTES = (Public, ); }; };
130
+		41F12D3E16E25B4200120E63 /* MulleScionTemplates.c in Sources */ = {isa = PBXBuildFile; fileRef = 41F12D3D16E25B4200120E63 /* MulleScionTemplates.c */; };
131
+		41F12D3F16E25B7000120E63 /* MulleScionTemplates.c in Sources */ = {isa = PBXBuildFile; fileRef = 41F12D3D16E25B4200120E63 /* MulleScionTemplates.c */; };
132
+		41F12D4016E25B9100120E63 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 41764B8F16DA511200560FCF /* Foundation.framework */; };
133
+		41F12D4116E25B9F00120E63 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 4121DB0316DD2B6900BFD60C /* libz.dylib */; };
134
+		41F12D4616E274D200120E63 /* MulleScionNull.m in Sources */ = {isa = PBXBuildFile; fileRef = 41F12D4516E274D200120E63 /* MulleScionNull.m */; };
102 135
 /* End PBXBuildFile section */
103 136
 
104 137
 /* Begin PBXContainerItemProxy section */
105
-		4178D2F416DF73B8001C9FB0 /* PBXContainerItemProxy */ = {
138
+		411F98BC16E1108E00738250 /* PBXContainerItemProxy */ = {
106 139
 			isa = PBXContainerItemProxy;
107 140
 			containerPortal = 41764B8416DA511200560FCF /* Project object */;
108 141
 			proxyType = 1;
... ...
@@ -207,6 +240,13 @@
207 240
 			remoteGlobalIDString = 41D6DF2316DE523D004833D6;
208 241
 			remoteInfo = MulleScionConvenience;
209 242
 		};
243
+		41F12D4216E2703000120E63 /* PBXContainerItemProxy */ = {
244
+			isa = PBXContainerItemProxy;
245
+			containerPortal = 41764B8416DA511200560FCF /* Project object */;
246
+			proxyType = 1;
247
+			remoteGlobalIDString = 41D6DF5B16DE53AE004833D6;
248
+			remoteInfo = MulleScionTemplates;
249
+		};
210 250
 /* End PBXContainerItemProxy section */
211 251
 
212 252
 /* Begin PBXCopyFilesBuildPhase section */
... ...
@@ -226,30 +266,49 @@
226 266
 			dstPath = /tmp/;
227 267
 			dstSubfolderSpec = 0;
228 268
 			files = (
229
-				4121DAF816DCFBC800BFD60C /* _empty.scion in CopyFiles */,
269
+				41DD56A416E37F0B00C4D68A /* [].scion in CopyFiles */,
270
+				41DD56BB16E404FF00C4D68A /* _wrapper.scion in CopyFiles */,
271
+				41DD56A816E39CDF00C4D68A /* index.scion in CopyFiles */,
230 272
 				4190DC6D16DEC7E200FC4471 /* filter.scion in CopyFiles */,
231
-				4121DB0A16DD459700BFD60C /* pipes.scion in CopyFiles */,
232
-				4121DB0E16DD677F00BFD60C /* range.scion in CopyFiles */,
273
+				41DD56B316E3D88B00C4D68A /* README in CopyFiles */,
274
+				4121DB0A16DD459700BFD60C /* |.scion in CopyFiles */,
275
+				4121DB0E16DD677F00BFD60C /* NSMakeRange.scion in CopyFiles */,
276
+				410B32F116DBD6B5005D0EAD /* _footer.scion in CopyFiles */,
233 277
 				4178D2FA16DFBB43001C9FB0 /* macro.scion in CopyFiles */,
234 278
 				4121DB1316DD781700BFD60C /* dot.scion in CopyFiles */,
235
-				4121DB0C16DD65BA00BFD60C /* properties.scion in CopyFiles */,
279
+				411F98B516E1035A00738250 /* error1.scion in CopyFiles */,
280
+				410B32F016DBD6B3005D0EAD /* ~extends.scion in CopyFiles */,
281
+				410B32F416DBD6BA005D0EAD /* _base.scion in CopyFiles */,
282
+				41DD56A616E3990300C4D68A /* verbatim.scion in CopyFiles */,
283
+				41DD56AF16E3D3BA00C4D68A /* __scion_page.scion in CopyFiles */,
284
+				411F98AE16E0FC6700738250 /* Global Variables.scion in CopyFiles */,
285
+				4121DB0C16DD65BA00BFD60C /*  Introduction.scion in CopyFiles */,
286
+				411F98B716E1035E00738250 /* error3.scion in CopyFiles */,
287
+				411F98B916E1036100738250 /* error5.scion in CopyFiles */,
288
+				411F98B816E1035F00738250 /* error4.scion in CopyFiles */,
289
+				4121DAF816DCFBC800BFD60C /* _empty.scion in CopyFiles */,
290
+				411F98B616E1035C00738250 /* error2.scion in CopyFiles */,
291
+				410B32F316DBD6B8005D0EAD /* _header.scion in CopyFiles */,
292
+				41ECE09916DC36C200E891A0 /* _simple_base.scion in CopyFiles */,
293
+				410B32F216DBD6B6005D0EAD /* _body.scion in CopyFiles */,
236 294
 				4178D2F816DFA742001C9FB0 /* define.scion in CopyFiles */,
237 295
 				4121DAF616DCFAAB00BFD60C /* _hackish.scion in CopyFiles */,
238
-				410B32F316DBD6B8005D0EAD /* _header.scion in CopyFiles */,
239 296
 				4121DAF216DCE47500BFD60C /* for.scion in CopyFiles */,
240
-				4121DAEE16DCCE6A00BFD60C /* spaces.scion in CopyFiles */,
241
-				4121DAF416DCEC5200BFD60C /* for_comma.scion in CopyFiles */,
297
+				41DD56B216E3D3BE00C4D68A /* __scion_banner.scion in CopyFiles */,
298
+				4121DAEE16DCCE6A00BFD60C /* ~spaces.scion in CopyFiles */,
299
+				41DD56B016E3D3BB00C4D68A /* __page.scion in CopyFiles */,
300
+				41DD56B116E3D3BC00C4D68A /* __scion_navigation.scion in CopyFiles */,
301
+				41EA51A616E4E44600D3B0AD /* includes.scion in CopyFiles */,
242 302
 				41764BB116DAC92400560FCF /* properties.plist in CopyFiles */,
243
-				4121DAF016DCDD3D00BFD60C /* preserve_whitespace.scion in CopyFiles */,
244
-				4121DAFF16DD050100BFD60C /* formatting.scion in CopyFiles */,
245
-				41ECE09916DC36C200E891A0 /* _simple_base.scion in CopyFiles */,
303
+				4121DAF016DCDD3D00BFD60C /* ~preserve_whitespace.scion in CopyFiles */,
304
+				41DD56AE16E3D3B800C4D68A /* __scion_footer.scion in CopyFiles */,
305
+				41EA51AA16E4E6DC00D3B0AD /* set.scion in CopyFiles */,
306
+				41EA51A916E4E6D900D3B0AD /* block.scion in CopyFiles */,
307
+				4121DAFF16DD050100BFD60C /* Formatting Options.scion in CopyFiles */,
308
+				41EA51AC16E4E96200D3B0AD /* extends.scion in CopyFiles */,
246 309
 				4121DAFA16DCFE2D00BFD60C /* while.scion in CopyFiles */,
247
-				410B32F216DBD6B6005D0EAD /* _body.scion in CopyFiles */,
248
-				410B32F416DBD6BA005D0EAD /* _base.scion in CopyFiles */,
249
-				41ECE09816DC36C000E891A0 /* simple_extends.scion in CopyFiles */,
250
-				410B32F016DBD6B3005D0EAD /* extends.scion in CopyFiles */,
251
-				410B32F116DBD6B5005D0EAD /* _footer.scion in CopyFiles */,
252
-				410B32E416DB769C005D0EAD /* ifthenelse.scion in CopyFiles */,
310
+				41ECE09816DC36C000E891A0 /* ~simple_extends.scion in CopyFiles */,
311
+				410B32E416DB769C005D0EAD /* if.scion in CopyFiles */,
253 312
 			);
254 313
 			runOnlyForDeploymentPostprocessing = 0;
255 314
 		};
... ...
@@ -317,39 +376,48 @@
317 376
 /* End PBXCopyFilesBuildPhase section */
318 377
 
319 378
 /* Begin PBXFileReference section */
320
-		410B32DD16DB6971005D0EAD /* ifthenelse.scion */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ifthenelse.scion; sourceTree = "<group>"; };
379
+		410B32DD16DB6971005D0EAD /* if.scion */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = if.scion; path = ../dox/if.scion; sourceTree = "<group>"; };
321 380
 		410B32DE16DB6A9E005D0EAD /* MulleScionObjectModel+NSCoding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MulleScionObjectModel+NSCoding.h"; sourceTree = "<group>"; };
322 381
 		410B32DF16DB6A9E005D0EAD /* MulleScionObjectModel+NSCoding.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MulleScionObjectModel+NSCoding.m"; sourceTree = "<group>"; };
323 382
 		410B32E516DB7732005D0EAD /* MulleScionObjectModel+Description.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MulleScionObjectModel+Description.h"; sourceTree = "<group>"; };
324 383
 		410B32E616DB7732005D0EAD /* MulleScionObjectModel+Description.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MulleScionObjectModel+Description.m"; sourceTree = "<group>"; };
325 384
 		410B32E816DB8A7D005D0EAD /* MulleMutableLineNumber.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MulleMutableLineNumber.h; sourceTree = "<group>"; };
326 385
 		410B32E916DB8A7D005D0EAD /* MulleMutableLineNumber.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MulleMutableLineNumber.m; sourceTree = "<group>"; };
327
-		410B32EB16DBD57B005D0EAD /* _base.scion */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = _base.scion; sourceTree = "<group>"; };
328
-		410B32EC16DBD5BC005D0EAD /* _header.scion */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = _header.scion; sourceTree = "<group>"; };
329
-		410B32ED16DBD5C8005D0EAD /* _body.scion */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = _body.scion; sourceTree = "<group>"; };
330
-		410B32EE16DBD5D4005D0EAD /* _footer.scion */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = _footer.scion; sourceTree = "<group>"; };
331
-		410B32EF16DBD5DC005D0EAD /* extends.scion */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = extends.scion; sourceTree = "<group>"; };
332
-		4121DAED16DCCE0B00BFD60C /* spaces.scion */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = spaces.scion; sourceTree = "<group>"; };
333
-		4121DAEF16DCDC7600BFD60C /* preserve_whitespace.scion */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = preserve_whitespace.scion; sourceTree = "<group>"; };
334
-		4121DAF116DCE0FB00BFD60C /* for.scion */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = for.scion; sourceTree = "<group>"; };
335
-		4121DAF316DCE79C00BFD60C /* for_comma.scion */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = for_comma.scion; sourceTree = "<group>"; };
336
-		4121DAF516DCFAA600BFD60C /* _hackish.scion */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = _hackish.scion; sourceTree = "<group>"; };
337
-		4121DAF716DCFBB700BFD60C /* _empty.scion */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = _empty.scion; sourceTree = "<group>"; };
338
-		4121DAF916DCFD9D00BFD60C /* while.scion */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = while.scion; sourceTree = "<group>"; };
386
+		410B32EB16DBD57B005D0EAD /* _base.scion */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = _base.scion; path = ../dox/_base.scion; sourceTree = "<group>"; };
387
+		410B32EC16DBD5BC005D0EAD /* _header.scion */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = _header.scion; path = ../dox/_header.scion; sourceTree = "<group>"; };
388
+		410B32ED16DBD5C8005D0EAD /* _body.scion */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = _body.scion; path = ../dox/_body.scion; sourceTree = "<group>"; };
389
+		410B32EE16DBD5D4005D0EAD /* _footer.scion */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = _footer.scion; path = ../dox/_footer.scion; sourceTree = "<group>"; };
390
+		410B32EF16DBD5DC005D0EAD /* ~extends.scion */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = "~extends.scion"; path = "../dox/~extends.scion"; sourceTree = "<group>"; };
391
+		410C7FD116E0CE4100DC2465 /* MulleScionObjectModel+BlockExpansion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MulleScionObjectModel+BlockExpansion.h"; sourceTree = "<group>"; };
392
+		410C7FD216E0CE4100DC2465 /* MulleScionObjectModel+BlockExpansion.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MulleScionObjectModel+BlockExpansion.m"; sourceTree = "<group>"; };
393
+		410C7FD416E0CF5A00DC2465 /* MulleScionObjectModel+Parsing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MulleScionObjectModel+Parsing.h"; sourceTree = "<group>"; };
394
+		410C7FD516E0CF5A00DC2465 /* MulleScionObjectModel+Parsing.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MulleScionObjectModel+Parsing.m"; sourceTree = "<group>"; };
395
+		411F98AD16E0FBE600738250 /* Global Variables.scion */ = {isa = PBXFileReference; lastKnownFileType = text; name = "Global Variables.scion"; path = "../dox/Global Variables.scion"; sourceTree = "<group>"; };
396
+		411F98AF16E1035400738250 /* error1.scion */ = {isa = PBXFileReference; lastKnownFileType = text; name = error1.scion; path = dox/error1.scion; sourceTree = SOURCE_ROOT; };
397
+		411F98B016E1035400738250 /* error2.scion */ = {isa = PBXFileReference; lastKnownFileType = text; name = error2.scion; path = dox/error2.scion; sourceTree = SOURCE_ROOT; };
398
+		411F98B116E1035400738250 /* error3.scion */ = {isa = PBXFileReference; lastKnownFileType = text; name = error3.scion; path = dox/error3.scion; sourceTree = SOURCE_ROOT; };
399
+		411F98B216E1035400738250 /* error4.scion */ = {isa = PBXFileReference; lastKnownFileType = text; name = error4.scion; path = dox/error4.scion; sourceTree = SOURCE_ROOT; };
400
+		411F98B316E1035400738250 /* error5.scion */ = {isa = PBXFileReference; lastKnownFileType = text; name = error5.scion; path = dox/error5.scion; sourceTree = SOURCE_ROOT; };
401
+		4121DAED16DCCE0B00BFD60C /* ~spaces.scion */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = "~spaces.scion"; path = "../dox/~spaces.scion"; sourceTree = "<group>"; };
402
+		4121DAEF16DCDC7600BFD60C /* ~preserve_whitespace.scion */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = "~preserve_whitespace.scion"; path = "../dox/~preserve_whitespace.scion"; sourceTree = "<group>"; };
403
+		4121DAF116DCE0FB00BFD60C /* for.scion */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = for.scion; path = ../dox/for.scion; sourceTree = "<group>"; };
404
+		4121DAF516DCFAA600BFD60C /* _hackish.scion */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = _hackish.scion; path = ../dox/_hackish.scion; sourceTree = "<group>"; };
405
+		4121DAF716DCFBB700BFD60C /* _empty.scion */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = _empty.scion; path = ../dox/_empty.scion; sourceTree = "<group>"; };
406
+		4121DAF916DCFD9D00BFD60C /* while.scion */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = while.scion; path = ../dox/while.scion; sourceTree = "<group>"; };
339 407
 		4121DAFB16DCFFD600BFD60C /* MulleScionParser+Parsing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MulleScionParser+Parsing.h"; sourceTree = "<group>"; };
340 408
 		4121DAFC16DCFFD600BFD60C /* MulleScionParser+Parsing.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MulleScionParser+Parsing.m"; sourceTree = "<group>"; };
341
-		4121DAFE16DD048800BFD60C /* formatting.scion */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = formatting.scion; sourceTree = "<group>"; };
409
+		4121DAFE16DD048800BFD60C /* Formatting Options.scion */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = "Formatting Options.scion"; path = "../dox/Formatting Options.scion"; sourceTree = "<group>"; };
342 410
 		4121DB0016DD251900BFD60C /* NSData+ZLib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+ZLib.h"; sourceTree = "<group>"; };
343 411
 		4121DB0116DD251900BFD60C /* NSData+ZLib.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+ZLib.m"; sourceTree = "<group>"; };
344 412
 		4121DB0316DD2B6900BFD60C /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; };
345 413
 		4121DB0516DD36EC00BFD60C /* MulleScionTemplate+CompressedArchive.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MulleScionTemplate+CompressedArchive.h"; sourceTree = "<group>"; };
346 414
 		4121DB0616DD36EC00BFD60C /* MulleScionTemplate+CompressedArchive.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MulleScionTemplate+CompressedArchive.m"; sourceTree = "<group>"; };
347
-		4121DB0916DD451C00BFD60C /* pipes.scion */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = pipes.scion; sourceTree = "<group>"; };
348
-		4121DB0B16DD5E0B00BFD60C /* properties.scion */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = properties.scion; sourceTree = "<group>"; };
349
-		4121DB0D16DD667900BFD60C /* range.scion */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = range.scion; sourceTree = "<group>"; };
415
+		4121DB0916DD451C00BFD60C /* |.scion */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = "|.scion"; path = "../dox/|.scion"; sourceTree = "<group>"; };
416
+		4121DB0B16DD5E0B00BFD60C /*  Introduction.scion */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = " Introduction.scion"; path = "../dox/ Introduction.scion"; sourceTree = "<group>"; };
417
+		4121DB0D16DD667900BFD60C /* NSMakeRange.scion */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = NSMakeRange.scion; path = ../dox/NSMakeRange.scion; sourceTree = "<group>"; };
350 418
 		4121DB0F16DD685B00BFD60C /* NSValue+CheatAndHack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSValue+CheatAndHack.h"; sourceTree = "<group>"; };
351 419
 		4121DB1016DD685C00BFD60C /* NSValue+CheatAndHack.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSValue+CheatAndHack.m"; sourceTree = "<group>"; };
352
-		4121DB1216DD779800BFD60C /* dot.scion */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = dot.scion; sourceTree = "<group>"; };
420
+		4121DB1216DD779800BFD60C /* dot.scion */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = dot.scion; path = ../dox/dot.scion; sourceTree = "<group>"; };
353 421
 		4121DB1516DD8A0900BFD60C /* MulleScionDataSourceProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MulleScionDataSourceProtocol.h; sourceTree = "<group>"; };
354 422
 		41764B8C16DA511200560FCF /* mulle-scion */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "mulle-scion"; sourceTree = BUILT_PRODUCTS_DIR; };
355 423
 		41764B8F16DA511200560FCF /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
... ...
@@ -366,14 +434,14 @@
366 434
 		41764BA816DA5B2B00560FCF /* MulleScionObjectModel+Printing.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MulleScionObjectModel+Printing.m"; sourceTree = "<group>"; };
367 435
 		41764BAA16DA5E1600560FCF /* NSObject+MulleScionDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSObject+MulleScionDescription.h"; sourceTree = "<group>"; };
368 436
 		41764BAB16DA5E1600560FCF /* NSObject+MulleScionDescription.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSObject+MulleScionDescription.m"; sourceTree = "<group>"; };
369
-		41764BAE16DAAAA400560FCF /* properties.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = properties.plist; sourceTree = "<group>"; };
437
+		41764BAE16DAAAA400560FCF /* properties.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = properties.plist; path = ../dox/properties.plist; sourceTree = "<group>"; };
370 438
 		41764BCC16DAF4C500560FCF /* MulleScion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MulleScion.h; sourceTree = "<group>"; };
371 439
 		41764BCD16DAF4C600560FCF /* MulleScion.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MulleScion.m; sourceTree = "<group>"; };
372
-		4178D2F716DFA5D0001C9FB0 /* define.scion */ = {isa = PBXFileReference; lastKnownFileType = text; path = define.scion; sourceTree = "<group>"; };
373
-		4178D2F916DFAC8C001C9FB0 /* macro.scion */ = {isa = PBXFileReference; lastKnownFileType = text; path = macro.scion; sourceTree = "<group>"; };
440
+		4178D2F716DFA5D0001C9FB0 /* define.scion */ = {isa = PBXFileReference; lastKnownFileType = text; name = define.scion; path = ../dox/define.scion; sourceTree = "<group>"; };
441
+		4178D2F916DFAC8C001C9FB0 /* macro.scion */ = {isa = PBXFileReference; lastKnownFileType = text; name = macro.scion; path = ../dox/macro.scion; sourceTree = "<group>"; };
374 442
 		4178D2FB16DFD2D4001C9FB0 /* MulleScionObjectModel+MacroExpansion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MulleScionObjectModel+MacroExpansion.h"; sourceTree = "<group>"; };
375 443
 		4178D2FC16DFD2D4001C9FB0 /* MulleScionObjectModel+MacroExpansion.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MulleScionObjectModel+MacroExpansion.m"; sourceTree = "<group>"; };
376
-		4190DC6C16DEC5F400FC4471 /* filter.scion */ = {isa = PBXFileReference; lastKnownFileType = text; path = filter.scion; sourceTree = "<group>"; };
444
+		4190DC6C16DEC5F400FC4471 /* filter.scion */ = {isa = PBXFileReference; lastKnownFileType = text; name = filter.scion; path = ../dox/filter.scion; sourceTree = "<group>"; };
377 445
 		41D6DEA316DE32A9004833D6 /* MulleScionPrintingException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MulleScionPrintingException.h; sourceTree = "<group>"; };
378 446
 		41D6DEA416DE32A9004833D6 /* MulleScionPrintingException.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MulleScionPrintingException.m; sourceTree = "<group>"; };
379 447
 		41D6DEA716DE3374004833D6 /* MulleScionDataSourceProtocol.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MulleScionDataSourceProtocol.m; sourceTree = "<group>"; };
... ...
@@ -385,13 +453,34 @@
385 453
 		41D6DF1416DE521C004833D6 /* libMulleScionDebugging.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libMulleScionDebugging.a; sourceTree = BUILT_PRODUCTS_DIR; };
386 454
 		41D6DF2416DE523D004833D6 /* libMulleScionConvenience.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libMulleScionConvenience.a; sourceTree = BUILT_PRODUCTS_DIR; };
387 455
 		41D6DF5C16DE53AE004833D6 /* MulleScionTemplates.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = MulleScionTemplates.framework; sourceTree = BUILT_PRODUCTS_DIR; };
388
-		41D6DF5D16DE53AE004833D6 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
389
-		41D6DF6016DE53AE004833D6 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
390
-		41D6DF6116DE53AE004833D6 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; };
391
-		41D6DF6216DE53AE004833D6 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
392 456
 		41DCAF6E16DE557100C5A74E /* MulleScionTemplates-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "MulleScionTemplates-Info.plist"; sourceTree = "<group>"; };
393
-		41ECE09616DC363E00E891A0 /* _simple_base.scion */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = _simple_base.scion; sourceTree = "<group>"; };
394
-		41ECE09716DC367200E891A0 /* simple_extends.scion */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = simple_extends.scion; sourceTree = "<group>"; };
457
+		41DD569D16E376F600C4D68A /* mongoose.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mongoose.h; sourceTree = "<group>"; };
458
+		41DD569E16E376F600C4D68A /* mongoose.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mongoose.c; sourceTree = "<group>"; };
459
+		41DD56A016E376FF00C4D68A /* MulleMongoose.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MulleMongoose.h; sourceTree = "<group>"; };
460
+		41DD56A116E376FF00C4D68A /* MulleMongoose.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MulleMongoose.m; sourceTree = "<group>"; };
461
+		41DD56A316E37E7500C4D68A /* [].scion */ = {isa = PBXFileReference; lastKnownFileType = text; path = "[].scion"; sourceTree = "<group>"; };
462
+		41DD56A516E397D800C4D68A /* verbatim.scion */ = {isa = PBXFileReference; lastKnownFileType = text; path = verbatim.scion; sourceTree = "<group>"; };
463
+		41DD56A716E39BF200C4D68A /* index.scion */ = {isa = PBXFileReference; lastKnownFileType = text; path = index.scion; sourceTree = "<group>"; };
464
+		41DD56A916E3CF3F00C4D68A /* __scion_navigation.scion */ = {isa = PBXFileReference; lastKnownFileType = text; path = __scion_navigation.scion; sourceTree = "<group>"; };
465
+		41DD56AA16E3CFF300C4D68A /* __page.scion */ = {isa = PBXFileReference; lastKnownFileType = text; path = __page.scion; sourceTree = "<group>"; };
466
+		41DD56AB16E3D14100C4D68A /* __scion_page.scion */ = {isa = PBXFileReference; lastKnownFileType = text; path = __scion_page.scion; sourceTree = "<group>"; };
467
+		41DD56AC16E3D15C00C4D68A /* __scion_footer.scion */ = {isa = PBXFileReference; lastKnownFileType = text; path = __scion_footer.scion; sourceTree = "<group>"; };
468
+		41DD56AD16E3D1FF00C4D68A /* __scion_banner.scion */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = __scion_banner.scion; sourceTree = "<group>"; };
469
+		41DD56B416E3E95C00C4D68A /* _wrapper.scion */ = {isa = PBXFileReference; lastKnownFileType = text; path = _wrapper.scion; sourceTree = "<group>"; };
470
+		41DD56B516E3F7A600C4D68A /* MulleScionObjectModel+MulleMongoose.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MulleScionObjectModel+MulleMongoose.h"; sourceTree = "<group>"; };
471
+		41DD56B616E3F7A600C4D68A /* MulleScionObjectModel+MulleMongoose.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MulleScionObjectModel+MulleMongoose.m"; sourceTree = "<group>"; };
472
+		41DD56BC16E4145000C4D68A /* NSString+HTMLEscape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+HTMLEscape.h"; sourceTree = "<group>"; };
473
+		41DD56BD16E4145000C4D68A /* NSString+HTMLEscape.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+HTMLEscape.m"; sourceTree = "<group>"; };
474
+		41EA51A516E4E42A00D3B0AD /* includes.scion */ = {isa = PBXFileReference; lastKnownFileType = text; path = includes.scion; sourceTree = "<group>"; };
475
+		41EA51A716E4E61A00D3B0AD /* block.scion */ = {isa = PBXFileReference; lastKnownFileType = text; path = block.scion; sourceTree = "<group>"; };
476
+		41EA51A816E4E63500D3B0AD /* set.scion */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = set.scion; sourceTree = "<group>"; };
477
+		41EA51AB16E4E7D900D3B0AD /* extends.scion */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = extends.scion; sourceTree = "<group>"; };
478
+		41ECE09616DC363E00E891A0 /* _simple_base.scion */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = _simple_base.scion; path = ../dox/_simple_base.scion; sourceTree = "<group>"; };
479
+		41ECE09716DC367200E891A0 /* ~simple_extends.scion */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = "~simple_extends.scion"; path = "../dox/~simple_extends.scion"; sourceTree = "<group>"; };
480
+		41F12D3B16E2486600120E63 /* MulleScionTemplates.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MulleScionTemplates.h; sourceTree = "<group>"; };
481
+		41F12D3D16E25B4200120E63 /* MulleScionTemplates.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = MulleScionTemplates.c; sourceTree = "<group>"; };
482
+		41F12D4416E274D100120E63 /* MulleScionNull.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MulleScionNull.h; sourceTree = "<group>"; };
483
+		41F12D4516E274D200120E63 /* MulleScionNull.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MulleScionNull.m; sourceTree = "<group>"; };
395 484
 /* End PBXFileReference section */
396 485
 
397 486
 /* Begin PBXFrameworksBuildPhase section */
... ...
@@ -399,7 +488,7 @@
399 488
 			isa = PBXFrameworksBuildPhase;
400 489
 			buildActionMask = 2147483647;
401 490
 			files = (
402
-				4178D2F616DF73BD001C9FB0 /* libMulleScionDebugging.a in Frameworks */,
491
+				411F98BB16E1108900738250 /* libMulleScionDebugging.a in Frameworks */,
403 492
 				41DCAF7916DE576F00C5A74E /* libMulleScionConvenience.a in Frameworks */,
404 493
 				41DCAF7B16DE576F00C5A74E /* libMulleScionPrinter.a in Frameworks */,
405 494
 				41DCAF7A16DE576F00C5A74E /* libMulleScionParser.a in Frameworks */,
... ...
@@ -457,7 +546,8 @@
457 546
 				41D6DF7216DE53C0004833D6 /* libMulleScionParser.a in Frameworks */,
458 547
 				41D6DF7316DE53C0004833D6 /* libMulleScionPrinter.a in Frameworks */,
459 548
 				41D6DF7416DE53C0004833D6 /* libMulleScionTemplate.a in Frameworks */,
460
-				41D6DF9416DE5443004833D6 /* Foundation.framework in Frameworks */,
549
+				41F12D4016E25B9100120E63 /* Foundation.framework in Frameworks */,
550
+				41F12D4116E25B9F00120E63 /* libz.dylib in Frameworks */,
461 551
 			);
462 552
 			runOnlyForDeploymentPostprocessing = 0;
463 553
 		};
... ...
@@ -467,10 +557,10 @@
467 557
 		4121DB0816DD410D00BFD60C /* MulleScionLibrary */ = {
468 558
 			isa = PBXGroup;
469 559
 			children = (
470
-				41DCAF7D16DE5C6800C5A74E /* MulleScionConvenience */,
471 560
 				41D6DF4F16DE532F004833D6 /* MulleScionTemplate */,
472 561
 				41D6DE9F16DE28B8004833D6 /* MulleScionPrinter */,
473 562
 				41D6DEA016DE28EE004833D6 /* MulleScionParser */,
563
+				41DCAF7D16DE5C6800C5A74E /* MulleScionConvenience */,
474 564
 				41D6DEA116DE291F004833D6 /* ZLib */,
475 565
 				41D6DEA216DE293F004833D6 /* Debugging */,
476 566
 			);
... ...
@@ -507,8 +597,6 @@
507 597
 			children = (
508 598
 				41764B8F16DA511200560FCF /* Foundation.framework */,
509 599
 				4121DB0316DD2B6900BFD60C /* libz.dylib */,
510
-				41D6DF5D16DE53AE004833D6 /* Cocoa.framework */,
511
-				41D6DF5F16DE53AE004833D6 /* Other Frameworks */,
512 600
 			);
513 601
 			name = Frameworks;
514 602
 			sourceTree = "<group>";
... ...
@@ -517,8 +605,16 @@
517 605
 			isa = PBXGroup;
518 606
 			children = (
519 607
 				41764B9216DA511200560FCF /* main.m */,
608
+				41DD569D16E376F600C4D68A /* mongoose.h */,
609
+				41DD569E16E376F600C4D68A /* mongoose.c */,
610
+				41DD56A016E376FF00C4D68A /* MulleMongoose.h */,
611
+				41DD56A116E376FF00C4D68A /* MulleMongoose.m */,
612
+				41DD56B516E3F7A600C4D68A /* MulleScionObjectModel+MulleMongoose.h */,
613
+				41DD56B616E3F7A600C4D68A /* MulleScionObjectModel+MulleMongoose.m */,
520 614
 				4121DB0816DD410D00BFD60C /* MulleScionLibrary */,
521 615
 				41764B9616DA511200560FCF /* mulle-scion.1 */,
616
+				41F12D3B16E2486600120E63 /* MulleScionTemplates.h */,
617
+				41F12D3D16E25B4200120E63 /* MulleScionTemplates.c */,
522 618
 				41DCAF6E16DE557100C5A74E /* MulleScionTemplates-Info.plist */,
523 619
 			);
524 620
 			path = src;
... ...
@@ -527,23 +623,41 @@
527 623
 		41764B9416DA511200560FCF /* Supporting Files */ = {
528 624
 			isa = PBXGroup;
529 625
 			children = (
626
+				41DD56A716E39BF200C4D68A /* index.scion */,
627
+				41DD56B416E3E95C00C4D68A /* _wrapper.scion */,
628
+				41DD56AD16E3D1FF00C4D68A /* __scion_banner.scion */,
629
+				41DD56A916E3CF3F00C4D68A /* __scion_navigation.scion */,
630
+				41DD56AA16E3CFF300C4D68A /* __page.scion */,
631
+				41DD56AB16E3D14100C4D68A /* __scion_page.scion */,
632
+				41DD56AC16E3D15C00C4D68A /* __scion_footer.scion */,
530 633
 				41764BAE16DAAAA400560FCF /* properties.plist */,
531
-				4121DB0B16DD5E0B00BFD60C /* properties.scion */,
634
+				4121DB0B16DD5E0B00BFD60C /*  Introduction.scion */,
635
+				4121DAFE16DD048800BFD60C /* Formatting Options.scion */,
636
+				411F98AD16E0FBE600738250 /* Global Variables.scion */,
637
+				4121DB0D16DD667900BFD60C /* NSMakeRange.scion */,
638
+				41DD56A316E37E7500C4D68A /* [].scion */,
639
+				4121DB0916DD451C00BFD60C /* |.scion */,
640
+				41EA51A716E4E61A00D3B0AD /* block.scion */,
532 641
 				4178D2F716DFA5D0001C9FB0 /* define.scion */,
533 642
 				4121DB1216DD779800BFD60C /* dot.scion */,
643
+				41EA51AB16E4E7D900D3B0AD /* extends.scion */,
534 644
 				4178D2F916DFAC8C001C9FB0 /* macro.scion */,
535
-				4121DB0D16DD667900BFD60C /* range.scion */,
536
-				410B32EF16DBD5DC005D0EAD /* extends.scion */,
537
-				410B32DD16DB6971005D0EAD /* ifthenelse.scion */,
538
-				4121DAFE16DD048800BFD60C /* formatting.scion */,
645
+				410B32DD16DB6971005D0EAD /* if.scion */,
646
+				4190DC6C16DEC5F400FC4471 /* filter.scion */,
647
+				41EA51A516E4E42A00D3B0AD /* includes.scion */,
648
+				411F98AF16E1035400738250 /* error1.scion */,
649
+				411F98B016E1035400738250 /* error2.scion */,
650
+				411F98B116E1035400738250 /* error3.scion */,
651
+				411F98B216E1035400738250 /* error4.scion */,
652
+				411F98B316E1035400738250 /* error5.scion */,
539 653
 				4121DAF116DCE0FB00BFD60C /* for.scion */,
540
-				4121DAF316DCE79C00BFD60C /* for_comma.scion */,
541
-				4121DB0916DD451C00BFD60C /* pipes.scion */,
542
-				4121DAEF16DCDC7600BFD60C /* preserve_whitespace.scion */,
543
-				41ECE09716DC367200E891A0 /* simple_extends.scion */,
544
-				4121DAED16DCCE0B00BFD60C /* spaces.scion */,
654
+				41EA51A816E4E63500D3B0AD /* set.scion */,
655
+				41DD56A516E397D800C4D68A /* verbatim.scion */,
545 656
 				4121DAF916DCFD9D00BFD60C /* while.scion */,
546
-				4190DC6C16DEC5F400FC4471 /* filter.scion */,
657
+				4121DAEF16DCDC7600BFD60C /* ~preserve_whitespace.scion */,
658
+				41ECE09716DC367200E891A0 /* ~simple_extends.scion */,
659
+				410B32EF16DBD5DC005D0EAD /* ~extends.scion */,
660
+				4121DAED16DCCE0B00BFD60C /* ~spaces.scion */,
547 661
 				410B32EE16DBD5D4005D0EAD /* _footer.scion */,
548 662
 				410B32EB16DBD57B005D0EAD /* _base.scion */,
549 663
 				410B32EC16DBD5BC005D0EAD /* _header.scion */,
... ...
@@ -560,6 +674,8 @@
560 674
 			isa = PBXGroup;
561 675
 			children = (
562 676
 				41D6DEA916DE3900004833D6 /* MulleScionOutputProtocol.h */,
677
+				41DD56BC16E4145000C4D68A /* NSString+HTMLEscape.h */,
678
+				41DD56BD16E4145000C4D68A /* NSString+HTMLEscape.m */,
563 679
 				4121DB1516DD8A0900BFD60C /* MulleScionDataSourceProtocol.h */,
564 680
 				41D6DEA716DE3374004833D6 /* MulleScionDataSourceProtocol.m */,
565 681
 				41764BA016DA51B700560FCF /* MulleScionPrinter.h */,
... ...
@@ -574,6 +690,8 @@
574 690
 				4121DB1016DD685C00BFD60C /* NSValue+CheatAndHack.m */,
575 691
 				410B32E816DB8A7D005D0EAD /* MulleMutableLineNumber.h */,
576 692
 				410B32E916DB8A7D005D0EAD /* MulleMutableLineNumber.m */,
693
+				41F12D4416E274D100120E63 /* MulleScionNull.h */,
694
+				41F12D4516E274D200120E63 /* MulleScionNull.m */,
577 695
 			);
578 696
 			name = MulleScionPrinter;
579 697
 			sourceTree = "<group>";
... ...
@@ -585,6 +703,10 @@
585 703
 				41764B9E16DA51A200560FCF /* MulleScionParser.m */,
586 704
 				4121DAFB16DCFFD600BFD60C /* MulleScionParser+Parsing.h */,
587 705
 				4121DAFC16DCFFD600BFD60C /* MulleScionParser+Parsing.m */,
706
+				410C7FD416E0CF5A00DC2465 /* MulleScionObjectModel+Parsing.h */,
707
+				410C7FD516E0CF5A00DC2465 /* MulleScionObjectModel+Parsing.m */,
708
+				410C7FD116E0CE4100DC2465 /* MulleScionObjectModel+BlockExpansion.h */,
709
+				410C7FD216E0CE4100DC2465 /* MulleScionObjectModel+BlockExpansion.m */,
588 710
 				4178D2FB16DFD2D4001C9FB0 /* MulleScionObjectModel+MacroExpansion.h */,
589 711
 				4178D2FC16DFD2D4001C9FB0 /* MulleScionObjectModel+MacroExpansion.m */,
590 712
 			);
... ...
@@ -623,16 +745,6 @@
623 745
 			name = MulleScionTemplate;
624 746
 			sourceTree = "<group>";
625 747
 		};
626
-		41D6DF5F16DE53AE004833D6 /* Other Frameworks */ = {
627
-			isa = PBXGroup;
628
-			children = (
629
-				41D6DF6016DE53AE004833D6 /* AppKit.framework */,
630
-				41D6DF6116DE53AE004833D6 /* CoreData.framework */,
631
-				41D6DF6216DE53AE004833D6 /* Foundation.framework */,
632
-			);
633
-			name = "Other Frameworks";
634
-			sourceTree = "<group>";
635
-		};
636 748
 		41DCAF7D16DE5C6800C5A74E /* MulleScionConvenience */ = {
637 749
 			isa = PBXGroup;
638 750
 			children = (
... ...
@@ -656,14 +768,18 @@
656 768
 				41D6DF8416DE5415004833D6 /* MulleScionOutputProtocol.h in Headers */,
657 769
 				41D6DF8516DE5415004833D6 /* MulleScionDataSourceProtocol.h in Headers */,
658 770
 				41D6DF8716DE5415004833D6 /* MulleScionPrinter.h in Headers */,
771
+				41F12D3C16E2486600120E63 /* MulleScionTemplates.h in Headers */,
659 772
 				41D6DF8816DE5415004833D6 /* MulleScionPrintingException.h in Headers */,
660 773
 				41D6DF8916DE5415004833D6 /* MulleScionObjectModel+Printing.h in Headers */,
661 774
 				41D6DF8C16DE5415004833D6 /* MulleScionParser.h in Headers */,
662
-				41D6DF8D16DE5415004833D6 /* MulleScionParser+Parsing.h in Headers */,
663 775
 				41D6DF8616DE5415004833D6 /* NSObject+MulleScionDescription.h in Headers */,
664 776
 				41D6DF8B16DE5415004833D6 /* MulleMutableLineNumber.h in Headers */,
665 777
 				41D6DF8216DE5415004833D6 /* MulleScionObjectModel+NSCoding.h in Headers */,
666 778
 				41D6DF8E16DE5415004833D6 /* NSData+ZLib.h in Headers */,
779
+				410C7FD816E0D85800DC2465 /* MulleScionObjectModel+MacroExpansion.h in Headers */,
780
+				410C7FD716E0D85500DC2465 /* MulleScionObjectModel+BlockExpansion.h in Headers */,
781
+				41D6DF8D16DE5415004833D6 /* MulleScionParser+Parsing.h in Headers */,
782
+				410C7FD916E0D85E00DC2465 /* MulleScionObjectModel+Parsing.h in Headers */,
667 783
 				41D6DF8A16DE5415004833D6 /* NSValue+CheatAndHack.h in Headers */,
668 784
 				41D6DF8F16DE5415004833D6 /* MulleScionObjectModel+Description.h in Headers */,
669 785
 			);
... ...
@@ -684,7 +800,8 @@
684 800
 			buildRules = (
685 801
 			);
686 802
 			dependencies = (
687
-				4178D2F516DF73B8001C9FB0 /* PBXTargetDependency */,
803
+				41F12D4316E2703000120E63 /* PBXTargetDependency */,
804
+				411F98BD16E1108E00738250 /* PBXTargetDependency */,
688 805
 				41DCAF7016DE575500C5A74E /* PBXTargetDependency */,
689 806
 				41DCAF7216DE575500C5A74E /* PBXTargetDependency */,
690 807
 				41DCAF7416DE575500C5A74E /* PBXTargetDependency */,
... ...
@@ -856,6 +973,10 @@
856 973
 			buildActionMask = 2147483647;
857 974
 			files = (
858 975
 				41764B9316DA511200560FCF /* main.m in Sources */,
976
+				41F12D3E16E25B4200120E63 /* MulleScionTemplates.c in Sources */,
977
+				41DD569F16E376F600C4D68A /* mongoose.c in Sources */,
978
+				41DD56A216E376FF00C4D68A /* MulleMongoose.m in Sources */,
979
+				41DD56B716E3F7A700C4D68A /* MulleScionObjectModel+MulleMongoose.m in Sources */,
859 980
 			);
860 981
 			runOnlyForDeploymentPostprocessing = 0;
861 982
 		};
... ...
@@ -870,6 +991,8 @@
870 991
 				41D6DEE816DE50F4004833D6 /* MulleScionObjectModel+Printing.m in Sources */,
871 992
 				41D6DEEA16DE50FD004833D6 /* NSValue+CheatAndHack.m in Sources */,
872 993
 				41D6DEE916DE50F6004833D6 /* MulleMutableLineNumber.m in Sources */,
994
+				41F12D4616E274D200120E63 /* MulleScionNull.m in Sources */,
995
+				41DD56BE16E4145000C4D68A /* NSString+HTMLEscape.m in Sources */,
873 996
 			);
874 997
 			runOnlyForDeploymentPostprocessing = 0;
875 998
 		};
... ...
@@ -891,6 +1014,8 @@
891 1014
 				41C5E05F16DE6A5D00132904 /* MulleScionParser.m in Sources */,
892 1015
 				41D6DF3E16DE52D6004833D6 /* MulleScionParser+Parsing.m in Sources */,
893 1016
 				4178D2FD16DFD2D4001C9FB0 /* MulleScionObjectModel+MacroExpansion.m in Sources */,
1017
+				410C7FD316E0CE4100DC2465 /* MulleScionObjectModel+BlockExpansion.m in Sources */,
1018
+				410C7FD616E0CF5A00DC2465 /* MulleScionObjectModel+Parsing.m in Sources */,
894 1019
 			);
895 1020
 			runOnlyForDeploymentPostprocessing = 0;
896 1021
 		};
... ...
@@ -914,16 +1039,17 @@
914 1039
 			isa = PBXSourcesBuildPhase;
915 1040
 			buildActionMask = 2147483647;
916 1041
 			files = (
1042
+				41F12D3F16E25B7000120E63 /* MulleScionTemplates.c in Sources */,
917 1043
 			);
918 1044
 			runOnlyForDeploymentPostprocessing = 0;
919 1045
 		};
920 1046
 /* End PBXSourcesBuildPhase section */
921 1047
 
922 1048
 /* Begin PBXTargetDependency section */
923
-		4178D2F516DF73B8001C9FB0 /* PBXTargetDependency */ = {
1049
+		411F98BD16E1108E00738250 /* PBXTargetDependency */ = {
924 1050
 			isa = PBXTargetDependency;
925 1051
 			target = 41D6DF1316DE521C004833D6 /* MulleScionDebugging */;
926
-			targetProxy = 4178D2F416DF73B8001C9FB0 /* PBXContainerItemProxy */;
1052
+			targetProxy = 411F98BC16E1108E00738250 /* PBXContainerItemProxy */;
927 1053
 		};
928 1054
 		41D6DF3316DE52A1004833D6 /* PBXTargetDependency */ = {
929 1055
 			isa = PBXTargetDependency;
... ...
@@ -995,6 +1121,11 @@
995 1121
 			target = 41D6DF2316DE523D004833D6 /* MulleScionConvenience */;
996 1122
 			targetProxy = 41DCAF7716DE575500C5A74E /* PBXContainerItemProxy */;
997 1123
 		};
1124
+		41F12D4316E2703000120E63 /* PBXTargetDependency */ = {
1125
+			isa = PBXTargetDependency;
1126
+			target = 41D6DF5B16DE53AE004833D6 /* MulleScionTemplates */;
1127
+			targetProxy = 41F12D4216E2703000120E63 /* PBXContainerItemProxy */;
1128
+		};
998 1129
 /* End PBXTargetDependency section */
999 1130
 
1000 1131
 /* Begin XCBuildConfiguration section */
... ...
@@ -1071,7 +1202,7 @@
1071 1202
 			isa = XCBuildConfiguration;
1072 1203
 			buildSettings = {
1073 1204
 				CURRENT_PROJECT_VERSION = 18.48;
1074
-				GCC_VERSION = com.apple.compilers.llvmgcc42;
1205
+				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
1075 1206
 				PRODUCT_NAME = "mulle-scion";
1076 1207
 			};
1077 1208
 			name = Debug;
... ...
@@ -1080,7 +1211,7 @@
1080 1211
 			isa = XCBuildConfiguration;
1081 1212
 			buildSettings = {
1082 1213
 				CURRENT_PROJECT_VERSION = 18.48;
1083
-				GCC_VERSION = com.apple.compilers.llvmgcc42;
1214
+				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
1084 1215
 				PRODUCT_NAME = "mulle-scion";
1085 1216
 			};
1086 1217
 			name = Release;
... ...
@@ -1121,7 +1252,7 @@
1121 1252
 			isa = XCBuildConfiguration;
1122 1253
 			buildSettings = {
1123 1254
 				CURRENT_PROJECT_VERSION = 18.48;
1124
-				GCC_VERSION = com.apple.compilers.llvmgcc42;
1255
+				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
1125 1256
 				PRODUCT_NAME = "mulle-scion";
1126 1257
 			};
1127 1258
 			name = Profile;
... ...
@@ -1180,6 +1311,8 @@
1180 1311
 		4178D30516E00263001C9FB0 /* Profile */ = {
1181 1312
 			isa = XCBuildConfiguration;
1182 1313
 			buildSettings = {
1314
+				DEPLOYMENT_LOCATION = YES;
1315
+				DSTROOT = /;
1183 1316
 				DYLIB_COMPATIBILITY_VERSION = 18;
1184 1317
 				DYLIB_CURRENT_VERSION = 48;
1185 1318
 				FRAMEWORK_VERSION = A;
... ...
@@ -1294,6 +1427,8 @@
1294 1427
 		41D6DF6E16DE53AE004833D6 /* Debug */ = {
1295 1428
 			isa = XCBuildConfiguration;
1296 1429
 			buildSettings = {
1430
+				DEPLOYMENT_LOCATION = YES;
1431
+				DSTROOT = /;
1297 1432
 				DYLIB_COMPATIBILITY_VERSION = 18;
1298 1433
 				DYLIB_CURRENT_VERSION = 48;
1299 1434
 				FRAMEWORK_VERSION = A;
... ...
@@ -1306,6 +1441,8 @@
1306 1441
 		41D6DF6F16DE53AE004833D6 /* Release */ = {
1307 1442
 			isa = XCBuildConfiguration;
1308 1443
 			buildSettings = {
1444
+				DEPLOYMENT_LOCATION = YES;
1445
+				DSTROOT = /;
1309 1446
 				DYLIB_COMPATIBILITY_VERSION = 18;
1310 1447
 				DYLIB_CURRENT_VERSION = 48;
1311 1448
 				FRAMEWORK_VERSION = A;
1312 1449
new file mode 100644
... ...
@@ -0,0 +1,108 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<Scheme
3
+   LastUpgradeVersion = "0460"
4
+   version = "1.3">
5
+   <BuildAction
6
+      parallelizeBuildables = "YES"
7
+      buildImplicitDependencies = "YES">
8
+      <BuildActionEntries>
9
+         <BuildActionEntry
10
+            buildForTesting = "YES"
11
+            buildForRunning = "YES"
12
+            buildForProfiling = "YES"
13
+            buildForArchiving = "YES"
14
+            buildForAnalyzing = "YES">
15
+            <BuildableReference
16
+               BuildableIdentifier = "primary"
17
+               BlueprintIdentifier = "41764B8B16DA511200560FCF"
18
+               BuildableName = "mulle-scion"
19
+               BlueprintName = "mulle-scion"
20
+               ReferencedContainer = "container:MulleScionTemplates.xcodeproj">
21
+            </BuildableReference>
22
+         </BuildActionEntry>
23
+      </BuildActionEntries>
24
+   </BuildAction>
25
+   <TestAction
26
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
27
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
28
+      shouldUseLaunchSchemeArgsEnv = "YES"
29
+      buildConfiguration = "Debug">
30
+      <Testables>
31
+      </Testables>
32
+      <MacroExpansion>
33
+         <BuildableReference
34
+            BuildableIdentifier = "primary"
35
+            BlueprintIdentifier = "41764B8B16DA511200560FCF"
36
+            BuildableName = "mulle-scion"
37
+            BlueprintName = "mulle-scion"
38
+            ReferencedContainer = "container:MulleScionTemplates.xcodeproj">
39
+         </BuildableReference>
40
+      </MacroExpansion>
41
+   </TestAction>
42
+   <LaunchAction
43
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
44
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
45
+      launchStyle = "0"
46
+      useCustomWorkingDirectory = "NO"
47
+      buildConfiguration = "Debug"
48
+      ignoresPersistentStateOnLaunch = "NO"
49
+      debugDocumentVersioning = "YES"
50
+      allowLocationSimulation = "YES">
51
+      <PreActions>
52
+         <ExecutionAction
53
+            ActionType = "Xcode.IDEStandardExecutionActionsCore.ExecutionActionType.ShellScriptAction">
54
+            <ActionContent
55
+               title = "Run Script"
56
+               scriptText = "( sleep 2 ; open &quot;http://127.0.0.1:18048/index.scion&quot; ) &amp;">
57
+            </ActionContent>
58
+         </ExecutionAction>
59
+      </PreActions>
60
+      <BuildableProductRunnable>
61
+         <BuildableReference
62
+            BuildableIdentifier = "primary"
63
+            BlueprintIdentifier = "41764B8B16DA511200560FCF"
64
+            BuildableName = "mulle-scion"
65
+            BlueprintName = "mulle-scion"
66
+            ReferencedContainer = "container:MulleScionTemplates.xcodeproj">
67
+         </BuildableReference>
68
+      </BuildableProductRunnable>
69
+      <CommandLineArguments>
70
+         <CommandLineArgument
71
+            argument = "-w"
72
+            isEnabled = "YES">
73
+         </CommandLineArgument>
74
+      </CommandLineArguments>
75
+      <EnvironmentVariables>
76
+         <EnvironmentVariable
77
+            key = "MulleScionCacheDirectory"
78
+            value = "/tmp/cache"
79
+            isEnabled = "NO">
80
+         </EnvironmentVariable>
81
+      </EnvironmentVariables>
82
+      <AdditionalOptions>
83
+      </AdditionalOptions>
84
+   </LaunchAction>
85
+   <ProfileAction
86
+      shouldUseLaunchSchemeArgsEnv = "YES"
87
+      savedToolIdentifier = ""
88
+      useCustomWorkingDirectory = "NO"
89
+      buildConfiguration = "Profile"
90
+      debugDocumentVersioning = "YES">
91
+      <BuildableProductRunnable>
92
+         <BuildableReference
93
+            BuildableIdentifier = "primary"
94
+            BlueprintIdentifier = "41764B8B16DA511200560FCF"
95
+            BuildableName = "mulle-scion"
96
+            BlueprintName = "mulle-scion"
97
+            ReferencedContainer = "container:MulleScionTemplates.xcodeproj">
98
+         </BuildableReference>
99
+      </BuildableProductRunnable>
100
+   </ProfileAction>
101
+   <AnalyzeAction
102
+      buildConfiguration = "Debug">
103
+   </AnalyzeAction>
104
+   <ArchiveAction
105
+      buildConfiguration = "Release"
106
+      revealArchiveInOrganizer = "YES">
107
+   </ArchiveAction>
108
+</Scheme>
... ...
@@ -1,6 +1,6 @@
1 1
 
2 2
 MulleScionTemplates is a modern template engine for Objective C
3
-                                             (written in an oldfashioned way :)
3
+                                             (written in an oldfashioned way)
4 4
 
5 5
 It's heavily (very heavily) inspired by 
6 6
 
... ...
@@ -22,8 +22,9 @@ MulleScionTemplates is fairly flexible, reasonably fast and can be made as
22 22
                data.
23 23
 
24 24
     Flexible:  There is the possibility of extending KVC and writing your own
25
-               "builtin" fuctions. A template can (if allowed) execute arbitrary
26
-               ObjC code.
25
+               "builtin" fuctions. A template can (if allowed) execute 
26
+               arbitrary ObjC code. MulleScion has a powerful #define like 
27
+               preprocessing capability.
27 28
 
28 29
 
29 30
 Using the MulleScionTemplates.framework. Creating a string from your object 
... ...
@@ -41,27 +42,42 @@ MulleScionTemplates is a work in progress, but it looks good to me.
41 42
 
42 43
 DOCUMENTATION
43 44
 =============
44
-Non existing. MulleScion is very similar to TWIG, you can glean much
45
-of relevance from http://twig.sensiolabs.org. Also check out the supplied test
46
-templates and the source, which do have some comments. If you see a feature in
47
-TWIG but don't see it in the test file, it's not there.
45
+
46
+mulle-scion contains a little webserver that hosts the documentation contained
47
+in dox, when copied to /tmp. Virtually all the documentation is contained in 
48
+those example .scion templates in the dox folder. For each command or feature 
49
+there should be a separate template file that documents it.
50
+
51
+The documentation is not very good, actually they are just more or less test
52
+cases with comments...
53
+
54
+MulleScion is very similar to TWIG, so you can glean much of relevance from 
55
+http://twig.sensiolabs.org. If you see a feature in
56
+TWIG but don't see it in the tests file, it's not there (but it's probably 
57
+easily achieved some other way (define, macro, ObjC category on NSString).
48 58
 
49 59
 
50 60
 LIMITATIONS
51 61
 =============
52 62
 Because you can execute arbitrary ObjC methods, and have access to Key Value
53
-Coding, MulleScion can pretty much do anything. MulleScionTemplates uses 
54
-NSInvocation for method calls, and it usually can not do variable arguments. 
63
+Coding, MulleScion can pretty much do anything. MulleScionTemplates use 
64
+NSInvocation for method calls, and that usually can not do variable arguments. 
55 65
 So that will be a problem. Be wary of anything using structs and C-Arrays and 
56 66
 C-strings, although MulleScionTemplates tries to be as helpful as possible.
57 67
 
58
-MulleScionTemplates doesn't prevent you from trying stupid things.
68
+MulleScionTemplates do not do arithmetic or bitwise logic, quite on purpose.
69
+
70
+MulleScionTemplates do not support the @{ } syntax to create dictionaries.
71
+
72
+MulleScionTemplates && and || have no operator precedence, use parentheses
73
+
74
+MulleScionTemplates don't prevent you from trying stupid things.
59 75
 
60 76
 
61 77
 TODO
62 78
 =============
63
-Will probably do filters some time.
64 79
 Would be nice to have delayed evaluation for render results.
80
+Get rid of MulleScionNull except for printing a nil value.
65 81
 
66 82
 
67 83
 AUTHOR
68 84
new file mode 100644
... ...
@@ -0,0 +1,64 @@
1
+To try out these example compile the project and put mulle-scion into your path.
2
+It's a commandline program.
3
+
4
+Run this example with:
5
+
6
+   mulle-scion MY_FIRST_TEMPLATE.scion properties.plist
7
+
8
+In a MulleScion template expression are filled with properties from an object. 
9
+That object can be anything NSObject based. The data is accessed through 
10
+key value coding. Anything between two curly brackets '{' is called an 
11
+expression. The expresssion is evaluated and the resulting value is added to 
12
+the output.
13
+
14
+....
15
+name={{ name }}
16
+....
17
+
18
+Expressions can be postprocessed with pipes.
19
+
20
+....
21
+when={{ name | lowercaseString }}
22
+....
23
+
24
+Pipes can also contain ObjC calls with parameters, where the left side of the
25
+pipe is substituted for self in the right side.
26
+
27
+....
28
+when={{ name | [self stringByReplacingOccurrencesOfString:@" 1848" withString:@""] }}
29
+....
30
+
31
+As that gets unwieldy, you can use a define to make common calls nice to read.
32
+
33
+....
34
+{% define no1848 = [self stringByReplacingOccurrencesOfString:@" 1848"
35
+                                                     withString:@""] %}
36
+when={{ name | no1848 }}
37
+....
38
+
39
+You have full key value coding available. With for loops can you iterate over
40
+collections just like NSEnumerator (it is in an NSEnumerator internally :))
41
+
42
+....
43
+The bag contains {{ bag.@count }} entries
44
+{% if defined( "bag") %}
45
+ {% for item in [bag allKeys] %}
46
+   {{ [bag objectForKey:item] }}
47
+ {% endfor %}
48
+{% endif %}
49
+...
50
+
51
+But with dots separated by spaces you can do even more complicated KVC.
52
+
53
+With if then else you do your usual logic
54
+
55
+...
56
+{% if YES %}
57
+ Yes
58
+{% else %}
59
+ No
60
+{% endif %}
61
+...
62
+
63
+
64
+
0 65
similarity index 100%
1 66
rename from src/formatting.scion
2 67
rename to dox/Formatting Options.scion
3 68
new file mode 100644
... ...
@@ -0,0 +1,41 @@
1
+Formatting Variables
2
+==================
3
+MulleScionDateFormatter         A NSDateFormatter object to use for number 
4
+                                formatting
5
+MulleScionNumberFormatter       A NSNumberFormatter object to use for number 
6
+                                formatting
7
+MulleScionDateFormat            The dateString to use for the NSDateFormatter
8
+                                formatting
9
+MulleScionNumberFormat          The formatString to use for the NSNumberFormatter
10
+                                formatting
11
+MulleScionLocale                The NSLocale to use for NSDate and NSNumber
12
+MulleScionNilDescription        What to print in place of a nil value
13
+MulleScionStringLength          If defined the maximum string length to output 
14
+                                for any string value in expressions.
15
+MulleScionStringEllipsis        If string gets truncated by 
16
+                                MulleScionStringLength what to print at the end
17
+                                to indicate truncation
18
+
19
+Internal Variables
20
+==================
21
+
22
+__OUTPUT__                      The object output gets rendered to
23
+__FILE__                        The current template file 
24
+__LINE__                        The current line in the template file
25
+__FUNCTION__                    The currently executing function 
26
+__FILTER__                      The currently installed filter chain
27
+__FILTER_STACK__                The previous filter chains
28
+__SELF_REPLACEMENT__            The object that the identifier 'self' gets 
29
+                                replaced with
30
+
31
+
32
+Variables available through mulle-scion
33
+=======================================
34
+
35
+MulleScionRootTemplate		available when printing with mulle-scion, it's 
36
+                                the path of the template from the command line 
37
+
38
+                      
39
+MulleScionPropertyListName	available when printing with mulle-scion, it's 
40
+                                the path of the property list from the command 
41
+                                line                     
... ...
@@ -7,7 +7,7 @@
7 7
 	<key>ApplicationVersion</key>
8 8
 	<array>
9 9
 		<string>com.omnigroup.OmniGrafflePro</string>
10
-		<string>139.16.0.171715</string>
10
+		<string>138.33.0.157554</string>
11 11
 	</array>
12 12
 	<key>AutoAdjust</key>
13 13
 	<true/>
... ...
@@ -33,10 +33,29 @@
33 33
 			</dict>
34 34
 		</dict>
35 35
 	</dict>
36
-	<key>BaseZoom</key>
37
-	<integer>0</integer>
38 36
 	<key>CanvasOrigin</key>
39 37
 	<string>{0, 0}</string>
38
+	<key>ColorProfile</key>
39
+	<dict>
40
+		<key>cmykDigest</key>
41
+		<data>
42
+		JTUvL7/uOf5kyUO2+wyMTg==
43
+		</data>
44
+		<key>cmykName</key>
45
+		<string>Generic CMYK Profile</string>
46
+		<key>grayDigest</key>
47
+		<data>
48
+		OLD1tzwOLrW+yk2N7vnN6Q==
49
+		</data>
50
+		<key>grayName</key>
51
+		<string>Generic Gray Profile</string>
52
+		<key>rgbDigest</key>
53
+		<data>
54
+		DSWLrTa2TOv7nmgmw+1QNw==
55
+		</data>
56
+		<key>rgbName</key>
57
+		<string>Generic RGB Profile</string>
58
+	</dict>
40 59
 	<key>ColumnAlign</key>
41 60
 	<integer>1</integer>
42 61
 	<key>ColumnSpacing</key>
... ...
@@ -53,7 +72,73 @@
53 72
 	<array>
54 73
 		<dict>
55 74
 			<key>Bounds</key>
56
-			<string>{{178.99999999999997, 318.5}, {210.65799999999996, 43}}</string>
75
+			<string>{{210.5, 584}, {201, 32}}</string>
76
+			<key>Class</key>
77
+			<string>ShapedGraphic</string>
78
+			<key>FitText</key>
79
+			<string>Vertical</string>
80
+			<key>Flow</key>
81
+			<string>Resize</string>
82
+			<key>FontInfo</key>
83
+			<dict>
84
+				<key>Font</key>
85
+				<string>GillSans</string>
86
+				<key>Size</key>
87
+				<real>10</real>
88
+			</dict>
89
+			<key>ID</key>
90
+			<integer>68</integer>
91
+			<key>Shape</key>
92
+			<string>Subprocess</string>
93
+			<key>Style</key>
94
+			<dict>
95
+				<key>fill</key>
96
+				<dict>
97
+					<key>Color</key>
98
+					<dict>
99
+						<key>a</key>
100
+						<string>0.72</string>
101
+						<key>b</key>
102
+						<string>0.902118</string>
103
+						<key>g</key>
104
+						<string>0.902103</string>
105
+						<key>r</key>
106
+						<string>0.90213</string>
107
+					</dict>
108
+				</dict>
109
+				<key>shadow</key>
110
+				<dict>
111
+					<key>Draws</key>
112
+					<string>NO</string>
113
+				</dict>
114
+				<key>stroke</key>
115
+				<dict>
116
+					<key>Draws</key>
117
+					<string>NO</string>
118
+					<key>GapRatio</key>
119
+					<real>0.5</real>
120
+					<key>Width</key>
121
+					<real>4</real>
122
+				</dict>
123
+			</dict>
124
+			<key>Text</key>
125
+			<dict>
126
+				<key>Align</key>
127
+				<integer>0</integer>
128
+				<key>Text</key>
129
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf340
130
+\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset0 GillSans;}
131
+{\colortbl;\red255\green255\blue255;}
132
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
133
+
134
+\f0\fs20 \cf0 All template logic, loops KVC and Objective-C evaluation is done at this stage.}</string>
135
+			</dict>
136
+			<key>TextRelativeArea</key>
137
+			<string>{{0, 0}, {1, 1}}</string>
138
+		</dict>
139
+		<dict>
140
+			<key>Bounds</key>
141
+			<string>{{179, 318.5}, {210.658, 43}}</string>
57 142
 			<key>Class</key>
58 143
 			<string>ShapedGraphic</string>
59 144
 			<key>FitText</key>
... ...
@@ -190,7 +275,7 @@
190 275
 			<array>
191 276
 				<dict>
192 277
 					<key>Bounds</key>
193
-					<string>{{329.99997998046865, 675.20230102539074}, {99, 15}}</string>
278
+					<string>{{329.99997, 675.20233}, {99, 15}}</string>
194 279
 					<key>Class</key>
195 280
 					<string>ShapedGraphic</string>
196 281
 					<key>FitText</key>
... ...
@@ -246,11 +331,11 @@
246 331
 						oQCBjACGkoSioQCBqACGkoSioQCB
247 332
 						xACGkoSioQCB4ACGkoSioQCB/ACG
248 333
 						koSioQCBGAGGkoSioQCBNAGGkoSi
249
-						oQCBUAGGhoEACIQEWzFmXYPNzEw9
250
-						hpKElpYGTlNGb250hpKEhIQGTlNG
251
-						b250HpSZHIQFWzI4Y10GAAAAEgAA
252
-						AP/+RwBpAGwAbABTAGEAbgBzAAAA
253
-						hAFmDJsAmwGbAJsAhoaG
334
+						oQCBUAGGhgCGkoSWlgZOU0ZvbnSG
335
+						koSEhAZOU0ZvbnQelJkchAVbMjhj
336
+						XQYAAAASAAAA//5HAGkAbABsAFMA
337
+						YQBuAHMAAACEAWYMmwCbAZsAmwCG
338
+						hoY=
254 339
 						</data>
255 340
 						<key>Text</key>
256 341
 						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf340
... ...
@@ -273,7 +358,7 @@
273 358
 				</dict>
274 359
 				<dict>
275 360
 					<key>Bounds</key>
276
-					<string>{{324.34197998046869, 690.08230102539073}, {210.65799999999999, 67}}</string>
361
+					<string>{{324.34198, 690.08228}, {210.658, 67}}</string>
277 362
 					<key>Class</key>
278 363
 					<string>ShapedGraphic</string>
279 364
 					<key>FontInfo</key>
... ...
@@ -441,11 +526,11 @@
441 526
 						koSioQCBjACGkoSioQCBqACGkoSi
442 527
 						oQCBxACGkoSioQCB4ACGkoSioQCB
443 528
 						/ACGkoSioQCBGAGGkoSioQCBNAGG
444
-						koSioQCBUAGGhoEACIQEWzFmXYPN
445
-						zEw9hpKElpYGTlNGb250hpKEhIQG
446
-						TlNGb250HpSZHIQFWzI4Y10GAAAA
447
-						EgAAAP/+RwBpAGwAbABTAGEAbgBz
448
-						AAAAhAFmDJsAmwGbAJsAhoaG
529
+						koSioQCBUAGGhgCGkoSWlgZOU0Zv
530
+						bnSGkoSEhAZOU0ZvbnQelJkchAVb
531
+						MjhjXQYAAAASAAAA//5HAGkAbABs
532
+						AFMAYQBuAHMAAACEAWYMmwCbAZsA
533
+						mwCGhoY=
449 534
 						</data>
450 535
 						<key>Text</key>
451 536
 						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf340
... ...
@@ -537,8 +622,8 @@
537 622
 			<integer>50</integer>
538 623
 			<key>Points</key>
539 624
 			<array>
540
-				<string>{199.97514034375556, 571.97743777262565}</string>
541
-				<string>{163.05818742637027, 690.66552048690448}</string>
625
+				<string>{200.00217, 571.97766}</string>
626
+				<string>{162.52708, 692.96228}</string>
542 627
 			</array>
543 628
 			<key>Style</key>
544 629
 			<dict>
... ...
@@ -546,8 +631,6 @@
546 631
 				<dict>
547 632
 					<key>HeadArrow</key>
548 633
 					<string>FilledArrow</string>
549
-					<key>Legacy</key>
550
-					<true/>
551 634
 					<key>TailArrow</key>
552 635
 					<string>0</string>
553 636
 				</dict>
... ...
@@ -577,8 +660,8 @@
577 660
 			<integer>49</integer>
578 661
 			<key>Points</key>
579 662
 			<array>
580
-				<string>{97.395089939164237, 571.96416649502953}</string>
581
-				<string>{144.93360011458114, 690.67725484584776}</string>
663
+				<string>{97.32222, 571.96472}</string>
664
+				<string>{145.35889, 692.97516}</string>
582 665
 			</array>
583 666
 			<key>Style</key>
584 667
 			<dict>
... ...
@@ -586,8 +669,6 @@
586 669
 				<dict>
587 670
 					<key>HeadArrow</key>
588 671
 					<string>FilledArrow</string>
589
-					<key>Legacy</key>
590
-					<true/>
591 672
 					<key>TailArrow</key>
592 673
 					<string>0</string>
593 674
 				</dict>
... ...
@@ -617,8 +698,8 @@
617 698
 			<integer>48</integer>
618 699
 			<key>Points</key>
619 700
 			<array>
620
-				<string>{410.5, 551.00000500243573}</string>
621
-				<string>{255, 551.00000500243573}</string>
701
+				<string>{410.5, 551}</string>
702
+				<string>{255, 551}</string>
622 703
 			</array>
623 704
 			<key>Style</key>
624 705
 			<dict>
... ...
@@ -626,8 +707,6 @@
626 707
 				<dict>
627 708
 					<key>HeadArrow</key>
628 709
 					<string>Arrow</string>
629
-					<key>Legacy</key>
630
-					<true/>
631 710
 					<key>Pattern</key>
632 711
 					<integer>24</integer>
633 712
 					<key>TailArrow</key>
... ...
@@ -699,8 +778,8 @@
699 778
 			<integer>46</integer>
700 779
 			<key>Points</key>
701 780
 			<array>
702
-				<string>{89.000021508285116, 362}</string>
703
-				<string>{89.000021508285116, 530}</string>
781
+				<string>{89.000015, 362}</string>
782
+				<string>{89.000015, 530}</string>
704 783
 			</array>
705 784
 			<key>Style</key>
706 785
 			<dict>
... ...
@@ -708,8 +787,6 @@
708 787
 				<dict>
709 788
 					<key>HeadArrow</key>
710 789
 					<string>Arrow</string>
711
-					<key>Legacy</key>
712
-					<true/>
713 790
 					<key>Pattern</key>
714 791
 					<integer>24</integer>
715 792
 					<key>TailArrow</key>
... ...
@@ -741,8 +818,8 @@
741 818
 			<integer>45</integer>
742 819
 			<key>Points</key>
743 820
 			<array>
744
-				<string>{115.63902747220368, 361.80778581004853}</string>
745
-				<string>{187.82683975606977, 418.19383061024871}</string>
821
+				<string>{115.4232, 361.80936}</string>
822
+				<string>{189.93146, 420.48767}</string>
746 823
 			</array>
747 824
 			<key>Style</key>
748 825
 			<dict>
... ...
@@ -750,8 +827,6 @@
750 827
 				<dict>
751 828
 					<key>HeadArrow</key>
752 829
 					<string>FilledArrow</string>
753
-					<key>Legacy</key>
754
-					<true/>
755 830
 					<key>TailArrow</key>
756 831
 					<string>0</string>
757 832
 				</dict>
... ...
@@ -781,8 +856,8 @@
781 856
 			<integer>44</integer>
782 857
 			<key>Points</key>
783 858
 			<array>
784
-				<string>{415.53663591454176, 208.64382376739988}</string>
785
-				<string>{137.46339651038502, 321.35617623260009}</string>
859
+				<string>{415.53668, 208.64381}</string>
860
+				<string>{137.46338, 321.35617}</string>
786 861
 			</array>
787 862
 			<key>Style</key>
788 863
 			<dict>
... ...
@@ -790,8 +865,6 @@
790 865
 				<dict>
791 866
 					<key>HeadArrow</key>
792 867
 					<string>FilledArrow</string>
793
-					<key>Legacy</key>
794
-					<true/>
795 868
 					<key>TailArrow</key>
796 869
 					<string>0</string>
797 870
 				</dict>
... ...
@@ -821,8 +894,8 @@
821 894
 			<integer>43</integer>
822 895
 			<key>Points</key>
823 896
 			<array>
824
-				<string>{89.000026163172876, 290}</string>
825
-				<string>{89.000026163172876, 320}</string>
897
+				<string>{89.000015, 290}</string>
898
+				<string>{89.000015, 320}</string>
826 899
 			</array>
827 900
 			<key>Style</key>
828 901
 			<dict>
... ...
@@ -830,8 +903,6 @@
830 903
 				<dict>
831 904
 					<key>HeadArrow</key>
832 905
 					<string>FilledArrow</string>
833
-					<key>Legacy</key>
834
-					<true/>
835 906
 					<key>TailArrow</key>
836 907
 					<string>0</string>
837 908
 				</dict>
... ...
@@ -844,7 +915,7 @@
844 915
 		</dict>
845 916
 		<dict>
846 917
 			<key>Bounds</key>
847
-			<string>{{41.000015258789062, 320.5}, {96, 41}}</string>
918
+			<string>{{41.000015, 320.5}, {96, 41}}</string>
848 919
 			<key>Class</key>
849 920
 			<string>ShapedGraphic</string>
850 921
 			<key>FontInfo</key>
... ...
@@ -893,8 +964,8 @@
893 964
 			<integer>41</integer>
894 965
 			<key>Points</key>
895 966
 			<array>
896
-				<string>{289.27401271837823, 204.59026876673019}</string>
897
-				<string>{137.47600464111463, 253.40973123326981}</string>
967
+				<string>{289.27402, 204.59027}</string>
968
+				<string>{137.47601, 253.40973}</string>
898 969
 			</array>
899 970
 			<key>Style</key>
900 971
 			<dict>
... ...
@@ -902,8 +973,6 @@
902 973
 				<dict>
903 974
 					<key>HeadArrow</key>
904 975
 					<string>FilledArrow</string>
905
-					<key>Legacy</key>
906
-					<true/>
907 976
 					<key>TailArrow</key>
908 977
 					<string>0</string>
909 978
 				</dict>
... ...
@@ -933,8 +1002,8 @@
933 1002
 			<integer>40</integer>
934 1003
 			<key>Points</key>
935 1004
 			<array>
936
-				<string>{179.69074649320402, 209.77339447715994}</string>
937
-				<string>{120.80927258028231, 248.22660552284006}</string>
1005
+				<string>{179.69073, 209.77339}</string>
1006
+				<string>{120.80927, 248.22661}</string>
938 1007
 			</array>
939 1008
 			<key>Style</key>
940 1009
 			<dict>
... ...
@@ -942,8 +1011,6 @@
942 1011
 				<dict>
943 1012
 					<key>HeadArrow</key>
944 1013
 					<string>FilledArrow</string>
945
-					<key>Legacy</key>
946
-					<true/>
947 1014
 					<key>TailArrow</key>
948 1015
 					<string>0</string>
949 1016
 				</dict>
... ...
@@ -973,8 +1040,8 @@
973 1040
 			<integer>39</integer>
974 1041
 			<key>Points</key>
975 1042
 			<array>
976
-				<string>{89.000002827348595, 210}</string>
977
-				<string>{89.000002827348595, 248}</string>
1043
+				<string>{89.000015, 210}</string>
1044
+				<string>{89.000015, 248}</string>
978 1045
 			</array>
979 1046
 			<key>Style</key>
980 1047
 			<dict>
... ...
@@ -982,8 +1049,6 @@
982 1049
 				<dict>
983 1050
 					<key>HeadArrow</key>
984 1051
 					<string>FilledArrow</string>
985
-					<key>Legacy</key>
986
-					<true/>
987 1052
 					<key>TailArrow</key>
988 1053
 					<string>0</string>
989 1054
 				</dict>
... ...
@@ -996,7 +1061,7 @@
996 1061
 		</dict>
997 1062
 		<dict>
998 1063
 			<key>Bounds</key>
999
-			<string>{{41.000015258789062, 248.5}, {96, 41}}</string>
1064
+			<string>{{41.000015, 248.5}, {96, 41}}</string>
1000 1065
 			<key>Class</key>
1001 1066
 			<string>ShapedGraphic</string>
1002 1067
 			<key>FontInfo</key>
... ...
@@ -1045,8 +1110,8 @@
1045 1110
 			<integer>37</integer>
1046 1111
 			<key>Points</key>
1047 1112
 			<array>
1048
-				<string>{251.58446737667404, 120.31183803640521}</string>
1049
-				<string>{311.59083279400096, 168.18871204670336}</string>
1113
+				<string>{254.69643, 120.31884}</string>
1114
+				<string>{312.51309, 168.18182}</string>
1050 1115
 			</array>
1051 1116
 			<key>Style</key>
1052 1117
 			<dict>
... ...
@@ -1054,8 +1119,6 @@
1054 1119
 				<dict>
1055 1120
 					<key>HeadArrow</key>
1056 1121
 					<string>FilledArrow</string>
1057
-					<key>Legacy</key>
1058
-					<true/>
1059 1122
 					<key>TailArrow</key>
1060 1123
 					<string>0</string>
1061 1124
 				</dict>
... ...
@@ -1085,8 +1148,8 @@
1085 1148
 			<integer>36</integer>
1086 1149
 			<key>Points</key>
1087 1150
 			<array>
1088
-				<string>{193.79928832950964, 120.2740558003204}</string>
1089
-				<string>{120.62654683683684, 168.22549079117059}</string>
1151
+				<string>{191.08667, 119.57571}</string>
1152
+				<string>{119.63076, 168.21928}</string>
1090 1153
 			</array>
1091 1154
 			<key>Style</key>
1092 1155
 			<dict>
... ...
@@ -1094,8 +1157,6 @@
1094 1157
 				<dict>
1095 1158
 					<key>HeadArrow</key>
1096 1159
 					<string>FilledArrow</string>
1097
-					<key>Legacy</key>
1098
-					<true/>
1099 1160
 					<key>TailArrow</key>
1100 1161
 					<string>0</string>
1101 1162
 				</dict>
... ...
@@ -1125,8 +1186,8 @@
1125 1186
 			<integer>35</integer>
1126 1187
 			<key>Points</key>
1127 1188
 			<array>
1128
-				<string>{222.19769512215427, 120.49392679457037}</string>
1129
-				<string>{214.72416850274266, 168.00579397491188}</string>
1189
+				<string>{221.8322, 120.49442}</string>
1190
+				<string>{214.67436, 168.00562}</string>
1130 1191
 			</array>
1131 1192
 			<key>Style</key>
1132 1193
 			<dict>
... ...
@@ -1134,8 +1195,6 @@
1134 1195
 				<dict>
1135 1196
 					<key>HeadArrow</key>
1136 1197
 					<string>FilledArrow</string>
1137
-					<key>Legacy</key>
1138
-					<true/>
1139 1198
 					<key>TailArrow</key>
1140 1199
 					<string>0</string>
1141 1200
 				</dict>
... ...
@@ -1165,8 +1224,8 @@
1165 1224
 			<integer>34</integer>
1166 1225
 			<key>Points</key>
1167 1226
 			<array>
1168
-				<string>{259.9681173982467, 112.43611017705062}</string>
1169
-				<string>{415.53186603391953, 170.82020376286496}</string>
1227
+				<string>{259.96591, 109.57068}</string>
1228
+				<string>{415.53406, 170.15253}</string>
1170 1229
 			</array>
1171 1230
 			<key>Style</key>
1172 1231
 			<dict>
... ...
@@ -1174,8 +1233,6 @@
1174 1233
 				<dict>