guard-mthaml 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (341) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +34 -0
  3. data/lib/guard/mthaml.rb +140 -0
  4. data/lib/guard/mthaml/compiler/MtHaml.php +255 -0
  5. data/lib/guard/mthaml/templates/Guardfile +12 -0
  6. data/lib/guard/mthaml/version.rb +5 -0
  7. data/vendor/autoload.php +7 -0
  8. data/vendor/coffeescript/coffeescript/LICENSE +22 -0
  9. data/vendor/coffeescript/coffeescript/README.md +96 -0
  10. data/vendor/coffeescript/coffeescript/composer.json +23 -0
  11. data/vendor/coffeescript/coffeescript/grammar.y +309 -0
  12. data/vendor/coffeescript/coffeescript/make.php +115 -0
  13. data/vendor/coffeescript/coffeescript/src/CoffeeScript/Compiler.php +76 -0
  14. data/vendor/coffeescript/coffeescript/src/CoffeeScript/Error.php +15 -0
  15. data/vendor/coffeescript/coffeescript/src/CoffeeScript/Helpers.php +116 -0
  16. data/vendor/coffeescript/coffeescript/src/CoffeeScript/Init.php +96 -0
  17. data/vendor/coffeescript/coffeescript/src/CoffeeScript/Lexer.php +1356 -0
  18. data/vendor/coffeescript/coffeescript/src/CoffeeScript/Nodes.php +105 -0
  19. data/vendor/coffeescript/coffeescript/src/CoffeeScript/Parser.php +3326 -0
  20. data/vendor/coffeescript/coffeescript/src/CoffeeScript/Rewriter.php +552 -0
  21. data/vendor/coffeescript/coffeescript/src/CoffeeScript/Scope.php +196 -0
  22. data/vendor/coffeescript/coffeescript/src/CoffeeScript/SyntaxError.php +9 -0
  23. data/vendor/coffeescript/coffeescript/src/CoffeeScript/Value.php +20 -0
  24. data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Access.php +31 -0
  25. data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Arr.php +69 -0
  26. data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Assign.php +353 -0
  27. data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Base.php +288 -0
  28. data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Block.php +294 -0
  29. data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Call.php +283 -0
  30. data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Class.php +282 -0
  31. data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Closure.php +49 -0
  32. data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Code.php +203 -0
  33. data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Comment.php +39 -0
  34. data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Existence.php +42 -0
  35. data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Extends.php +26 -0
  36. data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/For.php +250 -0
  37. data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/If.php +161 -0
  38. data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/In.php +99 -0
  39. data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Index.php +27 -0
  40. data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Literal.php +96 -0
  41. data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Obj.php +126 -0
  42. data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Op.php +292 -0
  43. data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Param.php +119 -0
  44. data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Parens.php +45 -0
  45. data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Range.php +225 -0
  46. data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Return.php +56 -0
  47. data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Slice.php +47 -0
  48. data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Splat.php +100 -0
  49. data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Switch.php +121 -0
  50. data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Throw.php +37 -0
  51. data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Try.php +79 -0
  52. data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Value.php +210 -0
  53. data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/While.php +112 -0
  54. data/vendor/coffeescript/coffeescript/tests/cases/arrays.coffee +77 -0
  55. data/vendor/coffeescript/coffeescript/tests/cases/assignment.coffee +352 -0
  56. data/vendor/coffeescript/coffeescript/tests/cases/booleans.coffee +21 -0
  57. data/vendor/coffeescript/coffeescript/tests/cases/classes.coffee +681 -0
  58. data/vendor/coffeescript/coffeescript/tests/cases/comments.coffee +207 -0
  59. data/vendor/coffeescript/coffeescript/tests/cases/compilation.coffee +72 -0
  60. data/vendor/coffeescript/coffeescript/tests/cases/comprehensions.coffee +501 -0
  61. data/vendor/coffeescript/coffeescript/tests/cases/control_flow.coffee +430 -0
  62. data/vendor/coffeescript/coffeescript/tests/cases/eval.coffee +29 -0
  63. data/vendor/coffeescript/coffeescript/tests/cases/exception_handling.coffee +102 -0
  64. data/vendor/coffeescript/coffeescript/tests/cases/formatting.coffee +146 -0
  65. data/vendor/coffeescript/coffeescript/tests/cases/function_invocation.coffee +552 -0
  66. data/vendor/coffeescript/coffeescript/tests/cases/functions.coffee +188 -0
  67. data/vendor/coffeescript/coffeescript/tests/cases/helpers.coffee +96 -0
  68. data/vendor/coffeescript/coffeescript/tests/cases/importing.coffee +18 -0
  69. data/vendor/coffeescript/coffeescript/tests/cases/interpolation.coffee +138 -0
  70. data/vendor/coffeescript/coffeescript/tests/cases/javascript_literals.coffee +10 -0
  71. data/vendor/coffeescript/coffeescript/tests/cases/numbers.coffee +76 -0
  72. data/vendor/coffeescript/coffeescript/tests/cases/objects.coffee +271 -0
  73. data/vendor/coffeescript/coffeescript/tests/cases/operators.coffee +277 -0
  74. data/vendor/coffeescript/coffeescript/tests/cases/option_parser.coffee +43 -0
  75. data/vendor/coffeescript/coffeescript/tests/cases/ranges.coffee +88 -0
  76. data/vendor/coffeescript/coffeescript/tests/cases/regexps.coffee +63 -0
  77. data/vendor/coffeescript/coffeescript/tests/cases/scope.coffee +43 -0
  78. data/vendor/coffeescript/coffeescript/tests/cases/slicing_and_splicing.coffee +143 -0
  79. data/vendor/coffeescript/coffeescript/tests/cases/soaks.coffee +134 -0
  80. data/vendor/coffeescript/coffeescript/tests/cases/strict.coffee +155 -0
  81. data/vendor/coffeescript/coffeescript/tests/cases/strings.coffee +107 -0
  82. data/vendor/coffeescript/coffeescript/tests/css/style.css +43 -0
  83. data/vendor/coffeescript/coffeescript/tests/index.php +119 -0
  84. data/vendor/coffeescript/coffeescript/tests/js/lib/coffeescript_1.1.1.js +8 -0
  85. data/vendor/coffeescript/coffeescript/tests/js/lib/coffeescript_1.2.0.js +8 -0
  86. data/vendor/coffeescript/coffeescript/tests/js/lib/coffeescript_1.3.0.js +8 -0
  87. data/vendor/coffeescript/coffeescript/tests/js/lib/coffeescript_1.3.1.js +8 -0
  88. data/vendor/coffeescript/coffeescript/tests/js/lib/diff.js +276 -0
  89. data/vendor/coffeescript/coffeescript/tests/js/main.js +123 -0
  90. data/vendor/coffeescript/coffeescript/vendor/ParserGenerator/LICENSE.txt +10 -0
  91. data/vendor/coffeescript/coffeescript/vendor/ParserGenerator/PHP/Lempar.php +948 -0
  92. data/vendor/coffeescript/coffeescript/vendor/ParserGenerator/PHP/ParserGenerator/Action.php +257 -0
  93. data/vendor/coffeescript/coffeescript/vendor/ParserGenerator/PHP/ParserGenerator/ActionTable.php +299 -0
  94. data/vendor/coffeescript/coffeescript/vendor/ParserGenerator/PHP/ParserGenerator/Config.php +574 -0
  95. data/vendor/coffeescript/coffeescript/vendor/ParserGenerator/PHP/ParserGenerator/Data.php +1857 -0
  96. data/vendor/coffeescript/coffeescript/vendor/ParserGenerator/PHP/ParserGenerator/Parser.php +851 -0
  97. data/vendor/coffeescript/coffeescript/vendor/ParserGenerator/PHP/ParserGenerator/PropagationLink.php +126 -0
  98. data/vendor/coffeescript/coffeescript/vendor/ParserGenerator/PHP/ParserGenerator/Rule.php +144 -0
  99. data/vendor/coffeescript/coffeescript/vendor/ParserGenerator/PHP/ParserGenerator/State.php +283 -0
  100. data/vendor/coffeescript/coffeescript/vendor/ParserGenerator/PHP/ParserGenerator/Symbol.php +288 -0
  101. data/vendor/coffeescript/coffeescript/vendor/ParserGenerator/PHP/ParserGenerator/cli.php +5 -0
  102. data/vendor/coffeescript/coffeescript/vendor/ParserGenerator/ParserGenerator.php +811 -0
  103. data/vendor/composer/ClassLoader.php +383 -0
  104. data/vendor/composer/autoload_classmap.php +9 -0
  105. data/vendor/composer/autoload_namespaces.php +12 -0
  106. data/vendor/composer/autoload_psr4.php +10 -0
  107. data/vendor/composer/autoload_real.php +50 -0
  108. data/vendor/composer/installed.json +166 -0
  109. data/vendor/michelf/php-markdown/License.md +36 -0
  110. data/vendor/michelf/php-markdown/Michelf/Markdown.inc.php +10 -0
  111. data/vendor/michelf/php-markdown/Michelf/Markdown.php +3117 -0
  112. data/vendor/michelf/php-markdown/Michelf/MarkdownExtra.inc.php +11 -0
  113. data/vendor/michelf/php-markdown/Michelf/MarkdownExtra.php +38 -0
  114. data/vendor/michelf/php-markdown/Michelf/MarkdownInterface.inc.php +9 -0
  115. data/vendor/michelf/php-markdown/Michelf/MarkdownInterface.php +37 -0
  116. data/vendor/michelf/php-markdown/Readme.md +305 -0
  117. data/vendor/michelf/php-markdown/Readme.php +31 -0
  118. data/vendor/michelf/php-markdown/composer.json +31 -0
  119. data/vendor/mthaml/mthaml/CHANGELOG +48 -0
  120. data/vendor/mthaml/mthaml/LICENSE +44 -0
  121. data/vendor/mthaml/mthaml/README.markdown +262 -0
  122. data/vendor/mthaml/mthaml/composer.json +45 -0
  123. data/vendor/mthaml/mthaml/docs/Makefile +153 -0
  124. data/vendor/mthaml/mthaml/docs/_static/mthaml.css +30 -0
  125. data/vendor/mthaml/mthaml/docs/_theme/mthaml/theme.conf +4 -0
  126. data/vendor/mthaml/mthaml/docs/conf.py +242 -0
  127. data/vendor/mthaml/mthaml/docs/index.rst +18 -0
  128. data/vendor/mthaml/mthaml/docs/twig-syntax.rst +274 -0
  129. data/vendor/mthaml/mthaml/examples/README.md +5 -0
  130. data/vendor/mthaml/mthaml/examples/autoload.php +8 -0
  131. data/vendor/mthaml/mthaml/examples/example-php.haml +5 -0
  132. data/vendor/mthaml/mthaml/examples/example-php.php +37 -0
  133. data/vendor/mthaml/mthaml/examples/example-twig-noext.twig +11 -0
  134. data/vendor/mthaml/mthaml/examples/example-twig.haml +9 -0
  135. data/vendor/mthaml/mthaml/examples/example-twig.php +60 -0
  136. data/vendor/mthaml/mthaml/examples/example.twig.haml +8 -0
  137. data/vendor/mthaml/mthaml/lib/MtHaml/Autoloader.php +22 -0
  138. data/vendor/mthaml/mthaml/lib/MtHaml/Environment.php +178 -0
  139. data/vendor/mthaml/mthaml/lib/MtHaml/Escaping.php +33 -0
  140. data/vendor/mthaml/mthaml/lib/MtHaml/Exception.php +9 -0
  141. data/vendor/mthaml/mthaml/lib/MtHaml/Exception/SyntaxErrorException.php +9 -0
  142. data/vendor/mthaml/mthaml/lib/MtHaml/Filter/AbstractFilter.php +43 -0
  143. data/vendor/mthaml/mthaml/lib/MtHaml/Filter/Cdata.php +16 -0
  144. data/vendor/mthaml/mthaml/lib/MtHaml/Filter/CoffeeScript.php +33 -0
  145. data/vendor/mthaml/mthaml/lib/MtHaml/Filter/Css.php +26 -0
  146. data/vendor/mthaml/mthaml/lib/MtHaml/Filter/Escaped.php +22 -0
  147. data/vendor/mthaml/mthaml/lib/MtHaml/Filter/FilterInterface.php +15 -0
  148. data/vendor/mthaml/mthaml/lib/MtHaml/Filter/Javascript.php +26 -0
  149. data/vendor/mthaml/mthaml/lib/MtHaml/Filter/Less.php +27 -0
  150. data/vendor/mthaml/mthaml/lib/MtHaml/Filter/Less/LeafoLess.php +20 -0
  151. data/vendor/mthaml/mthaml/lib/MtHaml/Filter/Less/OyejorgeLess.php +23 -0
  152. data/vendor/mthaml/mthaml/lib/MtHaml/Filter/Markdown.php +58 -0
  153. data/vendor/mthaml/mthaml/lib/MtHaml/Filter/Markdown/CebeMarkdown.php +22 -0
  154. data/vendor/mthaml/mthaml/lib/MtHaml/Filter/Markdown/Ciconia.php +21 -0
  155. data/vendor/mthaml/mthaml/lib/MtHaml/Filter/Markdown/MichelfMarkdown.php +21 -0
  156. data/vendor/mthaml/mthaml/lib/MtHaml/Filter/Markdown/Parsedown.php +21 -0
  157. data/vendor/mthaml/mthaml/lib/MtHaml/Filter/Php.php +37 -0
  158. data/vendor/mthaml/mthaml/lib/MtHaml/Filter/Plain.php +24 -0
  159. data/vendor/mthaml/mthaml/lib/MtHaml/Filter/Preserve.php +19 -0
  160. data/vendor/mthaml/mthaml/lib/MtHaml/Filter/Scss.php +37 -0
  161. data/vendor/mthaml/mthaml/lib/MtHaml/Filter/Twig.php +47 -0
  162. data/vendor/mthaml/mthaml/lib/MtHaml/Indentation/Indentation.php +96 -0
  163. data/vendor/mthaml/mthaml/lib/MtHaml/Indentation/IndentationException.php +9 -0
  164. data/vendor/mthaml/mthaml/lib/MtHaml/Indentation/IndentationInterface.php +50 -0
  165. data/vendor/mthaml/mthaml/lib/MtHaml/Indentation/Undefined.php +41 -0
  166. data/vendor/mthaml/mthaml/lib/MtHaml/Node/Comment.php +71 -0
  167. data/vendor/mthaml/mthaml/lib/MtHaml/Node/Doctype.php +96 -0
  168. data/vendor/mthaml/mthaml/lib/MtHaml/Node/EscapableAbstract.php +19 -0
  169. data/vendor/mthaml/mthaml/lib/MtHaml/Node/Filter.php +51 -0
  170. data/vendor/mthaml/mthaml/lib/MtHaml/Node/Insert.php +42 -0
  171. data/vendor/mthaml/mthaml/lib/MtHaml/Node/InterpolatedString.php +73 -0
  172. data/vendor/mthaml/mthaml/lib/MtHaml/Node/NestAbstract.php +117 -0
  173. data/vendor/mthaml/mthaml/lib/MtHaml/Node/NestInterface.php +10 -0
  174. data/vendor/mthaml/mthaml/lib/MtHaml/Node/NodeAbstract.php +77 -0
  175. data/vendor/mthaml/mthaml/lib/MtHaml/Node/ObjectRefClass.php +42 -0
  176. data/vendor/mthaml/mthaml/lib/MtHaml/Node/ObjectRefId.php +42 -0
  177. data/vendor/mthaml/mthaml/lib/MtHaml/Node/Root.php +35 -0
  178. data/vendor/mthaml/mthaml/lib/MtHaml/Node/Run.php +71 -0
  179. data/vendor/mthaml/mthaml/lib/MtHaml/Node/Statement.php +45 -0
  180. data/vendor/mthaml/mthaml/lib/MtHaml/Node/Tag.php +90 -0
  181. data/vendor/mthaml/mthaml/lib/MtHaml/Node/TagAttribute.php +62 -0
  182. data/vendor/mthaml/mthaml/lib/MtHaml/Node/TagAttributeInterpolation.php +24 -0
  183. data/vendor/mthaml/mthaml/lib/MtHaml/Node/TagAttributeList.php +24 -0
  184. data/vendor/mthaml/mthaml/lib/MtHaml/Node/Text.php +37 -0
  185. data/vendor/mthaml/mthaml/lib/MtHaml/NodeVisitor/Autoclose.php +25 -0
  186. data/vendor/mthaml/mthaml/lib/MtHaml/NodeVisitor/Escaping.php +105 -0
  187. data/vendor/mthaml/mthaml/lib/MtHaml/NodeVisitor/MergeAttrs.php +110 -0
  188. data/vendor/mthaml/mthaml/lib/MtHaml/NodeVisitor/Midblock.php +37 -0
  189. data/vendor/mthaml/mthaml/lib/MtHaml/NodeVisitor/NodeVisitorAbstract.php +226 -0
  190. data/vendor/mthaml/mthaml/lib/MtHaml/NodeVisitor/NodeVisitorInterface.php +97 -0
  191. data/vendor/mthaml/mthaml/lib/MtHaml/NodeVisitor/PhpRenderer.php +288 -0
  192. data/vendor/mthaml/mthaml/lib/MtHaml/NodeVisitor/Printer.php +265 -0
  193. data/vendor/mthaml/mthaml/lib/MtHaml/NodeVisitor/RendererAbstract.php +581 -0
  194. data/vendor/mthaml/mthaml/lib/MtHaml/NodeVisitor/TwigRenderer.php +252 -0
  195. data/vendor/mthaml/mthaml/lib/MtHaml/Parser.php +862 -0
  196. data/vendor/mthaml/mthaml/lib/MtHaml/Parser/Buffer.php +147 -0
  197. data/vendor/mthaml/mthaml/lib/MtHaml/Runtime.php +218 -0
  198. data/vendor/mthaml/mthaml/lib/MtHaml/Runtime/AttributeInterpolation.php +16 -0
  199. data/vendor/mthaml/mthaml/lib/MtHaml/Runtime/AttributeList.php +16 -0
  200. data/vendor/mthaml/mthaml/lib/MtHaml/Support/Php/Executor.php +157 -0
  201. data/vendor/mthaml/mthaml/lib/MtHaml/Support/Twig/Extension.php +47 -0
  202. data/vendor/mthaml/mthaml/lib/MtHaml/Support/Twig/Lexer.php +48 -0
  203. data/vendor/mthaml/mthaml/lib/MtHaml/Support/Twig/Loader.php +81 -0
  204. data/vendor/mthaml/mthaml/lib/MtHaml/Target/Php.php +23 -0
  205. data/vendor/mthaml/mthaml/lib/MtHaml/Target/TargetAbstract.php +87 -0
  206. data/vendor/mthaml/mthaml/lib/MtHaml/Target/TargetInterface.php +12 -0
  207. data/vendor/mthaml/mthaml/lib/MtHaml/Target/Twig.php +23 -0
  208. data/vendor/mthaml/mthaml/lib/MtHaml/TreeBuilder.php +100 -0
  209. data/vendor/mthaml/mthaml/lib/MtHaml/TreeBuilderException.php +9 -0
  210. data/vendor/mthaml/mthaml/phpunit.xml +25 -0
  211. data/vendor/mthaml/mthaml/test/MtHaml/Tests/EnvironmentTest.php +59 -0
  212. data/vendor/mthaml/mthaml/test/MtHaml/Tests/HamlSpecTest.php +83 -0
  213. data/vendor/mthaml/mthaml/test/MtHaml/Tests/IndentationTest.php +140 -0
  214. data/vendor/mthaml/mthaml/test/MtHaml/Tests/Node/DoctypeTest.php +51 -0
  215. data/vendor/mthaml/mthaml/test/MtHaml/Tests/Node/NodeTest.php +110 -0
  216. data/vendor/mthaml/mthaml/test/MtHaml/Tests/NodeVisitor/PhpRendererTest.php +113 -0
  217. data/vendor/mthaml/mthaml/test/MtHaml/Tests/NodeVisitor/TwigRendererTest.php +68 -0
  218. data/vendor/mthaml/mthaml/test/MtHaml/Tests/NodeVisitorsTest.php +44 -0
  219. data/vendor/mthaml/mthaml/test/MtHaml/Tests/Parser/BufferTest.php +77 -0
  220. data/vendor/mthaml/mthaml/test/MtHaml/Tests/ParserTest.php +47 -0
  221. data/vendor/mthaml/mthaml/test/MtHaml/Tests/RuntimeTest.php +356 -0
  222. data/vendor/mthaml/mthaml/test/MtHaml/Tests/Support/Php/ExecutorTest.php +83 -0
  223. data/vendor/mthaml/mthaml/test/MtHaml/Tests/Support/Twig/LoaderTest.php +65 -0
  224. data/vendor/mthaml/mthaml/test/MtHaml/Tests/TestCase.php +49 -0
  225. data/vendor/mthaml/mthaml/test/MtHaml/Tests/TestCaseTest.php +50 -0
  226. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/Support/Php/Executor.001.haml +1 -0
  227. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/attr_list_php.test +20 -0
  228. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/attr_list_twig.test +12 -0
  229. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/boolean_attr_php.test +16 -0
  230. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/boolean_attr_twig.test +16 -0
  231. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/bug28_php.test +15 -0
  232. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/bug28_twig.test +15 -0
  233. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/bug42.test +13 -0
  234. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/bug8_twig.test +10 -0
  235. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/coffeescript_filter.test +31 -0
  236. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/comments.test +26 -0
  237. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/cond_cmt.test +25 -0
  238. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/doctype.test +18 -0
  239. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/doctype_html4.test +20 -0
  240. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/doctype_invalid.test +12 -0
  241. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/doctype_invalid_xhtml.test +12 -0
  242. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/doctype_php.test +18 -0
  243. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/doctype_xhtml.test +30 -0
  244. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/filters.test +51 -0
  245. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/insert_non_echo_php.test +11 -0
  246. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/insert_non_echo_twig.test +11 -0
  247. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/interpolation_in_html_attrs_php.test +31 -0
  248. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/interpolation_in_html_attrs_twig.test +31 -0
  249. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/less_filter_leafo.test +33 -0
  250. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/less_filter_oyejorge.test +49 -0
  251. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/markdown_filter_cebemarkdown.test +35 -0
  252. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/markdown_filter_ciconia.test +36 -0
  253. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/markdown_filter_michelf.test +34 -0
  254. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/markdown_filter_parsedown.test +31 -0
  255. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/markdown_optimization_filter_michelf.test +23 -0
  256. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/mergeattrs.test +18 -0
  257. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/nuke_inner_whitespace.test +77 -0
  258. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/nuke_outer_whitespace.test +122 -0
  259. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/object_ref_php.test +14 -0
  260. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/object_ref_twig.test +14 -0
  261. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/php.test +109 -0
  262. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/php_autoescaping.test +22 -0
  263. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/php_autoescaping_once.test +25 -0
  264. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/php_blocks.test +29 -0
  265. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/php_filters.test +42 -0
  266. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/scss_filter.test +32 -0
  267. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/strip_inline_comments_php.test +22 -0
  268. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/test.test +24 -0
  269. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/trailing_semicolon_php.test +14 -0
  270. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/try_catch_php.test +17 -0
  271. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/twig.test +112 -0
  272. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/twig_blocks.test +29 -0
  273. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/twig_filters.test +37 -0
  274. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/twig_whitespace.test +32 -0
  275. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/whitespace.test +63 -0
  276. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/nodevisitors/autoclose.test +30 -0
  277. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/nodevisitors/escaping.test +52 -0
  278. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/nodevisitors/escaping_attr_once.test +52 -0
  279. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/nodevisitors/escaping_html_false.test +52 -0
  280. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/nodevisitors/mergeattrs.test +26 -0
  281. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/nodevisitors/midblock.test +54 -0
  282. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/nodevisitors/midblock_002.test +32 -0
  283. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/attr_list.test +14 -0
  284. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/attrs.test +42 -0
  285. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/attrs_002.test +35 -0
  286. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/attrs_003.test +30 -0
  287. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/attrs_html_linebreak.test +17 -0
  288. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/blocks.test +27 -0
  289. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/blocks_002.test +15 -0
  290. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/boolean_attr.test +19 -0
  291. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/bug28.test +15 -0
  292. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/bug8.test +11 -0
  293. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/cond_cmt.test +23 -0
  294. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/doctype.test +11 -0
  295. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/double_equal.test +7 -0
  296. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/empty_line_after_multiline.test +10 -0
  297. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/errors_001.test +8 -0
  298. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/errors_002.test +8 -0
  299. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/errors_003.test +8 -0
  300. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/errors_004.test +6 -0
  301. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/errors_005.test +5 -0
  302. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/errors_006.test +7 -0
  303. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/errors_007.test +7 -0
  304. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/errors_008.test +7 -0
  305. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/errors_009.test +5 -0
  306. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/errors_010.test +5 -0
  307. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/errors_013.test +5 -0
  308. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/errors_016.test +7 -0
  309. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/errors_017.test +8 -0
  310. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/errors_018.test +6 -0
  311. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/errors_019.test +6 -0
  312. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/errors_020.test +5 -0
  313. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/filters.test +20 -0
  314. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/filters_002.test +19 -0
  315. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/filters_003.test +13 -0
  316. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/filters_004.test +21 -0
  317. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/filters_005.test +22 -0
  318. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/filters_006.test +23 -0
  319. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/insertflags.test +17 -0
  320. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/interpolation.test +36 -0
  321. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/interpolation_in_html_attrs.test +17 -0
  322. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/multiline.test +18 -0
  323. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/multiline_code.test +59 -0
  324. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/multiple_attr_kinds.test +47 -0
  325. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/non_rendered_comment.test +31 -0
  326. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/ns.test +11 -0
  327. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/object_ref.test +22 -0
  328. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/object_ref_error1.test +5 -0
  329. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/object_ref_error2.test +5 -0
  330. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/quotes_in_haml.test +10 -0
  331. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/ruby19_attrs.test +11 -0
  332. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/ruby_attrs_comma.test +23 -0
  333. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/ruby_attrs_comma_errors_001.test +5 -0
  334. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/ruby_attrs_comma_errors_002.test +5 -0
  335. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/ruby_attrs_comma_errors_003.test +5 -0
  336. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/standard.test +114 -0
  337. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/tagflags.test +39 -0
  338. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/runtime/php_filters.test +28 -0
  339. data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/runtime/twig_filters.test +31 -0
  340. data/vendor/mthaml/mthaml/test/bootstrap.php +3 -0
  341. metadata +398 -0
