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.
- checksums.yaml +7 -0
- data/README.md +34 -0
- data/lib/guard/mthaml.rb +140 -0
- data/lib/guard/mthaml/compiler/MtHaml.php +255 -0
- data/lib/guard/mthaml/templates/Guardfile +12 -0
- data/lib/guard/mthaml/version.rb +5 -0
- data/vendor/autoload.php +7 -0
- data/vendor/coffeescript/coffeescript/LICENSE +22 -0
- data/vendor/coffeescript/coffeescript/README.md +96 -0
- data/vendor/coffeescript/coffeescript/composer.json +23 -0
- data/vendor/coffeescript/coffeescript/grammar.y +309 -0
- data/vendor/coffeescript/coffeescript/make.php +115 -0
- data/vendor/coffeescript/coffeescript/src/CoffeeScript/Compiler.php +76 -0
- data/vendor/coffeescript/coffeescript/src/CoffeeScript/Error.php +15 -0
- data/vendor/coffeescript/coffeescript/src/CoffeeScript/Helpers.php +116 -0
- data/vendor/coffeescript/coffeescript/src/CoffeeScript/Init.php +96 -0
- data/vendor/coffeescript/coffeescript/src/CoffeeScript/Lexer.php +1356 -0
- data/vendor/coffeescript/coffeescript/src/CoffeeScript/Nodes.php +105 -0
- data/vendor/coffeescript/coffeescript/src/CoffeeScript/Parser.php +3326 -0
- data/vendor/coffeescript/coffeescript/src/CoffeeScript/Rewriter.php +552 -0
- data/vendor/coffeescript/coffeescript/src/CoffeeScript/Scope.php +196 -0
- data/vendor/coffeescript/coffeescript/src/CoffeeScript/SyntaxError.php +9 -0
- data/vendor/coffeescript/coffeescript/src/CoffeeScript/Value.php +20 -0
- data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Access.php +31 -0
- data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Arr.php +69 -0
- data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Assign.php +353 -0
- data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Base.php +288 -0
- data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Block.php +294 -0
- data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Call.php +283 -0
- data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Class.php +282 -0
- data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Closure.php +49 -0
- data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Code.php +203 -0
- data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Comment.php +39 -0
- data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Existence.php +42 -0
- data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Extends.php +26 -0
- data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/For.php +250 -0
- data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/If.php +161 -0
- data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/In.php +99 -0
- data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Index.php +27 -0
- data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Literal.php +96 -0
- data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Obj.php +126 -0
- data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Op.php +292 -0
- data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Param.php +119 -0
- data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Parens.php +45 -0
- data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Range.php +225 -0
- data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Return.php +56 -0
- data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Slice.php +47 -0
- data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Splat.php +100 -0
- data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Switch.php +121 -0
- data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Throw.php +37 -0
- data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Try.php +79 -0
- data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/Value.php +210 -0
- data/vendor/coffeescript/coffeescript/src/CoffeeScript/yy/While.php +112 -0
- data/vendor/coffeescript/coffeescript/tests/cases/arrays.coffee +77 -0
- data/vendor/coffeescript/coffeescript/tests/cases/assignment.coffee +352 -0
- data/vendor/coffeescript/coffeescript/tests/cases/booleans.coffee +21 -0
- data/vendor/coffeescript/coffeescript/tests/cases/classes.coffee +681 -0
- data/vendor/coffeescript/coffeescript/tests/cases/comments.coffee +207 -0
- data/vendor/coffeescript/coffeescript/tests/cases/compilation.coffee +72 -0
- data/vendor/coffeescript/coffeescript/tests/cases/comprehensions.coffee +501 -0
- data/vendor/coffeescript/coffeescript/tests/cases/control_flow.coffee +430 -0
- data/vendor/coffeescript/coffeescript/tests/cases/eval.coffee +29 -0
- data/vendor/coffeescript/coffeescript/tests/cases/exception_handling.coffee +102 -0
- data/vendor/coffeescript/coffeescript/tests/cases/formatting.coffee +146 -0
- data/vendor/coffeescript/coffeescript/tests/cases/function_invocation.coffee +552 -0
- data/vendor/coffeescript/coffeescript/tests/cases/functions.coffee +188 -0
- data/vendor/coffeescript/coffeescript/tests/cases/helpers.coffee +96 -0
- data/vendor/coffeescript/coffeescript/tests/cases/importing.coffee +18 -0
- data/vendor/coffeescript/coffeescript/tests/cases/interpolation.coffee +138 -0
- data/vendor/coffeescript/coffeescript/tests/cases/javascript_literals.coffee +10 -0
- data/vendor/coffeescript/coffeescript/tests/cases/numbers.coffee +76 -0
- data/vendor/coffeescript/coffeescript/tests/cases/objects.coffee +271 -0
- data/vendor/coffeescript/coffeescript/tests/cases/operators.coffee +277 -0
- data/vendor/coffeescript/coffeescript/tests/cases/option_parser.coffee +43 -0
- data/vendor/coffeescript/coffeescript/tests/cases/ranges.coffee +88 -0
- data/vendor/coffeescript/coffeescript/tests/cases/regexps.coffee +63 -0
- data/vendor/coffeescript/coffeescript/tests/cases/scope.coffee +43 -0
- data/vendor/coffeescript/coffeescript/tests/cases/slicing_and_splicing.coffee +143 -0
- data/vendor/coffeescript/coffeescript/tests/cases/soaks.coffee +134 -0
- data/vendor/coffeescript/coffeescript/tests/cases/strict.coffee +155 -0
- data/vendor/coffeescript/coffeescript/tests/cases/strings.coffee +107 -0
- data/vendor/coffeescript/coffeescript/tests/css/style.css +43 -0
- data/vendor/coffeescript/coffeescript/tests/index.php +119 -0
- data/vendor/coffeescript/coffeescript/tests/js/lib/coffeescript_1.1.1.js +8 -0
- data/vendor/coffeescript/coffeescript/tests/js/lib/coffeescript_1.2.0.js +8 -0
- data/vendor/coffeescript/coffeescript/tests/js/lib/coffeescript_1.3.0.js +8 -0
- data/vendor/coffeescript/coffeescript/tests/js/lib/coffeescript_1.3.1.js +8 -0
- data/vendor/coffeescript/coffeescript/tests/js/lib/diff.js +276 -0
- data/vendor/coffeescript/coffeescript/tests/js/main.js +123 -0
- data/vendor/coffeescript/coffeescript/vendor/ParserGenerator/LICENSE.txt +10 -0
- data/vendor/coffeescript/coffeescript/vendor/ParserGenerator/PHP/Lempar.php +948 -0
- data/vendor/coffeescript/coffeescript/vendor/ParserGenerator/PHP/ParserGenerator/Action.php +257 -0
- data/vendor/coffeescript/coffeescript/vendor/ParserGenerator/PHP/ParserGenerator/ActionTable.php +299 -0
- data/vendor/coffeescript/coffeescript/vendor/ParserGenerator/PHP/ParserGenerator/Config.php +574 -0
- data/vendor/coffeescript/coffeescript/vendor/ParserGenerator/PHP/ParserGenerator/Data.php +1857 -0
- data/vendor/coffeescript/coffeescript/vendor/ParserGenerator/PHP/ParserGenerator/Parser.php +851 -0
- data/vendor/coffeescript/coffeescript/vendor/ParserGenerator/PHP/ParserGenerator/PropagationLink.php +126 -0
- data/vendor/coffeescript/coffeescript/vendor/ParserGenerator/PHP/ParserGenerator/Rule.php +144 -0
- data/vendor/coffeescript/coffeescript/vendor/ParserGenerator/PHP/ParserGenerator/State.php +283 -0
- data/vendor/coffeescript/coffeescript/vendor/ParserGenerator/PHP/ParserGenerator/Symbol.php +288 -0
- data/vendor/coffeescript/coffeescript/vendor/ParserGenerator/PHP/ParserGenerator/cli.php +5 -0
- data/vendor/coffeescript/coffeescript/vendor/ParserGenerator/ParserGenerator.php +811 -0
- data/vendor/composer/ClassLoader.php +383 -0
- data/vendor/composer/autoload_classmap.php +9 -0
- data/vendor/composer/autoload_namespaces.php +12 -0
- data/vendor/composer/autoload_psr4.php +10 -0
- data/vendor/composer/autoload_real.php +50 -0
- data/vendor/composer/installed.json +166 -0
- data/vendor/michelf/php-markdown/License.md +36 -0
- data/vendor/michelf/php-markdown/Michelf/Markdown.inc.php +10 -0
- data/vendor/michelf/php-markdown/Michelf/Markdown.php +3117 -0
- data/vendor/michelf/php-markdown/Michelf/MarkdownExtra.inc.php +11 -0
- data/vendor/michelf/php-markdown/Michelf/MarkdownExtra.php +38 -0
- data/vendor/michelf/php-markdown/Michelf/MarkdownInterface.inc.php +9 -0
- data/vendor/michelf/php-markdown/Michelf/MarkdownInterface.php +37 -0
- data/vendor/michelf/php-markdown/Readme.md +305 -0
- data/vendor/michelf/php-markdown/Readme.php +31 -0
- data/vendor/michelf/php-markdown/composer.json +31 -0
- data/vendor/mthaml/mthaml/CHANGELOG +48 -0
- data/vendor/mthaml/mthaml/LICENSE +44 -0
- data/vendor/mthaml/mthaml/README.markdown +262 -0
- data/vendor/mthaml/mthaml/composer.json +45 -0
- data/vendor/mthaml/mthaml/docs/Makefile +153 -0
- data/vendor/mthaml/mthaml/docs/_static/mthaml.css +30 -0
- data/vendor/mthaml/mthaml/docs/_theme/mthaml/theme.conf +4 -0
- data/vendor/mthaml/mthaml/docs/conf.py +242 -0
- data/vendor/mthaml/mthaml/docs/index.rst +18 -0
- data/vendor/mthaml/mthaml/docs/twig-syntax.rst +274 -0
- data/vendor/mthaml/mthaml/examples/README.md +5 -0
- data/vendor/mthaml/mthaml/examples/autoload.php +8 -0
- data/vendor/mthaml/mthaml/examples/example-php.haml +5 -0
- data/vendor/mthaml/mthaml/examples/example-php.php +37 -0
- data/vendor/mthaml/mthaml/examples/example-twig-noext.twig +11 -0
- data/vendor/mthaml/mthaml/examples/example-twig.haml +9 -0
- data/vendor/mthaml/mthaml/examples/example-twig.php +60 -0
- data/vendor/mthaml/mthaml/examples/example.twig.haml +8 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Autoloader.php +22 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Environment.php +178 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Escaping.php +33 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Exception.php +9 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Exception/SyntaxErrorException.php +9 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Filter/AbstractFilter.php +43 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Filter/Cdata.php +16 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Filter/CoffeeScript.php +33 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Filter/Css.php +26 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Filter/Escaped.php +22 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Filter/FilterInterface.php +15 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Filter/Javascript.php +26 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Filter/Less.php +27 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Filter/Less/LeafoLess.php +20 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Filter/Less/OyejorgeLess.php +23 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Filter/Markdown.php +58 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Filter/Markdown/CebeMarkdown.php +22 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Filter/Markdown/Ciconia.php +21 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Filter/Markdown/MichelfMarkdown.php +21 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Filter/Markdown/Parsedown.php +21 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Filter/Php.php +37 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Filter/Plain.php +24 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Filter/Preserve.php +19 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Filter/Scss.php +37 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Filter/Twig.php +47 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Indentation/Indentation.php +96 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Indentation/IndentationException.php +9 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Indentation/IndentationInterface.php +50 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Indentation/Undefined.php +41 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Node/Comment.php +71 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Node/Doctype.php +96 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Node/EscapableAbstract.php +19 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Node/Filter.php +51 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Node/Insert.php +42 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Node/InterpolatedString.php +73 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Node/NestAbstract.php +117 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Node/NestInterface.php +10 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Node/NodeAbstract.php +77 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Node/ObjectRefClass.php +42 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Node/ObjectRefId.php +42 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Node/Root.php +35 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Node/Run.php +71 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Node/Statement.php +45 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Node/Tag.php +90 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Node/TagAttribute.php +62 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Node/TagAttributeInterpolation.php +24 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Node/TagAttributeList.php +24 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Node/Text.php +37 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/NodeVisitor/Autoclose.php +25 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/NodeVisitor/Escaping.php +105 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/NodeVisitor/MergeAttrs.php +110 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/NodeVisitor/Midblock.php +37 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/NodeVisitor/NodeVisitorAbstract.php +226 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/NodeVisitor/NodeVisitorInterface.php +97 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/NodeVisitor/PhpRenderer.php +288 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/NodeVisitor/Printer.php +265 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/NodeVisitor/RendererAbstract.php +581 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/NodeVisitor/TwigRenderer.php +252 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Parser.php +862 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Parser/Buffer.php +147 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Runtime.php +218 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Runtime/AttributeInterpolation.php +16 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Runtime/AttributeList.php +16 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Support/Php/Executor.php +157 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Support/Twig/Extension.php +47 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Support/Twig/Lexer.php +48 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Support/Twig/Loader.php +81 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Target/Php.php +23 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Target/TargetAbstract.php +87 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Target/TargetInterface.php +12 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/Target/Twig.php +23 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/TreeBuilder.php +100 -0
- data/vendor/mthaml/mthaml/lib/MtHaml/TreeBuilderException.php +9 -0
- data/vendor/mthaml/mthaml/phpunit.xml +25 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/EnvironmentTest.php +59 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/HamlSpecTest.php +83 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/IndentationTest.php +140 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/Node/DoctypeTest.php +51 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/Node/NodeTest.php +110 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/NodeVisitor/PhpRendererTest.php +113 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/NodeVisitor/TwigRendererTest.php +68 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/NodeVisitorsTest.php +44 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/Parser/BufferTest.php +77 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/ParserTest.php +47 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/RuntimeTest.php +356 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/Support/Php/ExecutorTest.php +83 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/Support/Twig/LoaderTest.php +65 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/TestCase.php +49 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/TestCaseTest.php +50 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/Support/Php/Executor.001.haml +1 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/attr_list_php.test +20 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/attr_list_twig.test +12 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/boolean_attr_php.test +16 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/boolean_attr_twig.test +16 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/bug28_php.test +15 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/bug28_twig.test +15 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/bug42.test +13 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/bug8_twig.test +10 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/coffeescript_filter.test +31 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/comments.test +26 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/cond_cmt.test +25 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/doctype.test +18 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/doctype_html4.test +20 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/doctype_invalid.test +12 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/doctype_invalid_xhtml.test +12 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/doctype_php.test +18 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/doctype_xhtml.test +30 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/filters.test +51 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/insert_non_echo_php.test +11 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/insert_non_echo_twig.test +11 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/interpolation_in_html_attrs_php.test +31 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/interpolation_in_html_attrs_twig.test +31 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/less_filter_leafo.test +33 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/less_filter_oyejorge.test +49 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/markdown_filter_cebemarkdown.test +35 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/markdown_filter_ciconia.test +36 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/markdown_filter_michelf.test +34 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/markdown_filter_parsedown.test +31 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/markdown_optimization_filter_michelf.test +23 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/mergeattrs.test +18 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/nuke_inner_whitespace.test +77 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/nuke_outer_whitespace.test +122 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/object_ref_php.test +14 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/object_ref_twig.test +14 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/php.test +109 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/php_autoescaping.test +22 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/php_autoescaping_once.test +25 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/php_blocks.test +29 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/php_filters.test +42 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/scss_filter.test +32 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/strip_inline_comments_php.test +22 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/test.test +24 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/trailing_semicolon_php.test +14 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/try_catch_php.test +17 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/twig.test +112 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/twig_blocks.test +29 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/twig_filters.test +37 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/twig_whitespace.test +32 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/environment/whitespace.test +63 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/nodevisitors/autoclose.test +30 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/nodevisitors/escaping.test +52 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/nodevisitors/escaping_attr_once.test +52 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/nodevisitors/escaping_html_false.test +52 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/nodevisitors/mergeattrs.test +26 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/nodevisitors/midblock.test +54 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/nodevisitors/midblock_002.test +32 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/attr_list.test +14 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/attrs.test +42 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/attrs_002.test +35 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/attrs_003.test +30 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/attrs_html_linebreak.test +17 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/blocks.test +27 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/blocks_002.test +15 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/boolean_attr.test +19 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/bug28.test +15 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/bug8.test +11 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/cond_cmt.test +23 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/doctype.test +11 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/double_equal.test +7 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/empty_line_after_multiline.test +10 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/errors_001.test +8 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/errors_002.test +8 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/errors_003.test +8 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/errors_004.test +6 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/errors_005.test +5 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/errors_006.test +7 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/errors_007.test +7 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/errors_008.test +7 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/errors_009.test +5 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/errors_010.test +5 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/errors_013.test +5 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/errors_016.test +7 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/errors_017.test +8 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/errors_018.test +6 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/errors_019.test +6 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/errors_020.test +5 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/filters.test +20 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/filters_002.test +19 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/filters_003.test +13 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/filters_004.test +21 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/filters_005.test +22 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/filters_006.test +23 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/insertflags.test +17 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/interpolation.test +36 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/interpolation_in_html_attrs.test +17 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/multiline.test +18 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/multiline_code.test +59 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/multiple_attr_kinds.test +47 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/non_rendered_comment.test +31 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/ns.test +11 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/object_ref.test +22 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/object_ref_error1.test +5 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/object_ref_error2.test +5 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/quotes_in_haml.test +10 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/ruby19_attrs.test +11 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/ruby_attrs_comma.test +23 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/ruby_attrs_comma_errors_001.test +5 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/ruby_attrs_comma_errors_002.test +5 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/ruby_attrs_comma_errors_003.test +5 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/standard.test +114 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/parser/tagflags.test +39 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/runtime/php_filters.test +28 -0
- data/vendor/mthaml/mthaml/test/MtHaml/Tests/fixtures/runtime/twig_filters.test +31 -0
- data/vendor/mthaml/mthaml/test/bootstrap.php +3 -0
- metadata +398 -0
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# Exception Handling
|
|
2
|
+
# ------------------
|
|
3
|
+
|
|
4
|
+
# shared nonce
|
|
5
|
+
nonce = {}
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
# Throw
|
|
9
|
+
|
|
10
|
+
test "basic exception throwing", ->
|
|
11
|
+
throws (-> throw 'error'), 'error'
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
# Empty Try/Catch/Finally
|
|
15
|
+
|
|
16
|
+
test "try can exist alone", ->
|
|
17
|
+
try
|
|
18
|
+
|
|
19
|
+
test "try/catch with empty try, empty catch", ->
|
|
20
|
+
try
|
|
21
|
+
# nothing
|
|
22
|
+
catch err
|
|
23
|
+
# nothing
|
|
24
|
+
|
|
25
|
+
test "single-line try/catch with empty try, empty catch", ->
|
|
26
|
+
try catch err
|
|
27
|
+
|
|
28
|
+
test "try/finally with empty try, empty finally", ->
|
|
29
|
+
try
|
|
30
|
+
# nothing
|
|
31
|
+
finally
|
|
32
|
+
# nothing
|
|
33
|
+
|
|
34
|
+
test "single-line try/finally with empty try, empty finally", ->
|
|
35
|
+
try finally
|
|
36
|
+
|
|
37
|
+
test "try/catch/finally with empty try, empty catch, empty finally", ->
|
|
38
|
+
try
|
|
39
|
+
catch err
|
|
40
|
+
finally
|
|
41
|
+
|
|
42
|
+
test "single-line try/catch/finally with empty try, empty catch, empty finally", ->
|
|
43
|
+
try catch err then finally
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
# Try/Catch/Finally as an Expression
|
|
47
|
+
|
|
48
|
+
test "return the result of try when no exception is thrown", ->
|
|
49
|
+
result = try
|
|
50
|
+
nonce
|
|
51
|
+
catch err
|
|
52
|
+
undefined
|
|
53
|
+
finally
|
|
54
|
+
undefined
|
|
55
|
+
eq nonce, result
|
|
56
|
+
|
|
57
|
+
test "single-line result of try when no exception is thrown", ->
|
|
58
|
+
result = try nonce catch err then undefined
|
|
59
|
+
eq nonce, result
|
|
60
|
+
|
|
61
|
+
test "return the result of catch when an exception is thrown", ->
|
|
62
|
+
fn = ->
|
|
63
|
+
try
|
|
64
|
+
throw ->
|
|
65
|
+
catch err
|
|
66
|
+
nonce
|
|
67
|
+
doesNotThrow fn
|
|
68
|
+
eq nonce, fn()
|
|
69
|
+
|
|
70
|
+
test "single-line result of catch when an exception is thrown", ->
|
|
71
|
+
fn = ->
|
|
72
|
+
try throw (->) catch err then nonce
|
|
73
|
+
doesNotThrow fn
|
|
74
|
+
eq nonce, fn()
|
|
75
|
+
|
|
76
|
+
test "optional catch", ->
|
|
77
|
+
fn = ->
|
|
78
|
+
try throw ->
|
|
79
|
+
nonce
|
|
80
|
+
doesNotThrow fn
|
|
81
|
+
eq nonce, fn()
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
# Try/Catch/Finally Interaction With Other Constructs
|
|
85
|
+
|
|
86
|
+
test "try/catch with empty catch as last statement in a function body", ->
|
|
87
|
+
fn = ->
|
|
88
|
+
try nonce
|
|
89
|
+
catch err
|
|
90
|
+
eq nonce, fn()
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
# Catch leads to broken scoping: #1595
|
|
94
|
+
|
|
95
|
+
test "try/catch with a reused variable name.", ->
|
|
96
|
+
do ->
|
|
97
|
+
try
|
|
98
|
+
inner = 5
|
|
99
|
+
catch inner
|
|
100
|
+
# nothing
|
|
101
|
+
eq typeof inner, 'undefined'
|
|
102
|
+
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
# Formatting
|
|
2
|
+
# ----------
|
|
3
|
+
|
|
4
|
+
# TODO: maybe this file should be split up into their respective sections:
|
|
5
|
+
# operators -> operators
|
|
6
|
+
# array literals -> array literals
|
|
7
|
+
# string literals -> string literals
|
|
8
|
+
# function invocations -> function invocations
|
|
9
|
+
|
|
10
|
+
# * Line Continuation
|
|
11
|
+
# * Property Accesss
|
|
12
|
+
# * Operators
|
|
13
|
+
# * Array Literals
|
|
14
|
+
# * Function Invocations
|
|
15
|
+
# * String Literals
|
|
16
|
+
|
|
17
|
+
doesNotThrow -> CoffeeScript.compile "a = then b"
|
|
18
|
+
|
|
19
|
+
test "multiple semicolon-separated statements in parentheticals", ->
|
|
20
|
+
nonce = {}
|
|
21
|
+
eq nonce, (1; 2; nonce)
|
|
22
|
+
eq nonce, (-> return (1; 2; nonce))()
|
|
23
|
+
|
|
24
|
+
# Line Continuation
|
|
25
|
+
|
|
26
|
+
# Property Access
|
|
27
|
+
|
|
28
|
+
test "chained accesses split on period/newline, backwards and forwards", ->
|
|
29
|
+
str = 'abc'
|
|
30
|
+
result = str.
|
|
31
|
+
split('').
|
|
32
|
+
reverse().
|
|
33
|
+
reverse().
|
|
34
|
+
reverse()
|
|
35
|
+
arrayEq ['c','b','a'], result
|
|
36
|
+
arrayEq ['c','b','a'], str.
|
|
37
|
+
split('').
|
|
38
|
+
reverse().
|
|
39
|
+
reverse().
|
|
40
|
+
reverse()
|
|
41
|
+
result = str
|
|
42
|
+
.split('')
|
|
43
|
+
.reverse()
|
|
44
|
+
.reverse()
|
|
45
|
+
.reverse()
|
|
46
|
+
arrayEq ['c','b','a'], result
|
|
47
|
+
arrayEq ['c','b','a'], str
|
|
48
|
+
.split('')
|
|
49
|
+
.reverse()
|
|
50
|
+
.reverse()
|
|
51
|
+
.reverse()
|
|
52
|
+
arrayEq ['c','b','a'], str.
|
|
53
|
+
split('')
|
|
54
|
+
.reverse().
|
|
55
|
+
reverse()
|
|
56
|
+
.reverse()
|
|
57
|
+
|
|
58
|
+
# Operators
|
|
59
|
+
|
|
60
|
+
test "newline suppression for operators", ->
|
|
61
|
+
six =
|
|
62
|
+
1 +
|
|
63
|
+
2 +
|
|
64
|
+
3
|
|
65
|
+
eq 6, six
|
|
66
|
+
|
|
67
|
+
test "`?.` and `::` should continue lines", ->
|
|
68
|
+
ok not Date
|
|
69
|
+
::
|
|
70
|
+
?.foo
|
|
71
|
+
#eq Object::toString, Date?.
|
|
72
|
+
#prototype
|
|
73
|
+
#::
|
|
74
|
+
#?.foo
|
|
75
|
+
|
|
76
|
+
doesNotThrow -> CoffeeScript.compile """
|
|
77
|
+
oh. yes
|
|
78
|
+
oh?. true
|
|
79
|
+
oh:: return
|
|
80
|
+
"""
|
|
81
|
+
|
|
82
|
+
doesNotThrow -> CoffeeScript.compile """
|
|
83
|
+
a?[b..]
|
|
84
|
+
a?[...b]
|
|
85
|
+
a?[b..c]
|
|
86
|
+
"""
|
|
87
|
+
|
|
88
|
+
# Array Literals
|
|
89
|
+
|
|
90
|
+
test "indented array literals don't trigger whitespace rewriting", ->
|
|
91
|
+
getArgs = -> arguments
|
|
92
|
+
result = getArgs(
|
|
93
|
+
[[[[[],
|
|
94
|
+
[]],
|
|
95
|
+
[[]]]],
|
|
96
|
+
[]])
|
|
97
|
+
eq 1, result.length
|
|
98
|
+
|
|
99
|
+
# Function Invocations
|
|
100
|
+
|
|
101
|
+
doesNotThrow -> CoffeeScript.compile """
|
|
102
|
+
obj = then fn 1,
|
|
103
|
+
1: 1
|
|
104
|
+
a:
|
|
105
|
+
b: ->
|
|
106
|
+
fn c,
|
|
107
|
+
d: e
|
|
108
|
+
f: 1
|
|
109
|
+
"""
|
|
110
|
+
|
|
111
|
+
# String Literals
|
|
112
|
+
|
|
113
|
+
test "indented heredoc", ->
|
|
114
|
+
result = ((_) -> _)(
|
|
115
|
+
"""
|
|
116
|
+
abc
|
|
117
|
+
""")
|
|
118
|
+
eq "abc", result
|
|
119
|
+
|
|
120
|
+
# Nested blocks caused by paren unwrapping
|
|
121
|
+
test "#1492: Nested blocks don't cause double semicolons", ->
|
|
122
|
+
js = CoffeeScript.compile '(0;0)'
|
|
123
|
+
eq -1, js.indexOf ';;'
|
|
124
|
+
|
|
125
|
+
test "#1195 Ignore trailing semicolons (before newlines or as the last char in a program)", ->
|
|
126
|
+
preNewline = (numSemicolons) ->
|
|
127
|
+
"""
|
|
128
|
+
nonce = {}; nonce2 = {}
|
|
129
|
+
f = -> nonce#{Array(numSemicolons+1).join(';')}
|
|
130
|
+
nonce2
|
|
131
|
+
unless f() is nonce then throw new Error('; before linebreak should = newline')
|
|
132
|
+
"""
|
|
133
|
+
CoffeeScript.run(preNewline(n), bare: true) for n in [1,2,3]
|
|
134
|
+
|
|
135
|
+
lastChar = '-> lastChar;'
|
|
136
|
+
doesNotThrow -> CoffeeScript.compile lastChar, bare: true
|
|
137
|
+
|
|
138
|
+
test "#1299: Disallow token misnesting", ->
|
|
139
|
+
try
|
|
140
|
+
CoffeeScript.compile '''
|
|
141
|
+
[{
|
|
142
|
+
]}
|
|
143
|
+
'''
|
|
144
|
+
ok no
|
|
145
|
+
catch e
|
|
146
|
+
eq 'unmatched ] on line 2', e.message
|
|
@@ -0,0 +1,552 @@
|
|
|
1
|
+
# Function Invocation
|
|
2
|
+
# -------------------
|
|
3
|
+
|
|
4
|
+
# * Function Invocation
|
|
5
|
+
# * Splats in Function Invocations
|
|
6
|
+
# * Implicit Returns
|
|
7
|
+
# * Explicit Returns
|
|
8
|
+
|
|
9
|
+
# shared identity function
|
|
10
|
+
id = (_) -> if arguments.length is 1 then _ else [arguments...]
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
test "basic argument passing", ->
|
|
14
|
+
|
|
15
|
+
a = {}
|
|
16
|
+
b = {}
|
|
17
|
+
c = {}
|
|
18
|
+
eq 1, (id 1)
|
|
19
|
+
eq 2, (id 1, 2)[1]
|
|
20
|
+
eq a, (id a)
|
|
21
|
+
eq c, (id a, b, c)[2]
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
test "passing arguments on separate lines", ->
|
|
25
|
+
|
|
26
|
+
a = {}
|
|
27
|
+
b = {}
|
|
28
|
+
c = {}
|
|
29
|
+
ok(id(
|
|
30
|
+
a
|
|
31
|
+
b
|
|
32
|
+
c
|
|
33
|
+
)[1] is b)
|
|
34
|
+
eq(0, id(
|
|
35
|
+
0
|
|
36
|
+
10
|
|
37
|
+
)[0])
|
|
38
|
+
eq(a,id(
|
|
39
|
+
a
|
|
40
|
+
))
|
|
41
|
+
eq b,
|
|
42
|
+
(id b)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
test "optional parens can be used in a nested fashion", ->
|
|
46
|
+
|
|
47
|
+
call = (func) -> func()
|
|
48
|
+
add = (a,b) -> a + b
|
|
49
|
+
result = call ->
|
|
50
|
+
inner = call ->
|
|
51
|
+
add 5, 5
|
|
52
|
+
ok result is 10
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
test "hanging commas and semicolons in argument list", ->
|
|
56
|
+
|
|
57
|
+
fn = () -> arguments.length
|
|
58
|
+
eq 2, fn(0,1,)
|
|
59
|
+
eq 3, fn 0, 1,
|
|
60
|
+
2
|
|
61
|
+
eq 2, fn(0, 1;)
|
|
62
|
+
# TODO: this test fails (the string compiles), but should it?
|
|
63
|
+
#throws -> CoffeeScript.compile "fn(0,1,;)"
|
|
64
|
+
throws -> CoffeeScript.compile "fn(0,1,;;)"
|
|
65
|
+
throws -> CoffeeScript.compile "fn(0, 1;,)"
|
|
66
|
+
throws -> CoffeeScript.compile "fn(,0)"
|
|
67
|
+
throws -> CoffeeScript.compile "fn(;0)"
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
test "function invocation", ->
|
|
71
|
+
|
|
72
|
+
func = ->
|
|
73
|
+
return if true
|
|
74
|
+
eq undefined, func()
|
|
75
|
+
|
|
76
|
+
result = ("hello".slice) 3
|
|
77
|
+
ok result is 'lo'
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
test "And even with strange things like this:", ->
|
|
81
|
+
|
|
82
|
+
funcs = [((x) -> x), ((x) -> x * x)]
|
|
83
|
+
result = funcs[1] 5
|
|
84
|
+
ok result is 25
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
test "More fun with optional parens.", ->
|
|
88
|
+
|
|
89
|
+
fn = (arg) -> arg
|
|
90
|
+
ok fn(fn {prop: 101}).prop is 101
|
|
91
|
+
|
|
92
|
+
okFunc = (f) -> ok(f())
|
|
93
|
+
okFunc -> true
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
test "chained function calls", ->
|
|
97
|
+
nonce = {}
|
|
98
|
+
identityWrap = (x) ->
|
|
99
|
+
-> x
|
|
100
|
+
eq nonce, identityWrap(identityWrap(nonce))()()
|
|
101
|
+
eq nonce, (identityWrap identityWrap nonce)()()
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
test "Multi-blocks with optional parens.", ->
|
|
105
|
+
|
|
106
|
+
fn = (arg) -> arg
|
|
107
|
+
result = fn( ->
|
|
108
|
+
fn ->
|
|
109
|
+
"Wrapped"
|
|
110
|
+
)
|
|
111
|
+
ok result()() is 'Wrapped'
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
test "method calls", ->
|
|
115
|
+
|
|
116
|
+
fnId = (fn) -> -> fn.apply this, arguments
|
|
117
|
+
math = {
|
|
118
|
+
add: (a, b) -> a + b
|
|
119
|
+
anonymousAdd: (a, b) -> a + b
|
|
120
|
+
fastAdd: fnId (a, b) -> a + b
|
|
121
|
+
}
|
|
122
|
+
ok math.add(5, 5) is 10
|
|
123
|
+
ok math.anonymousAdd(10, 10) is 20
|
|
124
|
+
ok math.fastAdd(20, 20) is 40
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
test "Ensure that functions can have a trailing comma in their argument list", ->
|
|
128
|
+
|
|
129
|
+
mult = (x, mids..., y) ->
|
|
130
|
+
x *= n for n in mids
|
|
131
|
+
x *= y
|
|
132
|
+
ok mult(1, 2,) is 2
|
|
133
|
+
ok mult(1, 2, 3,) is 6
|
|
134
|
+
ok mult(10, (i for i in [1..6])...) is 7200
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
test "`@` and `this` should both be able to invoke a method", ->
|
|
138
|
+
nonce = {}
|
|
139
|
+
fn = (arg) -> eq nonce, arg
|
|
140
|
+
fn.withAt = -> @ nonce
|
|
141
|
+
fn.withThis = -> this nonce
|
|
142
|
+
fn.withAt()
|
|
143
|
+
fn.withThis()
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
test "Trying an implicit object call with a trailing function.", ->
|
|
147
|
+
|
|
148
|
+
a = null
|
|
149
|
+
meth = (arg, obj, func) -> a = [obj.a, arg, func()].join ' '
|
|
150
|
+
meth 'apple', b: 1, a: 13, ->
|
|
151
|
+
'orange'
|
|
152
|
+
ok a is '13 apple orange'
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
test "Ensure that empty functions don't return mistaken values.", ->
|
|
156
|
+
|
|
157
|
+
obj =
|
|
158
|
+
func: (@param, @rest...) ->
|
|
159
|
+
ok obj.func(101, 102, 103, 104) is undefined
|
|
160
|
+
ok obj.param is 101
|
|
161
|
+
ok obj.rest.join(' ') is '102 103 104'
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
test "Passing multiple functions without paren-wrapping is legal, and should compile.", ->
|
|
165
|
+
|
|
166
|
+
sum = (one, two) -> one() + two()
|
|
167
|
+
result = sum ->
|
|
168
|
+
7 + 9
|
|
169
|
+
, ->
|
|
170
|
+
1 + 3
|
|
171
|
+
ok result is 20
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
test "Implicit call with a trailing if statement as a param.", ->
|
|
175
|
+
|
|
176
|
+
func = -> arguments[1]
|
|
177
|
+
result = func 'one', if false then 100 else 13
|
|
178
|
+
ok result is 13
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
test "Test more function passing:", ->
|
|
182
|
+
|
|
183
|
+
sum = (one, two) -> one() + two()
|
|
184
|
+
|
|
185
|
+
result = sum( ->
|
|
186
|
+
1 + 2
|
|
187
|
+
, ->
|
|
188
|
+
2 + 1
|
|
189
|
+
)
|
|
190
|
+
ok result is 6
|
|
191
|
+
|
|
192
|
+
sum = (a, b) -> a + b
|
|
193
|
+
result = sum(1
|
|
194
|
+
, 2)
|
|
195
|
+
ok result is 3
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
test "Chained blocks, with proper indentation levels:", ->
|
|
199
|
+
|
|
200
|
+
counter =
|
|
201
|
+
results: []
|
|
202
|
+
tick: (func) ->
|
|
203
|
+
@results.push func()
|
|
204
|
+
this
|
|
205
|
+
counter
|
|
206
|
+
.tick ->
|
|
207
|
+
3
|
|
208
|
+
.tick ->
|
|
209
|
+
2
|
|
210
|
+
.tick ->
|
|
211
|
+
1
|
|
212
|
+
arrayEq [3,2,1], counter.results
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
test "This is a crazy one.", ->
|
|
216
|
+
|
|
217
|
+
x = (obj, func) -> func obj
|
|
218
|
+
ident = (x) -> x
|
|
219
|
+
result = x {one: ident 1}, (obj) ->
|
|
220
|
+
inner = ident(obj)
|
|
221
|
+
ident inner
|
|
222
|
+
ok result.one is 1
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
test "More paren compilation tests:", ->
|
|
226
|
+
|
|
227
|
+
reverse = (obj) -> obj.reverse()
|
|
228
|
+
ok reverse([1, 2].concat 3).join(' ') is '3 2 1'
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
test "Test for inline functions with parentheses and implicit calls.", ->
|
|
232
|
+
|
|
233
|
+
combine = (func, num) -> func() * num
|
|
234
|
+
result = combine (-> 1 + 2), 3
|
|
235
|
+
ok result is 9
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
test "Test for calls/parens/multiline-chains.", ->
|
|
239
|
+
|
|
240
|
+
f = (x) -> x
|
|
241
|
+
result = (f 1).toString()
|
|
242
|
+
.length
|
|
243
|
+
ok result is 1
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
test "Test implicit calls in functions in parens:", ->
|
|
247
|
+
|
|
248
|
+
result = ((val) ->
|
|
249
|
+
[].push val
|
|
250
|
+
val
|
|
251
|
+
)(10)
|
|
252
|
+
ok result is 10
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
test "Ensure that chained calls with indented implicit object literals below are alright.", ->
|
|
256
|
+
|
|
257
|
+
result = null
|
|
258
|
+
obj =
|
|
259
|
+
method: (val) -> this
|
|
260
|
+
second: (hash) -> result = hash.three
|
|
261
|
+
obj
|
|
262
|
+
.method(
|
|
263
|
+
101
|
|
264
|
+
).second(
|
|
265
|
+
one:
|
|
266
|
+
two: 2
|
|
267
|
+
three: 3
|
|
268
|
+
)
|
|
269
|
+
eq result, 3
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
test "Test newline-supressed call chains with nested functions.", ->
|
|
273
|
+
|
|
274
|
+
obj =
|
|
275
|
+
call: -> this
|
|
276
|
+
func = ->
|
|
277
|
+
obj
|
|
278
|
+
.call ->
|
|
279
|
+
one two
|
|
280
|
+
.call ->
|
|
281
|
+
three four
|
|
282
|
+
101
|
|
283
|
+
eq func(), 101
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
test "Implicit objects with number arguments.", ->
|
|
287
|
+
|
|
288
|
+
func = (x, y) -> y
|
|
289
|
+
obj =
|
|
290
|
+
prop: func "a", 1
|
|
291
|
+
ok obj.prop is 1
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
test "Non-spaced unary and binary operators should cause a function call.", ->
|
|
295
|
+
|
|
296
|
+
func = (val) -> val + 1
|
|
297
|
+
ok (func +5) is 6
|
|
298
|
+
ok (func -5) is -4
|
|
299
|
+
|
|
300
|
+
|
|
301
|
+
test "Prefix unary assignment operators are allowed in parenless calls.", ->
|
|
302
|
+
|
|
303
|
+
func = (val) -> val + 1
|
|
304
|
+
val = 5
|
|
305
|
+
ok (func --val) is 5
|
|
306
|
+
|
|
307
|
+
test "#855: execution context for `func arr...` should be `null`", ->
|
|
308
|
+
contextTest = -> eq @, if window? then window else global
|
|
309
|
+
array = []
|
|
310
|
+
contextTest array
|
|
311
|
+
contextTest.apply null, array
|
|
312
|
+
contextTest array...
|
|
313
|
+
|
|
314
|
+
test "#904: Destructuring function arguments with same-named variables in scope", ->
|
|
315
|
+
a = b = nonce = {}
|
|
316
|
+
fn = ([a,b]) -> {a:a,b:b}
|
|
317
|
+
result = fn([c={},d={}])
|
|
318
|
+
eq c, result.a
|
|
319
|
+
eq d, result.b
|
|
320
|
+
eq nonce, a
|
|
321
|
+
eq nonce, b
|
|
322
|
+
|
|
323
|
+
test "Simple Destructuring function arguments with same-named variables in scope", ->
|
|
324
|
+
x = 1
|
|
325
|
+
f = ([x]) -> x
|
|
326
|
+
eq f([2]), 2
|
|
327
|
+
eq x, 1
|
|
328
|
+
|
|
329
|
+
test "caching base value", ->
|
|
330
|
+
|
|
331
|
+
obj =
|
|
332
|
+
index: 0
|
|
333
|
+
0: {method: -> this is obj[0]}
|
|
334
|
+
ok obj[obj.index++].method([]...)
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
test "passing splats to functions", ->
|
|
338
|
+
arrayEq [0..4], id id [0..4]...
|
|
339
|
+
fn = (a, b, c..., d) -> [a, b, c, d]
|
|
340
|
+
range = [0..3]
|
|
341
|
+
[first, second, others, last] = fn range..., 4, [5...8]...
|
|
342
|
+
eq 0, first
|
|
343
|
+
eq 1, second
|
|
344
|
+
arrayEq [2..6], others
|
|
345
|
+
eq 7, last
|
|
346
|
+
|
|
347
|
+
test "splat variables are local to the function", ->
|
|
348
|
+
outer = "x"
|
|
349
|
+
clobber = (avar, outer...) -> outer
|
|
350
|
+
clobber "foo", "bar"
|
|
351
|
+
eq "x", outer
|
|
352
|
+
|
|
353
|
+
|
|
354
|
+
test "Issue 894: Splatting against constructor-chained functions.", ->
|
|
355
|
+
|
|
356
|
+
x = null
|
|
357
|
+
class Foo
|
|
358
|
+
bar: (y) -> x = y
|
|
359
|
+
new Foo().bar([101]...)
|
|
360
|
+
eq x, 101
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
test "Functions with splats being called with too few arguments.", ->
|
|
364
|
+
|
|
365
|
+
pen = null
|
|
366
|
+
method = (first, variable..., penultimate, ultimate) ->
|
|
367
|
+
pen = penultimate
|
|
368
|
+
method 1, 2, 3, 4, 5, 6, 7, 8, 9
|
|
369
|
+
ok pen is 8
|
|
370
|
+
method 1, 2, 3
|
|
371
|
+
ok pen is 2
|
|
372
|
+
method 1, 2
|
|
373
|
+
ok pen is 2
|
|
374
|
+
|
|
375
|
+
|
|
376
|
+
test "splats with super() within classes.", ->
|
|
377
|
+
|
|
378
|
+
class Parent
|
|
379
|
+
meth: (args...) ->
|
|
380
|
+
args
|
|
381
|
+
class Child extends Parent
|
|
382
|
+
meth: ->
|
|
383
|
+
nums = [3, 2, 1]
|
|
384
|
+
super nums...
|
|
385
|
+
ok (new Child).meth().join(' ') is '3 2 1'
|
|
386
|
+
|
|
387
|
+
|
|
388
|
+
test "#1011: passing a splat to a method of a number", ->
|
|
389
|
+
eq '1011', 11.toString [2]...
|
|
390
|
+
eq '1011', (31).toString [3]...
|
|
391
|
+
eq '1011', 69.0.toString [4]...
|
|
392
|
+
eq '1011', (131.0).toString [5]...
|
|
393
|
+
|
|
394
|
+
|
|
395
|
+
test "splats and the `new` operator: functions that return `null` should construct their instance", ->
|
|
396
|
+
args = []
|
|
397
|
+
child = new (constructor = -> null) args...
|
|
398
|
+
ok child instanceof constructor
|
|
399
|
+
|
|
400
|
+
test "splats and the `new` operator: functions that return functions should construct their return value", ->
|
|
401
|
+
args = []
|
|
402
|
+
fn = ->
|
|
403
|
+
child = new (constructor = -> fn) args...
|
|
404
|
+
ok child not instanceof constructor
|
|
405
|
+
eq fn, child
|
|
406
|
+
|
|
407
|
+
test "implicit return", ->
|
|
408
|
+
|
|
409
|
+
eq ok, new ->
|
|
410
|
+
ok
|
|
411
|
+
### Should `return` implicitly ###
|
|
412
|
+
### even with trailing comments. ###
|
|
413
|
+
|
|
414
|
+
|
|
415
|
+
test "implicit returns with multiple branches", ->
|
|
416
|
+
nonce = {}
|
|
417
|
+
fn = ->
|
|
418
|
+
if false
|
|
419
|
+
for a in b
|
|
420
|
+
return c if d
|
|
421
|
+
else
|
|
422
|
+
nonce
|
|
423
|
+
eq nonce, fn()
|
|
424
|
+
|
|
425
|
+
|
|
426
|
+
test "implicit returns with switches", ->
|
|
427
|
+
nonce = {}
|
|
428
|
+
fn = ->
|
|
429
|
+
switch nonce
|
|
430
|
+
when nonce then nonce
|
|
431
|
+
else return undefined
|
|
432
|
+
eq nonce, fn()
|
|
433
|
+
|
|
434
|
+
|
|
435
|
+
test "preserve context when generating closure wrappers for expression conversions", ->
|
|
436
|
+
nonce = {}
|
|
437
|
+
obj =
|
|
438
|
+
property: nonce
|
|
439
|
+
method: ->
|
|
440
|
+
this.result = if false
|
|
441
|
+
10
|
|
442
|
+
else
|
|
443
|
+
"a"
|
|
444
|
+
"b"
|
|
445
|
+
this.property
|
|
446
|
+
eq nonce, obj.method()
|
|
447
|
+
eq nonce, obj.property
|
|
448
|
+
|
|
449
|
+
|
|
450
|
+
test "don't wrap 'pure' statements in a closure", ->
|
|
451
|
+
nonce = {}
|
|
452
|
+
items = [0, 1, 2, 3, nonce, 4, 5]
|
|
453
|
+
fn = (items) ->
|
|
454
|
+
for item in items
|
|
455
|
+
return item if item is nonce
|
|
456
|
+
eq nonce, fn items
|
|
457
|
+
|
|
458
|
+
|
|
459
|
+
test "usage of `new` is careful about where the invocation parens end up", ->
|
|
460
|
+
eq 'object', typeof new try Array
|
|
461
|
+
eq 'object', typeof new do -> ->
|
|
462
|
+
|
|
463
|
+
|
|
464
|
+
test "implicit call against control structures", ->
|
|
465
|
+
result = null
|
|
466
|
+
save = (obj) -> result = obj
|
|
467
|
+
|
|
468
|
+
save switch id false
|
|
469
|
+
when true
|
|
470
|
+
'true'
|
|
471
|
+
when false
|
|
472
|
+
'false'
|
|
473
|
+
|
|
474
|
+
eq result, 'false'
|
|
475
|
+
|
|
476
|
+
save if id false
|
|
477
|
+
'false'
|
|
478
|
+
else
|
|
479
|
+
'true'
|
|
480
|
+
|
|
481
|
+
eq result, 'true'
|
|
482
|
+
|
|
483
|
+
save unless id false
|
|
484
|
+
'true'
|
|
485
|
+
else
|
|
486
|
+
'false'
|
|
487
|
+
|
|
488
|
+
eq result, 'true'
|
|
489
|
+
|
|
490
|
+
save try
|
|
491
|
+
doesnt exist
|
|
492
|
+
catch error
|
|
493
|
+
'caught'
|
|
494
|
+
|
|
495
|
+
eq result, 'caught'
|
|
496
|
+
|
|
497
|
+
save try doesnt(exist) catch error then 'caught2'
|
|
498
|
+
|
|
499
|
+
eq result, 'caught2'
|
|
500
|
+
|
|
501
|
+
|
|
502
|
+
test "#1420: things like `(fn() ->)`; there are no words for this one", ->
|
|
503
|
+
fn = -> (f) -> f()
|
|
504
|
+
nonce = {}
|
|
505
|
+
eq nonce, (fn() -> nonce)
|
|
506
|
+
|
|
507
|
+
test "#1416: don't omit one 'new' when compiling 'new new'", ->
|
|
508
|
+
nonce = {}
|
|
509
|
+
obj = new new -> -> {prop: nonce}
|
|
510
|
+
eq obj.prop, nonce
|
|
511
|
+
|
|
512
|
+
test "#1416: don't omit one 'new' when compiling 'new new fn()()'", ->
|
|
513
|
+
nonce = {}
|
|
514
|
+
argNonceA = {}
|
|
515
|
+
argNonceB = {}
|
|
516
|
+
fn = (a) -> (b) -> {a, b, prop: nonce}
|
|
517
|
+
obj = new new fn(argNonceA)(argNonceB)
|
|
518
|
+
eq obj.prop, nonce
|
|
519
|
+
eq obj.a, argNonceA
|
|
520
|
+
eq obj.b, argNonceB
|
|
521
|
+
|
|
522
|
+
test "#1840: accessing the `prototype` after function invocation should compile", ->
|
|
523
|
+
doesNotThrow -> CoffeeScript.compile 'fn()::prop'
|
|
524
|
+
|
|
525
|
+
nonce = {}
|
|
526
|
+
class Test then id: nonce
|
|
527
|
+
|
|
528
|
+
dotAccess = -> Test::
|
|
529
|
+
protoAccess = -> Test
|
|
530
|
+
|
|
531
|
+
eq dotAccess().id, nonce
|
|
532
|
+
eq protoAccess()::id, nonce
|
|
533
|
+
|
|
534
|
+
test "#960: improved 'do'", ->
|
|
535
|
+
|
|
536
|
+
do (nonExistent = 'one') ->
|
|
537
|
+
eq nonExistent, 'one'
|
|
538
|
+
|
|
539
|
+
overridden = 1
|
|
540
|
+
do (overridden = 2) ->
|
|
541
|
+
eq overridden, 2
|
|
542
|
+
|
|
543
|
+
two = 2
|
|
544
|
+
do (one = 1, two, three = 3) ->
|
|
545
|
+
eq one, 1
|
|
546
|
+
eq two, 2
|
|
547
|
+
eq three, 3
|
|
548
|
+
|
|
549
|
+
ret = do func = (two) ->
|
|
550
|
+
eq two, 2
|
|
551
|
+
func
|
|
552
|
+
eq ret, func
|