@@ -0,0 +1,5 @@
1
+ module ::Guard
2
+ class MtHamlVersion
3
+ VERSION = '0.1.0'
4
+ end
5
+ end
@@ -0,0 +1,7 @@
1
+ <?php
2
+
3
+ // autoload.php @generated by Composer
4
+
5
+ require_once __DIR__ . '/composer' . '/autoload_real.php';
6
+
7
+ return ComposerAutoloaderInit17e64cb9b57858533d303e3ace0ae982::getLoader();
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2011 Jeremy Ashkenas, Alex Little
2
+
3
+ Permission is hereby granted, free of charge, to any person
4
+ obtaining a copy of this software and associated documentation
5
+ files (the "Software"), to deal in the Software without
6
+ restriction, including without limitation the rights to use,
7
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the
9
+ Software is furnished to do so, subject to the following
10
+ conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
17
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
19
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22
+ OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,96 @@
1
+ # CoffeeScript PHP
2
+
3
+ A port of the [CoffeeScript](http://jashkenas.github.com/coffee-script/)
4
+ compiler to PHP.
5
+
6
+ ## Status
7
+
8
+ CoffeeScript version **1.3.1** has been fully ported over (see
9
+ [tags](http://github.com/alxlit/coffeescript-php/tags)). There are a couple
10
+ benign differences between the port's compiled code and the reference's (for
11
+ example [#11](https://github.com/alxlit/coffeescript-php/issues/11)), otherwise
12
+ they match 100%.
13
+
14
+ ## Requirements
15
+
16
+ PHP 5.3+ (uses namespaces, anonymous functions).
17
+
18
+ ## Install
19
+
20
+ It's recommended that you use [Composer](http://getcomposer.org) to install
21
+ and autoload CoffeeScript. Alternatively you can load it manually:
22
+
23
+ ```php
24
+ <?php
25
+
26
+ require 'vendor/CoffeeScript/Init.php';
27
+
28
+ // Load manually
29
+ CoffeeScript\Init::load();
30
+
31
+ ?>
32
+ ```
33
+
34
+ ## Usage
35
+
36
+ The API is really basic (single `compile($coffee, $options = NULL)` function).
37
+ I don't plan on expanding it further (keeping it simple). Here are the available
38
+ options:
39
+
40
+ * **filename** - The source filename, formatted into error messages
41
+ * **header** - Add a "Generated by..." header
42
+ * **rewrite** - Enable the rewriter (debugging)
43
+ * **tokens** - Reference to token stream (debugging)
44
+ * **trace** - File to write parser trace to (debugging)
45
+
46
+ ```php
47
+ <?php
48
+
49
+ $file = 'path/to/source.coffee';
50
+
51
+ try
52
+ {
53
+ $coffee = file_get_contents($file);
54
+
55
+ // See available options above.
56
+ $js = CoffeeScript\Compiler::compile($coffee, array('filename' => $file));
57
+ }
58
+ catch (Exception $e)
59
+ {
60
+ echo $e->getMessage();
61
+ }
62
+
63
+ ?>
64
+ ```
65
+
66
+ ## Development
67
+
68
+ To rebuild the parser run `php make.php`. Tests are run in the browser; simply
69
+ clone the repository somewhere Apache can see it and navigate to tests/.
70
+
71
+ ## FAQ
72
+
73
+ #### What was the motivation for this project?
74
+
75
+ I was using PHP a lot at the time and wanted to use, learn more about, and
76
+ potentially contribute to the CoffeeScript project. I thought it'd be nice to
77
+ have a native version gave it a shot.
78
+
79
+ #### Why not modify the original compiler to emit PHP?
80
+
81
+ For a number of reasons... First, I don't know why you'd want something like
82
+ that. If you find PHP intolerable, just don't use it... Second, the original
83
+ compiler depends on Jison, which is written in JavaScript, so you'd have to do
84
+ something about that. Third, I think it'd be much more work to try and sort out
85
+ all the differences between JavaScript and PHP (object model, core classes
86
+ and libraries, etc).
87
+
88
+ #### What parser generator are you using?
89
+
90
+ Since there's no PHP port of Bison (which the reference compiler uses), we're
91
+ using a port of Lemon called [ParserGenerator](http://pear.php.net/package/PHP_ParserGenerator).
92
+
93
+ It's included locally since the PEAR package is unmaintained and seems to be
94
+ broken. In addition, some minor changes have been made to the parser template
95
+ (Lempar.php) and the actual generator.
96
+
@@ -0,0 +1,23 @@
1
+ {
2
+ "name": "coffeescript/coffeescript",
3
+ "type": "library",
4
+ "description": "A port of the CoffeeScript compiler to PHP.",
5
+ "keywords": ["coffee", "coffeescript", "js", "javascript"],
6
+ "homepage": "http://github.com/alxlit/coffeescript-php",
7
+ "license": "MIT",
8
+ "authors": [
9
+ {
10
+ "name": "Alex Little",
11
+ "email": "alxlit@gmail.com",
12
+ "homepage": "http://alxlit.name"
13
+ }
14
+ ],
15
+ "require": {
16
+ "php": ">=5.3.0"
17
+ },
18
+ "autoload": {
19
+ "psr-0": {
20
+ "CoffeeScript": "src/"
21
+ }
22
+ }
23
+ }
@@ -0,0 +1,309 @@
1
+ %start_symbol root
2
+ %declare_class { class Parser }
3
+
4
+ %syntax_error {
5
+ throw new SyntaxError(
6
+ 'unexpected '.$this->tokenName($yymajor).' in '.self::$FILE.':'
7
+ . (self::$LINE + 1).'.'
8
+ );
9
+ }
10
+
11
+ %right YY_POST_IF.
12
+ %right YY_IF YY_ELSE YY_FOR YY_WHILE YY_UNTIL YY_LOOP YY_SUPER YY_CLASS.
13
+ %right YY_FORIN YY_FOROF YY_BY YY_WHEN.
14
+ %right YY_EQUALS YY_COLON YY_COMPOUND_ASSIGN YY_RETURN YY_THROW YY_EXTENDS.
15
+ %nonassoc YY_INDENT YY_OUTDENT.
16
+ %left YY_LOGIC.
17
+ %left YY_COMPARE.
18
+ %left YY_RELATION.
19
+ %left YY_SHIFT.
20
+ %left YY_MATH.
21
+ %left YY_PLUS YY_MINUS.
22
+ %right YY_UNARY.
23
+ %left YY_EXISTENTIAL.
24
+ %nonassoc YY_INCREMENT YY_DECREMENT.
25
+ %left YY_CALL_START YY_CALL_END.
26
+ %left YY_ACCESSOR YY_EXISTENTIAL_ACCESSOR YY_PROTOTYPE.
27
+
28
+ root(A) ::= . { A = yy('Block'); }
29
+ root(A) ::= body(B) . { A = B; }
30
+ root(A) ::= block(B) YY_TERMINATOR . { A = B; }
31
+
32
+ body(A) ::= line(B) . { A = yy_Block::wrap(array(B)); }
33
+ body(A) ::= body(B) YY_TERMINATOR line(C) . { A = B->push(C); }
34
+ body(A) ::= body(B) YY_TERMINATOR . { A = B; }
35
+
36
+ line(A) ::= expression(B) . { A = B; }
37
+ line(A) ::= statement(B) . { A = B; }
38
+
39
+ statement(A) ::= return(B) . { A = B; }
40
+ statement(A) ::= comment(B) . { A = B; }
41
+ statement(A) ::= YY_STATEMENT(B) . { A = yy('Literal', B); }
42
+
43
+ expression(A) ::= value(B) . { A = B; }
44
+ expression(A) ::= invocation(B) . { A = B; }
45
+ expression(A) ::= code(B) . { A = B; }
46
+ expression(A) ::= operation(B) . { A = B; }
47
+ expression(A) ::= assign(B) . { A = B; }
48
+ expression(A) ::= if(B) . { A = B; }
49
+ expression(A) ::= try(B) . { A = B; }
50
+ expression(A) ::= while(B) . { A = B; }
51
+ expression(A) ::= for(B) . { A = B; }
52
+ expression(A) ::= switch(B) . { A = B; }
53
+ expression(A) ::= class(B) . { A = B; }
54
+ expression(A) ::= throw(B) . { A = B; }
55
+
56
+ block(A) ::= YY_INDENT YY_OUTDENT . { A = yy('Block'); }
57
+ block(A) ::= YY_INDENT body(B) YY_OUTDENT . { A = B; }
58
+
59
+ identifier(A) ::= YY_IDENTIFIER(B) . { A = yy('Literal', B); }
60
+
61
+ alphanumeric(A) ::= YY_NUMBER(B) . { A = yy('Literal', B); }
62
+ alphanumeric(A) ::= YY_STRING(B) . { A = yy('Literal', B); }
63
+
64
+ literal(A) ::= alphanumeric(B) . { A = B; }
65
+ literal(A) ::= YY_JS(B) . { A = yy('Literal', B); }
66
+ literal(A) ::= YY_REGEX(B) . { A = yy('Literal', B); }
67
+ literal(A) ::= YY_DEBUGGER(B) . { A = yy('Literal', B); }
68
+
69
+ literal(A) ::= YY_BOOL(B) . {
70
+ $val = yy('Literal', B);
71
+ $val->is_undefined = B === 'undefined';
72
+ A = $val;
73
+ }
74
+
75
+ assign(A) ::= assignable(B) YY_EQUALS expression(C) . { A = yy('Assign', B, C); }
76
+ assign(A) ::= assignable(B) YY_EQUALS YY_TERMINATOR expression(C) . { A = yy('Assign', B, C); }
77
+ assign(A) ::= assignable(B) YY_EQUALS YY_INDENT expression(C) YY_OUTDENT . { A = yy('Assign', B, C); }
78
+
79
+ assignObj(A) ::= objAssignable(B) . { A = yy('Value', B); }
80
+ assignObj(A) ::= objAssignable(B) YY_COLON expression(C) . { A = yy('Assign', yy('Value', B), C, 'object'); }
81
+ assignObj(A) ::= objAssignable(B) YY_COLON YY_INDENT expression(C) YY_OUTDENT . { A = yy('Assign', yy('Value', B), C, 'object'); }
82
+ assignObj(A) ::= comment(B) . { A = B; }
83
+
84
+ objAssignable(A) ::= identifier(B) . { A = B; }
85
+ objAssignable(A) ::= alphanumeric(B) . { A = B; }
86
+ objAssignable(A) ::= thisProperty(B) . { A = B; }
87
+
88
+ return(A) ::= YY_RETURN expression(B) . { A = yy('Return', B); }
89
+ return(A) ::= YY_RETURN . { A = yy('Return'); }
90
+
91
+ comment(A) ::= YY_HERECOMMENT(B) . { A = yy('Comment', B); }
92
+
93
+ code(A) ::= YY_PARAM_START paramList(B) YY_PARAM_END funcGlyph(C) block(D) . { A = yy('Code', B, D, C); }
94
+ code(A) ::= funcGlyph(B) block(C) . { A = yy('Code', array(), C, B); }
95
+
96
+ funcGlyph(A) ::= YY_FUNC . { A = 'func'; }
97
+ funcGlyph(A) ::= YY_BOUND_FUNC . { A = 'boundfunc'; }
98
+
99
+ optComma(A) ::= . { A = ''; }
100
+ optComma(A) ::= YY_COMMA(B) . { A = B; }
101
+
102
+ paramList(A) ::= . { A = array(); }
103
+ paramList(A) ::= param(B) . { A = array(B); }
104
+ paramList(A) ::= paramList(B) YY_COMMA param(C) . { A = array_merge(B, array(C)); }
105
+
106
+ param(A) ::= paramVar(B) . { A = yy('Param', B); }
107
+ param(A) ::= paramVar(B) YY_RANGE_EXCLUSIVE . { A = yy('Param', B, NULL, TRUE); }
108
+ param(A) ::= paramVar(B) YY_EQUALS expression(C) . { A = yy('Param', B, C); }
109
+
110
+ paramVar(A) ::= identifier(B) . { A = B; }
111
+ paramVar(A) ::= thisProperty(B) . { A = B; }
112
+ paramVar(A) ::= array(B) . { A = B; }
113
+ paramVar(A) ::= object(B) . { A = B; }
114
+
115
+ splat(A) ::= expression(B) YY_RANGE_EXCLUSIVE . { A = yy('Splat', B); }
116
+
117
+ simpleAssignable(A) ::= identifier(B) . { A = yy('Value', B); }
118
+ simpleAssignable(A) ::= value(B) accessor(C) . { A = B->add(C); }
119
+ simpleAssignable(A) ::= invocation(B) accessor(C) . { A = yy('Value', B, is_object(C) ? array(C) : (array) C); }
120
+ simpleAssignable(A) ::= thisProperty(B) . { A = B; }
121
+
122
+ assignable(A) ::= simpleAssignable(B) . { A = B; }
123
+ assignable(A) ::= array(B) . { A = yy('Value', B); }
124
+ assignable(A) ::= object(B) . { A = yy('Value', B); }
125
+
126
+ value(A) ::= assignable(B) . { A = B; }
127
+ value(A) ::= literal(B) . { A = yy('Value', B); }
128
+ value(A) ::= parenthetical(B) . { A = yy('Value', B); }
129
+ value(A) ::= range(B) . { A = yy('Value', B); }
130
+ value(A) ::= this(B) . { A = B; }
131
+
132
+ accessor(A) ::= YY_ACCESSOR identifier(B) . { A = yy('Access', B); }
133
+ accessor(A) ::= YY_EXISTENTIAL_ACCESSOR identifier(B) . { A = yy('Access', B, 'soak'); }
134
+ accessor(A) ::= YY_PROTOTYPE identifier(B) . { A = array( yy('Access', yy('Literal', 'prototype')), yy('Access', B) ); }
135
+ accessor(A) ::= YY_PROTOTYPE . { A = yy('Access', yy('Literal', 'prototype')); }
136
+ accessor(A) ::= index(B) . { A = B; }
137
+
138
+ index(A) ::= YY_INDEX_START indexValue(B) YY_INDEX_END . { A = B; }
139
+ index(A) ::= YY_INDEX_SOAK index(B) . { A = extend(B, array('soak' => TRUE)); }
140
+
141
+ indexValue(A) ::= expression(B) . { A = yy('Index', B); }
142
+ indexValue(A) ::= slice(B) . { A = yy('Slice', B); }
143
+
144
+ object(A) ::= YY_OBJECT_START assignList(B) optComma YY_OBJECT_END . {
145
+ $object_start = $this->yystack[$this->yyidx - 3]->minor;
146
+ $generated = isset($object_start->generated) ? $object_start->generated : FALSE;
147
+
148
+ A = yy('Obj', B, $generated);
149
+ }
150
+
151
+ assignList(A) ::= . { A = array(); }
152
+ assignList(A) ::= assignObj(B) . { A = array(B); }
153
+ assignList(A) ::= assignList(B) YY_COMMA assignObj(C) . { B[] = C; A = B; }
154
+ assignList(A) ::= assignList(B) optComma YY_TERMINATOR assignObj(C) . { B[] = C; A = B; }
155
+ assignList(A) ::= assignList(B) optComma YY_INDENT assignList(C) optComma YY_OUTDENT . { A = array_merge(B, C); }
156
+
157
+ class(A) ::= YY_CLASS . { A = yy('Class'); }
158
+ class(A) ::= YY_CLASS block(B) . { A = yy('Class', NULL, NULL, B); }
159
+ class(A) ::= YY_CLASS YY_EXTENDS expression(B) . { A = yy('Class', NULL, B); }
160
+ class(A) ::= YY_CLASS YY_EXTENDS expression(B) block(C) . { A = yy('Class', NULL, B, C); }
161
+ class(A) ::= YY_CLASS simpleAssignable(B) . { A = yy('Class', B); }
162
+ class(A) ::= YY_CLASS simpleAssignable(B) block(C) . { A = yy('Class', B, NULL, C); }
163
+ class(A) ::= YY_CLASS simpleAssignable(B) YY_EXTENDS expression(C) . { A = yy('Class', B, C); }
164
+ class(A) ::= YY_CLASS simpleAssignable(B) YY_EXTENDS expression(C) block(D) . { A = yy('Class', B, C, D); }
165
+
166
+ invocation(A) ::= value(B) optFuncExist(C) arguments(D) . { A = yy('Call', B, D, C); }
167
+ invocation(A) ::= invocation(B) optFuncExist(C) arguments(D) . { A = yy('Call', B, D, C); }
168
+ invocation(A) ::= YY_SUPER . { A = yy('Call', 'super', array(yy('Splat', yy('Literal', 'arguments')))); }
169
+ invocation(A) ::= YY_SUPER arguments(B) . { A = yy('Call', 'super', B); }
170
+
171
+ optFuncExist(A) ::= . { A = FALSE; }
172
+ optFuncExist(A) ::= YY_FUNC_EXIST . { A = TRUE; }
173
+
174
+ arguments(A) ::= YY_CALL_START YY_CALL_END . { A = array(); }
175
+ arguments(A) ::= YY_CALL_START argList(B) optComma YY_CALL_END . { A = B; }
176
+
177
+ this(A) ::= YY_THIS . { A = yy('Value', yy('Literal', 'this')); }
178
+ this(A) ::= YY_AT_SIGN . { A = yy('Value', yy('Literal', 'this')); }
179
+
180
+ thisProperty(A) ::= YY_AT_SIGN identifier(B) . { A = yy('Value', yy('Literal', 'this'), array(yy('Access', B)), 'this'); }
181
+
182
+ array(A) ::= YY_ARRAY_START YY_ARRAY_END . { A = yy('Arr', array()); }
183
+ array(A) ::= YY_ARRAY_START argList(B) optComma YY_ARRAY_END . { A = yy('Arr', B); }
184
+
185
+ rangeDots(A) ::= YY_RANGE_INCLUSIVE . { A = 'inclusive'; }
186
+ rangeDots(A) ::= YY_RANGE_EXCLUSIVE . { A = 'exclusive'; }
187
+
188
+ range(A) ::= YY_ARRAY_START expression(B) rangeDots(C) expression(D) YY_ARRAY_END . { A = yy('Range', B, D, C); }
189
+
190
+ slice(A) ::= expression(B) rangeDots(C) expression(D) . { A = yy('Range', B, D, C); }
191
+ slice(A) ::= expression(B) rangeDots(C) . { A = yy('Range', B, NULL, C); }
192
+ slice(A) ::= rangeDots(B) expression(C) . { A = yy('Range', NULL, C, B); }
193
+ slice(A) ::= rangeDots(B) . { A = yy('Range', NULL, NULL, B); }
194
+
195
+ argList(A) ::= arg(B) . { A = array(B); }
196
+ argList(A) ::= argList(B) YY_COMMA arg(C) . { A = array_merge(B, array(C)); }
197
+ argList(A) ::= argList(B) optComma YY_TERMINATOR arg(C) . { A = array_merge(B, array(C)); }
198
+ argList(A) ::= YY_INDENT argList(B) optComma YY_OUTDENT . { A = B; }
199
+ argList(A) ::= argList(B) optComma YY_INDENT argList(C) optComma YY_OUTDENT . { A = array_merge(B, C); }
200
+
201
+ arg(A) ::= expression(B) . { A = B; }
202
+ arg(A) ::= splat(B) . { A = B; }
203
+
204
+ simpleArgs(A) ::= expression(B) . { A = B; }
205
+ simpleArgs(A) ::= simpleArgs(B) YY_COMMA expression(C) . { A = array(B, C); }
206
+
207
+ try(A) ::= YY_TRY block(B) . { A = yy('Try', B); }
208
+ try(A) ::= YY_TRY block(B) catch(C) . { A = yy('Try', B, C[0], C[1]); }
209
+ try(A) ::= YY_TRY block(B) YY_FINALLY block(C) . { A = yy('Try', B, NULL, NULL, C); }
210
+ try(A) ::= YY_TRY block(B) catch(C) YY_FINALLY block(D) . { A = yy('Try', B, C[0], C[1], D); }
211
+
212
+ catch(A) ::= YY_CATCH identifier(B) block(C) . { A = array(B, C); }
213
+
214
+ throw(A) ::= YY_THROW expression(B) . { A = yy('Throw', B); }
215
+
216
+ parenthetical(A) ::= YY_PAREN_START body(B) YY_PAREN_END . { A = yy('Parens', B); }
217
+ parenthetical(A) ::= YY_PAREN_START YY_INDENT body(B) YY_OUTDENT YY_PAREN_END . { A = yy('Parens', B); }
218
+
219
+ whileSource(A) ::= YY_WHILE expression(B) . { A = yy('While', B); }
220
+ whileSource(A) ::= YY_WHILE expression(B) YY_WHEN expression(C) . { A = yy('While', B, array('guard' => C)); }
221
+ whileSource(A) ::= YY_UNTIL expression(B) . { A = yy('While', B, array('invert' => TRUE)); }
222
+ whileSource(A) ::= YY_UNTIL expression(B) YY_WHEN expression(C) . { A = yy('While', B, array('invert' => TRUE, 'guard' => C)); }
223
+
224
+ while(A) ::= whileSource(B) block(C) . { A = B->add_body(C); }
225
+ while(A) ::= statement(B) whileSource(C) . { A = C->add_body(yy_Block::wrap(array(B))); }
226
+ while(A) ::= expression(B) whileSource(C) . { A = C->add_body(yy_Block::wrap(array(B))); }
227
+ while(A) ::= loop(B) . { A = B; }
228
+
229
+ loop(A) ::= YY_LOOP block(B) . { A = yy('While', yy('Literal', 'true')); A->add_body(B); }
230
+ loop(A) ::= YY_LOOP expression(B) . { A = yy('While', yy('Literal', 'true')); A->add_body(yy_Block::wrap(B)); }
231
+
232
+ for(A) ::= statement(B) forBody(C) . { A = yy('For', B, C); }
233
+ for(A) ::= expression(B) forBody(C) . { A = yy('For', B, C); }
234
+ for(A) ::= forBody(B) block(C) . { A = yy('For', C, B); }
235
+
236
+ forBody(A) ::= YY_FOR range(B) . { A = array('source' => yy('Value', B)); }
237
+ forBody(A) ::= forStart(B) forSource(C) . { C['own'] = isset(B['own']) ? B['own'] : NULL; C['name'] = B[0]; C['index'] = isset(B[1]) ? B[1] : NULL; A = C; }
238
+
239
+ forStart(A) ::= YY_FOR forVariables(B) . { A = B; }
240
+ forStart(A) ::= YY_FOR YY_OWN forVariables(B) . { B['own'] = TRUE; A = B; }
241
+
242
+ forValue(A) ::= identifier(B) . { A = B; }
243
+ forValue(A) ::= array(B) . { A = yy('Value', B); }
244
+ forValue(A) ::= object(B) . { A = yy('Value', B); }
245
+
246
+ forVariables(A) ::= forValue(B) . { A = array(B); }
247
+ forVariables(A) ::= forValue(B) YY_COMMA forValue(C) . { A = array(B, C); }
248
+
249
+ forSource(A) ::= YY_FORIN expression(B) . { A = array('source' => B); }
250
+ forSource(A) ::= YY_FOROF expression(B) . { A = array('source' => B, 'object' => TRUE); }
251
+ forSource(A) ::= YY_FORIN expression(B) YY_WHEN expression(C) . { A = array('source' => B, 'guard' => C); }
252
+ forSource(A) ::= YY_FOROF expression(B) YY_WHEN expression(C) . { A = array('source' => B, 'guard' => C, 'object' => TRUE); }
253
+ forSource(A) ::= YY_FORIN expression(B) YY_BY expression(C) . { A = array('source' => B, 'step' => C); }
254
+ forSource(A) ::= YY_FORIN expression(B) YY_WHEN expression(C) YY_BY expression(D) . { A = array('source' => B, 'guard' => C, 'step' => D); }
255
+ forSource(A) ::= YY_FORIN expression(B) YY_BY expression(C) YY_WHEN expression(D) . { A = array('source' => B, 'step' => C, 'guard' => D); }
256
+
257
+ switch(A) ::= YY_SWITCH expression(B) YY_INDENT whens(C) YY_OUTDENT . { A = yy('Switch', B, C); }
258
+ switch(A) ::= YY_SWITCH expression(B) YY_INDENT whens(C) YY_ELSE block(D) YY_OUTDENT . { A = yy('Switch', B, C, D); }
259
+ switch(A) ::= YY_SWITCH YY_INDENT whens(B) YY_OUTDENT . { A = yy('Switch', NULL, B); }
260
+ switch(A) ::= YY_SWITCH YY_INDENT whens(B) YY_ELSE block(C) YY_OUTDENT . { A = yy('Switch', NULL, B, C); }
261
+
262
+ whens(A) ::= when(B) . { A = B; }
263
+ whens(A) ::= whens(B) when(C) . { A = array_merge(B, C); }
264
+
265
+ when(A) ::= YY_LEADING_WHEN simpleArgs(B) block(C) . { A = array(array(B, C)); }
266
+ when(A) ::= YY_LEADING_WHEN simpleArgs(B) block(C) YY_TERMINATOR . { A = array(array(B, C)); }
267
+
268
+ ifBlock(A) ::= YY_IF(B) expression(C) block(D) . { A = yy('If', C, D, array('type' => B)); }
269
+ ifBlock(A) ::= ifBlock(B) YY_ELSE YY_IF(C) expression(D) block(E) . { A = B->add_else(yy('If', D, E, array('type' => C))); }
270
+
271
+ if(A) ::= ifBlock(B) . { A = B; }
272
+ if(A) ::= ifBlock(B) YY_ELSE block(C) . { A = B->add_else(C); }
273
+ if(A) ::= statement(B) YY_POST_IF(C) expression(D) . { A = yy('If', D, yy_Block::wrap(array(B)), array('type' => C, 'statement' => TRUE)); }
274
+ if(A) ::= expression(B) YY_POST_IF(C) expression(D) . { A = yy('If', D, yy_Block::wrap(array(B)), array('type' => C, 'statement' => TRUE)); }
275
+
276
+ operation(A) ::= YY_UNARY(B) expression(C) . { A = yy('Op', B, C); }
277
+ operation(A) ::= YY_MINUS(B) expression(C) . { A = yy('Op', B, C); /* prec: 'UNARY'; */ }
278
+ operation(A) ::= YY_PLUS(B) expression(C) . { A = yy('Op', B, C); /* prec: 'UNARY'; */ }
279
+
280
+ operation(A) ::= YY_DECREMENT(B) simpleAssignable(C) . { A = yy('Op', B, C); }
281
+ operation(A) ::= YY_INCREMENT(B) simpleAssignable(C) . { A = yy('Op', B, C); }
282
+ operation(A) ::= simpleAssignable(B) YY_DECREMENT(C) . { A = yy('Op', C, B, NULL, TRUE); }
283
+ operation(A) ::= simpleAssignable(B) YY_INCREMENT(C) . { A = yy('Op', C, B, NULL, TRUE); }
284
+
285
+ operation(A) ::= expression(B) YY_EXISTENTIAL . { A = yy('Existence', B); }
286
+
287
+ operation(A) ::= expression(B) YY_PLUS(C) expression(D) . { A = yy('Op', C, B, D); }
288
+ operation(A) ::= expression(B) YY_MINUS(C) expression(D) . { A = yy('Op', C, B, D); }
289
+ operation(A) ::= expression(B) YY_MATH(C) expression(D) . { A = yy('Op', C, B, D); }
290
+ operation(A) ::= expression(B) YY_SHIFT(C) expression(D) . { A = yy('Op', C, B, D); }
291
+ operation(A) ::= expression(B) YY_COMPARE(C) expression(D) . { A = yy('Op', C, B, D); }
292
+ operation(A) ::= expression(B) YY_LOGIC(C) expression(D) . { A = yy('Op', C, B, D); }
293
+
294
+ operation(A) ::= expression(B) YY_RELATION(C) expression(D) . {
295
+ if (C{0} === '!') {
296
+ A = yy('Op', substr(C, 1), B, D);
297
+ A = A->invert();
298
+ }
299
+ else {
300
+ A = yy('Op', C, B, D);
301
+ }
302
+ }
303
+
304
+ operation(A) ::= simpleAssignable(B) YY_COMPOUND_ASSIGN(C) expression(D) . { A = yy('Assign', B, D, C); }
305
+ operation(A) ::= simpleAssignable(B) YY_COMPOUND_ASSIGN(C) YY_INDENT expression(D) YY_OUTDENT . { A = yy('Assign', B, D, C); }
306
+ operation(A) ::= simpleAssignable(B) YY_EXTENDS expression(C) . { A = yy('Extends', B, C); }
307
+
308
+
309
+