From 6a9bce9793c2e6015c54f55c6c9a8679429abe4a Mon Sep 17 00:00:00 2001 From: Chris Coyne Date: Wed, 1 Aug 2012 15:30:54 -0300 Subject: [PATCH 001/132] Update README.md --- README.md | 79 ++++++++++++++++++++++++------------------------------- 1 file changed, 34 insertions(+), 45 deletions(-) diff --git a/README.md b/README.md index 8793049..124775d 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,20 @@ TOFFEE ========= -A templating language based on the simplicity and beauty of CoffeeScript. -Compatible with node (including Express 2.x, 3.x) and, very soon, the browser. In Express 3.x, the Toffee engine handles partials/includes -and smart view caching. +*Toffee* is a templating language developed at OkCupid, based on the simplicity and beauty of CoffeeScript. + * it works with nodeJS (including Express 2.x and 3.x) + * it works in the browser, too! + * it does not require that you use CoffeeScript elsewhere in your project. -status -====== -Beta! And usable! If you hit any snags, let me know and I'll act fast. +Table of Contents +================= + * [1. Language Basics](#section_1) + * [2. Notes on Escaping](#section_2) + * [3. Common Questions](#section_3) + * [4. Installation & Usage](#section_4) + +## 1. Language Basics -examples -======== -Printing variables is easy. Just use CoffeeScript's #{} syntax: +Printing variables in Toffee is easy. Just use CoffeeScript's #{} syntax: ```html
Hey, #{user.name}. @@ -110,8 +114,8 @@ With nested code, indentation is inferred. #} ``` -Switching to toffee mode without indenting ------ +### Switching to toffee mode without indenting + By default, when you enter `{: ... :}`, the Toffee compiler assumes you're entering an indented region, probably because of a loop or conditional. If you ever want to cut into toffee mode without indenting, use `-{: ... :}`. For example: @@ -135,8 +139,8 @@ The above is identical to: Well, it's not exactly identical. Let's talk about escaping. -escaping: how it works -============== +## 2. Escaping + In your CoffeeScript, the `print` function lets you print the raw value of a variable: ``` @@ -158,8 +162,7 @@ You can control the escaping, but here are the defaults: * if it's a string or scalar, it is escaped for HTML safety. * it's an array or object, it is converted to JSON. -escaping overrides ----------------- +### Custom Escaping You can bypass the above rules. @@ -195,11 +198,10 @@ Turning off autoescaping entirely: * If you set `autoEscape: false` when creating the engine, the default will be raw across your project. (See more on that below under Express 3.x settings.) * Alternatively, you could pass the var `escape: (x) -> x` to turn off escaping for a given template. -questions -======== +## 3. Common Questions + +#### How does it compare to eco? -How does it compare to eco? --------------------------- Eco is another CoffeeScript templating language and inspiration for Toffee. The syntaxes are pretty different, so pick the one you prefer. @@ -231,12 +233,12 @@ With Toffee's syntax, brackets enclose regions not directives, so your editor will let you collapse and expand sections of code. And if you click on one of the brackets in most editors, it will highlight the matching bracket. -Does it cache templates? ------------------------- +#### Does it cache templates? + In Express 2.0, that's up to Express. When used in Express 3.0, Toffee asynchronously monitors known templates and recompiles them in the background when necessary. So you don't need to restart your production webserver whenever you edit a template. -Does it find line numbers in errors? ------------------------------------ +#### Does it find line numbers in errors? + Yes, Toffee does a very good job of that. There are 3 possible places you can hit an error in Toffee: * in the language itself, say a parse error * in the CoffeeScript, preventing it from compiling to JS @@ -246,10 +248,10 @@ Stack traces are converted to lines in Toffee and show you where the problem is. By default when Toffee hits an error it replies with some pretty-printed HTML showing you the problem. This can be overridden, as explained below in the Express 3.0 section. -Does it support partials? (a.k.a includes) -------------------------- -Yes. In Express 2.0, Express itself is responsible for including other files, and they call this system "partials." In Express 3.0, Toffee defines the `partial` function, and it -works as you'd expect. +### Does it support partials? (a.k.a includes) + +Yes. In Express 2.0, Express itself is responsible for including other files, and they call this system "partials." In Express 3.0 and in the browser, +Toffee defines the `partial` function, and it works as you'd expect. ```html
#{partial '../foo/bar.toffee', name: "Chris"}
@@ -278,14 +280,14 @@ For example, in the above code, `session` would also be available in the user_me #} ``` -Does it support `layout`? -------------------------- +#### Does it support `layout`? + Yes, this works in Express 3.0, emulating the Express 2.0 way. If you publish a file `foo.toffee` and pass a `layout` filename to it as a var, `foo.toffee` is rendered, and the results are put into a var called `body`. Then your layout is rendered, using all your vars plus the new `body` var. -How does the indentation work? ------ +#### How does the indentation work? + Toffee realigns all your coffeescript inside a `{# region #}` by normalizing the indentation of that region. So it doesn't matter how you indent things, as long as it makes local sense inside that region. @@ -333,21 +335,8 @@ ERROR In the above 2 cases, note that the leading whitespaces before the `if` and `else` are different, which is a CoffeeScript error. +## 4 Installation & Usage - -Comments ------ -Inside a region of coffee, you can use coffee's `#` or `###` syntax to comment. -Inside toffee mode, you can comment with `{## ... ##}`. - -``` -{## This isn't output ##} -But this is. -``` - - -installation & usage -=========== ``` npm install -g toffee ``` From d7e395891b013c06ad4d45da2411791733f25ea8 Mon Sep 17 00:00:00 2001 From: Chris Coyne Date: Wed, 1 Aug 2012 15:31:45 -0300 Subject: [PATCH 002/132] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 124775d..ed547f1 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ The `#{}` syntax is powerful, so be responsible.

``` -Including other files is possible thanks to the function `partial`. This works in Express 3.0, too. +Including other files is possible thanks to the function `partial`. This in Express (both versions) and in the browser. ```html

From b36e9bbe2e98063b1fbb33302ad0dd3bb4e4499a Mon Sep 17 00:00:00 2001 From: Chris Coyne Date: Wed, 1 Aug 2012 15:32:09 -0300 Subject: [PATCH 003/132] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ed547f1..2801baa 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ The `#{}` syntax is powerful, so be responsible.

``` -Including other files is possible thanks to the function `partial`. This in Express (both versions) and in the browser. +Including other files is possible thanks to the function `partial`. This in both Express and the browser. ```html

From bd102b78074ba47aebcbf96a8ffbea7d38d63066 Mon Sep 17 00:00:00 2001 From: "ccoyne77@gmail.com" Date: Wed, 1 Aug 2012 15:38:04 -0400 Subject: [PATCH 004/132] better json fn --- src/view.coffee | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/view.coffee b/src/view.coffee index f7ff125..ecb280a 100644 --- a/src/view.coffee +++ b/src/view.coffee @@ -26,11 +26,8 @@ if not toffee.templates then toffee.templates = {} toffee.states = #{JSON.stringify states} toffee.__json = (locals, o) -> - try - json = JSON.stringify(o).replace(//g,'\\\\u003E').replace(/&/g,'\\\\u0026') - catch e - throw {stack:[], message: "JSONify error (\#{e.message}) on line \#{locals.__toffee.lineno}", toffee_line_base: locals.__toffee.lineno } - "" + json + if not o? then return "null" + else return "" + JSON.stringify(o).replace(//g,'\\\\u003E').replace(/&/g,'\\\\u0026') toffee.__raw = (locals, o) -> o From 381f35c51edde3e92859ede41f74fea16a9bd906 Mon Sep 17 00:00:00 2001 From: "ccoyne77@gmail.com" Date: Wed, 1 Aug 2012 15:38:30 -0400 Subject: [PATCH 005/132] better handling of json errors; stripped unused functions out --- Cakefile | 2 +- lib/errorHandler.js | 120 +------ lib/view.js | 2 +- package.json | 2 +- src/errorHandler.coffee | 97 +---- .../express3/public/javascripts/test_cases.js | 340 +++++++++++++++++- 6 files changed, 338 insertions(+), 225 deletions(-) diff --git a/Cakefile b/Cakefile index 1752b49..6f8d166 100644 --- a/Cakefile +++ b/Cakefile @@ -44,7 +44,7 @@ generateExpressTest = (cb) -> # generate the JS file bundling all the tests - proc = spawn 'coffee', ['./src/command_line.coffee', './test/cases', '-m', '-o', './test/express3/public/javascripts/test_cases.js'] + proc = spawn 'coffee', ['./src/command_line.coffee', './test/cases', '-o', './test/express3/public/javascripts/test_cases.js'] proc.stderr.on 'data', (buffer) -> console.log buffer.toString() proc.stdout.on 'data', (buffer) -> console.log buffer.toString() proc.on 'exit', (status) -> diff --git a/lib/errorHandler.js b/lib/errorHandler.js index 24a7947..f487a60 100644 --- a/lib/errorHandler.js +++ b/lib/errorHandler.js @@ -1,6 +1,6 @@ // Generated by CoffeeScript 1.3.3 (function() { - var eh, errorTypes, path, toffeeError, util, _ppEscape; + var errorTypes, path, toffeeError, util, _ppEscape; path = require("path"); @@ -265,8 +265,8 @@ } prev = ol.slice(0, lineno).join("\n"); next = ol.slice(lineno).join("\n"); - prev_matches = prev.match(/_ln[ ]*([0-9]+)/g); - next_matches = next.match(/_ln[ ]*([0-9]+)/g); + prev_matches = prev.match(/_ln[ ]*\([ ]*([0-9]+)/g); + next_matches = next.match(/_ln[ ]*\([ ]*([0-9]+)/g); res = [1, tl.length]; if (prev_matches != null ? prev_matches.length : void 0) { res[0] = parseInt(prev_matches[prev_matches.length - 1].match(/[0-9]+/)[0]); @@ -283,120 +283,6 @@ exports.toffeeError = toffeeError; - eh = exports.errorHandler = { - generateRuntimeError: function(view, e) { - /* - e: the error caught when running - */ - - var after, after_matches, before, msg, new_msg, prev_matches, res, search, src, src_lines, stack, txt_lines; - src = view.javaScript; - msg = e.message; - stack = e.stack; - res = { - src_line: 0, - toffee_line_range: [0, 1], - original_msg: msg, - converted_msg: msg - }; - search = stack.match(/pub\ \(undefined\:([0-9]+):[0-9]+/); - if (!((search != null ? search.length : void 0) >= 2)) { - return res; - } - res.src_line = search[1]; - src_lines = src.split('\n'); - txt_lines = view.txt.split('\n'); - before = src_lines.slice(0, res.src_line).join("\n"); - after = src_lines.slice(res.src_line).join("\n"); - prev_matches = before.match(/__toffee.lineno[ ]*=[ ]*([0-9]+)/g); - after_matches = after.match(/__toffee.lineno[ ]*=[ ]*([0-9]+)/g); - if (prev_matches != null ? prev_matches.length : void 0) { - res.toffee_line_range[0] = parseInt(prev_matches[prev_matches.length - 1].match(/[0-9]+/)[0]); - } else { - res.toffee_line_range[0] = 1; - } - if (after_matches != null ? after_matches.length : void 0) { - res.toffee_line_range[1] = parseInt(after_matches[0].match(/[0-9]+/)[0]); - } else { - res.toffee_line_range[1] = txt_lines.length; - } - res.offensive_lines = txt_lines.slice(res.toffee_line_range[0] - 1, res.toffee_line_range[1] - 1); - if (res.toffee_line_range[0] === res.toffee_line_range[1] - 1) { - new_msg = "on line " + res.toffee_line_range[0]; - } else { - new_msg = "between lines " + res.toffee_line_range[0] + " and " + res.toffee_line_range[1]; - } - res.converted_msg = res.original_msg + " " + new_msg; - if (view.fileName) { - res.converted_msg = "" + view.fileName + ": " + res.converted_msg; - } - return res; - }, - generateCompileToJsError: function(view, e) { - /* - e: the error caught when compiling - */ - - var msg, new_msg, res, search, src; - src = view.coffeeScript; - msg = e.message; - res = { - src_line: 0, - toffee_line_range: [0, 1], - original_msg: msg, - converted_msg: msg - }; - search = msg.match(/on line ([0-9]+)/); - if ((search != null ? search.length : void 0) >= 2) { - res.src_line = search[1]; - res.toffee_line_range = this._convertSrcLineToToffeeRange(view.coffeeScript, res.src_line); - res.offensive_lines = txt_lines.slice(res.toffee_line_range[0] - 1, res.toffee_line_range[1] - 1); - if (res.toffee_line_range[0] === res.toffee_line_range[1] - 1) { - new_msg = "on line " + res.toffee_line_range[0]; - } else { - new_msg = "between lines " + res.toffee_line_range[0] + " and " + res.toffee_line_range[1]; - } - res.converted_msg = res.original_msg.replace("on line " + res.src_line, new_msg); - if (view.fileName) { - res.converted_msg = "" + view.fileName + ": " + res.converted_msg; - } - } - return res; - }, - prettyPrintError: function(view) { - var i, line, lineno, padding, padding_len, res, txt_lines, _i, _ref, _ref1; - if (!view.error) { - return ""; - } else { - res = "

"; - res += "" + (eh._ppEscape(view.error.converted_msg)) + ""; - res += "\n
--------
"; - res += "\n
"; - txt_lines = view.txt.split('\n'); - for (i = _i = _ref = view.error.toffee_line_range[0] - 3, _ref1 = view.error.toffee_line_range[1] + 1; _ref <= _ref1 ? _i < _ref1 : _i > _ref1; i = _ref <= _ref1 ? ++_i : --_i) { - if ((i < 0) || i > txt_lines.length - 1) { - continue; - } - line = eh._ppEscape(txt_lines[i]); - lineno = i + 1; - padding_len = 5 - ("" + lineno).length; - padding = ((function() { - var _j, _results; - _results = []; - for (i = _j = 0; 0 <= padding_len ? _j < padding_len : _j > padding_len; i = 0 <= padding_len ? ++_j : --_j) { - _results.push(" "); - } - return _results; - })()).join(""); - res += "\n" + lineno + ": " + padding + " " + line + "
"; - } - res += "\n
"; - res += "\n
"; - return res; - } - } - }; - _ppEscape = function(txt) { var i, m; txt = txt.replace(/&/g, '&').replace(/\n try\n json = JSON.stringify(o).replace(//g,'\\\\u003E').replace(/&/g,'\\\\u0026')\n catch e\n throw {stack:[], message: \"JSONify error (\#{e.message}) on line \#{locals.__toffee.lineno}\", toffee_line_base: locals.__toffee.lineno }\n \"\" + json\n\ntoffee.__raw = (locals, o) -> o\n\ntoffee.__html = (locals, o) ->\n (\"\"+o).replace(/&/g, '&').replace(//g, '>').replace(/\"/g, '"')\n\ntoffee.__escape = (locals, o) ->\n if (not locals.__toffee.autoEscape?) or locals.__toffee.autoEscape\n if o is undefined then return ''\n if o? and (typeof o) is \"object\" then return locals.json o\n return locals.html o\n return o\n\n" + (include_bundle_headers ? getBundleHeaders() : ""); + return "if not toffee? then toffee = {}\nif not toffee.templates then toffee.templates = {}\n\ntoffee.states = " + (JSON.stringify(states)) + "\n\ntoffee.__json = (locals, o) ->\n if not o? then return \"null\"\n else return \"\" + JSON.stringify(o).replace(//g,'\\\\u003E').replace(/&/g,'\\\\u0026')\n\ntoffee.__raw = (locals, o) -> o\n\ntoffee.__html = (locals, o) ->\n (\"\"+o).replace(/&/g, '&').replace(//g, '>').replace(/\"/g, '"')\n\ntoffee.__escape = (locals, o) ->\n if (not locals.__toffee.autoEscape?) or locals.__toffee.autoEscape\n if o is undefined then return ''\n if o? and (typeof o) is \"object\" then return locals.json o\n return locals.html o\n return o\n\n" + (include_bundle_headers ? getBundleHeaders() : ""); }; getBundleHeaders = function() { diff --git a/package.json b/package.json index 6719b52..596eedb 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "toffee", "description": "An Express 3.x and 2.x templating language based on CoffeeScript with slicker tokens and syntax. Built with love at OkCupid.", - "version": "0.0.30", + "version": "0.0.31", "directories": { "lib": "./lib" }, diff --git a/src/errorHandler.coffee b/src/errorHandler.coffee index 32351e3..6ba24d6 100644 --- a/src/errorHandler.coffee +++ b/src/errorHandler.coffee @@ -218,8 +218,8 @@ class toffeeError prev = ol[0...lineno].join "\n" next = ol[lineno...].join "\n" - prev_matches = prev.match /_ln[ ]*([0-9]+)/g - next_matches = next.match /_ln[ ]*([0-9]+)/g + prev_matches = prev.match /_ln[ ]*\([ ]*([0-9]+)/g + next_matches = next.match /_ln[ ]*\([ ]*([0-9]+)/g res = [1,tl.length] if prev_matches?.length @@ -231,99 +231,6 @@ class toffeeError exports.toffeeError = toffeeError - -# ----------------------------------------------------------------------------- - - - -eh = exports.errorHandler = - - generateRuntimeError: (view, e) -> - ### - e: the error caught when running - ### - src = view.javaScript - msg = e.message - stack = e.stack - - res = - src_line: 0 - toffee_line_range: [0,1] - original_msg: msg - converted_msg: msg - - search = stack.match /pub\ \(undefined\:([0-9]+):[0-9]+/ - if not (search?.length >= 2) then return res - res.src_line = search[1] - src_lines = src.split '\n' - txt_lines = view.txt.split '\n' - before = src_lines[0...res.src_line].join "\n" - after = src_lines[res.src_line...].join "\n" - prev_matches = before.match /__toffee.lineno[ ]*=[ ]*([0-9]+)/g - after_matches = after.match /__toffee.lineno[ ]*=[ ]*([0-9]+)/g - if prev_matches?.length - res.toffee_line_range[0] = parseInt prev_matches[prev_matches.length-1].match(/[0-9]+/)[0] - else - res.toffee_line_range[0] = 1 - if after_matches?.length - res.toffee_line_range[1] = parseInt after_matches[0].match(/[0-9]+/)[0] - else - res.toffee_line_range[1] = txt_lines.length - res.offensive_lines = txt_lines[(res.toffee_line_range[0]-1)...(res.toffee_line_range[1]-1)] - if res.toffee_line_range[0] is res.toffee_line_range[1] - 1 - new_msg = "on line #{res.toffee_line_range[0]}" - else - new_msg = "between lines #{res.toffee_line_range[0]} and #{res.toffee_line_range[1]}" - res.converted_msg = res.original_msg + " " + new_msg - if view.fileName then res.converted_msg = "#{view.fileName}: #{res.converted_msg}" - res - - - generateCompileToJsError: (view, e) -> - ### - e: the error caught when compiling - ### - src = view.coffeeScript - msg = e.message - res = - src_line: 0 - toffee_line_range: [0,1] - original_msg: msg - converted_msg: msg - search = msg.match /on line ([0-9]+)/ - if search?.length >= 2 - res.src_line = search[1] - res.toffee_line_range = @_convertSrcLineToToffeeRange view.coffeeScript, res.src_line - res.offensive_lines = txt_lines[(res.toffee_line_range[0]-1)...(res.toffee_line_range[1]-1)] - if res.toffee_line_range[0] is res.toffee_line_range[1] - 1 - new_msg = "on line #{res.toffee_line_range[0]}" - else - new_msg = "between lines #{res.toffee_line_range[0]} and #{res.toffee_line_range[1]}" - res.converted_msg = res.original_msg.replace "on line #{res.src_line}", new_msg - if view.fileName then res.converted_msg = "#{view.fileName}: #{res.converted_msg}" - res - - prettyPrintError: (view) -> - if not view.error - "" - else - res = """
""" - res += "#{eh._ppEscape view.error.converted_msg}" - res += "\n
--------
" - res += "\n
" - txt_lines = view.txt.split '\n' - for i in [(view.error.toffee_line_range[0]-3)...(view.error.toffee_line_range[1]+1)] - if (i < 0) or i > txt_lines.length - 1 - continue - line = eh._ppEscape txt_lines[i] - lineno = i+1 - padding_len = 5 - ("#{lineno}").length - padding = (" " for i in [0...padding_len]).join "" - res+= "\n#{lineno}: #{padding} #{line}
" - res += "\n
" - res += "\n
" - res - _ppEscape = (txt) -> txt = txt.replace(/&/g, '&').replace(//g, '\\u003E').replace(/&/g, '\\u0026'); - } catch (e) { - throw { - stack: [], - message: "JSONify error (" + e.message + ") on line " + locals.__toffee.lineno, - toffee_line_base: locals.__toffee.lineno - }; + if (!(o != null)) { + return "null"; + } else { + return "" + JSON.stringify(o).replace(//g, '\\u003E').replace(/&/g, '\\u0026'); } - return "" + json; }; toffee.__raw = function(locals, o) { @@ -181,7 +175,9 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { count = 0; for (i = _i = 0; _i < 2; i = ++_i) { _ts(1); + _ln(3); _to("" + (escape(count++))); + _ln(4); _to("... "); _to("" + (escape(count++))); _to("... "); @@ -206,6 +202,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _to("" + (escape(count++))); _to("... "); _to("" + (escape(count++))); + _ln(5); _to("... "); _to("" + (escape(count++))); _to("... "); @@ -232,6 +229,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _to("" + (escape(count++))); _to("... "); _to("" + (escape(count++))); + _ln(6); _to("... "); _to("" + (escape(count++))); _to("... "); @@ -258,6 +256,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _to("" + (escape(count++))); _to("... "); _to("" + (escape(count++))); + _ln(7); _to("... "); _to("" + (escape(count++))); _to("... "); @@ -284,6 +283,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _to("" + (escape(count++))); _to("... "); _to("" + (escape(count++))); + _ln(8); _to("... "); _to("" + (escape(count++))); _to("... "); @@ -292,6 +292,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _to("" + (escape(count++))); _to("... "); _to("" + (escape(count++))); + _ln(9); _to("... "); _to("" + (escape(count++))); _to("... "); @@ -318,12 +319,14 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _to("" + (escape(count++))); _to("... "); _to("" + (escape(count++))); + _ln(10); _to("..."); _ts(2); _ts(2); count += 1; print(" " + count + "..."); _ts(1); + _ln(13); _to(" "); _to("" + (escape(count++))); _to("... "); @@ -350,6 +353,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _to("" + (escape(count++))); _to("... "); _to("" + (escape(count++))); + _ln(14); _to("... "); _to("" + (escape(count++))); _to("... "); @@ -376,6 +380,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _to("" + (escape(count++))); _to("... "); _to("" + (escape(count++))); + _ln(15); _to("... "); _to("" + (escape(count++))); _to("... "); @@ -402,6 +407,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _to("" + (escape(count++))); _to("... "); _to("" + (escape(count++))); + _ln(16); _to("... "); _to("" + (escape(count++))); _to("... "); @@ -428,6 +434,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _to("" + (escape(count++))); _to("... "); _to("" + (escape(count++))); + _ln(17); _to("... "); _to("" + (escape(count++))); _to("... "); @@ -454,6 +461,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _to("" + (escape(count++))); _to("... "); _to("" + (escape(count++))); + _ln(18); _to("... "); _to("" + (escape(count++))); _to("... "); @@ -480,6 +488,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _to("" + (escape(count++))); _to("... "); _to("" + (escape(count++))); + _ln(19); _to("... "); _to("" + (escape(count++))); _to("... "); @@ -506,6 +515,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _to("" + (escape(count++))); _to("... "); _to("" + (escape(count++))); + _ln(20); _to("..."); _ts(2); _ts(2); @@ -592,6 +602,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { __toffee.out = []; _ts(1); _ts(1); + _ln(1); _to("0... 1... 2... 3... 4... 5... 6... 7... 8... 9... 10... 11... 12... 13... 14... 15... 16... 17... 18... 19... 20... 21... 22... 23... 24... 25... 26... 27... 28... 29... 30... 31... 32... 33... 34... 35... 36... 37... 38... 39... 40... 41... 42... 43... 44... 45... 46... 47... 48... 49... 50... 51... 52... 53... 54... 55... 56... 57... 58... 59... 60... 61... 62... 63... 64... 65... 66... 67... 68... 70... 70... 71... 72... 73... 74... 75... 76... 77... 78... 79... 80... 81... 82... 83... 84... 85... 86... 87... 88... 89... 90... 91... 92... 93... 94... 95... 96... 97... 98... 99... 100... 101... 102... 103... 104... 105... 106... 107... 108... 109... 110... 111... 112... 113... 114... 115... 116... 117... 118... 119... 120... 121... 122... 123... 124... 125... 126... 127... 128... 129... 130... 131... 132... 133... 134... 135... 136... 137... 138... 139... 140... 141... 142... 143... 144... 145... 146... 147... 148... 149... 150... 151... 152... 153... 154... 155... 156... 157... 158... 159... 160... 162...162... 163... 164... 165... 166... 167... 168... 169... 170... 171... 172... 173... 174... 175... 176... 177... 178... 179... 180... 181... 182... 183... 184... 185... 186... 187... 188... 189... 190... 191... 192... 193... 194... 195... 196... 197... 198... 199... 200... 201... 202... 203... 204... 205... 206... 207... 208... 209... 210... 211... 212... 213... 214... 215... 216... 217... 218... 219... 220... 221... 222... 223... 224... 225... 226... 227... 228... 229... 230... 232... 232... 233... 234... 235... 236... 237... 238... 239... 240... 241... 242... 243... 244... 245... 246... 247... 248... 249... 250... 251... 252... 253... 254... 255... 256... 257... 258... 259... 260... 261... 262... 263... 264... 265... 266... 267... 268... 269... 270... 271... 272... 273... 274... 275... 276... 277... 278... 279... 280... 281... 282... 283... 284... 285... 286... 287... 288... 289... 290... 291... 292... 293... 294... 295... 296... 297... 298... 299... 300... 301... 302... 303... 304... 305... 306... 307... 308... 309... 310... 311... 312... 313... 314... 315... 316... 317... 318... 319... 320... 321... 322... 324..."); _ts(2); __toffee.res = __toffee.out.join(""); @@ -674,12 +685,18 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { __toffee.out = []; _ts(1); _ts(1); + _ln(1); _to("\n"); + _ln(2); _to("Pass 1\n"); + _ln(3); _ts(2); _ts(1); + _ln(8); _to("\n"); + _ln(9); _to("Pass 2\n"); + _ln(10); _ts(2); _ts(2); /* @@ -688,8 +705,11 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { */ _ts(1); + _ln(19); _to("\n"); + _ln(20); _to("Pass 3\n"); + _ln(21); _ts(2); __toffee.res = __toffee.out.join(""); return __toffee.res; @@ -771,12 +791,19 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { __toffee.out = []; _ts(1); _ts(1); + _ln(1); _to("\n"); + _ln(2); _to("Pass 1\n"); + _ln(3); _to("\n"); + _ln(4); _to("Pass 2\n"); + _ln(5); _to("\n"); + _ln(6); _to("Pass 3\n"); + _ln(7); _ts(2); __toffee.res = __toffee.out.join(""); return __toffee.res; @@ -867,49 +894,69 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { } ]; _ts(1); + _ln(6); _to("

\n"); + _ln(7); _to(" default x = "); _to("" + (x != null ? escape(x) : '')); _to("\n"); + _ln(8); _to(" default y = "); _to("" + (y != null ? escape(y) : '')); _to("\n"); + _ln(9); _to(" default z = "); _to("" + (z != null ? escape(z) : '')); _to("\n"); + _ln(10); _to(" default w = "); _to("" + (w != null ? escape(w) : '')); _to("\n"); + _ln(11); _to("

\n"); + _ln(12); _to("

\n"); + _ln(13); _to(" raw x = "); _to("" + (raw(x))); _to("\n"); + _ln(14); _to(" raw y = "); _to("" + (raw(y))); _to("\n"); + _ln(15); _to(" raw z = "); _to("" + (raw(z))); _to("\n"); + _ln(16); _to(" raw w = "); _to("" + (raw(w))); _to("\n"); + _ln(17); _to("

\n"); + _ln(18); _to("\n"); + _ln(24); _to("

\n"); + _ln(25); _ts(2); _ts(2); print(" raw printed x = " + x + "\n"); @@ -917,7 +964,9 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { print(" raw printed z = " + z + "\n"); print(" raw printed w = " + w); _ts(1); + _ln(30); _to("\n"); + _ln(31); _to("

"); _ts(2); __toffee.res = __toffee.out.join(""); @@ -1000,29 +1049,53 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { __toffee.out = []; _ts(1); _ts(1); + _ln(1); _to("

\n"); + _ln(2); _to(" default x = [\"Hello world\"]\n"); + _ln(3); _to(" default y = []\n"); + _ln(4); _to(" default z = [click&clack]\n"); + _ln(5); _to(" default w = [1,2,[object Object]]\n"); + _ln(6); _to("

\n"); + _ln(7); _to("

\n"); + _ln(8); _to(" raw x = \"Hello world\"\n"); + _ln(9); _to(" raw y = \n"); + _ln(10); _to(" raw z = click&clack\n"); + _ln(11); _to(" raw w = 1,2,[object Object]\n"); + _ln(12); _to("

\n"); + _ln(13); _to("\n"); + _ln(19); _to("

\n"); + _ln(20); _to(" raw printed x = \"Hello world\"\n"); + _ln(21); _to(" raw printed y = \n"); + _ln(22); _to(" raw printed z = click&clack\n"); + _ln(23); _to(" raw printed w = 1,2,[object Object]\n"); + _ln(24); _to("

"); _ts(2); __toffee.res = __toffee.out.join(""); @@ -1121,20 +1194,25 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { for (_i = 0, _len = _ref.length; _i < _len; _i++) { project = _ref[_i]; _ts(1); + _ln(8); _to("\n"); + _ln(9); _to(" "); _to("" + (escape(project.name))); _to("\n"); + _ln(10); _to("

"); _to("" + (escape(project.description))); _to("

\n"); + _ln(11); _to(" "); _ts(2); } } else { _ts(1); + _ln(12); _to(" No projects "); _ts(2); } @@ -1154,8 +1232,11 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { } ]; _ts(1); + _ln(20); _to("\n"); + _ln(21); _to("\n"); + _ln(22); _to("You have "); _to("" + (escape(((function() { var _j, _len1, _results; @@ -1248,14 +1329,23 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { __toffee.out = []; _ts(1); _ts(1); + _ln(1); _to("\n"); + _ln(2); _to(" okcupid\n"); + _ln(3); _to("

A site for singles

\n"); + _ln(4); _to(" \n"); + _ln(5); _to(" tallygram\n"); + _ln(6); _to("

A site for anyone

\n"); + _ln(7); _to(" \n"); + _ln(8); _to("\n"); + _ln(9); _to("You have 3 female friends."); _ts(2); __toffee.res = __toffee.out.join(""); @@ -1347,55 +1437,77 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { } ]; _ts(1); + _ln(6); _to("

\n"); + _ln(7); _to(" default x = "); _to("" + (x != null ? escape(x) : '')); _to("\n"); + _ln(8); _to(" default y = "); _to("" + (y != null ? escape(y) : '')); _to("\n"); + _ln(9); _to(" default z = "); _to("" + (z != null ? escape(z) : '')); _to("\n"); + _ln(10); _to(" default w = "); _to("" + (w != null ? escape(w) : '')); _to("\n"); + _ln(11); _to(" default r = "); _to("" + (typeof r !== "undefined" && r !== null ? escape(r) : '')); _to("\n"); + _ln(12); _to(" default w.foo = "); _to("" + (escape(w.foo))); _to("\n"); + _ln(13); _to("

\n"); + _ln(14); _to("

\n"); + _ln(15); _to(" raw x = "); _to("" + (raw(x))); _to("\n"); + _ln(16); _to(" raw y = "); _to("" + (raw(y))); _to("\n"); + _ln(17); _to(" raw z = "); _to("" + (raw(z))); _to("\n"); + _ln(18); _to(" raw w = "); _to("" + (raw(w))); _to("\n"); + _ln(19); _to("

\n"); + _ln(20); _to("\n"); + _ln(26); _to("

\n"); + _ln(27); _ts(2); _ts(2); print(" raw printed x = " + x + "\n"); @@ -1403,9 +1515,13 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { print(" raw printed z = " + z + "\n"); print(" raw printed w = " + w); _ts(1); + _ln(32); _to("\n"); + _ln(33); _to("

\n"); + _ln(34); _to("

\n"); + _ln(35); _ts(2); _ts(2); print(" json printed x = " + (raw(raw(raw(raw(json(x)))))) + "\n"); @@ -1413,9 +1529,13 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { print(" json printed z = " + (raw(raw(raw(raw(json(z)))))) + "\n"); print(" json printed w = " + (raw(raw(raw(raw(json(w))))))); _ts(1); + _ln(40); _to("\n"); + _ln(41); _to("

\n"); + _ln(42); _to("

\n"); + _ln(43); _ts(2); _ts(2); print(" html printed longhand x = " + (__toffee.html(x)) + "\n"); @@ -1423,7 +1543,9 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { print(" html printed longhand z = " + (__toffee.html(z)) + "\n"); print(" html printed longhand w = " + (__toffee.html(w))); _ts(1); + _ln(48); _to("\n"); + _ln(49); _to("

"); _ts(2); __toffee.res = __toffee.out.join(""); @@ -1506,43 +1628,81 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { __toffee.out = []; _ts(1); _ts(1); + _ln(1); _to("

\n"); + _ln(2); _to(" default x = "Hello world"\n"); + _ln(3); _to(" default y = <hr />\n"); + _ln(4); _to(" default z = click&clack\n"); + _ln(5); _to(" default w = [1,2,{\"place\":\"The Dreadfort\"}]\n"); + _ln(6); _to(" default r = \n"); + _ln(7); _to(" default w.foo = \n"); + _ln(8); _to("

\n"); + _ln(9); _to("

\n"); + _ln(10); _to(" raw x = \"Hello world\"\n"); + _ln(11); _to(" raw y =


\n"); + _ln(12); _to(" raw z = click&clack\n"); + _ln(13); _to(" raw w = 1,2,[object Object]\n"); + _ln(14); _to("

\n"); + _ln(15); _to("\n"); + _ln(21); _to("

\n"); + _ln(22); _to(" raw printed x = \"Hello world\"\n"); + _ln(23); _to(" raw printed y =


\n"); + _ln(24); _to(" raw printed z = click&clack\n"); + _ln(25); _to(" raw printed w = 1,2,[object Object]\n"); + _ln(26); _to("

\n"); + _ln(27); _to("

\n"); + _ln(28); _to(" json printed x = \"\\\"Hello world\\\"\"\n"); + _ln(29); _to(" json printed y = \"\\u003Chr /\\u003E\"\n"); + _ln(30); _to(" json printed z = \"click\\u0026clack\"\n"); + _ln(31); _to(" json printed w = [1,2,{\"place\":\"The Dreadfort\"}]\n"); + _ln(32); _to("

\n"); + _ln(33); _to("

\n"); + _ln(34); _to(" html printed longhand x = "Hello world"\n"); + _ln(35); _to(" html printed longhand y = <hr />\n"); + _ln(36); _to(" html printed longhand z = click&clack\n"); + _ln(37); _to(" html printed longhand w = 1,2,[object Object]\n"); + _ln(38); _to("

"); _ts(2); __toffee.res = __toffee.out.join(""); @@ -1625,6 +1785,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { __toffee.out = []; _ts(1); _ts(1); + _ln(1); _to("" + (typeof greeting !== "undefined" && greeting !== null ? escape(greeting) : '')); _to(", world."); _ts(2); @@ -1708,6 +1869,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { __toffee.out = []; _ts(1); _ts(1); + _ln(1); _to("Hello, world."); _ts(2); __toffee.res = __toffee.out.join(""); @@ -1790,13 +1952,20 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { __toffee.out = []; _ts(1); _ts(1); + _ln(1); _to("a\n"); + _ln(2); _to("b\n"); + _ln(3); _to("c\n"); + _ln(4); _to("" + (escape(passed_fn(100)))); _to("\n"); + _ln(5); _to("d\n"); + _ln(6); _to("e\n"); + _ln(7); _to("f"); _ts(2); __toffee.res = __toffee.out.join(""); @@ -1879,12 +2048,16 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { __toffee.out = []; _ts(1); _ts(1); + _ln(1); _to("a\n"); + _ln(2); _ts(2); _ts(2); say_hi(); _ts(1); + _ln(4); _to("\n"); + _ln(5); _to("b"); _ts(2); __toffee.res = __toffee.out.join(""); @@ -1970,17 +2143,23 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { say_hi = function() { _ts(1); _ts(1); + _ln(3); _to("hi"); return _ts(2); }; _ts(1); + _ln(4); _to("1\n"); + _ln(5); _to("2\n"); + _ln(6); _to("" + (partial("child.toffee", { say_hi: say_hi }))); _to("\n"); + _ln(7); _to("3\n"); + _ln(8); _to("4"); _ts(2); __toffee.res = __toffee.out.join(""); @@ -2063,12 +2242,19 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { __toffee.out = []; _ts(1); _ts(1); + _ln(1); _to("1\n"); + _ln(2); _to("2\n"); + _ln(3); _to("hia\n"); + _ln(4); _to("\n"); + _ln(5); _to("b\n"); + _ln(6); _to("3\n"); + _ln(7); _to("4"); _ts(2); __toffee.res = __toffee.out.join(""); @@ -2153,6 +2339,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts(2); if (countdown === 0) { _ts(1); + _ln(2); _to("blastoff!"); _ts(2); } else { @@ -2240,6 +2427,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { __toffee.out = []; _ts(1); _ts(1); + _ln(1); _to("10...9...8...7...6...5...4...3...2...1...blastoff!"); _ts(2); __toffee.res = __toffee.out.join(""); @@ -2322,14 +2510,17 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { __toffee.out = []; _ts(1); _ts(1); + _ln(1); _to("" + (partial("message.toffee", { from: "Chris " }))); _to("\n"); + _ln(2); _to("" + (partial("message.toffee", { from: "Max & Sam" }))); _to("\n"); + _ln(3); _ts(2); _ts(2); print(partial("message.toffee", { @@ -2337,6 +2528,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { })); _ts(1); _ts(1); + _ln(5); _to("" + (partial("message.toffee", { from: "Jennie" }))); @@ -2426,10 +2618,13 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts(2); from = from || "Unknown"; _ts(1); + _ln(3); _to("From: "); _to("" + (from != null ? escape(from) : '')); _to(" \n"); + _ln(4); _to("Msg: Hello, world\n"); + _ln(5); _ts(2); __toffee.res = __toffee.out.join(""); return __toffee.res; @@ -2511,18 +2706,31 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { __toffee.out = []; _ts(1); _ts(1); + _ln(1); _to("From: Chris <ccoyne77@gmail> \n"); + _ln(2); _to("Msg: Hello, world\n"); + _ln(3); _to("\n"); + _ln(4); _to("From: Max & Sam \n"); + _ln(5); _to("Msg: Hello, world\n"); + _ln(6); _to("\n"); + _ln(7); _to("From: Christian \n"); + _ln(8); _to("Msg: Hello, world\n"); + _ln(9); _to("From: Jennie \n"); + _ln(10); _to("Msg: Hello, world\n"); + _ln(11); _to("From: Unknown \n"); + _ln(12); _to("Msg: Hello, world\n"); + _ln(13); _ts(2); __toffee.res = __toffee.out.join(""); return __toffee.res; @@ -2604,7 +2812,9 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { __toffee.out = []; _ts(1); _ts(1); + _ln(1); _to("
\n"); + _ln(2); _to(" "); _ts(2); _ts(2); @@ -2612,6 +2822,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { if (2 === 2) { if (3 === 3) { _ts(1); + _ln(5); _to("Pass1"); _ts(2); } @@ -2621,10 +2832,12 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { if (2 === 3) { if (3 === 3) { _ts(1); + _ln(9); _to("Fail"); _ts(2); } else { _ts(1); + _ln(11); _to("Fail"); _ts(2); } @@ -2632,6 +2845,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { if (2 === 2) { if (3 === 3) { _ts(1); + _ln(14); _to("Pass2"); _ts(2); } @@ -2639,15 +2853,20 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { } } _ts(1); + _ln(15); _to("\n"); + _ln(16); _to("
\n"); + _ln(17); _to("\n"); + _ln(18); _ts(2); _ts(2); if (1 === 1) { if (2 === 2) { if (3 === 3) { _ts(1); + _ln(21); _to("Pass3"); _ts(2); } @@ -2657,10 +2876,12 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { if (2 === 3) { if (3 === 3) { _ts(1); + _ln(25); _to("Fail"); _ts(2); } else { _ts(1); + _ln(27); _to("Fail"); _ts(2); } @@ -2668,6 +2889,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { if (2 === 2) { if (3 === 3) { _ts(1); + _ln(30); _to("Pass4"); _ts(2); } @@ -2675,15 +2897,20 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { } } _ts(1); + _ln(31); _to("\n"); + _ln(32); _to("
\n"); + _ln(33); _to("\n"); + _ln(34); _ts(2); _ts(2); if (10 === 10) { if (20 === 20) { if (30 === 30) { _ts(1); + _ln(37); _to("Pass5"); _ts(2); } @@ -2693,10 +2920,12 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { if (20 === 30) { if (30 === 30) { _ts(1); + _ln(41); _to("Fail"); _ts(2); } else { _ts(1); + _ln(43); _to("Fail"); _ts(2); } @@ -2704,6 +2933,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { if (20 === 20) { if (30 === 30) { _ts(1); + _ln(46); _to("Pass6"); _ts(2); } @@ -2711,8 +2941,11 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { } } _ts(1); + _ln(47); _to("\n"); + _ln(48); _to("\n"); + _ln(49); _ts(2); _ts(2); if (99 === 99) { @@ -2720,25 +2953,34 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { } else { print('Fail'); _ts(1); + _ln(54); _to("Fail8"); _ts(2); } _ts(1); _ts(1); + _ln(55); _to("Pass8"); _ts(2); _ts(1); + _ln(56); _to("\n"); + _ln(57); _to("\n"); + _ln(58); _ts(2); _ts(2); _ts(1); _ts(1); + _ln(60); _to("...passed with flying colors."); _ts(2); _ts(1); + _ln(61); _to("\n"); + _ln(62); _to("

\n"); + _ln(63); _to(" "); _ts(2); _ts(2); @@ -2746,19 +2988,23 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { if (x > 1) { for (i = _i = 0; 0 <= x ? _i < x : _i > x; i = 0 <= x ? ++_i : --_i) { _ts(1); + _ln(67); _to("
"); _to("" + (i != null ? escape(i) : '')); _ts(2); _ts(2); if (i === 3) { _ts(1); + _ln(68); _to(" (my favorite number) "); _ts(2); } } } _ts(1); + _ln(70); _to("\n"); + _ln(71); _to("

"); _ts(2); __toffee.res = __toffee.out.join(""); @@ -2841,20 +3087,35 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { __toffee.out = []; _ts(1); _ts(1); + _ln(1); _to("
\n"); + _ln(2); _to(" Pass1Pass2\n"); + _ln(3); _to("
\n"); + _ln(4); _to("\n"); + _ln(5); _to("Pass3Pass4\n"); + _ln(6); _to("
\n"); + _ln(7); _to("\n"); + _ln(8); _to("Pass5Pass6\n"); + _ln(9); _to("\n"); + _ln(10); _to("Pass7Pass8\n"); + _ln(11); _to("\n"); + _ln(12); _to("...passed with flying colors.\n"); + _ln(13); _to("

\n"); + _ln(14); _to("
0
1
2
3 (my favorite number)
4
5
6
7
8
9\n"); + _ln(15); _to("

"); _ts(2); __toffee.res = __toffee.out.join(""); @@ -2939,7 +3200,9 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts(2); supplies = ["broom", "mop", "vacuum"]; _ts(1); + _ln(3); _to("
    \n"); + _ln(4); _to(" "); _ts(2); _ts(2); @@ -2953,6 +3216,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { } _ts(1); _to("\n"); + _ln(5); _to("
"); _ts(2); __toffee.res = __toffee.out.join(""); @@ -3035,8 +3299,11 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { __toffee.out = []; _ts(1); _ts(1); + _ln(1); _to("
    \n"); + _ln(2); _to("
  • broom
  • mop
  • vacuum
  • \n"); + _ln(3); _to("
"); _ts(2); __toffee.res = __toffee.out.join(""); @@ -3121,6 +3388,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts(2); print_it = function(msg) { _ts(1); + _ln(2); _to("" + (msg != null ? escape(msg) : '')); return _ts(2); }; @@ -3128,11 +3396,13 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { var m; _ts(1); _ts(1); + _ln(5); _to("" + (msg != null ? escape(msg) : '')); _ts(2); m = msg; _ts(1); _ts(1); + _ln(7); _to("" + (m != null ? escape(m) : '')); return _ts(2); }; @@ -3224,6 +3494,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { __toffee.out = []; _ts(1); _ts(1); + _ln(1); _to("PassPassPassPass"); _ts(2); __toffee.res = __toffee.out.join(""); @@ -3306,6 +3577,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { __toffee.out = []; _ts(1); _ts(1); + _ln(1); _to("" + (typeof a !== "undefined" && a !== null ? escape(a) : '')); _to(" "); _to("" + (typeof b !== "undefined" && b !== null ? escape(b) : '')); @@ -3390,13 +3662,18 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { __toffee.out = []; _ts(1); _ts(1); + _ln(1); _to("" + (escape("Hello, " + "world"))); + _ln(4); _to("\n"); + _ln(5); _to("
\n"); + _ln(6); _to("" + (partial("foo.toffee", { a: "Goodbye" + ',', b: "world" }))); + _ln(10); _ts(2); __toffee.res = __toffee.out.join(""); return __toffee.res; @@ -3478,8 +3755,11 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { __toffee.out = []; _ts(1); _ts(1); + _ln(1); _to("Hello, world\n"); + _ln(2); _to("
\n"); + _ln(3); _to("Goodbye, world"); _ts(2); __toffee.res = __toffee.out.join(""); @@ -3562,6 +3842,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { __toffee.out = []; _ts(1); _ts(1); + _ln(1); _to("Hi there."); _ts(2); __toffee.res = __toffee.out.join(""); @@ -3644,6 +3925,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { __toffee.out = []; _ts(1); _ts(1); + _ln(1); _to("Hi there."); _ts(2); __toffee.res = __toffee.out.join(""); @@ -3893,14 +4175,18 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { __toffee.out = []; _ts(1); _ts(1); + _ln(1); _to("" + (partial("./foo/message.toffee"))); _to("\n"); + _ln(2); _to("" + (escape(snippet("./foo/message.toffee")))); _to("\n"); + _ln(3); _to("" + (partial("./foo/message.toffee", { from: "Sam" }))); _to("\n"); + _ln(4); _to("" + (escape(snippet("./foo/message.toffee", { from: "Max" })))); @@ -3985,13 +4271,21 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { __toffee.out = []; _ts(1); _ts(1); + _ln(1); _to("From: Preloaded sender\n"); + _ln(2); _to("Preloaded message.\n"); + _ln(3); _to("From: Unknown sender\n"); + _ln(4); _to("Unknown message.\n"); + _ln(5); _to("From: Sam\n"); + _ln(6); _to("Preloaded message.\n"); + _ln(7); _to("From: Max\n"); + _ln(8); _to("Unknown message."); _ts(2); __toffee.res = __toffee.out.join(""); @@ -4074,29 +4368,44 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { __toffee.out = []; _ts(1); _ts(1); + _ln(5); _to("\n"); + _ln(6); _ts(2); _ts(2); _ts(1); _ts(1); + _ln(7); _to('"' + "PASSED" + '"'); _ts(2); _ts(1); + _ln(8); _to("\n"); + _ln(9); _ts(2); _ts(1); + _ln(13); _to("\n"); + _ln(14); _to("

\n"); + _ln(15); _to(" "); _to("" + (print("" + 'click & clack' + ""))); _to("\n"); + _ln(16); _to("

\n"); + _ln(17); _ts(2); _ts(1); + _ln(21); _to("\n"); + _ln(22); _to("A backslash is a \\\n"); + _ln(23); _to(""); _ts(2); __toffee.res = __toffee.out.join(""); @@ -4179,16 +4488,27 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { __toffee.out = []; _ts(1); _ts(1); + _ln(1); _to("\n"); + _ln(2); _to('"' + "PASSED\"\n"); + _ln(3); _to("\n"); + _ln(4); _to("

\n"); + _ln(5); _to(" click & clack\n"); + _ln(6); _to("

\n"); + _ln(7); _to("\n"); + _ln(8); _to("A backslash is a \\\n"); + _ln(9); _to(""); _ts(2); __toffee.res = __toffee.out.join(""); From 041053b25024485706d6a40353f22a0d78061f9c Mon Sep 17 00:00:00 2001 From: "ccoyne77@gmail.com" Date: Wed, 1 Aug 2012 15:38:57 -0400 Subject: [PATCH 006/132] npm version bump --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 596eedb..4acfded 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "toffee", "description": "An Express 3.x and 2.x templating language based on CoffeeScript with slicker tokens and syntax. Built with love at OkCupid.", - "version": "0.0.31", + "version": "0.0.32", "directories": { "lib": "./lib" }, From 1e6df6e113c28b1784271dd7005ee2111ae6ef0b Mon Sep 17 00:00:00 2001 From: Chris Coyne Date: Thu, 2 Aug 2012 16:49:42 -0300 Subject: [PATCH 007/132] Update README.md --- README.md | 32 ++++++++++++++------------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 2801baa..18d39f5 100644 --- a/README.md +++ b/README.md @@ -385,31 +385,26 @@ toffee.expressEngine.autoEscape = false known issues =============== -1. comments in `{## ##}` cannot contain other toffee code. Hope to have this fixed soon, as these tokens should -be useful for temporarily commenting off a region of a template. - -3. There's a case where line numbers aren't right. +1. command line stdout not done yet. command-line ============ -Soon I'll have browser compilation working. I'd like partials and everything to work before I release this. In the meantime, if you're -curious to see the CoffeeScript that's compiled from a template: +You can compile an entire project of .toffee files easily. ``` -toffee -c foo.toffee +toffee --help ``` -Or to see it in JS: -``` -toffee foo.toffee -``` +This will display some examples and instructions for including a template bundle in your frontend. + +contributing & asking for fixes. +================= +If you have a problem with Toffee let me know, and I'll fix it ASAP. -contributing -============= -I'm likely to accept good pull requests. +Also, I'm likely to accept good pull requests. If you'd like to edit code for this project, note that you should always edit the `.coffee` files, -as the `.js` files as generated automatically by building. +as the `.js` files are generated automatically by building. To build ``` @@ -425,7 +420,8 @@ I'm also very interested in someone building a Sublime/Textmate package for Toff todo ====== -- finish browser-side include and command-line compiler -- ...then add instructions on how to use it - continue to add to unit tests -- stack trace conversion improvement +- finish a few command line options + - stdout + - coffee output isntead of js, if requested + - file-by-file output with root dir as param From 5a18151f0dd7afb74f5c0feffdfa273c00ab8483 Mon Sep 17 00:00:00 2001 From: Chris Date: Fri, 3 Aug 2012 14:51:56 -0400 Subject: [PATCH 008/132] commenting out blocks of code with {## ##} now working. --- lib/toffee_lang.js | 42 +++++++++---------- package.json | 2 +- src/toffee.jison | 25 +++++++++-- test/cases/comments/input.toffee | 15 ++++++- .../express3/public/javascripts/test_cases.js | 5 ++- 5 files changed, 60 insertions(+), 29 deletions(-) diff --git a/lib/toffee_lang.js b/lib/toffee_lang.js index cc2c8f8..3a60a76 100644 --- a/lib/toffee_lang.js +++ b/lib/toffee_lang.js @@ -2,9 +2,9 @@ var toffee_lang = (function(){ var parser = {trace: function trace() { }, yy: {}, -symbols_: {"error":2,"starter":3,"toffee_zone":4,"EOF":5,"toffee_code":6,"flip_to_coffee":7,"flip_to_toffeecomment":8,"START_TOFFEE_COMMENT":9,"code":10,"END_TOFFEE_COMMENT":11,"START_COFFEE":12,"coffee_zone":13,"END_COFFEE":14,"coffee_code":15,"flip_to_toffee":16,"START_TOFFEE":17,"END_TOFFEE":18,"START_INDENTED_TOFFEE":19,"CODE":20,"$accept":0,"$end":1}, -terminals_: {2:"error",5:"EOF",9:"START_TOFFEE_COMMENT",11:"END_TOFFEE_COMMENT",12:"START_COFFEE",14:"END_COFFEE",17:"START_TOFFEE",18:"END_TOFFEE",19:"START_INDENTED_TOFFEE",20:"CODE"}, -productions_: [0,[3,2],[4,1],[4,3],[4,2],[4,3],[4,2],[4,0],[8,3],[7,3],[13,1],[13,3],[13,2],[13,0],[16,3],[16,3],[6,1],[15,1],[10,1],[10,2]], +symbols_: {"error":2,"starter":3,"toffee_zone":4,"EOF":5,"toffee_code":6,"flip_to_coffee":7,"flip_to_toffee_comment":8,"START_TOFFEE_COMMENT":9,"toffee_commented_region":10,"END_TOFFEE_COMMENT":11,"START_INDENTED_TOFFEE":12,"START_COFFEE":13,"END_COFFEE":14,"START_TOFFEE":15,"END_TOFFEE":16,"CODE":17,"coffee_zone":18,"coffee_code":19,"flip_to_toffee":20,"code":21,"$accept":0,"$end":1}, +terminals_: {2:"error",5:"EOF",9:"START_TOFFEE_COMMENT",11:"END_TOFFEE_COMMENT",12:"START_INDENTED_TOFFEE",13:"START_COFFEE",14:"END_COFFEE",15:"START_TOFFEE",16:"END_TOFFEE",17:"CODE"}, +productions_: [0,[3,2],[4,1],[4,3],[4,2],[4,3],[4,2],[4,0],[8,3],[10,2],[10,2],[10,2],[10,2],[10,2],[10,2],[10,0],[7,3],[18,1],[18,3],[18,2],[18,0],[20,3],[20,3],[6,1],[19,1],[21,1],[21,2]], performAction: function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$) { var $0 = $$.length - 1; @@ -23,37 +23,37 @@ case 6: this.$ = $$[$0]; break; case 7: this.$ = []; break; -case 9: this.$ = ["COFFEE_ZONE", $$[$0-1]]; +case 16: this.$ = ["COFFEE_ZONE", $$[$0-1]]; break; -case 10: this.$ = [$$[$0]]; +case 17: this.$ = [$$[$0]]; break; -case 11: this.$ = $$[$0]; $$[$0].splice(0,0,$$[$0-2],$$[$0-1]); +case 18: this.$ = $$[$0]; $$[$0].splice(0,0,$$[$0-2],$$[$0-1]); break; -case 12: this.$ = $$[$0]; $$[$0].splice(0,0,$$[$0-1]); +case 19: this.$ = $$[$0]; $$[$0].splice(0,0,$$[$0-1]); break; -case 13: this.$ = []; +case 20: this.$ = []; break; -case 14: this.$ = ["TOFFEE_ZONE", $$[$0-1]]; +case 21: this.$ = ["TOFFEE_ZONE", $$[$0-1]]; break; -case 15: this.$ = ["INDENTED_TOFFEE_ZONE", $$[$0-1]]; +case 22: this.$ = ["INDENTED_TOFFEE_ZONE", $$[$0-1]]; break; -case 16: this.$ = ["TOFFEE", $$[$0][0], $$[$0][1] ]; +case 23: this.$ = ["TOFFEE", $$[$0][0], $$[$0][1] ]; break; -case 17: this.$ = ["COFFEE", $$[$0][0], $$[$0][1] ]; +case 24: this.$ = ["COFFEE", $$[$0][0], $$[$0][1] ]; break; -case 18: var ln = yylineno + 1 - $$[$0].split("\n").length + 1; +case 25: var ln = yylineno + 1 - $$[$0].split("\n").length + 1; this.$ = [$$[$0], ln]; break; -case 19: var c = $$[$0-1][0] + $$[$0]; +case 26: var c = $$[$0-1][0] + $$[$0]; var ln = yylineno + 1 - c.split("\n").length + 1; this.$ = [c, ln]; break; } }, -table: [{3:1,4:2,5:[2,7],6:3,7:4,8:5,9:[1,8],10:6,12:[1,7],20:[1,9]},{1:[3]},{5:[1,10]},{5:[2,2],7:11,8:12,9:[1,8],12:[1,7],18:[2,2]},{4:13,5:[2,7],6:3,7:4,8:5,9:[1,8],10:6,12:[1,7],18:[2,7],20:[1,9]},{4:14,5:[2,7],6:3,7:4,8:5,9:[1,8],10:6,12:[1,7],18:[2,7],20:[1,9]},{5:[2,16],9:[2,16],12:[2,16],18:[2,16],20:[1,15]},{10:19,13:16,14:[2,13],15:17,16:18,17:[1,20],19:[1,21],20:[1,9]},{10:22,20:[1,9]},{5:[2,18],9:[2,18],11:[2,18],12:[2,18],14:[2,18],17:[2,18],18:[2,18],19:[2,18],20:[2,18]},{1:[2,1]},{4:23,5:[2,7],6:3,7:4,8:5,9:[1,8],10:6,12:[1,7],18:[2,7],20:[1,9]},{4:24,5:[2,7],6:3,7:4,8:5,9:[1,8],10:6,12:[1,7],18:[2,7],20:[1,9]},{5:[2,4],18:[2,4]},{5:[2,6],18:[2,6]},{5:[2,19],9:[2,19],11:[2,19],12:[2,19],14:[2,19],17:[2,19],18:[2,19],19:[2,19],20:[2,19]},{14:[1,25]},{14:[2,10],16:26,17:[1,20],19:[1,21]},{10:19,13:27,14:[2,13],15:17,16:18,17:[1,20],19:[1,21],20:[1,9]},{14:[2,17],17:[2,17],19:[2,17],20:[1,15]},{4:28,6:3,7:4,8:5,9:[1,8],10:6,12:[1,7],18:[2,7],20:[1,9]},{4:29,6:3,7:4,8:5,9:[1,8],10:6,12:[1,7],18:[2,7],20:[1,9]},{11:[1,30],20:[1,15]},{5:[2,3],18:[2,3]},{5:[2,5],18:[2,5]},{5:[2,9],9:[2,9],12:[2,9],18:[2,9],20:[2,9]},{10:19,13:31,14:[2,13],15:17,16:18,17:[1,20],19:[1,21],20:[1,9]},{14:[2,12]},{18:[1,32]},{18:[1,33]},{5:[2,8],9:[2,8],12:[2,8],18:[2,8],20:[2,8]},{14:[2,11]},{14:[2,14],17:[2,14],19:[2,14],20:[2,14]},{14:[2,15],17:[2,15],19:[2,15],20:[2,15]}], -defaultActions: {10:[2,1],27:[2,12],31:[2,11]}, +table: [{3:1,4:2,5:[2,7],6:3,7:4,8:5,9:[1,8],13:[1,7],17:[1,9],21:6},{1:[3]},{5:[1,10]},{5:[2,2],7:11,8:12,9:[1,8],13:[1,7],16:[2,2]},{4:13,5:[2,7],6:3,7:4,8:5,9:[1,8],13:[1,7],16:[2,7],17:[1,9],21:6},{4:14,5:[2,7],6:3,7:4,8:5,9:[1,8],13:[1,7],16:[2,7],17:[1,9],21:6},{5:[2,23],9:[2,23],13:[2,23],16:[2,23],17:[1,15]},{12:[1,21],14:[2,20],15:[1,20],17:[1,9],18:16,19:17,20:18,21:19},{10:22,11:[2,15],12:[2,15],13:[2,15],14:[2,15],15:[2,15],16:[2,15],17:[2,15]},{5:[2,25],9:[2,25],12:[2,25],13:[2,25],14:[2,25],15:[2,25],16:[2,25],17:[2,25]},{1:[2,1]},{4:23,5:[2,7],6:3,7:4,8:5,9:[1,8],13:[1,7],16:[2,7],17:[1,9],21:6},{4:24,5:[2,7],6:3,7:4,8:5,9:[1,8],13:[1,7],16:[2,7],17:[1,9],21:6},{5:[2,4],16:[2,4]},{5:[2,6],16:[2,6]},{5:[2,26],9:[2,26],12:[2,26],13:[2,26],14:[2,26],15:[2,26],16:[2,26],17:[2,26]},{14:[1,25]},{12:[1,21],14:[2,17],15:[1,20],20:26},{12:[1,21],14:[2,20],15:[1,20],17:[1,9],18:27,19:17,20:18,21:19},{12:[2,24],14:[2,24],15:[2,24],17:[1,15]},{4:28,6:3,7:4,8:5,9:[1,8],13:[1,7],16:[2,7],17:[1,9],21:6},{4:29,6:3,7:4,8:5,9:[1,8],13:[1,7],16:[2,7],17:[1,9],21:6},{11:[1,30],12:[1,31],13:[1,32],14:[1,33],15:[1,34],16:[1,35],17:[1,36]},{5:[2,3],16:[2,3]},{5:[2,5],16:[2,5]},{5:[2,16],9:[2,16],13:[2,16],16:[2,16],17:[2,16]},{12:[1,21],14:[2,20],15:[1,20],17:[1,9],18:37,19:17,20:18,21:19},{14:[2,19]},{16:[1,38]},{16:[1,39]},{5:[2,8],9:[2,8],13:[2,8],16:[2,8],17:[2,8]},{11:[2,9],12:[2,9],13:[2,9],14:[2,9],15:[2,9],16:[2,9],17:[2,9]},{11:[2,10],12:[2,10],13:[2,10],14:[2,10],15:[2,10],16:[2,10],17:[2,10]},{11:[2,11],12:[2,11],13:[2,11],14:[2,11],15:[2,11],16:[2,11],17:[2,11]},{11:[2,12],12:[2,12],13:[2,12],14:[2,12],15:[2,12],16:[2,12],17:[2,12]},{11:[2,13],12:[2,13],13:[2,13],14:[2,13],15:[2,13],16:[2,13],17:[2,13]},{11:[2,14],12:[2,14],13:[2,14],14:[2,14],15:[2,14],16:[2,14],17:[2,14]},{14:[2,18]},{12:[2,21],14:[2,21],15:[2,21],17:[2,21]},{12:[2,22],14:[2,22],15:[2,22],17:[2,22]}], +defaultActions: {10:[2,1],27:[2,19],37:[2,18]}, parseError: function parseError(str, hash) { throw new Error(str); }, @@ -380,17 +380,17 @@ case 0:return 9; break; case 1:return 11; break; -case 2:return 18; +case 2:return 16; break; -case 3:return 19; +case 3:return 12; break; -case 4:return 12; +case 4:return 13; break; case 5:return 14; break; -case 6:return 17; +case 6:return 15; break; -case 7:return 20; +case 7:return 17; break; case 8:return 5; break; diff --git a/package.json b/package.json index 4acfded..e6d04d8 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "toffee", "description": "An Express 3.x and 2.x templating language based on CoffeeScript with slicker tokens and syntax. Built with love at OkCupid.", - "version": "0.0.32", + "version": "0.0.33", "directories": { "lib": "./lib" }, diff --git a/src/toffee.jison b/src/toffee.jison index d6f106a..ca93769 100644 --- a/src/toffee.jison +++ b/src/toffee.jison @@ -28,6 +28,7 @@ starter toffee_zone EOF { $$ = ["TOFFEE_ZONE", $1]; return $$;} ; + toffee_zone : toffee_code { $$ = [$1]; } @@ -36,16 +37,32 @@ toffee_zone | flip_to_coffee toffee_zone { $$ = $2; $2.splice(0,0,$1); } | - toffee_code flip_to_toffeecomment toffee_zone { $$ = $3; $3.splice(0,0,$1); } + toffee_code flip_to_toffee_comment toffee_zone { $$ = $3; $3.splice(0,0,$1); } | - flip_to_toffeecomment toffee_zone { $$ = $2; } + flip_to_toffee_comment toffee_zone { $$ = $2; } | { $$ = []; } ; -flip_to_toffeecomment +flip_to_toffee_comment : - START_TOFFEE_COMMENT code END_TOFFEE_COMMENT {} + START_TOFFEE_COMMENT toffee_commented_region END_TOFFEE_COMMENT {} + ; + +toffee_commented_region + : + toffee_commented_region START_INDENTED_TOFFEE + | + toffee_commented_region START_COFFEE + | + toffee_commented_region END_COFFEE + | + toffee_commented_region START_TOFFEE + | + toffee_commented_region END_TOFFEE + | + toffee_commented_region CODE + | ; flip_to_coffee diff --git a/test/cases/comments/input.toffee b/test/cases/comments/input.toffee index 89cc52b..54655cf 100644 --- a/test/cases/comments/input.toffee +++ b/test/cases/comments/input.toffee @@ -17,5 +17,16 @@ Pass 2 ### #} -Pass 3 -{## Fail ##}{## Fail ##} \ No newline at end of file +Pass 3{## Fail ##}{## Fail ##} +{## + Fail + #{"Fail"} + {# + for x in [1...100] {: + #{"Fail"} + {# + print "Fail" + #} + :} + #} +##} \ No newline at end of file diff --git a/test/express3/public/javascripts/test_cases.js b/test/express3/public/javascripts/test_cases.js index 9f34f6a..cfb9c98 100644 --- a/test/express3/public/javascripts/test_cases.js +++ b/test/express3/public/javascripts/test_cases.js @@ -708,7 +708,10 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ln(19); _to("\n"); _ln(20); - _to("Pass 3\n"); + _to("Pass 3"); + _ts(2); + _ts(1); + _to("\n"); _ln(21); _ts(2); __toffee.res = __toffee.out.join(""); From 3fa0c2aa777e4caa26892845c031476f15bf0c32 Mon Sep 17 00:00:00 2001 From: Chris Coyne Date: Fri, 3 Aug 2012 15:57:10 -0300 Subject: [PATCH 009/132] Update README.md --- README.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/README.md b/README.md index 18d39f5..2b80632 100644 --- a/README.md +++ b/README.md @@ -114,6 +114,21 @@ With nested code, indentation is inferred. #} ``` +### Commenting out a block of code + +In toffee mode, you can comment out a region with `{##` and `##}`. + +```html +
+ I don't want to output this anymore... + {## +

An ode to Ruby on Rails

+

#{partial 'ode.toffee'}

+ ##} +
+``` + + ### Switching to toffee mode without indenting By default, when you enter `{: ... :}`, the Toffee compiler assumes you're entering an indented region, From 23846adcf316739a48ff39e836de3bc2bef59369 Mon Sep 17 00:00:00 2001 From: Chris Coyne Date: Fri, 3 Aug 2012 16:24:38 -0300 Subject: [PATCH 010/132] Update README.md --- README.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 2b80632..465fe8d 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ The `#{}` syntax is powerful, so be responsible.

``` -Including other files is possible thanks to the function `partial`. This in both Express and the browser. +Including other files is possible thanks to the function `partial`. This works in both Express and the browser. ```html

@@ -39,7 +39,7 @@ Including other files is possible thanks to the function `partial`. This in both ``` But the greatest pleasure arises when you enter -`coffee mode`. Note the `{# ... #}` region. +`coffee mode`. Note the `{# ... #}` region, where you can write multiple lines of CoffeeScript. ```html

@@ -51,7 +51,7 @@ But the greatest pleasure arises when you enter

``` -Further, inside `coffee mode`, you can switch back to `toffee mode` with `{: ... :}`. It's endlessly nestable. +Against all odds, inside `coffee mode`, you can switch back to `toffee mode` with `{: ... :}`. It's endlessly nestable. ```html
@@ -69,7 +69,9 @@ Further, inside `coffee mode`, you can switch back to `toffee mode` with `{: ... ``` This bracket and nesting syntax avoids a lot of large, ugly regions, such -as EJS's unsavory and unethical `<% } %>`. Compare: +as EJS's unethical `<% } %>`. It's been wrong for thousands of years +to have control markers surrounded by other control +markers, and it is still wrong. Witness: EJS, verbose and weak. ``` @@ -85,7 +87,7 @@ TOFFEE, so elegant and proud. #} ``` -Or, using the built-in `print`: +Or, using Toffee's `print`: ```html {# for supply in supplies @@ -96,7 +98,7 @@ Or, using the built-in `print`: These are slightly different, as `print` outputs raw text, while `#{}` used in toffee mode safely escapes for HTML. This escaping is customizable. More on that below. -With nested code, indentation is inferred. +With nested code, indentation of your CoffeeScript is magically maintained. ```html {# @@ -236,7 +238,7 @@ ECO TOFFEE ```html {# - if @projects.length + if projects.length for project in @projects if project.is_active {:

#{project.name} | #{project.description}

From 0801588c79abe51b58ca89ebbf52c36d97443ad2 Mon Sep 17 00:00:00 2001 From: Chris Coyne Date: Fri, 3 Aug 2012 16:28:15 -0300 Subject: [PATCH 011/132] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 465fe8d..3421494 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ The `#{}` syntax is powerful, so be responsible. ```html

- You have #{(f for f in friends when f.gender is "f").length} female friends. + You have #{(limb for limb in limbs when limb.hasHand()).length} arms worth keeping.

``` From 5bcd4a87fca24f5487e4565336db716ba48758ff Mon Sep 17 00:00:00 2001 From: Chris Coyne Date: Fri, 3 Aug 2012 16:30:51 -0300 Subject: [PATCH 012/132] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 3421494..b2231cb 100644 --- a/README.md +++ b/README.md @@ -107,7 +107,6 @@ With nested code, indentation of your CoffeeScript is magically maintained. You know, #{name} would make a great designated driver. And she only lives #{profile.distance}km away. {# - profile.cars.sort (a,b) -> b.speed - a.speed if profile.cars.length {: And wow, she drives a #{profile.cars[0].model} :} else {: But, alas, she has no wheels. :} #} From 17777ee5d08fc35159fd7da831757c1ec13f8aac Mon Sep 17 00:00:00 2001 From: Chris Coyne Date: Fri, 3 Aug 2012 16:38:48 -0300 Subject: [PATCH 013/132] Update README.md --- README.md | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index b2231cb..5f3fbf6 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ Table of Contents * [3. Common Questions](#section_3) * [4. Installation & Usage](#section_4) -## 1. Language Basics +## Language Basics Printing variables in Toffee is easy. Just use CoffeeScript's #{} syntax: ```html @@ -155,7 +155,7 @@ The above is identical to: Well, it's not exactly identical. Let's talk about escaping. -## 2. Escaping +## Escaping In your CoffeeScript, the `print` function lets you print the raw value of a variable: @@ -214,7 +214,7 @@ Turning off autoescaping entirely: * If you set `autoEscape: false` when creating the engine, the default will be raw across your project. (See more on that below under Express 3.x settings.) * Alternatively, you could pass the var `escape: (x) -> x` to turn off escaping for a given template. -## 3. Common Questions +## Common Questions #### How does it compare to eco? @@ -351,7 +351,7 @@ ERROR In the above 2 cases, note that the leading whitespaces before the `if` and `else` are different, which is a CoffeeScript error. -## 4 Installation & Usage +## Installation & Usage ``` npm install -g toffee @@ -408,6 +408,7 @@ command-line You can compile an entire project of .toffee files easily. ``` +npm install -g toffee (if you haven't yet) toffee --help ``` @@ -432,12 +433,3 @@ To make sure you didn't break something > coffee tests/run_cases.coffee ``` -I'm also very interested in someone building a Sublime/Textmate package for Toffee. - -todo -====== -- continue to add to unit tests -- finish a few command line options - - stdout - - coffee output isntead of js, if requested - - file-by-file output with root dir as param From 0a4ce3384264cd5fe11ae2522b4e7ad39ed9eb94 Mon Sep 17 00:00:00 2001 From: "ccoyne77@gmail.com" Date: Tue, 7 Aug 2012 16:22:53 -0400 Subject: [PATCH 014/132] fixed: error pretty print bug --- lib/errorHandler.js | 22 +++++++--------------- package.json | 2 +- src/errorHandler.coffee | 20 +++++++------------- 3 files changed, 15 insertions(+), 29 deletions(-) diff --git a/lib/errorHandler.js b/lib/errorHandler.js index f487a60..e51bf27 100644 --- a/lib/errorHandler.js +++ b/lib/errorHandler.js @@ -145,11 +145,7 @@ var cerr, count, header, i, item, res, _i, _len, _ref, _ref1; cerr = this.getConvertedError(); - if (cerr.type === errorTypes.RUNTIME) { - header = cerr.message; - } else { - header = "" + cerr.dir_name + "/" + cerr.file + ": " + cerr.message; - } + header = "" + cerr.dir_name + "/" + cerr.file + ": " + cerr.message; res = "ERROR\n=====\n" + header; if ((_ref = cerr.stack) != null ? _ref.length : void 0) { res += "\n\nSTACK\n=====\n"; @@ -184,11 +180,7 @@ var cerr, count, extra, header, i, item, j, line, padding, padding_len, res, _i, _j, _len, _ref, _ref1, _ref2, _ref3, _ref4; cerr = this.getConvertedError(); res = ""; - if (cerr.type === 234432) { - header = cerr.message; - } else { - header = "" + cerr.dir_name + "/" + cerr.file + ": " + cerr.message + ""; - } + header = "" + cerr.dir_name + "/" + cerr.file + ": " + (_ppEscape(cerr.message)) + ""; res += "
\n \n
" + header + "
\n \n
\n \n
"; if ((_ref = cerr.stack) != null ? _ref.length : void 0) { res += "
"; @@ -222,7 +214,7 @@ } return _results; })()).join(""); - if ((cerr.line_range[0] <= (_ref4 = i + 1) && _ref4 < cerr.line_range[1])) { + if (((cerr.line_range[0] - 1) <= (_ref4 = i) && _ref4 < cerr.line_range[1])) { extra = ""; } else { extra = ""; @@ -234,10 +226,10 @@ }; toffeeError.prototype._lineRangeToPhrase = function(lrange) { - if (lrange[0] >= lrange[1] - 1) { + if (lrange[0] === lrange[1]) { return "on line " + lrange[0]; } else { - return "between lines " + lrange[0] + " and " + (lrange[1] - 1); + return "between lines " + lrange[0] + " and " + lrange[1]; } }; @@ -265,8 +257,8 @@ } prev = ol.slice(0, lineno).join("\n"); next = ol.slice(lineno).join("\n"); - prev_matches = prev.match(/_ln[ ]*\([ ]*([0-9]+)/g); - next_matches = next.match(/_ln[ ]*\([ ]*([0-9]+)/g); + prev_matches = prev.match(/_ln[ ]*\(?[ ]*([0-9]+)/g); + next_matches = next.match(/_ln[ ]*\(?[ ]*([0-9]+)/g); res = [1, tl.length]; if (prev_matches != null ? prev_matches.length : void 0) { res[0] = parseInt(prev_matches[prev_matches.length - 1].match(/[0-9]+/)[0]); diff --git a/package.json b/package.json index e6d04d8..6e25041 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "toffee", "description": "An Express 3.x and 2.x templating language based on CoffeeScript with slicker tokens and syntax. Built with love at OkCupid.", - "version": "0.0.33", + "version": "0.0.34", "directories": { "lib": "./lib" }, diff --git a/src/errorHandler.coffee b/src/errorHandler.coffee index 6ba24d6..fbe503a 100644 --- a/src/errorHandler.coffee +++ b/src/errorHandler.coffee @@ -116,10 +116,7 @@ class toffeeError returns a TEXT only blob explaining the error ### cerr = @getConvertedError() - if cerr.type is errorTypes.RUNTIME - header = cerr.message - else - header = "#{cerr.dir_name}/#{cerr.file}: #{cerr.message}" + header = "#{cerr.dir_name}/#{cerr.file}: #{cerr.message}" res = """ ERROR ===== @@ -152,10 +149,7 @@ class toffeeError ### cerr = @getConvertedError() res = "" - if cerr.type is 234432#errorTypes.RUNTIME - header = cerr.message - else - header = "#{cerr.dir_name}/#{cerr.file}: #{cerr.message}" + header = "#{cerr.dir_name}/#{cerr.file}: #{_ppEscape cerr.message}" res += """
\n
#{header}
@@ -182,7 +176,7 @@ class toffeeError line = _ppEscape @toffeeSrcLines[i] padding_len = 5 - ("#{i+1}").length padding = (" " for j in [0...padding_len]).join "" - if cerr.line_range[0] <= (i+1) < cerr.line_range[1] + if (cerr.line_range[0] - 1) <= (i) < cerr.line_range[1] extra = "" else extra = "" @@ -194,10 +188,10 @@ class toffeeError res _lineRangeToPhrase: (lrange) -> - if lrange[0] >= lrange[1] - 1 + if lrange[0] is lrange[1] "on line #{lrange[0]}" else - "between lines #{lrange[0]} and #{lrange[1] - 1}" + "between lines #{lrange[0]} and #{lrange[1]}" _extractOffensiveLineNo: (msg, rxx) -> m = msg.match rxx @@ -218,8 +212,8 @@ class toffeeError prev = ol[0...lineno].join "\n" next = ol[lineno...].join "\n" - prev_matches = prev.match /_ln[ ]*\([ ]*([0-9]+)/g - next_matches = next.match /_ln[ ]*\([ ]*([0-9]+)/g + prev_matches = prev.match /_ln[ ]*\(?[ ]*([0-9]+)/g + next_matches = next.match /_ln[ ]*\(?[ ]*([0-9]+)/g res = [1,tl.length] if prev_matches?.length From f0698d9bd168f264f68b30d74bc9aa062c5e9687 Mon Sep 17 00:00:00 2001 From: "ccoyne77@gmail.com" Date: Wed, 8 Aug 2012 11:55:54 -0400 Subject: [PATCH 015/132] removed need for -{: token --- README.md | 4 +- lib/toffee_lang.js | 50 ++++++------ lib/view.js | 51 ++++++------ package.json | 2 +- src/toffee.jison | 15 ++-- src/view.coffee | 25 +++--- test/cases/include_order/input.toffee | 2 +- test/cases/include_techniques/input.toffee | 4 +- test/cases/indent_attack/input.toffee | 45 +++++++++-- test/cases/indent_attack/output.toffee | 3 +- test/cases/lambda_fns/input.toffee | 4 +- test/cases/special_cases/input.toffee | 2 +- .../express3/public/javascripts/test_cases.js | 79 +++++++++++++++---- test/express3/views/index.toffee | 3 +- 14 files changed, 188 insertions(+), 101 deletions(-) diff --git a/README.md b/README.md index 5f3fbf6..9c5bc4a 100644 --- a/README.md +++ b/README.md @@ -130,7 +130,9 @@ In toffee mode, you can comment out a region with `{##` and `##}`. ``` -### Switching to toffee mode without indenting +### Toffee is smart about indenting. + +You can indent your `{# #}` region however, you want, and By default, when you enter `{: ... :}`, the Toffee compiler assumes you're entering an indented region, probably because of a loop or conditional. diff --git a/lib/toffee_lang.js b/lib/toffee_lang.js index 3a60a76..11f943b 100644 --- a/lib/toffee_lang.js +++ b/lib/toffee_lang.js @@ -2,9 +2,9 @@ var toffee_lang = (function(){ var parser = {trace: function trace() { }, yy: {}, -symbols_: {"error":2,"starter":3,"toffee_zone":4,"EOF":5,"toffee_code":6,"flip_to_coffee":7,"flip_to_toffee_comment":8,"START_TOFFEE_COMMENT":9,"toffee_commented_region":10,"END_TOFFEE_COMMENT":11,"START_INDENTED_TOFFEE":12,"START_COFFEE":13,"END_COFFEE":14,"START_TOFFEE":15,"END_TOFFEE":16,"CODE":17,"coffee_zone":18,"coffee_code":19,"flip_to_toffee":20,"code":21,"$accept":0,"$end":1}, -terminals_: {2:"error",5:"EOF",9:"START_TOFFEE_COMMENT",11:"END_TOFFEE_COMMENT",12:"START_INDENTED_TOFFEE",13:"START_COFFEE",14:"END_COFFEE",15:"START_TOFFEE",16:"END_TOFFEE",17:"CODE"}, -productions_: [0,[3,2],[4,1],[4,3],[4,2],[4,3],[4,2],[4,0],[8,3],[10,2],[10,2],[10,2],[10,2],[10,2],[10,2],[10,0],[7,3],[18,1],[18,3],[18,2],[18,0],[20,3],[20,3],[6,1],[19,1],[21,1],[21,2]], +symbols_: {"error":2,"starter":3,"toffee_zone":4,"EOF":5,"toffee_code":6,"flip_to_coffee":7,"flip_to_toffee_comment":8,"START_TOFFEE_COMMENT":9,"toffee_commented_region":10,"END_TOFFEE_COMMENT":11,"START_COFFEE":12,"END_COFFEE":13,"START_TOFFEE":14,"END_TOFFEE":15,"CODE":16,"coffee_zone":17,"coffee_code":18,"flip_to_toffee":19,"code":20,"$accept":0,"$end":1}, +terminals_: {2:"error",5:"EOF",9:"START_TOFFEE_COMMENT",11:"END_TOFFEE_COMMENT",12:"START_COFFEE",13:"END_COFFEE",14:"START_TOFFEE",15:"END_TOFFEE",16:"CODE"}, +productions_: [0,[3,2],[4,1],[4,3],[4,2],[4,3],[4,2],[4,0],[8,3],[10,2],[10,2],[10,2],[10,2],[10,2],[10,0],[7,3],[17,1],[17,3],[17,2],[17,0],[19,3],[6,1],[18,1],[20,1],[20,2]], performAction: function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$) { var $0 = $$.length - 1; @@ -23,37 +23,35 @@ case 6: this.$ = $$[$0]; break; case 7: this.$ = []; break; -case 16: this.$ = ["COFFEE_ZONE", $$[$0-1]]; +case 15: this.$ = ["COFFEE_ZONE", $$[$0-1]]; break; -case 17: this.$ = [$$[$0]]; +case 16: this.$ = [$$[$0]]; break; -case 18: this.$ = $$[$0]; $$[$0].splice(0,0,$$[$0-2],$$[$0-1]); +case 17: this.$ = $$[$0]; $$[$0].splice(0,0,$$[$0-2],$$[$0-1]); break; -case 19: this.$ = $$[$0]; $$[$0].splice(0,0,$$[$0-1]); +case 18: this.$ = $$[$0]; $$[$0].splice(0,0,$$[$0-1]); break; -case 20: this.$ = []; +case 19: this.$ = []; break; -case 21: this.$ = ["TOFFEE_ZONE", $$[$0-1]]; +case 20: this.$ = ["TOFFEE_ZONE", $$[$0-1]]; break; -case 22: this.$ = ["INDENTED_TOFFEE_ZONE", $$[$0-1]]; +case 21: this.$ = ["TOFFEE", $$[$0][0], $$[$0][1] ]; break; -case 23: this.$ = ["TOFFEE", $$[$0][0], $$[$0][1] ]; +case 22: this.$ = ["COFFEE", $$[$0][0], $$[$0][1] ]; break; -case 24: this.$ = ["COFFEE", $$[$0][0], $$[$0][1] ]; -break; -case 25: var ln = yylineno + 1 - $$[$0].split("\n").length + 1; +case 23: var ln = yylineno + 1 - $$[$0].split("\n").length + 1; this.$ = [$$[$0], ln]; break; -case 26: var c = $$[$0-1][0] + $$[$0]; +case 24: var c = $$[$0-1][0] + $$[$0]; var ln = yylineno + 1 - c.split("\n").length + 1; this.$ = [c, ln]; break; } }, -table: [{3:1,4:2,5:[2,7],6:3,7:4,8:5,9:[1,8],13:[1,7],17:[1,9],21:6},{1:[3]},{5:[1,10]},{5:[2,2],7:11,8:12,9:[1,8],13:[1,7],16:[2,2]},{4:13,5:[2,7],6:3,7:4,8:5,9:[1,8],13:[1,7],16:[2,7],17:[1,9],21:6},{4:14,5:[2,7],6:3,7:4,8:5,9:[1,8],13:[1,7],16:[2,7],17:[1,9],21:6},{5:[2,23],9:[2,23],13:[2,23],16:[2,23],17:[1,15]},{12:[1,21],14:[2,20],15:[1,20],17:[1,9],18:16,19:17,20:18,21:19},{10:22,11:[2,15],12:[2,15],13:[2,15],14:[2,15],15:[2,15],16:[2,15],17:[2,15]},{5:[2,25],9:[2,25],12:[2,25],13:[2,25],14:[2,25],15:[2,25],16:[2,25],17:[2,25]},{1:[2,1]},{4:23,5:[2,7],6:3,7:4,8:5,9:[1,8],13:[1,7],16:[2,7],17:[1,9],21:6},{4:24,5:[2,7],6:3,7:4,8:5,9:[1,8],13:[1,7],16:[2,7],17:[1,9],21:6},{5:[2,4],16:[2,4]},{5:[2,6],16:[2,6]},{5:[2,26],9:[2,26],12:[2,26],13:[2,26],14:[2,26],15:[2,26],16:[2,26],17:[2,26]},{14:[1,25]},{12:[1,21],14:[2,17],15:[1,20],20:26},{12:[1,21],14:[2,20],15:[1,20],17:[1,9],18:27,19:17,20:18,21:19},{12:[2,24],14:[2,24],15:[2,24],17:[1,15]},{4:28,6:3,7:4,8:5,9:[1,8],13:[1,7],16:[2,7],17:[1,9],21:6},{4:29,6:3,7:4,8:5,9:[1,8],13:[1,7],16:[2,7],17:[1,9],21:6},{11:[1,30],12:[1,31],13:[1,32],14:[1,33],15:[1,34],16:[1,35],17:[1,36]},{5:[2,3],16:[2,3]},{5:[2,5],16:[2,5]},{5:[2,16],9:[2,16],13:[2,16],16:[2,16],17:[2,16]},{12:[1,21],14:[2,20],15:[1,20],17:[1,9],18:37,19:17,20:18,21:19},{14:[2,19]},{16:[1,38]},{16:[1,39]},{5:[2,8],9:[2,8],13:[2,8],16:[2,8],17:[2,8]},{11:[2,9],12:[2,9],13:[2,9],14:[2,9],15:[2,9],16:[2,9],17:[2,9]},{11:[2,10],12:[2,10],13:[2,10],14:[2,10],15:[2,10],16:[2,10],17:[2,10]},{11:[2,11],12:[2,11],13:[2,11],14:[2,11],15:[2,11],16:[2,11],17:[2,11]},{11:[2,12],12:[2,12],13:[2,12],14:[2,12],15:[2,12],16:[2,12],17:[2,12]},{11:[2,13],12:[2,13],13:[2,13],14:[2,13],15:[2,13],16:[2,13],17:[2,13]},{11:[2,14],12:[2,14],13:[2,14],14:[2,14],15:[2,14],16:[2,14],17:[2,14]},{14:[2,18]},{12:[2,21],14:[2,21],15:[2,21],17:[2,21]},{12:[2,22],14:[2,22],15:[2,22],17:[2,22]}], -defaultActions: {10:[2,1],27:[2,19],37:[2,18]}, +table: [{3:1,4:2,5:[2,7],6:3,7:4,8:5,9:[1,8],12:[1,7],16:[1,9],20:6},{1:[3]},{5:[1,10]},{5:[2,2],7:11,8:12,9:[1,8],12:[1,7],15:[2,2]},{4:13,5:[2,7],6:3,7:4,8:5,9:[1,8],12:[1,7],15:[2,7],16:[1,9],20:6},{4:14,5:[2,7],6:3,7:4,8:5,9:[1,8],12:[1,7],15:[2,7],16:[1,9],20:6},{5:[2,21],9:[2,21],12:[2,21],15:[2,21],16:[1,15]},{13:[2,19],14:[1,20],16:[1,9],17:16,18:17,19:18,20:19},{10:21,11:[2,14],12:[2,14],13:[2,14],14:[2,14],15:[2,14],16:[2,14]},{5:[2,23],9:[2,23],12:[2,23],13:[2,23],14:[2,23],15:[2,23],16:[2,23]},{1:[2,1]},{4:22,5:[2,7],6:3,7:4,8:5,9:[1,8],12:[1,7],15:[2,7],16:[1,9],20:6},{4:23,5:[2,7],6:3,7:4,8:5,9:[1,8],12:[1,7],15:[2,7],16:[1,9],20:6},{5:[2,4],15:[2,4]},{5:[2,6],15:[2,6]},{5:[2,24],9:[2,24],12:[2,24],13:[2,24],14:[2,24],15:[2,24],16:[2,24]},{13:[1,24]},{13:[2,16],14:[1,20],19:25},{13:[2,19],14:[1,20],16:[1,9],17:26,18:17,19:18,20:19},{13:[2,22],14:[2,22],16:[1,15]},{4:27,6:3,7:4,8:5,9:[1,8],12:[1,7],15:[2,7],16:[1,9],20:6},{11:[1,28],12:[1,29],13:[1,30],14:[1,31],15:[1,32],16:[1,33]},{5:[2,3],15:[2,3]},{5:[2,5],15:[2,5]},{5:[2,15],9:[2,15],12:[2,15],15:[2,15],16:[2,15]},{13:[2,19],14:[1,20],16:[1,9],17:34,18:17,19:18,20:19},{13:[2,18]},{15:[1,35]},{5:[2,8],9:[2,8],12:[2,8],15:[2,8],16:[2,8]},{11:[2,9],12:[2,9],13:[2,9],14:[2,9],15:[2,9],16:[2,9]},{11:[2,10],12:[2,10],13:[2,10],14:[2,10],15:[2,10],16:[2,10]},{11:[2,11],12:[2,11],13:[2,11],14:[2,11],15:[2,11],16:[2,11]},{11:[2,12],12:[2,12],13:[2,12],14:[2,12],15:[2,12],16:[2,12]},{11:[2,13],12:[2,13],13:[2,13],14:[2,13],15:[2,13],16:[2,13]},{13:[2,17]},{13:[2,20],14:[2,20],16:[2,20]}], +defaultActions: {10:[2,1],26:[2,18],34:[2,17]}, parseError: function parseError(str, hash) { throw new Error(str); }, @@ -380,24 +378,22 @@ case 0:return 9; break; case 1:return 11; break; -case 2:return 16; -break; -case 3:return 12; +case 2:return 15; break; -case 4:return 13; +case 3:return 14; break; -case 5:return 14; +case 4:return 12; break; -case 6:return 15; +case 5:return 13; break; -case 7:return 17; +case 6:return 16; break; -case 8:return 5; +case 7:return 5; break; } }; -lexer.rules = [/^\{##/,/^##\}/,/^:\}/,/^\{:/,/^\{#/,/^#\}/,/^[\-][\t\r\n ]*\{:/,/^[^{}#\\:\-]+|[\\{}#:\-]/,/^$/]; -lexer.conditions = {"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8],"inclusive":true}}; +lexer.rules = [/^\{##/,/^##\}/,/^:\}/,/^\{:/,/^\{#/,/^#\}/,/^[^{}#\\:\-]+|[\\{}#:\-]/,/^$/]; +lexer.conditions = {"INITIAL":{"rules":[0,1,2,3,4,5,6,7],"inclusive":true}}; return lexer;})() parser.lexer = lexer; return parser; diff --git a/lib/view.js b/lib/view.js index 6dd7431..aa0f302 100644 --- a/lib/view.js +++ b/lib/view.js @@ -122,7 +122,7 @@ */ var item, _i, _len, _ref2, _ref3, _results; - if ((_ref2 = obj[0]) === "INDENTED_TOFFEE_ZONE" || _ref2 === "TOFFEE_ZONE" || _ref2 === "COFFEE_ZONE") { + if ((_ref2 = obj[0]) === "TOFFEE_ZONE" || _ref2 === "COFFEE_ZONE") { _ref3 = obj[1]; _results = []; for (_i = 0, _len = _ref3.length; _i < _len; _i++) { @@ -231,7 +231,7 @@ d = Date.now(); res = this._coffeeHeaders(); try { - res += this._toCoffeeRecurse(tobj, TAB_SPACES, 0)[0]; + res += this._toCoffeeRecurse(tobj, TAB_SPACES, 0, {})[0]; res += this._coffeeFooters(); this.coffeeScript = res; } catch (e) { @@ -276,26 +276,20 @@ return false; }; - view.prototype._toCoffeeRecurse = function(obj, indent_level, indent_baseline) { - var c, chunk, delta, i, i_delta, ind, interp, item, lbreak, line, lineno, lines, part, res, s, t_int, temp_indent_level, zone_baseline, _i, _j, _k, _l, _len, _len1, _len2, _len3, _len4, _m, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7; + view.prototype._toCoffeeRecurse = function(obj, indent_level, indent_baseline, state_carry) { + var c, chunk, delta, i, i_delta, ind, interp, item, lbreak, line, lineno, lines, part, res, s, t_int, temp_indent_level, zone_baseline, _i, _j, _k, _l, _len, _len1, _len2, _len3, _ref2, _ref3, _ref4, _ref5; res = ""; i_delta = 0; switch (obj[0]) { - case "INDENTED_TOFFEE_ZONE": - indent_level += TAB_SPACES; + case "TOFFEE_ZONE": + if (state_carry.last_coffee_ends_with_newline === false) { + indent_level += TAB_SPACES; + } + res += "\n" + (this._space(indent_level)) + "_ts " + states.TOFFEE; _ref2 = obj[1]; for (_i = 0, _len = _ref2.length; _i < _len; _i++) { item = _ref2[_i]; - _ref3 = this._toCoffeeRecurse(item, indent_level, indent_baseline), s = _ref3[0], delta = _ref3[1]; - res += s; - } - break; - case "TOFFEE_ZONE": - res += "\n" + (this._space(indent_level)) + "_ts " + states.TOFFEE; - _ref4 = obj[1]; - for (_j = 0, _len1 = _ref4.length; _j < _len1; _j++) { - item = _ref4[_j]; - _ref5 = this._toCoffeeRecurse(item, indent_level, indent_baseline), s = _ref5[0], delta = _ref5[1]; + _ref3 = this._toCoffeeRecurse(item, indent_level, indent_baseline, state_carry), s = _ref3[0], delta = _ref3[1]; res += s; } break; @@ -303,10 +297,10 @@ res += "\n" + (this._space(indent_level)) + "_ts " + states.COFFEE; zone_baseline = this._getZoneBaseline(obj[1]); temp_indent_level = indent_level; - _ref6 = obj[1]; - for (_k = 0, _len2 = _ref6.length; _k < _len2; _k++) { - item = _ref6[_k]; - _ref7 = this._toCoffeeRecurse(item, temp_indent_level, zone_baseline), s = _ref7[0], delta = _ref7[1]; + _ref4 = obj[1]; + for (_j = 0, _len1 = _ref4.length; _j < _len1; _j++) { + item = _ref4[_j]; + _ref5 = this._toCoffeeRecurse(item, temp_indent_level, zone_baseline, state_carry), s = _ref5[0], delta = _ref5[1]; res += s; temp_indent_level = indent_level + delta; } @@ -322,8 +316,8 @@ this.error = new toffeeError(this, errorTypes.STR_INTERPOLATE, e); throw e; } - for (_l = 0, _len3 = t_int.length; _l < _len3; _l++) { - part = t_int[_l]; + for (_k = 0, _len2 = t_int.length; _k < _len2; _k++) { + part = t_int[_k]; if (part[0] === "TOKENS") { res += this._printLineNo(lineno, ind); interp = part[1].replace(/(^[\n \t]+)|([\n \t]+)$/g, ''); @@ -338,7 +332,7 @@ lineno += part[1].split("\n").length - 1; } else { lines = part[1].split("\n"); - for (i = _m = 0, _len4 = lines.length; _m < _len4; i = ++_m) { + for (i = _l = 0, _len3 = lines.length; _l < _len3; i = ++_l) { line = lines[i]; res += this._printLineNo(lineno, ind); lbreak = i !== lines.length - 1 ? "\n" : ""; @@ -359,6 +353,7 @@ c = obj[1]; res += "\n" + (this._reindent(c, indent_level, indent_baseline)); i_delta = this._getIndentationDelta(c, indent_baseline); + state_carry.last_coffee_ends_with_newline = this._doesEndWithNewline(c); break; default: throw "Bad parsing. " + obj + " not handled."; @@ -396,6 +391,16 @@ return res; }; + view.prototype._doesEndWithNewline = function(s) { + var parts; + parts = s.split("\n"); + if ((parts.length > 1) && parts[parts.length - 1].match(/^[\t ]*$/)) { + return true; + } else { + return false; + } + }; + view.prototype._escapeForStr = function(s) { /* escapes a string so it can make it into coffeescript diff --git a/package.json b/package.json index 6e25041..e65c379 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "toffee", "description": "An Express 3.x and 2.x templating language based on CoffeeScript with slicker tokens and syntax. Built with love at OkCupid.", - "version": "0.0.34", + "version": "0.0.35", "directories": { "lib": "./lib" }, diff --git a/src/toffee.jison b/src/toffee.jison index ca93769..e9d0f86 100644 --- a/src/toffee.jison +++ b/src/toffee.jison @@ -10,10 +10,9 @@ "{##" return 'START_TOFFEE_COMMENT'; "##}" return 'END_TOFFEE_COMMENT'; ":}" return 'END_TOFFEE'; -"{:" return 'START_INDENTED_TOFFEE'; +"{:" return 'START_TOFFEE'; "{#" return 'START_COFFEE'; "#}" return 'END_COFFEE'; -[\-][\t\r\n ]*"{:" return 'START_TOFFEE'; [^{}#\\:\-]+|[\\{}#:\-] return 'CODE'; <> return 'EOF'; @@ -31,17 +30,17 @@ starter toffee_zone : - toffee_code { $$ = [$1]; } + toffee_code { $$ = [$1]; } | - toffee_code flip_to_coffee toffee_zone { $$ = $3; $3.splice(0,0,$1,$2); } + toffee_code flip_to_coffee toffee_zone { $$ = $3; $3.splice(0,0,$1,$2); } | - flip_to_coffee toffee_zone { $$ = $2; $2.splice(0,0,$1); } + flip_to_coffee toffee_zone { $$ = $2; $2.splice(0,0,$1); } | toffee_code flip_to_toffee_comment toffee_zone { $$ = $3; $3.splice(0,0,$1); } | flip_to_toffee_comment toffee_zone { $$ = $2; } | - { $$ = []; } + { $$ = []; } ; flip_to_toffee_comment @@ -51,8 +50,6 @@ flip_to_toffee_comment toffee_commented_region : - toffee_commented_region START_INDENTED_TOFFEE - | toffee_commented_region START_COFFEE | toffee_commented_region END_COFFEE @@ -84,8 +81,6 @@ coffee_zone flip_to_toffee : START_TOFFEE toffee_zone END_TOFFEE { $$ = ["TOFFEE_ZONE", $2]; } - | - START_INDENTED_TOFFEE toffee_zone END_TOFFEE { $$ = ["INDENTED_TOFFEE_ZONE", $2]; } ; diff --git a/src/view.coffee b/src/view.coffee index ecb280a..38187b5 100644 --- a/src/view.coffee +++ b/src/view.coffee @@ -170,7 +170,7 @@ class view ### replaces tabs with spaces in their coffee regions ### - if obj[0] in ["INDENTED_TOFFEE_ZONE", "TOFFEE_ZONE", "COFFEE_ZONE"] + if obj[0] in ["TOFFEE_ZONE", "COFFEE_ZONE"] @_cleanTabs item for item in obj[1] else if obj[0] is "COFFEE" obj[1] = obj[1].replace /\t/g, @_tabAsSpaces() @@ -247,7 +247,7 @@ class view d = Date.now() res = @_coffeeHeaders() try - res += @_toCoffeeRecurse(tobj, TAB_SPACES, 0)[0] + res += @_toCoffeeRecurse(tobj, TAB_SPACES, 0, {})[0] res += @_coffeeFooters() @coffeeScript = res catch e @@ -283,7 +283,7 @@ class view return false - _toCoffeeRecurse: (obj, indent_level, indent_baseline) -> + _toCoffeeRecurse: (obj, indent_level, indent_baseline, state_carry) -> # returns [res, indent_baseline_delta] # indent_level = # of spaces to add to each coffeescript section # indent_baseline = # of chars to strip from each line inside {# #} @@ -291,22 +291,19 @@ class view res = "" i_delta = 0 switch obj[0] - when "INDENTED_TOFFEE_ZONE" - indent_level += TAB_SPACES - for item in obj[1] - [s, delta] = @_toCoffeeRecurse item, indent_level, indent_baseline - res += s when "TOFFEE_ZONE" + if state_carry.last_coffee_ends_with_newline is false + indent_level += TAB_SPACES res += "\n#{@_space indent_level}_ts #{states.TOFFEE}" for item in obj[1] - [s, delta] = @_toCoffeeRecurse item, indent_level, indent_baseline + [s, delta] = @_toCoffeeRecurse item, indent_level, indent_baseline, state_carry res += s when "COFFEE_ZONE" res += "\n#{@_space indent_level}_ts #{states.COFFEE}" zone_baseline = @_getZoneBaseline obj[1] temp_indent_level = indent_level for item in obj[1] - [s, delta] = @_toCoffeeRecurse item, temp_indent_level, zone_baseline + [s, delta] = @_toCoffeeRecurse item, temp_indent_level, zone_baseline, state_carry res += s temp_indent_level = indent_level + delta when "TOFFEE" @@ -346,6 +343,7 @@ class view c = obj[1] res += "\n#{@_reindent c, indent_level, indent_baseline}" i_delta = @_getIndentationDelta c, indent_baseline + state_carry.last_coffee_ends_with_newline = @_doesEndWithNewline c else throw "Bad parsing. #{obj} not handled." return ["",0] @@ -372,6 +370,13 @@ class view if follow.length then res += "+ \'#{follow}\'" res + _doesEndWithNewline: (s) -> + parts = s.split "\n" + if (parts.length > 1) and parts[parts.length - 1].match /^[\t ]*$/ + return true + else + return false + _escapeForStr: (s) -> ### escapes a string so it can make it into coffeescript diff --git a/test/cases/include_order/input.toffee b/test/cases/include_order/input.toffee index 663c0be..76d5abf 100644 --- a/test/cases/include_order/input.toffee +++ b/test/cases/include_order/input.toffee @@ -1,6 +1,6 @@ {# say_hi = -> - -{:hi:} + {:hi:} #}1 2 #{partial "child.toffee", say_hi: say_hi} diff --git a/test/cases/include_techniques/input.toffee b/test/cases/include_techniques/input.toffee index 61cb308..63b1a9b 100644 --- a/test/cases/include_techniques/input.toffee +++ b/test/cases/include_techniques/input.toffee @@ -2,6 +2,6 @@ #{partial "message.toffee", from: "Max & Sam"} {# print partial "message.toffee", from: "Christian" - -{:#{partial "message.toffee", from: "Jennie"}:} - print partial "message.toffee", sender: "The enemy" + {:#{ partial "message.toffee", from: "Jennie"}:} + print partial "message.toffee", sender: "The enemy" #} \ No newline at end of file diff --git a/test/cases/indent_attack/input.toffee b/test/cases/indent_attack/input.toffee index f63c1bc..d552e88 100644 --- a/test/cases/indent_attack/input.toffee +++ b/test/cases/indent_attack/input.toffee @@ -51,21 +51,52 @@ print 'Pass7' else print 'Fail' - {:Fail8:} - -{:Pass8:} + {:Fail8:} + {:Pass8:} #} {# - -{:...passed with flying colors.:} + {:...passed with flying colors.:} +#}{## +{# + if true and 10 is 10 + {: + Pass9 + :} + print "Pass10" + if 11 is 12 + print "Fail" + if 12 is 13 {: + Fail + :} + else + {: + Pass11 + :} + else if 11 is 12 + {: + Fail + :} #} +##}

{# - x = 10 + x = 20 if x > 1 - for i in [0...x] - {:
#{i}{# - if i is 3 {: (my favorite number) :} + for i in [12...x] + square = 16 + {:Pass#{i}{# + if i is square {:(a perfect square):} #}:} #} + {# + x = 20 + if x > 1 + for i in [12...x] + square = 16 + {:Pass#{i}{# + if i is square {:(a perfect square):} + #}:} + #}

\ No newline at end of file diff --git a/test/cases/indent_attack/output.toffee b/test/cases/indent_attack/output.toffee index eb0dc63..5da2813 100644 --- a/test/cases/indent_attack/output.toffee +++ b/test/cases/indent_attack/output.toffee @@ -11,5 +11,6 @@ Pass7Pass8 ...passed with flying colors.

-
0
1
2
3 (my favorite number)
4
5
6
7
8
9 + Pass12Pass13Pass14Pass15Pass16(a perfect square)Pass17Pass18Pass19 + Pass20

\ No newline at end of file diff --git a/test/cases/lambda_fns/input.toffee b/test/cases/lambda_fns/input.toffee index a3b4087..d827176 100644 --- a/test/cases/lambda_fns/input.toffee +++ b/test/cases/lambda_fns/input.toffee @@ -2,9 +2,9 @@ print_it = (msg) -> {:#{msg}:} print_it_twice = (msg) -> - -{:#{msg}:} + {:#{msg}:} m = msg - -{:#{m}:} + {:#{m}:} echo_it = (msg) -> v = msg diff --git a/test/cases/special_cases/input.toffee b/test/cases/special_cases/input.toffee index 429d51c..563d8a2 100644 --- a/test/cases/special_cases/input.toffee +++ b/test/cases/special_cases/input.toffee @@ -4,7 +4,7 @@ ##} {# - -{:"PASSED":} + {:"PASSED":} #} {## diff --git a/test/express3/public/javascripts/test_cases.js b/test/express3/public/javascripts/test_cases.js index cfb9c98..6901fee 100644 --- a/test/express3/public/javascripts/test_cases.js +++ b/test/express3/public/javascripts/test_cases.js @@ -174,6 +174,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts(2); count = 0; for (i = _i = 0; _i < 2; i = ++_i) { + _ts(1); _ts(1); _ln(3); _to("" + (escape(count++))); @@ -1197,6 +1198,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { for (_i = 0, _len = _ref.length; _i < _len; _i++) { project = _ref[_i]; _ts(1); + _ts(1); _ln(8); _to("\n"); _ln(9); @@ -1214,6 +1216,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts(2); } } else { + _ts(1); _ts(1); _ln(12); _to(" No projects "); @@ -2341,6 +2344,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts(1); _ts(2); if (countdown === 0) { + _ts(1); _ts(1); _ln(2); _to("blastoff!"); @@ -2754,7 +2758,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { }; tmpl.pub = function(locals) { - var i, x, _i, _l, _ln, _t, _to, _ts; + var i, square, x, _i, _j, _l, _ln, _t, _to, _ts; _l = locals; _t = _l.__toffee = { out: [] @@ -2824,6 +2828,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { if (1 === 1) { if (2 === 2) { if (3 === 3) { + _ts(1); _ts(1); _ln(5); _to("Pass1"); @@ -2834,11 +2839,13 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { if (1 === 1) { if (2 === 3) { if (3 === 3) { + _ts(1); _ts(1); _ln(9); _to("Fail"); _ts(2); } else { + _ts(1); _ts(1); _ln(11); _to("Fail"); @@ -2847,6 +2854,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { } else { if (2 === 2) { if (3 === 3) { + _ts(1); _ts(1); _ln(14); _to("Pass2"); @@ -2868,6 +2876,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { if (1 === 1) { if (2 === 2) { if (3 === 3) { + _ts(1); _ts(1); _ln(21); _to("Pass3"); @@ -2878,11 +2887,13 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { if (1 === 1) { if (2 === 3) { if (3 === 3) { + _ts(1); _ts(1); _ln(25); _to("Fail"); _ts(2); } else { + _ts(1); _ts(1); _ln(27); _to("Fail"); @@ -2891,6 +2902,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { } else { if (2 === 2) { if (3 === 3) { + _ts(1); _ts(1); _ln(30); _to("Pass4"); @@ -2912,6 +2924,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { if (10 === 10) { if (20 === 20) { if (30 === 30) { + _ts(1); _ts(1); _ln(37); _to("Pass5"); @@ -2922,11 +2935,13 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { if (10 === 10) { if (20 === 30) { if (30 === 30) { + _ts(1); _ts(1); _ln(41); _to("Fail"); _ts(2); } else { + _ts(1); _ts(1); _ln(43); _to("Fail"); @@ -2935,6 +2950,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { } else { if (20 === 20) { if (30 === 30) { + _ts(1); _ts(1); _ln(46); _to("Pass6"); @@ -2956,6 +2972,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { } else { print('Fail'); _ts(1); + _ts(1); _ln(54); _to("Fail8"); _ts(2); @@ -2979,35 +2996,65 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _to("...passed with flying colors."); _ts(2); _ts(1); - _ln(61); + _ln(82); _to("\n"); - _ln(62); + _ln(83); _to("

\n"); - _ln(63); + _ln(84); _to(" "); _ts(2); _ts(2); - x = 10; + x = 20; if (x > 1) { - for (i = _i = 0; 0 <= x ? _i < x : _i > x; i = 0 <= x ? ++_i : --_i) { + for (i = _i = 12; 12 <= x ? _i < x : _i > x; i = 12 <= x ? ++_i : --_i) { + square = 16; _ts(1); - _ln(67); - _to("
"); + _ts(1); + _ln(89); + _to("Pass"); _to("" + (i != null ? escape(i) : '')); _ts(2); _ts(2); - if (i === 3) { + if (i === square) { + _ts(1); _ts(1); - _ln(68); - _to(" (my favorite number) "); + _ln(90); + _to("(a perfect square)"); _ts(2); } } } _ts(1); - _ln(70); + _ln(92); _to("\n"); - _ln(71); + _ln(93); + _to(" "); + _ts(2); + _ts(2); + x = 20; + if (x > 1) { + for (i = _j = 12; 12 <= x ? _j < x : _j > x; i = 12 <= x ? ++_j : --_j) { + square = 16; + } + _ts(1); + _ts(1); + _ln(98); + _to("Pass"); + _to("" + (i != null ? escape(i) : '')); + _ts(2); + _ts(2); + if (i === square) { + _ts(1); + _ts(1); + _ln(99); + _to("(a perfect square)"); + _ts(2); + } + } + _ts(1); + _ln(101); + _to("\n"); + _ln(102); _to("

"); _ts(2); __toffee.res = __toffee.out.join(""); @@ -3117,8 +3164,10 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ln(13); _to("

\n"); _ln(14); - _to("
0
1
2
3 (my favorite number)
4
5
6
7
8
9\n"); + _to(" Pass12Pass13Pass14Pass15Pass16(a perfect square)Pass17Pass18Pass19\n"); _ln(15); + _to(" Pass20\n"); + _ln(16); _to("

"); _ts(2); __toffee.res = __toffee.out.join(""); @@ -3212,6 +3261,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { for (_i = 0, _len = supplies.length; _i < _len; _i++) { supply = supplies[_i]; _ts(1); + _ts(1); _to("
  • "); _to("" + (supply != null ? escape(supply) : '')); _to("
  • "); @@ -3390,6 +3440,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts(1); _ts(2); print_it = function(msg) { + _ts(1); _ts(1); _ln(2); _to("" + (msg != null ? escape(msg) : '')); diff --git a/test/express3/views/index.toffee b/test/express3/views/index.toffee index a68d0a1..cb75d1b 100644 --- a/test/express3/views/index.toffee +++ b/test/express3/views/index.toffee @@ -278,7 +278,8 @@ Pass7Pass8 ...passed with flying colors.

    -
    0
    1
    2
    3 (my favorite number)
    4
    5
    6
    7
    8
    9 + Pass12Pass13Pass14Pass15Pass16(a perfect square)Pass17Pass18Pass19 + Pass20

    From b080d445af90b1db5a71085cb782c603c269d80c Mon Sep 17 00:00:00 2001 From: Chris Coyne Date: Wed, 8 Aug 2012 13:20:31 -0300 Subject: [PATCH 016/132] Update README.md --- README.md | 163 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 93 insertions(+), 70 deletions(-) diff --git a/README.md b/README.md index 9c5bc4a..73d3b52 100644 --- a/README.md +++ b/README.md @@ -115,46 +115,118 @@ With nested code, indentation of your CoffeeScript is magically maintained. #} ``` -### Commenting out a block of code +### By now, you probably have questions about indenting -In toffee mode, you can comment out a region with `{##` and `##}`. +Since CoffeeScript is sensitive to indenting, so is Toffee. + +But...Toffee is smart about inferring indenting. When you want to create a coffee block, you can indent it however +you like, and all that matters is that the internal, relative indenting is correct. For example, these +are identical: ```html -
    - I don't want to output this anymore... - {## -

    An ode to Ruby on Rails

    -

    #{partial 'ode.toffee'}

    - ##} -
    +

    + {# + if user.is_awesome {: + YAY! + :} + #} +

    +

    +{# +if user.is_awesome {: + YAY! +:} +#} +

    ``` +In other words, feel free to pick whatever indentation baseline you want when entering a region of Coffee. -### Toffee is smart about indenting. +Note that where you put your toffee mode tokens (`{:`) is important, as the following illustrates: -You can indent your `{# #}` region however, you want, and +```html +

    + {# + if x is true + if y is true + if z is true + {: + x is true! I don't know anything about y or z, though. + :} + #} +

    +``` -By default, when you enter `{: ... :}`, the Toffee compiler assumes you're entering an indented region, -probably because of a loop or conditional. -If you ever want to cut into toffee mode without indenting, use `-{: ... :}`. For example: +As the above shows, the simple way to think of a `{: ... :}` +region is as a single line of CoffeeScript indented to wherever you put the opening `{`. + + +One syntactic convenience: if you start a `{:` on the same line as some preceeding CoffeeScript, it's +treated the same as +putting it on a new line and indenting one level. So the following three conditionals are the same: + +```html +{# + if x is true + {:yay:} +#} ``` + +```html {# - name = "Hans Gruber" - -{:You're a hell of a thief, #{name}:} + if x is true {:yay:} #} ``` -The above is identical to: +```html +{# + if x is true {: + yay + :} +#} +``` + +(The third one has extra whitespace around the "yay." + + +### One gotcha with indenting + + +THIS IS AN ERROR +```html +{# if x is 0 {:Yay!:} + else {:Burned:} +#} ``` -{# - name = "Hans Gruber" - print "You're a hell of a thief, #{name}" + +Note that the indentations before the 'if' and the 'else' are technically different, +as the `if` has only 1 space before it, and the `else` has 2. If you're writing +multiple lines of CoffeeScript, it's better style to separate these lines anyway: + +GOOD +```html +{# + if x is 0 {:Yay!:} + else {:Burned:} #} ``` -Well, it's not exactly identical. Let's talk about escaping. + +## Commenting out a block of code + +In toffee mode, you can comment out a region with `{##` and `##}`. + +```html +
    + I don't want to output this anymore... + {## +

    An ode to Ruby on Rails

    +

    #{partial 'ode.toffee'}

    + ##} +
    +``` ## Escaping @@ -304,55 +376,6 @@ Yes, this works in Express 3.0, emulating the Express 2.0 way. If you publish a a var called `body`. Then your layout is rendered, using all your vars plus the new `body` var. -#### How does the indentation work? - -Toffee realigns all your coffeescript inside a `{# region #}` by normalizing the indentation of that region. -So it doesn't matter how you indent things, as long as it makes local sense inside that region. - -For example, these are all identical: - -```html -

    {# if x is 0 {:Yay!:} else {:Burned:} #}

    -``` - -```html -

    {# - if x is 0 {:Yay!:} else {:Burned:} -#}

    -``` - -```html -

    -{# - if x is 0 {:Yay!:} - else {:Burned:} -#}

    -``` - -However, this would cause an error: - -ERROR -```html -

    -{# - if x is 0 {:Yay!:} - else {:Burned:} -#}

    -``` - -As would this more subtle case: - -ERROR -```html -

    -{# if x is 0 {:Yay!:} - else {:Burned:} -#}

    -``` - -In the above 2 cases, note that the leading whitespaces before the `if` and `else` are different, which is a CoffeeScript error. - - ## Installation & Usage ``` From de52ad07764e4d2f256fe9ab6e3aa4d2f197b74d Mon Sep 17 00:00:00 2001 From: Chris Coyne Date: Wed, 8 Aug 2012 13:24:26 -0300 Subject: [PATCH 017/132] Update README.md --- README.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 73d3b52..5dfe3f3 100644 --- a/README.md +++ b/README.md @@ -187,8 +187,7 @@ putting it on a new line and indenting one level. So the following three conditi #} ``` -(The third one has extra whitespace around the "yay." - +The third example has extra whitespace around the "yay," but otherwise the three are logically identical. ### One gotcha with indenting @@ -213,8 +212,15 @@ GOOD #} ``` +However, with a single line of CoffeeScript, feel free to keep it all on one line: + +GOOD +``` +
    {# foo = "bar" #}
    +``` + -## Commenting out a block of code +## Commenting out a block of toffee In toffee mode, you can comment out a region with `{##` and `##}`. From e411cc21f53ea11e00acaecc4a824830bb0eed7f Mon Sep 17 00:00:00 2001 From: Chris Coyne Date: Wed, 8 Aug 2012 13:27:28 -0300 Subject: [PATCH 018/132] Update README.md --- README.md | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 5dfe3f3..8df501b 100644 --- a/README.md +++ b/README.md @@ -119,9 +119,9 @@ With nested code, indentation of your CoffeeScript is magically maintained. Since CoffeeScript is sensitive to indenting, so is Toffee. -But...Toffee is smart about inferring indenting. When you want to create a coffee block, you can indent it however -you like, and all that matters is that the internal, relative indenting is correct. For example, these -are identical: +But...Toffee doesn't care where you start your CoffeeScript. When you want to create a coffee block, +you can indent it however you like, and all that matters is that the internal, +relative indenting is correct. For example, these are identical: ```html

    @@ -140,7 +140,7 @@ if user.is_awesome {:

    ``` -In other words, feel free to pick whatever indentation baseline you want when entering a region of Coffee. +In other words, feel free to pick whatever indentation baseline you want when entering a region of CoffeeScript. Note that where you put your toffee mode tokens (`{:`) is important, as the following illustrates: @@ -163,8 +163,8 @@ region is as a single line of CoffeeScript indented to wherever you put the open One syntactic convenience: if you start a `{:` on the same line as some preceeding CoffeeScript, it's -treated the same as -putting it on a new line and indenting one level. So the following three conditionals are the same: +treated the same as putting it on a new line and indenting one level. +So the following three conditionals are the same: ```html {# @@ -201,8 +201,7 @@ THIS IS AN ERROR ``` Note that the indentations before the 'if' and the 'else' are technically different, -as the `if` has only 1 space before it, and the `else` has 2. If you're writing -multiple lines of CoffeeScript, it's better style to separate these lines anyway: +as the `if` has only 1 space before it, and the `else` has 2. This is better style anyway: GOOD ```html @@ -212,7 +211,7 @@ GOOD #} ``` -However, with a single line of CoffeeScript, feel free to keep it all on one line: +With a single line of CoffeeScript, feel free to keep it all on one line: GOOD ``` From e10d7cd9c05b9d220126e100368b850c8914c00d Mon Sep 17 00:00:00 2001 From: "ccoyne77@gmail.com" Date: Wed, 8 Aug 2012 13:39:23 -0400 Subject: [PATCH 019/132] version bump --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e65c379..edd05fd 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "toffee", "description": "An Express 3.x and 2.x templating language based on CoffeeScript with slicker tokens and syntax. Built with love at OkCupid.", - "version": "0.0.35", + "version": "0.0.36", "directories": { "lib": "./lib" }, From 71d9e4b8a251c8e7c9254191674bd16996873b7f Mon Sep 17 00:00:00 2001 From: Chris Coyne Date: Wed, 8 Aug 2012 15:03:15 -0300 Subject: [PATCH 020/132] Update README.md --- README.md | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 8df501b..42d6a2c 100644 --- a/README.md +++ b/README.md @@ -150,17 +150,27 @@ Note that where you put your toffee mode tokens (`{:`) is important, as the foll if x is true if y is true if z is true + w = true {: - x is true! I don't know anything about y or z, though. + x is true! Dunno anything about y or z, though. :} #}

    ``` -As the above shows, the simple way to think of a `{: ... :}` -region is as a single line of CoffeeScript indented to wherever you put the opening `{`. - +Why? Because this is roughly the same as saying: +```html +

    + {# + if x is true + if y is true + if z is true + w = true + print "\n x is true! Dunno anything about y or z, though.\n " + #} +

    +``` One syntactic convenience: if you start a `{:` on the same line as some preceeding CoffeeScript, it's treated the same as putting it on a new line and indenting one level. From 840316dc5e9b63a1caef66cc2173d792181a8bde Mon Sep 17 00:00:00 2001 From: "ccoyne77@gmail.com" Date: Wed, 15 Aug 2012 15:27:03 -0400 Subject: [PATCH 021/132] renamed "locals" to __locals so it is available as a pub var --- lib/view.js | 2 +- src/view.coffee | 12 +- .../express3/public/javascripts/test_cases.js | 456 +++++++++--------- 3 files changed, 235 insertions(+), 235 deletions(-) diff --git a/lib/view.js b/lib/view.js index aa0f302..5720b42 100644 --- a/lib/view.js +++ b/lib/view.js @@ -523,7 +523,7 @@ view.prototype._coffeeHeaders = function() { var ___; ___ = this._tabAsSpaces(); - return "" + (this.browserMode ? '' : getCommonHeaders(false)) + "\ntmpl = toffee.templates[\"" + this.bundlePath + "\"] =\n bundlePath: \"" + this.bundlePath + "\"\ntmpl.pub = (locals) ->\n" + ___ + "_l = locals\n" + ___ + "_t = _l.__toffee = { out: []}\n" + ___ + "_to = (x) -> locals.__toffee.out.push x\n" + ___ + "_ln = (x) -> locals.__toffee.lineno = x\n" + ___ + "_ts = (x) -> locals.__toffee.state = x\n\n" + ___ + "if not _l.print? then _l.print = (o) -> toffee.__print _l, o\n" + ___ + "if not _l.json? then _l.json = (o) -> toffee.__json _l, o\n" + ___ + "if not _l.raw? then _l.raw = (o) -> toffee.__raw _l, o\n" + ___ + "if not _l.html? then _l.html = (o) -> toffee.__html _l, o\n" + ___ + "if not _l.escape? then _l.escape = (o) -> toffee.__escape _l, o\n" + ___ + "if not _l.partial? then _l.partial = (path, vars) -> toffee.__partial toffee.templates[\"" + this.bundlePath + "\"], _l, path, vars\n" + ___ + "if not _l.snippet? then _l.snippet = (path, vars) -> toffee.__snippet toffee.templates[\"" + this.bundlePath + "\"], _l, path, vars\n\n" + ___ + "_t.print = _l.print\n" + ___ + "_t.json = _l.json\n" + ___ + "_t.raw = _l.raw\n" + ___ + "_t.html = _l.html\n" + ___ + "_t.escape = _l.escape\n" + ___ + "_t.partial = _l.partial\n" + ___ + "_t.snippet = _l.snippet\n\n" + ___ + "`with (locals) {`\n" + ___ + "__toffee.out = []"; + return "" + (this.browserMode ? '' : getCommonHeaders(false)) + "\ntmpl = toffee.templates[\"" + this.bundlePath + "\"] =\n bundlePath: \"" + this.bundlePath + "\"\ntmpl.pub = (__locals) ->\n" + ___ + "_l = __locals\n" + ___ + "_t = _l.__toffee = { out: []}\n" + ___ + "_to = (x) -> __locals.__toffee.out.push x\n" + ___ + "_ln = (x) -> __locals.__toffee.lineno = x\n" + ___ + "_ts = (x) -> __locals.__toffee.state = x\n\n" + ___ + "if not _l.print? then _l.print = (o) -> toffee.__print _l, o\n" + ___ + "if not _l.json? then _l.json = (o) -> toffee.__json _l, o\n" + ___ + "if not _l.raw? then _l.raw = (o) -> toffee.__raw _l, o\n" + ___ + "if not _l.html? then _l.html = (o) -> toffee.__html _l, o\n" + ___ + "if not _l.escape? then _l.escape = (o) -> toffee.__escape _l, o\n" + ___ + "if not _l.partial? then _l.partial = (path, vars) -> toffee.__partial toffee.templates[\"" + this.bundlePath + "\"], _l, path, vars\n" + ___ + "if not _l.snippet? then _l.snippet = (path, vars) -> toffee.__snippet toffee.templates[\"" + this.bundlePath + "\"], _l, path, vars\n\n" + ___ + "_t.print = _l.print\n" + ___ + "_t.json = _l.json\n" + ___ + "_t.raw = _l.raw\n" + ___ + "_t.html = _l.html\n" + ___ + "_t.escape = _l.escape\n" + ___ + "_t.partial = _l.partial\n" + ___ + "_t.snippet = _l.snippet\n\n" + ___ + "`with (__locals) {`\n" + ___ + "__toffee.out = []"; }; view.prototype._coffeeFooters = function() { diff --git a/src/view.coffee b/src/view.coffee index 38187b5..8879436 100644 --- a/src/view.coffee +++ b/src/view.coffee @@ -452,12 +452,12 @@ class view #{if @browserMode then '' else getCommonHeaders(false)} tmpl = toffee.templates["#{@bundlePath}"] = bundlePath: "#{@bundlePath}" -tmpl.pub = (locals) -> -#{___}_l = locals +tmpl.pub = (__locals) -> +#{___}_l = __locals #{___}_t = _l.__toffee = { out: []} -#{___}_to = (x) -> locals.__toffee.out.push x -#{___}_ln = (x) -> locals.__toffee.lineno = x -#{___}_ts = (x) -> locals.__toffee.state = x +#{___}_to = (x) -> __locals.__toffee.out.push x +#{___}_ln = (x) -> __locals.__toffee.lineno = x +#{___}_ts = (x) -> __locals.__toffee.state = x #{___}if not _l.print? then _l.print = (o) -> toffee.__print _l, o #{___}if not _l.json? then _l.json = (o) -> toffee.__json _l, o @@ -475,7 +475,7 @@ tmpl.pub = (locals) -> #{___}_t.partial = _l.partial #{___}_t.snippet = _l.snippet -#{___}`with (locals) {` +#{___}`with (__locals) {` #{___}__toffee.out = [] """ diff --git a/test/express3/public/javascripts/test_cases.js b/test/express3/public/javascripts/test_cases.js index 6901fee..0238c7f 100644 --- a/test/express3/public/javascripts/test_cases.js +++ b/test/express3/public/javascripts/test_cases.js @@ -110,20 +110,20 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { bundlePath: "/big_file/input.toffee" }; - tmpl.pub = function(locals) { + tmpl.pub = function(__locals) { var count, i, _i, _l, _ln, _t, _to, _ts; - _l = locals; + _l = __locals; _t = _l.__toffee = { out: [] }; _to = function(x) { - return locals.__toffee.out.push(x); + return __locals.__toffee.out.push(x); }; _ln = function(x) { - return locals.__toffee.lineno = x; + return __locals.__toffee.lineno = x; }; _ts = function(x) { - return locals.__toffee.state = x; + return __locals.__toffee.state = x; }; if (!(_l.print != null)) { _l.print = function(o) { @@ -167,7 +167,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _t.escape = _l.escape; _t.partial = _l.partial; _t.snippet = _l.snippet; - with (locals) {; + with (__locals) {; __toffee.out = []; _ts(1); @@ -541,20 +541,20 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { bundlePath: "/big_file/output.toffee" }; - tmpl.pub = function(locals) { + tmpl.pub = function(__locals) { var _l, _ln, _t, _to, _ts; - _l = locals; + _l = __locals; _t = _l.__toffee = { out: [] }; _to = function(x) { - return locals.__toffee.out.push(x); + return __locals.__toffee.out.push(x); }; _ln = function(x) { - return locals.__toffee.lineno = x; + return __locals.__toffee.lineno = x; }; _ts = function(x) { - return locals.__toffee.state = x; + return __locals.__toffee.state = x; }; if (!(_l.print != null)) { _l.print = function(o) { @@ -598,7 +598,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _t.escape = _l.escape; _t.partial = _l.partial; _t.snippet = _l.snippet; - with (locals) {; + with (__locals) {; __toffee.out = []; _ts(1); @@ -624,20 +624,20 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { bundlePath: "/comments/input.toffee" }; - tmpl.pub = function(locals) { + tmpl.pub = function(__locals) { var _l, _ln, _t, _to, _ts; - _l = locals; + _l = __locals; _t = _l.__toffee = { out: [] }; _to = function(x) { - return locals.__toffee.out.push(x); + return __locals.__toffee.out.push(x); }; _ln = function(x) { - return locals.__toffee.lineno = x; + return __locals.__toffee.lineno = x; }; _ts = function(x) { - return locals.__toffee.state = x; + return __locals.__toffee.state = x; }; if (!(_l.print != null)) { _l.print = function(o) { @@ -681,7 +681,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _t.escape = _l.escape; _t.partial = _l.partial; _t.snippet = _l.snippet; - with (locals) {; + with (__locals) {; __toffee.out = []; _ts(1); @@ -733,20 +733,20 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { bundlePath: "/comments/output.toffee" }; - tmpl.pub = function(locals) { + tmpl.pub = function(__locals) { var _l, _ln, _t, _to, _ts; - _l = locals; + _l = __locals; _t = _l.__toffee = { out: [] }; _to = function(x) { - return locals.__toffee.out.push(x); + return __locals.__toffee.out.push(x); }; _ln = function(x) { - return locals.__toffee.lineno = x; + return __locals.__toffee.lineno = x; }; _ts = function(x) { - return locals.__toffee.state = x; + return __locals.__toffee.state = x; }; if (!(_l.print != null)) { _l.print = function(o) { @@ -790,7 +790,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _t.escape = _l.escape; _t.partial = _l.partial; _t.snippet = _l.snippet; - with (locals) {; + with (__locals) {; __toffee.out = []; _ts(1); @@ -827,20 +827,20 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { bundlePath: "/custom_escape/input.toffee" }; - tmpl.pub = function(locals) { + tmpl.pub = function(__locals) { var w, x, y, z, _l, _ln, _t, _to, _ts; - _l = locals; + _l = __locals; _t = _l.__toffee = { out: [] }; _to = function(x) { - return locals.__toffee.out.push(x); + return __locals.__toffee.out.push(x); }; _ln = function(x) { - return locals.__toffee.lineno = x; + return __locals.__toffee.lineno = x; }; _ts = function(x) { - return locals.__toffee.state = x; + return __locals.__toffee.state = x; }; if (!(_l.print != null)) { _l.print = function(o) { @@ -884,7 +884,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _t.escape = _l.escape; _t.partial = _l.partial; _t.snippet = _l.snippet; - with (locals) {; + with (__locals) {; __toffee.out = []; _ts(1); @@ -991,20 +991,20 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { bundlePath: "/custom_escape/output.toffee" }; - tmpl.pub = function(locals) { + tmpl.pub = function(__locals) { var _l, _ln, _t, _to, _ts; - _l = locals; + _l = __locals; _t = _l.__toffee = { out: [] }; _to = function(x) { - return locals.__toffee.out.push(x); + return __locals.__toffee.out.push(x); }; _ln = function(x) { - return locals.__toffee.lineno = x; + return __locals.__toffee.lineno = x; }; _ts = function(x) { - return locals.__toffee.state = x; + return __locals.__toffee.state = x; }; if (!(_l.print != null)) { _l.print = function(o) { @@ -1048,7 +1048,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _t.escape = _l.escape; _t.partial = _l.partial; _t.snippet = _l.snippet; - with (locals) {; + with (__locals) {; __toffee.out = []; _ts(1); @@ -1120,20 +1120,20 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { bundlePath: "/eco_compare/input.toffee" }; - tmpl.pub = function(locals) { + tmpl.pub = function(__locals) { var f, friends, project, _i, _l, _len, _ln, _ref, _t, _to, _ts; - _l = locals; + _l = __locals; _t = _l.__toffee = { out: [] }; _to = function(x) { - return locals.__toffee.out.push(x); + return __locals.__toffee.out.push(x); }; _ln = function(x) { - return locals.__toffee.lineno = x; + return __locals.__toffee.lineno = x; }; _ts = function(x) { - return locals.__toffee.state = x; + return __locals.__toffee.state = x; }; if (!(_l.print != null)) { _l.print = function(o) { @@ -1177,7 +1177,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _t.escape = _l.escape; _t.partial = _l.partial; _t.snippet = _l.snippet; - with (locals) {; + with (__locals) {; __toffee.out = []; _ts(1); @@ -1273,20 +1273,20 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { bundlePath: "/eco_compare/output.toffee" }; - tmpl.pub = function(locals) { + tmpl.pub = function(__locals) { var _l, _ln, _t, _to, _ts; - _l = locals; + _l = __locals; _t = _l.__toffee = { out: [] }; _to = function(x) { - return locals.__toffee.out.push(x); + return __locals.__toffee.out.push(x); }; _ln = function(x) { - return locals.__toffee.lineno = x; + return __locals.__toffee.lineno = x; }; _ts = function(x) { - return locals.__toffee.state = x; + return __locals.__toffee.state = x; }; if (!(_l.print != null)) { _l.print = function(o) { @@ -1330,7 +1330,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _t.escape = _l.escape; _t.partial = _l.partial; _t.snippet = _l.snippet; - with (locals) {; + with (__locals) {; __toffee.out = []; _ts(1); @@ -1372,20 +1372,20 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { bundlePath: "/escape/input.toffee" }; - tmpl.pub = function(locals) { + tmpl.pub = function(__locals) { var w, x, y, z, _l, _ln, _t, _to, _ts; - _l = locals; + _l = __locals; _t = _l.__toffee = { out: [] }; _to = function(x) { - return locals.__toffee.out.push(x); + return __locals.__toffee.out.push(x); }; _ln = function(x) { - return locals.__toffee.lineno = x; + return __locals.__toffee.lineno = x; }; _ts = function(x) { - return locals.__toffee.state = x; + return __locals.__toffee.state = x; }; if (!(_l.print != null)) { _l.print = function(o) { @@ -1429,7 +1429,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _t.escape = _l.escape; _t.partial = _l.partial; _t.snippet = _l.snippet; - with (locals) {; + with (__locals) {; __toffee.out = []; _ts(1); @@ -1572,20 +1572,20 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { bundlePath: "/escape/output.toffee" }; - tmpl.pub = function(locals) { + tmpl.pub = function(__locals) { var _l, _ln, _t, _to, _ts; - _l = locals; + _l = __locals; _t = _l.__toffee = { out: [] }; _to = function(x) { - return locals.__toffee.out.push(x); + return __locals.__toffee.out.push(x); }; _ln = function(x) { - return locals.__toffee.lineno = x; + return __locals.__toffee.lineno = x; }; _ts = function(x) { - return locals.__toffee.state = x; + return __locals.__toffee.state = x; }; if (!(_l.print != null)) { _l.print = function(o) { @@ -1629,7 +1629,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _t.escape = _l.escape; _t.partial = _l.partial; _t.snippet = _l.snippet; - with (locals) {; + with (__locals) {; __toffee.out = []; _ts(1); @@ -1729,20 +1729,20 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { bundlePath: "/hello_world/input.toffee" }; - tmpl.pub = function(locals) { + tmpl.pub = function(__locals) { var _l, _ln, _t, _to, _ts; - _l = locals; + _l = __locals; _t = _l.__toffee = { out: [] }; _to = function(x) { - return locals.__toffee.out.push(x); + return __locals.__toffee.out.push(x); }; _ln = function(x) { - return locals.__toffee.lineno = x; + return __locals.__toffee.lineno = x; }; _ts = function(x) { - return locals.__toffee.state = x; + return __locals.__toffee.state = x; }; if (!(_l.print != null)) { _l.print = function(o) { @@ -1786,7 +1786,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _t.escape = _l.escape; _t.partial = _l.partial; _t.snippet = _l.snippet; - with (locals) {; + with (__locals) {; __toffee.out = []; _ts(1); @@ -1813,20 +1813,20 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { bundlePath: "/hello_world/output.toffee" }; - tmpl.pub = function(locals) { + tmpl.pub = function(__locals) { var _l, _ln, _t, _to, _ts; - _l = locals; + _l = __locals; _t = _l.__toffee = { out: [] }; _to = function(x) { - return locals.__toffee.out.push(x); + return __locals.__toffee.out.push(x); }; _ln = function(x) { - return locals.__toffee.lineno = x; + return __locals.__toffee.lineno = x; }; _ts = function(x) { - return locals.__toffee.state = x; + return __locals.__toffee.state = x; }; if (!(_l.print != null)) { _l.print = function(o) { @@ -1870,7 +1870,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _t.escape = _l.escape; _t.partial = _l.partial; _t.snippet = _l.snippet; - with (locals) {; + with (__locals) {; __toffee.out = []; _ts(1); @@ -1896,20 +1896,20 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { bundlePath: "/hello_world/temp.toffee" }; - tmpl.pub = function(locals) { + tmpl.pub = function(__locals) { var _l, _ln, _t, _to, _ts; - _l = locals; + _l = __locals; _t = _l.__toffee = { out: [] }; _to = function(x) { - return locals.__toffee.out.push(x); + return __locals.__toffee.out.push(x); }; _ln = function(x) { - return locals.__toffee.lineno = x; + return __locals.__toffee.lineno = x; }; _ts = function(x) { - return locals.__toffee.state = x; + return __locals.__toffee.state = x; }; if (!(_l.print != null)) { _l.print = function(o) { @@ -1953,7 +1953,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _t.escape = _l.escape; _t.partial = _l.partial; _t.snippet = _l.snippet; - with (locals) {; + with (__locals) {; __toffee.out = []; _ts(1); @@ -1992,20 +1992,20 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { bundlePath: "/include_order/child.toffee" }; - tmpl.pub = function(locals) { + tmpl.pub = function(__locals) { var _l, _ln, _t, _to, _ts; - _l = locals; + _l = __locals; _t = _l.__toffee = { out: [] }; _to = function(x) { - return locals.__toffee.out.push(x); + return __locals.__toffee.out.push(x); }; _ln = function(x) { - return locals.__toffee.lineno = x; + return __locals.__toffee.lineno = x; }; _ts = function(x) { - return locals.__toffee.state = x; + return __locals.__toffee.state = x; }; if (!(_l.print != null)) { _l.print = function(o) { @@ -2049,7 +2049,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _t.escape = _l.escape; _t.partial = _l.partial; _t.snippet = _l.snippet; - with (locals) {; + with (__locals) {; __toffee.out = []; _ts(1); @@ -2084,20 +2084,20 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { bundlePath: "/include_order/input.toffee" }; - tmpl.pub = function(locals) { + tmpl.pub = function(__locals) { var say_hi, _l, _ln, _t, _to, _ts; - _l = locals; + _l = __locals; _t = _l.__toffee = { out: [] }; _to = function(x) { - return locals.__toffee.out.push(x); + return __locals.__toffee.out.push(x); }; _ln = function(x) { - return locals.__toffee.lineno = x; + return __locals.__toffee.lineno = x; }; _ts = function(x) { - return locals.__toffee.state = x; + return __locals.__toffee.state = x; }; if (!(_l.print != null)) { _l.print = function(o) { @@ -2141,7 +2141,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _t.escape = _l.escape; _t.partial = _l.partial; _t.snippet = _l.snippet; - with (locals) {; + with (__locals) {; __toffee.out = []; _ts(1); @@ -2186,20 +2186,20 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { bundlePath: "/include_order/output.toffee" }; - tmpl.pub = function(locals) { + tmpl.pub = function(__locals) { var _l, _ln, _t, _to, _ts; - _l = locals; + _l = __locals; _t = _l.__toffee = { out: [] }; _to = function(x) { - return locals.__toffee.out.push(x); + return __locals.__toffee.out.push(x); }; _ln = function(x) { - return locals.__toffee.lineno = x; + return __locals.__toffee.lineno = x; }; _ts = function(x) { - return locals.__toffee.state = x; + return __locals.__toffee.state = x; }; if (!(_l.print != null)) { _l.print = function(o) { @@ -2243,7 +2243,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _t.escape = _l.escape; _t.partial = _l.partial; _t.snippet = _l.snippet; - with (locals) {; + with (__locals) {; __toffee.out = []; _ts(1); @@ -2281,20 +2281,20 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { bundlePath: "/include_recursion/input.toffee" }; - tmpl.pub = function(locals) { + tmpl.pub = function(__locals) { var _l, _ln, _t, _to, _ts; - _l = locals; + _l = __locals; _t = _l.__toffee = { out: [] }; _to = function(x) { - return locals.__toffee.out.push(x); + return __locals.__toffee.out.push(x); }; _ln = function(x) { - return locals.__toffee.lineno = x; + return __locals.__toffee.lineno = x; }; _ts = function(x) { - return locals.__toffee.state = x; + return __locals.__toffee.state = x; }; if (!(_l.print != null)) { _l.print = function(o) { @@ -2338,7 +2338,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _t.escape = _l.escape; _t.partial = _l.partial; _t.snippet = _l.snippet; - with (locals) {; + with (__locals) {; __toffee.out = []; _ts(1); @@ -2372,20 +2372,20 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { bundlePath: "/include_recursion/output.toffee" }; - tmpl.pub = function(locals) { + tmpl.pub = function(__locals) { var _l, _ln, _t, _to, _ts; - _l = locals; + _l = __locals; _t = _l.__toffee = { out: [] }; _to = function(x) { - return locals.__toffee.out.push(x); + return __locals.__toffee.out.push(x); }; _ln = function(x) { - return locals.__toffee.lineno = x; + return __locals.__toffee.lineno = x; }; _ts = function(x) { - return locals.__toffee.state = x; + return __locals.__toffee.state = x; }; if (!(_l.print != null)) { _l.print = function(o) { @@ -2429,7 +2429,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _t.escape = _l.escape; _t.partial = _l.partial; _t.snippet = _l.snippet; - with (locals) {; + with (__locals) {; __toffee.out = []; _ts(1); @@ -2455,20 +2455,20 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { bundlePath: "/include_techniques/input.toffee" }; - tmpl.pub = function(locals) { + tmpl.pub = function(__locals) { var _l, _ln, _t, _to, _ts; - _l = locals; + _l = __locals; _t = _l.__toffee = { out: [] }; _to = function(x) { - return locals.__toffee.out.push(x); + return __locals.__toffee.out.push(x); }; _ln = function(x) { - return locals.__toffee.lineno = x; + return __locals.__toffee.lineno = x; }; _ts = function(x) { - return locals.__toffee.state = x; + return __locals.__toffee.state = x; }; if (!(_l.print != null)) { _l.print = function(o) { @@ -2512,7 +2512,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _t.escape = _l.escape; _t.partial = _l.partial; _t.snippet = _l.snippet; - with (locals) {; + with (__locals) {; __toffee.out = []; _ts(1); @@ -2561,20 +2561,20 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { bundlePath: "/include_techniques/message.toffee" }; - tmpl.pub = function(locals) { + tmpl.pub = function(__locals) { var from, _l, _ln, _t, _to, _ts; - _l = locals; + _l = __locals; _t = _l.__toffee = { out: [] }; _to = function(x) { - return locals.__toffee.out.push(x); + return __locals.__toffee.out.push(x); }; _ln = function(x) { - return locals.__toffee.lineno = x; + return __locals.__toffee.lineno = x; }; _ts = function(x) { - return locals.__toffee.state = x; + return __locals.__toffee.state = x; }; if (!(_l.print != null)) { _l.print = function(o) { @@ -2618,7 +2618,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _t.escape = _l.escape; _t.partial = _l.partial; _t.snippet = _l.snippet; - with (locals) {; + with (__locals) {; __toffee.out = []; _ts(1); @@ -2651,20 +2651,20 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { bundlePath: "/include_techniques/output.toffee" }; - tmpl.pub = function(locals) { + tmpl.pub = function(__locals) { var _l, _ln, _t, _to, _ts; - _l = locals; + _l = __locals; _t = _l.__toffee = { out: [] }; _to = function(x) { - return locals.__toffee.out.push(x); + return __locals.__toffee.out.push(x); }; _ln = function(x) { - return locals.__toffee.lineno = x; + return __locals.__toffee.lineno = x; }; _ts = function(x) { - return locals.__toffee.state = x; + return __locals.__toffee.state = x; }; if (!(_l.print != null)) { _l.print = function(o) { @@ -2708,7 +2708,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _t.escape = _l.escape; _t.partial = _l.partial; _t.snippet = _l.snippet; - with (locals) {; + with (__locals) {; __toffee.out = []; _ts(1); @@ -2757,20 +2757,20 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { bundlePath: "/indent_attack/input.toffee" }; - tmpl.pub = function(locals) { + tmpl.pub = function(__locals) { var i, square, x, _i, _j, _l, _ln, _t, _to, _ts; - _l = locals; + _l = __locals; _t = _l.__toffee = { out: [] }; _to = function(x) { - return locals.__toffee.out.push(x); + return __locals.__toffee.out.push(x); }; _ln = function(x) { - return locals.__toffee.lineno = x; + return __locals.__toffee.lineno = x; }; _ts = function(x) { - return locals.__toffee.state = x; + return __locals.__toffee.state = x; }; if (!(_l.print != null)) { _l.print = function(o) { @@ -2814,7 +2814,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _t.escape = _l.escape; _t.partial = _l.partial; _t.snippet = _l.snippet; - with (locals) {; + with (__locals) {; __toffee.out = []; _ts(1); @@ -3075,20 +3075,20 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { bundlePath: "/indent_attack/output.toffee" }; - tmpl.pub = function(locals) { + tmpl.pub = function(__locals) { var _l, _ln, _t, _to, _ts; - _l = locals; + _l = __locals; _t = _l.__toffee = { out: [] }; _to = function(x) { - return locals.__toffee.out.push(x); + return __locals.__toffee.out.push(x); }; _ln = function(x) { - return locals.__toffee.lineno = x; + return __locals.__toffee.lineno = x; }; _ts = function(x) { - return locals.__toffee.state = x; + return __locals.__toffee.state = x; }; if (!(_l.print != null)) { _l.print = function(o) { @@ -3132,7 +3132,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _t.escape = _l.escape; _t.partial = _l.partial; _t.snippet = _l.snippet; - with (locals) {; + with (__locals) {; __toffee.out = []; _ts(1); @@ -3188,20 +3188,20 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { bundlePath: "/junk/input.toffee" }; - tmpl.pub = function(locals) { + tmpl.pub = function(__locals) { var supplies, supply, _i, _l, _len, _ln, _t, _to, _ts; - _l = locals; + _l = __locals; _t = _l.__toffee = { out: [] }; _to = function(x) { - return locals.__toffee.out.push(x); + return __locals.__toffee.out.push(x); }; _ln = function(x) { - return locals.__toffee.lineno = x; + return __locals.__toffee.lineno = x; }; _ts = function(x) { - return locals.__toffee.state = x; + return __locals.__toffee.state = x; }; if (!(_l.print != null)) { _l.print = function(o) { @@ -3245,7 +3245,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _t.escape = _l.escape; _t.partial = _l.partial; _t.snippet = _l.snippet; - with (locals) {; + with (__locals) {; __toffee.out = []; _ts(1); @@ -3290,20 +3290,20 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { bundlePath: "/junk/output.toffee" }; - tmpl.pub = function(locals) { + tmpl.pub = function(__locals) { var _l, _ln, _t, _to, _ts; - _l = locals; + _l = __locals; _t = _l.__toffee = { out: [] }; _to = function(x) { - return locals.__toffee.out.push(x); + return __locals.__toffee.out.push(x); }; _ln = function(x) { - return locals.__toffee.lineno = x; + return __locals.__toffee.lineno = x; }; _ts = function(x) { - return locals.__toffee.state = x; + return __locals.__toffee.state = x; }; if (!(_l.print != null)) { _l.print = function(o) { @@ -3347,7 +3347,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _t.escape = _l.escape; _t.partial = _l.partial; _t.snippet = _l.snippet; - with (locals) {; + with (__locals) {; __toffee.out = []; _ts(1); @@ -3377,20 +3377,20 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { bundlePath: "/lambda_fns/input.toffee" }; - tmpl.pub = function(locals) { + tmpl.pub = function(__locals) { var echo_it, print_it, print_it_twice, _l, _ln, _t, _to, _ts; - _l = locals; + _l = __locals; _t = _l.__toffee = { out: [] }; _to = function(x) { - return locals.__toffee.out.push(x); + return __locals.__toffee.out.push(x); }; _ln = function(x) { - return locals.__toffee.lineno = x; + return __locals.__toffee.lineno = x; }; _ts = function(x) { - return locals.__toffee.state = x; + return __locals.__toffee.state = x; }; if (!(_l.print != null)) { _l.print = function(o) { @@ -3434,7 +3434,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _t.escape = _l.escape; _t.partial = _l.partial; _t.snippet = _l.snippet; - with (locals) {; + with (__locals) {; __toffee.out = []; _ts(1); @@ -3486,20 +3486,20 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { bundlePath: "/lambda_fns/output.toffee" }; - tmpl.pub = function(locals) { + tmpl.pub = function(__locals) { var _l, _ln, _t, _to, _ts; - _l = locals; + _l = __locals; _t = _l.__toffee = { out: [] }; _to = function(x) { - return locals.__toffee.out.push(x); + return __locals.__toffee.out.push(x); }; _ln = function(x) { - return locals.__toffee.lineno = x; + return __locals.__toffee.lineno = x; }; _ts = function(x) { - return locals.__toffee.state = x; + return __locals.__toffee.state = x; }; if (!(_l.print != null)) { _l.print = function(o) { @@ -3543,7 +3543,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _t.escape = _l.escape; _t.partial = _l.partial; _t.snippet = _l.snippet; - with (locals) {; + with (__locals) {; __toffee.out = []; _ts(1); @@ -3569,20 +3569,20 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { bundlePath: "/multiline_interpolation/foo.toffee" }; - tmpl.pub = function(locals) { + tmpl.pub = function(__locals) { var _l, _ln, _t, _to, _ts; - _l = locals; + _l = __locals; _t = _l.__toffee = { out: [] }; _to = function(x) { - return locals.__toffee.out.push(x); + return __locals.__toffee.out.push(x); }; _ln = function(x) { - return locals.__toffee.lineno = x; + return __locals.__toffee.lineno = x; }; _ts = function(x) { - return locals.__toffee.state = x; + return __locals.__toffee.state = x; }; if (!(_l.print != null)) { _l.print = function(o) { @@ -3626,7 +3626,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _t.escape = _l.escape; _t.partial = _l.partial; _t.snippet = _l.snippet; - with (locals) {; + with (__locals) {; __toffee.out = []; _ts(1); @@ -3654,20 +3654,20 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { bundlePath: "/multiline_interpolation/input.toffee" }; - tmpl.pub = function(locals) { + tmpl.pub = function(__locals) { var _l, _ln, _t, _to, _ts; - _l = locals; + _l = __locals; _t = _l.__toffee = { out: [] }; _to = function(x) { - return locals.__toffee.out.push(x); + return __locals.__toffee.out.push(x); }; _ln = function(x) { - return locals.__toffee.lineno = x; + return __locals.__toffee.lineno = x; }; _ts = function(x) { - return locals.__toffee.state = x; + return __locals.__toffee.state = x; }; if (!(_l.print != null)) { _l.print = function(o) { @@ -3711,7 +3711,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _t.escape = _l.escape; _t.partial = _l.partial; _t.snippet = _l.snippet; - with (locals) {; + with (__locals) {; __toffee.out = []; _ts(1); @@ -3747,20 +3747,20 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { bundlePath: "/multiline_interpolation/output.toffee" }; - tmpl.pub = function(locals) { + tmpl.pub = function(__locals) { var _l, _ln, _t, _to, _ts; - _l = locals; + _l = __locals; _t = _l.__toffee = { out: [] }; _to = function(x) { - return locals.__toffee.out.push(x); + return __locals.__toffee.out.push(x); }; _ln = function(x) { - return locals.__toffee.lineno = x; + return __locals.__toffee.lineno = x; }; _ts = function(x) { - return locals.__toffee.state = x; + return __locals.__toffee.state = x; }; if (!(_l.print != null)) { _l.print = function(o) { @@ -3804,7 +3804,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _t.escape = _l.escape; _t.partial = _l.partial; _t.snippet = _l.snippet; - with (locals) {; + with (__locals) {; __toffee.out = []; _ts(1); @@ -3834,20 +3834,20 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { bundlePath: "/plaintext/input.toffee" }; - tmpl.pub = function(locals) { + tmpl.pub = function(__locals) { var _l, _ln, _t, _to, _ts; - _l = locals; + _l = __locals; _t = _l.__toffee = { out: [] }; _to = function(x) { - return locals.__toffee.out.push(x); + return __locals.__toffee.out.push(x); }; _ln = function(x) { - return locals.__toffee.lineno = x; + return __locals.__toffee.lineno = x; }; _ts = function(x) { - return locals.__toffee.state = x; + return __locals.__toffee.state = x; }; if (!(_l.print != null)) { _l.print = function(o) { @@ -3891,7 +3891,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _t.escape = _l.escape; _t.partial = _l.partial; _t.snippet = _l.snippet; - with (locals) {; + with (__locals) {; __toffee.out = []; _ts(1); @@ -3917,20 +3917,20 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { bundlePath: "/plaintext/output.toffee" }; - tmpl.pub = function(locals) { + tmpl.pub = function(__locals) { var _l, _ln, _t, _to, _ts; - _l = locals; + _l = __locals; _t = _l.__toffee = { out: [] }; _to = function(x) { - return locals.__toffee.out.push(x); + return __locals.__toffee.out.push(x); }; _ln = function(x) { - return locals.__toffee.lineno = x; + return __locals.__toffee.lineno = x; }; _ts = function(x) { - return locals.__toffee.state = x; + return __locals.__toffee.state = x; }; if (!(_l.print != null)) { _l.print = function(o) { @@ -3974,7 +3974,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _t.escape = _l.escape; _t.partial = _l.partial; _t.snippet = _l.snippet; - with (locals) {; + with (__locals) {; __toffee.out = []; _ts(1); @@ -4000,20 +4000,20 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { bundlePath: "/snippets/foo/bar/body.toffee" }; - tmpl.pub = function(locals) { + tmpl.pub = function(__locals) { var msg, _l, _ln, _t, _to, _ts; - _l = locals; + _l = __locals; _t = _l.__toffee = { out: [] }; _to = function(x) { - return locals.__toffee.out.push(x); + return __locals.__toffee.out.push(x); }; _ln = function(x) { - return locals.__toffee.lineno = x; + return __locals.__toffee.lineno = x; }; _ts = function(x) { - return locals.__toffee.state = x; + return __locals.__toffee.state = x; }; if (!(_l.print != null)) { _l.print = function(o) { @@ -4057,7 +4057,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _t.escape = _l.escape; _t.partial = _l.partial; _t.snippet = _l.snippet; - with (locals) {; + with (__locals) {; __toffee.out = []; _ts(1); @@ -4082,20 +4082,20 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { bundlePath: "/snippets/foo/message.toffee" }; - tmpl.pub = function(locals) { + tmpl.pub = function(__locals) { var from, msg, _l, _ln, _t, _to, _ts; - _l = locals; + _l = __locals; _t = _l.__toffee = { out: [] }; _to = function(x) { - return locals.__toffee.out.push(x); + return __locals.__toffee.out.push(x); }; _ln = function(x) { - return locals.__toffee.lineno = x; + return __locals.__toffee.lineno = x; }; _ts = function(x) { - return locals.__toffee.state = x; + return __locals.__toffee.state = x; }; if (!(_l.print != null)) { _l.print = function(o) { @@ -4139,7 +4139,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _t.escape = _l.escape; _t.partial = _l.partial; _t.snippet = _l.snippet; - with (locals) {; + with (__locals) {; __toffee.out = []; _ts(1); @@ -4167,20 +4167,20 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { bundlePath: "/snippets/input.toffee" }; - tmpl.pub = function(locals) { + tmpl.pub = function(__locals) { var _l, _ln, _t, _to, _ts; - _l = locals; + _l = __locals; _t = _l.__toffee = { out: [] }; _to = function(x) { - return locals.__toffee.out.push(x); + return __locals.__toffee.out.push(x); }; _ln = function(x) { - return locals.__toffee.lineno = x; + return __locals.__toffee.lineno = x; }; _ts = function(x) { - return locals.__toffee.state = x; + return __locals.__toffee.state = x; }; if (!(_l.print != null)) { _l.print = function(o) { @@ -4224,7 +4224,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _t.escape = _l.escape; _t.partial = _l.partial; _t.snippet = _l.snippet; - with (locals) {; + with (__locals) {; __toffee.out = []; _ts(1); @@ -4263,20 +4263,20 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { bundlePath: "/snippets/output.toffee" }; - tmpl.pub = function(locals) { + tmpl.pub = function(__locals) { var _l, _ln, _t, _to, _ts; - _l = locals; + _l = __locals; _t = _l.__toffee = { out: [] }; _to = function(x) { - return locals.__toffee.out.push(x); + return __locals.__toffee.out.push(x); }; _ln = function(x) { - return locals.__toffee.lineno = x; + return __locals.__toffee.lineno = x; }; _ts = function(x) { - return locals.__toffee.state = x; + return __locals.__toffee.state = x; }; if (!(_l.print != null)) { _l.print = function(o) { @@ -4320,7 +4320,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _t.escape = _l.escape; _t.partial = _l.partial; _t.snippet = _l.snippet; - with (locals) {; + with (__locals) {; __toffee.out = []; _ts(1); @@ -4360,20 +4360,20 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { bundlePath: "/special_cases/input.toffee" }; - tmpl.pub = function(locals) { + tmpl.pub = function(__locals) { var _l, _ln, _t, _to, _ts; - _l = locals; + _l = __locals; _t = _l.__toffee = { out: [] }; _to = function(x) { - return locals.__toffee.out.push(x); + return __locals.__toffee.out.push(x); }; _ln = function(x) { - return locals.__toffee.lineno = x; + return __locals.__toffee.lineno = x; }; _ts = function(x) { - return locals.__toffee.state = x; + return __locals.__toffee.state = x; }; if (!(_l.print != null)) { _l.print = function(o) { @@ -4417,7 +4417,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _t.escape = _l.escape; _t.partial = _l.partial; _t.snippet = _l.snippet; - with (locals) {; + with (__locals) {; __toffee.out = []; _ts(1); @@ -4480,20 +4480,20 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { bundlePath: "/special_cases/output.toffee" }; - tmpl.pub = function(locals) { + tmpl.pub = function(__locals) { var _l, _ln, _t, _to, _ts; - _l = locals; + _l = __locals; _t = _l.__toffee = { out: [] }; _to = function(x) { - return locals.__toffee.out.push(x); + return __locals.__toffee.out.push(x); }; _ln = function(x) { - return locals.__toffee.lineno = x; + return __locals.__toffee.lineno = x; }; _ts = function(x) { - return locals.__toffee.state = x; + return __locals.__toffee.state = x; }; if (!(_l.print != null)) { _l.print = function(o) { @@ -4537,7 +4537,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _t.escape = _l.escape; _t.partial = _l.partial; _t.snippet = _l.snippet; - with (locals) {; + with (__locals) {; __toffee.out = []; _ts(1); From 8068f7c868abdc4d44b740dacf18fedf70f34671 Mon Sep 17 00:00:00 2001 From: "ccoyne77@gmail.com" Date: Wed, 15 Aug 2012 15:29:40 -0400 Subject: [PATCH 022/132] version bump --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index edd05fd..04c046d 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "toffee", "description": "An Express 3.x and 2.x templating language based on CoffeeScript with slicker tokens and syntax. Built with love at OkCupid.", - "version": "0.0.36", + "version": "0.0.37", "directories": { "lib": "./lib" }, From f4cf5802dea4cc6b9bdda6221dd7e389cb2bd517 Mon Sep 17 00:00:00 2001 From: Chris Coyne Date: Thu, 16 Aug 2012 09:41:33 -0300 Subject: [PATCH 023/132] Update README.md --- README.md | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 42d6a2c..69a2e8b 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,8 @@ Table of Contents * [1. Language Basics](#section_1) * [2. Notes on Escaping](#section_2) * [3. Common Questions](#section_3) - * [4. Installation & Usage](#section_4) + * [4. NodeJS Installation & Usage](#section_4) + * [5. Browser Usage](#section_5) ## Language Basics @@ -414,8 +415,7 @@ toffee = require 'toffee' app.register '.toffee', toffee ``` -express 3.x options -=================== +## express 3.x options Pretty-print errors ----- @@ -438,21 +438,12 @@ toffee = require 'toffee' toffee.expressEngine.autoEscape = false ``` +## Browser Usage! (Compiling your .toffee files) -known issues -=============== -1. command line stdout not done yet. +You can compile an entire project of .toffee files easily into a .js file. Even partials work with the same path-based syntax. -command-line -============ -You can compile an entire project of .toffee files easily. +Please see [Browser Usage](https://github.com/malgorithms/toffee/wiki) in the wiki, as the `toffee` command line program has a lot of options. -``` -npm install -g toffee (if you haven't yet) -toffee --help -``` - -This will display some examples and instructions for including a template bundle in your frontend. contributing & asking for fixes. ================= From e2e5d8c39ca60da93d4e139bff40334f758e6d2b Mon Sep 17 00:00:00 2001 From: Chris Coyne Date: Thu, 16 Aug 2012 10:33:36 -0300 Subject: [PATCH 024/132] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 69a2e8b..573ddce 100644 --- a/README.md +++ b/README.md @@ -442,7 +442,7 @@ toffee.expressEngine.autoEscape = false You can compile an entire project of .toffee files easily into a .js file. Even partials work with the same path-based syntax. -Please see [Browser Usage](https://github.com/malgorithms/toffee/wiki) in the wiki, as the `toffee` command line program has a lot of options. +Please see [Browser Usage](https://github.com/malgorithms/toffee/wiki/Browser-Usage) in the wiki, as the `toffee` command line program has a lot of options. contributing & asking for fixes. From 38c69cc815328dad012071e4773be9ce5f13bd2f Mon Sep 17 00:00:00 2001 From: "ccoyne77@gmail.com" Date: Thu, 16 Aug 2012 09:38:41 -0400 Subject: [PATCH 025/132] better error printing in the command line tool --- lib/command_line.js | 12 +++++++++--- package.json | 2 +- src/command_line.coffee | 9 +++++++-- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/lib/command_line.js b/lib/command_line.js index b0c21ab..417f5b1 100644 --- a/lib/command_line.js +++ b/lib/command_line.js @@ -29,15 +29,21 @@ and path is /foo/bar/car/thing.toffee */ - var source, v; + var bundle_path, js, source, v; source = fs.readFileSync(path, 'utf8'); + bundle_path = path.slice(start_path.length); v = new view(source, { fileName: path, - bundlePath: path.slice(start_path.length), + bundlePath: bundle_path, browserMode: true, minimize: (program.minimize != null) && program.minimize }); - return v._toJavaScript(); + js = v._toJavaScript(); + if (v.error) { + process.stderr.write(v.error.getPrettyPrintText()); + process.exit(1); + } + return js; }; recurseRun = function(start_path, curr_path, out_text) { diff --git a/package.json b/package.json index 04c046d..4addda2 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "toffee", "description": "An Express 3.x and 2.x templating language based on CoffeeScript with slicker tokens and syntax. Built with love at OkCupid.", - "version": "0.0.37", + "version": "0.0.38", "directories": { "lib": "./lib" }, diff --git a/src/command_line.coffee b/src/command_line.coffee index dfad949..ce7d870 100644 --- a/src/command_line.coffee +++ b/src/command_line.coffee @@ -47,12 +47,17 @@ compile = (start_path, path) -> and path is /foo/bar/car/thing.toffee ### source = fs.readFileSync path, 'utf8' + bundle_path = path[start_path.length...] v = new view source, fileName: path - bundlePath: path[start_path.length...] + bundlePath: bundle_path browserMode: true minimize: program.minimize? and program.minimize - return v._toJavaScript() + js = v._toJavaScript() + if v.error + process.stderr.write v.error.getPrettyPrintText() + process.exit 1 + js # ----------------------------------------------------------------------------- From b4d819064242f04c1127da2ba665ee1bd67e9b8f Mon Sep 17 00:00:00 2001 From: "ccoyne77@gmail.com" Date: Thu, 16 Aug 2012 15:54:09 -0400 Subject: [PATCH 026/132] incremental --- lib/view.js | 4 +- src/view.coffee | 37 +- .../express3/public/javascripts/test_cases.js | 1912 ++--------------- 3 files changed, 147 insertions(+), 1806 deletions(-) diff --git a/lib/view.js b/lib/view.js index 5720b42..fd3cac9 100644 --- a/lib/view.js +++ b/lib/view.js @@ -29,7 +29,7 @@ include_bundle_headers: includes some functions needed for browser use */ - return "if not toffee? then toffee = {}\nif not toffee.templates then toffee.templates = {}\n\ntoffee.states = " + (JSON.stringify(states)) + "\n\ntoffee.__json = (locals, o) ->\n if not o? then return \"null\"\n else return \"\" + JSON.stringify(o).replace(//g,'\\\\u003E').replace(/&/g,'\\\\u0026')\n\ntoffee.__raw = (locals, o) -> o\n\ntoffee.__html = (locals, o) ->\n (\"\"+o).replace(/&/g, '&').replace(//g, '>').replace(/\"/g, '"')\n\ntoffee.__escape = (locals, o) ->\n if (not locals.__toffee.autoEscape?) or locals.__toffee.autoEscape\n if o is undefined then return ''\n if o? and (typeof o) is \"object\" then return locals.json o\n return locals.html o\n return o\n\n" + (include_bundle_headers ? getBundleHeaders() : ""); + return "if not toffee? then toffee = {}\nif not toffee.templates then toffee.templates = {}\n\ntoffee.states = " + (JSON.stringify(states)) + "\n\ntoffee.__json = (locals, o) ->\n if not o? then return \"null\"\n else return \"\" + JSON.stringify(o).replace(//g,'\\\\u003E').replace(/&/g,'\\\\u0026')\n\ntoffee.__raw = (locals, o) -> o\n\ntoffee.__html = (locals, o) ->\n (\"\"+o).replace(/&/g, '&').replace(//g, '>').replace(/\"/g, '"')\n\ntoffee.__escape = (locals, o) ->\n if (not locals.__toffee.autoEscape?) or locals.__toffee.autoEscape\n if o is undefined then return ''\n if o? and (typeof o) is \"object\" then return locals.json o\n return locals.html o\n return o\n\ntoffee.__augmentLocals = (locals) ->\n _l = locals\n _t = _l.__toffee = { out: []}\n if not _l.print? then _l.print = (o) -> toffee.__print _l, o\n if not _l.json? then _l.json = (o) -> toffee.__json _l, o\n if not _l.raw? then _l.raw = (o) -> toffee.__raw _l, o\n if not _l.html? then _l.html = (o) -> toffee.__html _l, o\n if not _l.escape? then _l.escape = (o) -> toffee.__escape _l, o\n if not _l.partial? then _l.partial = (path, vars) -> toffee.__partial toffee.templates[\"" + this.bundlePath + "\"], _l, path, vars\n if not _l.snippet? then _l.snippet = (path, vars) -> toffee.__snippet toffee.templates[\"" + this.bundlePath + "\"], _l, path, vars\n _t.print = _l.print\n _t.json = _l.json\n _t.raw = _l.raw\n _t.html = _l.html\n _t.escape = _l.escape\n _t.partial = _l.partial\n _t.snippet = _l.snippet\n\n" + (include_bundle_headers ? getBundleHeaders() : ""); }; getBundleHeaders = function() { @@ -523,7 +523,7 @@ view.prototype._coffeeHeaders = function() { var ___; ___ = this._tabAsSpaces(); - return "" + (this.browserMode ? '' : getCommonHeaders(false)) + "\ntmpl = toffee.templates[\"" + this.bundlePath + "\"] =\n bundlePath: \"" + this.bundlePath + "\"\ntmpl.pub = (__locals) ->\n" + ___ + "_l = __locals\n" + ___ + "_t = _l.__toffee = { out: []}\n" + ___ + "_to = (x) -> __locals.__toffee.out.push x\n" + ___ + "_ln = (x) -> __locals.__toffee.lineno = x\n" + ___ + "_ts = (x) -> __locals.__toffee.state = x\n\n" + ___ + "if not _l.print? then _l.print = (o) -> toffee.__print _l, o\n" + ___ + "if not _l.json? then _l.json = (o) -> toffee.__json _l, o\n" + ___ + "if not _l.raw? then _l.raw = (o) -> toffee.__raw _l, o\n" + ___ + "if not _l.html? then _l.html = (o) -> toffee.__html _l, o\n" + ___ + "if not _l.escape? then _l.escape = (o) -> toffee.__escape _l, o\n" + ___ + "if not _l.partial? then _l.partial = (path, vars) -> toffee.__partial toffee.templates[\"" + this.bundlePath + "\"], _l, path, vars\n" + ___ + "if not _l.snippet? then _l.snippet = (path, vars) -> toffee.__snippet toffee.templates[\"" + this.bundlePath + "\"], _l, path, vars\n\n" + ___ + "_t.print = _l.print\n" + ___ + "_t.json = _l.json\n" + ___ + "_t.raw = _l.raw\n" + ___ + "_t.html = _l.html\n" + ___ + "_t.escape = _l.escape\n" + ___ + "_t.partial = _l.partial\n" + ___ + "_t.snippet = _l.snippet\n\n" + ___ + "`with (__locals) {`\n" + ___ + "__toffee.out = []"; + return "" + (this.browserMode ? '' : getCommonHeaders(false)) + "\ntmpl = toffee.templates[\"" + this.bundlePath + "\"] =\n bundlePath: \"" + this.bundlePath + "\"\ntmpl.pub = (__locals) ->\n" + ___ + "_to = (x) -> __locals.__toffee.out.push x\n" + ___ + "_ln = (x) -> __locals.__toffee.lineno = x\n" + ___ + "_ts = (x) -> __locals.__toffee.state = x\n" + ___ + "toffee.__augmentLocals __locals\n\n" + ___ + "`with (__locals) {`\n" + ___ + "__toffee.out = []"; }; view.prototype._coffeeFooters = function() { diff --git a/src/view.coffee b/src/view.coffee index 8879436..cfb2dc4 100644 --- a/src/view.coffee +++ b/src/view.coffee @@ -41,6 +41,24 @@ toffee.__escape = (locals, o) -> return locals.html o return o +toffee.__augmentLocals = (locals) -> + _l = locals + _t = _l.__toffee = { out: []} + if not _l.print? then _l.print = (o) -> toffee.__print _l, o + if not _l.json? then _l.json = (o) -> toffee.__json _l, o + if not _l.raw? then _l.raw = (o) -> toffee.__raw _l, o + if not _l.html? then _l.html = (o) -> toffee.__html _l, o + if not _l.escape? then _l.escape = (o) -> toffee.__escape _l, o + if not _l.partial? then _l.partial = (path, vars) -> toffee.__partial toffee.templates["#{@bundlePath}"], _l, path, vars + if not _l.snippet? then _l.snippet = (path, vars) -> toffee.__snippet toffee.templates["#{@bundlePath}"], _l, path, vars + _t.print = _l.print + _t.json = _l.json + _t.raw = _l.raw + _t.html = _l.html + _t.escape = _l.escape + _t.partial = _l.partial + _t.snippet = _l.snippet + #{if include_bundle_headers then getBundleHeaders() else ""} """ @@ -453,27 +471,10 @@ class view tmpl = toffee.templates["#{@bundlePath}"] = bundlePath: "#{@bundlePath}" tmpl.pub = (__locals) -> -#{___}_l = __locals -#{___}_t = _l.__toffee = { out: []} #{___}_to = (x) -> __locals.__toffee.out.push x #{___}_ln = (x) -> __locals.__toffee.lineno = x #{___}_ts = (x) -> __locals.__toffee.state = x - -#{___}if not _l.print? then _l.print = (o) -> toffee.__print _l, o -#{___}if not _l.json? then _l.json = (o) -> toffee.__json _l, o -#{___}if not _l.raw? then _l.raw = (o) -> toffee.__raw _l, o -#{___}if not _l.html? then _l.html = (o) -> toffee.__html _l, o -#{___}if not _l.escape? then _l.escape = (o) -> toffee.__escape _l, o -#{___}if not _l.partial? then _l.partial = (path, vars) -> toffee.__partial toffee.templates["#{@bundlePath}"], _l, path, vars -#{___}if not _l.snippet? then _l.snippet = (path, vars) -> toffee.__snippet toffee.templates["#{@bundlePath}"], _l, path, vars - -#{___}_t.print = _l.print -#{___}_t.json = _l.json -#{___}_t.raw = _l.raw -#{___}_t.html = _l.html -#{___}_t.escape = _l.escape -#{___}_t.partial = _l.partial -#{___}_t.snippet = _l.snippet +#{___}toffee.__augmentLocals __locals #{___}`with (__locals) {` #{___}__toffee.out = [] diff --git a/test/express3/public/javascripts/test_cases.js b/test/express3/public/javascripts/test_cases.js index 0238c7f..57e89bf 100644 --- a/test/express3/public/javascripts/test_cases.js +++ b/test/express3/public/javascripts/test_cases.js @@ -34,6 +34,56 @@ toffee.__escape = function(locals, o) { return o; }; +toffee.__augmentLocals = function(locals) { + var _l, _t; + _l = locals; + _t = _l.__toffee = { + out: [] + }; + if (!(_l.print != null)) { + _l.print = function(o) { + return toffee.__print(_l, o); + }; + } + if (!(_l.json != null)) { + _l.json = function(o) { + return toffee.__json(_l, o); + }; + } + if (!(_l.raw != null)) { + _l.raw = function(o) { + return toffee.__raw(_l, o); + }; + } + if (!(_l.html != null)) { + _l.html = function(o) { + return toffee.__html(_l, o); + }; + } + if (!(_l.escape != null)) { + _l.escape = function(o) { + return toffee.__escape(_l, o); + }; + } + if (!(_l.partial != null)) { + _l.partial = function(path, vars) { + return toffee.__partial(toffee.templates["undefined"], _l, path, vars); + }; + } + if (!(_l.snippet != null)) { + _l.snippet = function(path, vars) { + return toffee.__snippet(toffee.templates["undefined"], _l, path, vars); + }; + } + _t.print = _l.print; + _t.json = _l.json; + _t.raw = _l.raw; + _t.html = _l.html; + _t.escape = _l.escape; + _t.partial = _l.partial; + return _t.snippet = _l.snippet; +}; + toffee.__print = function(locals, o) { if (locals.__toffee.state === toffee.states.COFFEE) { locals.__toffee.out.push(o); @@ -111,11 +161,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { }; tmpl.pub = function(__locals) { - var count, i, _i, _l, _ln, _t, _to, _ts; - _l = __locals; - _t = _l.__toffee = { - out: [] - }; + var count, i, _i, _ln, _to, _ts; _to = function(x) { return __locals.__toffee.out.push(x); }; @@ -125,48 +171,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts = function(x) { return __locals.__toffee.state = x; }; - if (!(_l.print != null)) { - _l.print = function(o) { - return toffee.__print(_l, o); - }; - } - if (!(_l.json != null)) { - _l.json = function(o) { - return toffee.__json(_l, o); - }; - } - if (!(_l.raw != null)) { - _l.raw = function(o) { - return toffee.__raw(_l, o); - }; - } - if (!(_l.html != null)) { - _l.html = function(o) { - return toffee.__html(_l, o); - }; - } - if (!(_l.escape != null)) { - _l.escape = function(o) { - return toffee.__escape(_l, o); - }; - } - if (!(_l.partial != null)) { - _l.partial = function(path, vars) { - return toffee.__partial(toffee.templates["/big_file/input.toffee"], _l, path, vars); - }; - } - if (!(_l.snippet != null)) { - _l.snippet = function(path, vars) { - return toffee.__snippet(toffee.templates["/big_file/input.toffee"], _l, path, vars); - }; - } - _t.print = _l.print; - _t.json = _l.json; - _t.raw = _l.raw; - _t.html = _l.html; - _t.escape = _l.escape; - _t.partial = _l.partial; - _t.snippet = _l.snippet; + toffee.__augmentLocals(__locals); with (__locals) {; __toffee.out = []; @@ -542,11 +547,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { }; tmpl.pub = function(__locals) { - var _l, _ln, _t, _to, _ts; - _l = __locals; - _t = _l.__toffee = { - out: [] - }; + var _ln, _to, _ts; _to = function(x) { return __locals.__toffee.out.push(x); }; @@ -556,48 +557,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts = function(x) { return __locals.__toffee.state = x; }; - if (!(_l.print != null)) { - _l.print = function(o) { - return toffee.__print(_l, o); - }; - } - if (!(_l.json != null)) { - _l.json = function(o) { - return toffee.__json(_l, o); - }; - } - if (!(_l.raw != null)) { - _l.raw = function(o) { - return toffee.__raw(_l, o); - }; - } - if (!(_l.html != null)) { - _l.html = function(o) { - return toffee.__html(_l, o); - }; - } - if (!(_l.escape != null)) { - _l.escape = function(o) { - return toffee.__escape(_l, o); - }; - } - if (!(_l.partial != null)) { - _l.partial = function(path, vars) { - return toffee.__partial(toffee.templates["/big_file/output.toffee"], _l, path, vars); - }; - } - if (!(_l.snippet != null)) { - _l.snippet = function(path, vars) { - return toffee.__snippet(toffee.templates["/big_file/output.toffee"], _l, path, vars); - }; - } - _t.print = _l.print; - _t.json = _l.json; - _t.raw = _l.raw; - _t.html = _l.html; - _t.escape = _l.escape; - _t.partial = _l.partial; - _t.snippet = _l.snippet; + toffee.__augmentLocals(__locals); with (__locals) {; __toffee.out = []; @@ -625,11 +585,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { }; tmpl.pub = function(__locals) { - var _l, _ln, _t, _to, _ts; - _l = __locals; - _t = _l.__toffee = { - out: [] - }; + var _ln, _to, _ts; _to = function(x) { return __locals.__toffee.out.push(x); }; @@ -639,48 +595,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts = function(x) { return __locals.__toffee.state = x; }; - if (!(_l.print != null)) { - _l.print = function(o) { - return toffee.__print(_l, o); - }; - } - if (!(_l.json != null)) { - _l.json = function(o) { - return toffee.__json(_l, o); - }; - } - if (!(_l.raw != null)) { - _l.raw = function(o) { - return toffee.__raw(_l, o); - }; - } - if (!(_l.html != null)) { - _l.html = function(o) { - return toffee.__html(_l, o); - }; - } - if (!(_l.escape != null)) { - _l.escape = function(o) { - return toffee.__escape(_l, o); - }; - } - if (!(_l.partial != null)) { - _l.partial = function(path, vars) { - return toffee.__partial(toffee.templates["/comments/input.toffee"], _l, path, vars); - }; - } - if (!(_l.snippet != null)) { - _l.snippet = function(path, vars) { - return toffee.__snippet(toffee.templates["/comments/input.toffee"], _l, path, vars); - }; - } - _t.print = _l.print; - _t.json = _l.json; - _t.raw = _l.raw; - _t.html = _l.html; - _t.escape = _l.escape; - _t.partial = _l.partial; - _t.snippet = _l.snippet; + toffee.__augmentLocals(__locals); with (__locals) {; __toffee.out = []; @@ -734,11 +649,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { }; tmpl.pub = function(__locals) { - var _l, _ln, _t, _to, _ts; - _l = __locals; - _t = _l.__toffee = { - out: [] - }; + var _ln, _to, _ts; _to = function(x) { return __locals.__toffee.out.push(x); }; @@ -748,48 +659,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts = function(x) { return __locals.__toffee.state = x; }; - if (!(_l.print != null)) { - _l.print = function(o) { - return toffee.__print(_l, o); - }; - } - if (!(_l.json != null)) { - _l.json = function(o) { - return toffee.__json(_l, o); - }; - } - if (!(_l.raw != null)) { - _l.raw = function(o) { - return toffee.__raw(_l, o); - }; - } - if (!(_l.html != null)) { - _l.html = function(o) { - return toffee.__html(_l, o); - }; - } - if (!(_l.escape != null)) { - _l.escape = function(o) { - return toffee.__escape(_l, o); - }; - } - if (!(_l.partial != null)) { - _l.partial = function(path, vars) { - return toffee.__partial(toffee.templates["/comments/output.toffee"], _l, path, vars); - }; - } - if (!(_l.snippet != null)) { - _l.snippet = function(path, vars) { - return toffee.__snippet(toffee.templates["/comments/output.toffee"], _l, path, vars); - }; - } - _t.print = _l.print; - _t.json = _l.json; - _t.raw = _l.raw; - _t.html = _l.html; - _t.escape = _l.escape; - _t.partial = _l.partial; - _t.snippet = _l.snippet; + toffee.__augmentLocals(__locals); with (__locals) {; __toffee.out = []; @@ -828,11 +698,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { }; tmpl.pub = function(__locals) { - var w, x, y, z, _l, _ln, _t, _to, _ts; - _l = __locals; - _t = _l.__toffee = { - out: [] - }; + var w, x, y, z, _ln, _to, _ts; _to = function(x) { return __locals.__toffee.out.push(x); }; @@ -842,48 +708,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts = function(x) { return __locals.__toffee.state = x; }; - if (!(_l.print != null)) { - _l.print = function(o) { - return toffee.__print(_l, o); - }; - } - if (!(_l.json != null)) { - _l.json = function(o) { - return toffee.__json(_l, o); - }; - } - if (!(_l.raw != null)) { - _l.raw = function(o) { - return toffee.__raw(_l, o); - }; - } - if (!(_l.html != null)) { - _l.html = function(o) { - return toffee.__html(_l, o); - }; - } - if (!(_l.escape != null)) { - _l.escape = function(o) { - return toffee.__escape(_l, o); - }; - } - if (!(_l.partial != null)) { - _l.partial = function(path, vars) { - return toffee.__partial(toffee.templates["/custom_escape/input.toffee"], _l, path, vars); - }; - } - if (!(_l.snippet != null)) { - _l.snippet = function(path, vars) { - return toffee.__snippet(toffee.templates["/custom_escape/input.toffee"], _l, path, vars); - }; - } - _t.print = _l.print; - _t.json = _l.json; - _t.raw = _l.raw; - _t.html = _l.html; - _t.escape = _l.escape; - _t.partial = _l.partial; - _t.snippet = _l.snippet; + toffee.__augmentLocals(__locals); with (__locals) {; __toffee.out = []; @@ -992,11 +817,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { }; tmpl.pub = function(__locals) { - var _l, _ln, _t, _to, _ts; - _l = __locals; - _t = _l.__toffee = { - out: [] - }; + var _ln, _to, _ts; _to = function(x) { return __locals.__toffee.out.push(x); }; @@ -1006,48 +827,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts = function(x) { return __locals.__toffee.state = x; }; - if (!(_l.print != null)) { - _l.print = function(o) { - return toffee.__print(_l, o); - }; - } - if (!(_l.json != null)) { - _l.json = function(o) { - return toffee.__json(_l, o); - }; - } - if (!(_l.raw != null)) { - _l.raw = function(o) { - return toffee.__raw(_l, o); - }; - } - if (!(_l.html != null)) { - _l.html = function(o) { - return toffee.__html(_l, o); - }; - } - if (!(_l.escape != null)) { - _l.escape = function(o) { - return toffee.__escape(_l, o); - }; - } - if (!(_l.partial != null)) { - _l.partial = function(path, vars) { - return toffee.__partial(toffee.templates["/custom_escape/output.toffee"], _l, path, vars); - }; - } - if (!(_l.snippet != null)) { - _l.snippet = function(path, vars) { - return toffee.__snippet(toffee.templates["/custom_escape/output.toffee"], _l, path, vars); - }; - } - _t.print = _l.print; - _t.json = _l.json; - _t.raw = _l.raw; - _t.html = _l.html; - _t.escape = _l.escape; - _t.partial = _l.partial; - _t.snippet = _l.snippet; + toffee.__augmentLocals(__locals); with (__locals) {; __toffee.out = []; @@ -1121,11 +901,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { }; tmpl.pub = function(__locals) { - var f, friends, project, _i, _l, _len, _ln, _ref, _t, _to, _ts; - _l = __locals; - _t = _l.__toffee = { - out: [] - }; + var f, friends, project, _i, _len, _ln, _ref, _to, _ts; _to = function(x) { return __locals.__toffee.out.push(x); }; @@ -1135,48 +911,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts = function(x) { return __locals.__toffee.state = x; }; - if (!(_l.print != null)) { - _l.print = function(o) { - return toffee.__print(_l, o); - }; - } - if (!(_l.json != null)) { - _l.json = function(o) { - return toffee.__json(_l, o); - }; - } - if (!(_l.raw != null)) { - _l.raw = function(o) { - return toffee.__raw(_l, o); - }; - } - if (!(_l.html != null)) { - _l.html = function(o) { - return toffee.__html(_l, o); - }; - } - if (!(_l.escape != null)) { - _l.escape = function(o) { - return toffee.__escape(_l, o); - }; - } - if (!(_l.partial != null)) { - _l.partial = function(path, vars) { - return toffee.__partial(toffee.templates["/eco_compare/input.toffee"], _l, path, vars); - }; - } - if (!(_l.snippet != null)) { - _l.snippet = function(path, vars) { - return toffee.__snippet(toffee.templates["/eco_compare/input.toffee"], _l, path, vars); - }; - } - _t.print = _l.print; - _t.json = _l.json; - _t.raw = _l.raw; - _t.html = _l.html; - _t.escape = _l.escape; - _t.partial = _l.partial; - _t.snippet = _l.snippet; + toffee.__augmentLocals(__locals); with (__locals) {; __toffee.out = []; @@ -1274,11 +1009,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { }; tmpl.pub = function(__locals) { - var _l, _ln, _t, _to, _ts; - _l = __locals; - _t = _l.__toffee = { - out: [] - }; + var _ln, _to, _ts; _to = function(x) { return __locals.__toffee.out.push(x); }; @@ -1288,48 +1019,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts = function(x) { return __locals.__toffee.state = x; }; - if (!(_l.print != null)) { - _l.print = function(o) { - return toffee.__print(_l, o); - }; - } - if (!(_l.json != null)) { - _l.json = function(o) { - return toffee.__json(_l, o); - }; - } - if (!(_l.raw != null)) { - _l.raw = function(o) { - return toffee.__raw(_l, o); - }; - } - if (!(_l.html != null)) { - _l.html = function(o) { - return toffee.__html(_l, o); - }; - } - if (!(_l.escape != null)) { - _l.escape = function(o) { - return toffee.__escape(_l, o); - }; - } - if (!(_l.partial != null)) { - _l.partial = function(path, vars) { - return toffee.__partial(toffee.templates["/eco_compare/output.toffee"], _l, path, vars); - }; - } - if (!(_l.snippet != null)) { - _l.snippet = function(path, vars) { - return toffee.__snippet(toffee.templates["/eco_compare/output.toffee"], _l, path, vars); - }; - } - _t.print = _l.print; - _t.json = _l.json; - _t.raw = _l.raw; - _t.html = _l.html; - _t.escape = _l.escape; - _t.partial = _l.partial; - _t.snippet = _l.snippet; + toffee.__augmentLocals(__locals); with (__locals) {; __toffee.out = []; @@ -1373,11 +1063,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { }; tmpl.pub = function(__locals) { - var w, x, y, z, _l, _ln, _t, _to, _ts; - _l = __locals; - _t = _l.__toffee = { - out: [] - }; + var w, x, y, z, _ln, _to, _ts; _to = function(x) { return __locals.__toffee.out.push(x); }; @@ -1387,48 +1073,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts = function(x) { return __locals.__toffee.state = x; }; - if (!(_l.print != null)) { - _l.print = function(o) { - return toffee.__print(_l, o); - }; - } - if (!(_l.json != null)) { - _l.json = function(o) { - return toffee.__json(_l, o); - }; - } - if (!(_l.raw != null)) { - _l.raw = function(o) { - return toffee.__raw(_l, o); - }; - } - if (!(_l.html != null)) { - _l.html = function(o) { - return toffee.__html(_l, o); - }; - } - if (!(_l.escape != null)) { - _l.escape = function(o) { - return toffee.__escape(_l, o); - }; - } - if (!(_l.partial != null)) { - _l.partial = function(path, vars) { - return toffee.__partial(toffee.templates["/escape/input.toffee"], _l, path, vars); - }; - } - if (!(_l.snippet != null)) { - _l.snippet = function(path, vars) { - return toffee.__snippet(toffee.templates["/escape/input.toffee"], _l, path, vars); - }; - } - _t.print = _l.print; - _t.json = _l.json; - _t.raw = _l.raw; - _t.html = _l.html; - _t.escape = _l.escape; - _t.partial = _l.partial; - _t.snippet = _l.snippet; + toffee.__augmentLocals(__locals); with (__locals) {; __toffee.out = []; @@ -1573,11 +1218,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { }; tmpl.pub = function(__locals) { - var _l, _ln, _t, _to, _ts; - _l = __locals; - _t = _l.__toffee = { - out: [] - }; + var _ln, _to, _ts; _to = function(x) { return __locals.__toffee.out.push(x); }; @@ -1587,48 +1228,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts = function(x) { return __locals.__toffee.state = x; }; - if (!(_l.print != null)) { - _l.print = function(o) { - return toffee.__print(_l, o); - }; - } - if (!(_l.json != null)) { - _l.json = function(o) { - return toffee.__json(_l, o); - }; - } - if (!(_l.raw != null)) { - _l.raw = function(o) { - return toffee.__raw(_l, o); - }; - } - if (!(_l.html != null)) { - _l.html = function(o) { - return toffee.__html(_l, o); - }; - } - if (!(_l.escape != null)) { - _l.escape = function(o) { - return toffee.__escape(_l, o); - }; - } - if (!(_l.partial != null)) { - _l.partial = function(path, vars) { - return toffee.__partial(toffee.templates["/escape/output.toffee"], _l, path, vars); - }; - } - if (!(_l.snippet != null)) { - _l.snippet = function(path, vars) { - return toffee.__snippet(toffee.templates["/escape/output.toffee"], _l, path, vars); - }; - } - _t.print = _l.print; - _t.json = _l.json; - _t.raw = _l.raw; - _t.html = _l.html; - _t.escape = _l.escape; - _t.partial = _l.partial; - _t.snippet = _l.snippet; + toffee.__augmentLocals(__locals); with (__locals) {; __toffee.out = []; @@ -1730,11 +1330,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { }; tmpl.pub = function(__locals) { - var _l, _ln, _t, _to, _ts; - _l = __locals; - _t = _l.__toffee = { - out: [] - }; + var _ln, _to, _ts; _to = function(x) { return __locals.__toffee.out.push(x); }; @@ -1744,48 +1340,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts = function(x) { return __locals.__toffee.state = x; }; - if (!(_l.print != null)) { - _l.print = function(o) { - return toffee.__print(_l, o); - }; - } - if (!(_l.json != null)) { - _l.json = function(o) { - return toffee.__json(_l, o); - }; - } - if (!(_l.raw != null)) { - _l.raw = function(o) { - return toffee.__raw(_l, o); - }; - } - if (!(_l.html != null)) { - _l.html = function(o) { - return toffee.__html(_l, o); - }; - } - if (!(_l.escape != null)) { - _l.escape = function(o) { - return toffee.__escape(_l, o); - }; - } - if (!(_l.partial != null)) { - _l.partial = function(path, vars) { - return toffee.__partial(toffee.templates["/hello_world/input.toffee"], _l, path, vars); - }; - } - if (!(_l.snippet != null)) { - _l.snippet = function(path, vars) { - return toffee.__snippet(toffee.templates["/hello_world/input.toffee"], _l, path, vars); - }; - } - _t.print = _l.print; - _t.json = _l.json; - _t.raw = _l.raw; - _t.html = _l.html; - _t.escape = _l.escape; - _t.partial = _l.partial; - _t.snippet = _l.snippet; + toffee.__augmentLocals(__locals); with (__locals) {; __toffee.out = []; @@ -1814,11 +1369,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { }; tmpl.pub = function(__locals) { - var _l, _ln, _t, _to, _ts; - _l = __locals; - _t = _l.__toffee = { - out: [] - }; + var _ln, _to, _ts; _to = function(x) { return __locals.__toffee.out.push(x); }; @@ -1828,48 +1379,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts = function(x) { return __locals.__toffee.state = x; }; - if (!(_l.print != null)) { - _l.print = function(o) { - return toffee.__print(_l, o); - }; - } - if (!(_l.json != null)) { - _l.json = function(o) { - return toffee.__json(_l, o); - }; - } - if (!(_l.raw != null)) { - _l.raw = function(o) { - return toffee.__raw(_l, o); - }; - } - if (!(_l.html != null)) { - _l.html = function(o) { - return toffee.__html(_l, o); - }; - } - if (!(_l.escape != null)) { - _l.escape = function(o) { - return toffee.__escape(_l, o); - }; - } - if (!(_l.partial != null)) { - _l.partial = function(path, vars) { - return toffee.__partial(toffee.templates["/hello_world/output.toffee"], _l, path, vars); - }; - } - if (!(_l.snippet != null)) { - _l.snippet = function(path, vars) { - return toffee.__snippet(toffee.templates["/hello_world/output.toffee"], _l, path, vars); - }; - } - _t.print = _l.print; - _t.json = _l.json; - _t.raw = _l.raw; - _t.html = _l.html; - _t.escape = _l.escape; - _t.partial = _l.partial; - _t.snippet = _l.snippet; + toffee.__augmentLocals(__locals); with (__locals) {; __toffee.out = []; @@ -1897,11 +1407,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { }; tmpl.pub = function(__locals) { - var _l, _ln, _t, _to, _ts; - _l = __locals; - _t = _l.__toffee = { - out: [] - }; + var _ln, _to, _ts; _to = function(x) { return __locals.__toffee.out.push(x); }; @@ -1911,48 +1417,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts = function(x) { return __locals.__toffee.state = x; }; - if (!(_l.print != null)) { - _l.print = function(o) { - return toffee.__print(_l, o); - }; - } - if (!(_l.json != null)) { - _l.json = function(o) { - return toffee.__json(_l, o); - }; - } - if (!(_l.raw != null)) { - _l.raw = function(o) { - return toffee.__raw(_l, o); - }; - } - if (!(_l.html != null)) { - _l.html = function(o) { - return toffee.__html(_l, o); - }; - } - if (!(_l.escape != null)) { - _l.escape = function(o) { - return toffee.__escape(_l, o); - }; - } - if (!(_l.partial != null)) { - _l.partial = function(path, vars) { - return toffee.__partial(toffee.templates["/hello_world/temp.toffee"], _l, path, vars); - }; - } - if (!(_l.snippet != null)) { - _l.snippet = function(path, vars) { - return toffee.__snippet(toffee.templates["/hello_world/temp.toffee"], _l, path, vars); - }; - } - _t.print = _l.print; - _t.json = _l.json; - _t.raw = _l.raw; - _t.html = _l.html; - _t.escape = _l.escape; - _t.partial = _l.partial; - _t.snippet = _l.snippet; + toffee.__augmentLocals(__locals); with (__locals) {; __toffee.out = []; @@ -1993,11 +1458,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { }; tmpl.pub = function(__locals) { - var _l, _ln, _t, _to, _ts; - _l = __locals; - _t = _l.__toffee = { - out: [] - }; + var _ln, _to, _ts; _to = function(x) { return __locals.__toffee.out.push(x); }; @@ -2007,48 +1468,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts = function(x) { return __locals.__toffee.state = x; }; - if (!(_l.print != null)) { - _l.print = function(o) { - return toffee.__print(_l, o); - }; - } - if (!(_l.json != null)) { - _l.json = function(o) { - return toffee.__json(_l, o); - }; - } - if (!(_l.raw != null)) { - _l.raw = function(o) { - return toffee.__raw(_l, o); - }; - } - if (!(_l.html != null)) { - _l.html = function(o) { - return toffee.__html(_l, o); - }; - } - if (!(_l.escape != null)) { - _l.escape = function(o) { - return toffee.__escape(_l, o); - }; - } - if (!(_l.partial != null)) { - _l.partial = function(path, vars) { - return toffee.__partial(toffee.templates["/include_order/child.toffee"], _l, path, vars); - }; - } - if (!(_l.snippet != null)) { - _l.snippet = function(path, vars) { - return toffee.__snippet(toffee.templates["/include_order/child.toffee"], _l, path, vars); - }; - } - _t.print = _l.print; - _t.json = _l.json; - _t.raw = _l.raw; - _t.html = _l.html; - _t.escape = _l.escape; - _t.partial = _l.partial; - _t.snippet = _l.snippet; + toffee.__augmentLocals(__locals); with (__locals) {; __toffee.out = []; @@ -2085,11 +1505,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { }; tmpl.pub = function(__locals) { - var say_hi, _l, _ln, _t, _to, _ts; - _l = __locals; - _t = _l.__toffee = { - out: [] - }; + var say_hi, _ln, _to, _ts; _to = function(x) { return __locals.__toffee.out.push(x); }; @@ -2099,48 +1515,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts = function(x) { return __locals.__toffee.state = x; }; - if (!(_l.print != null)) { - _l.print = function(o) { - return toffee.__print(_l, o); - }; - } - if (!(_l.json != null)) { - _l.json = function(o) { - return toffee.__json(_l, o); - }; - } - if (!(_l.raw != null)) { - _l.raw = function(o) { - return toffee.__raw(_l, o); - }; - } - if (!(_l.html != null)) { - _l.html = function(o) { - return toffee.__html(_l, o); - }; - } - if (!(_l.escape != null)) { - _l.escape = function(o) { - return toffee.__escape(_l, o); - }; - } - if (!(_l.partial != null)) { - _l.partial = function(path, vars) { - return toffee.__partial(toffee.templates["/include_order/input.toffee"], _l, path, vars); - }; - } - if (!(_l.snippet != null)) { - _l.snippet = function(path, vars) { - return toffee.__snippet(toffee.templates["/include_order/input.toffee"], _l, path, vars); - }; - } - _t.print = _l.print; - _t.json = _l.json; - _t.raw = _l.raw; - _t.html = _l.html; - _t.escape = _l.escape; - _t.partial = _l.partial; - _t.snippet = _l.snippet; + toffee.__augmentLocals(__locals); with (__locals) {; __toffee.out = []; @@ -2187,11 +1562,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { }; tmpl.pub = function(__locals) { - var _l, _ln, _t, _to, _ts; - _l = __locals; - _t = _l.__toffee = { - out: [] - }; + var _ln, _to, _ts; _to = function(x) { return __locals.__toffee.out.push(x); }; @@ -2201,48 +1572,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts = function(x) { return __locals.__toffee.state = x; }; - if (!(_l.print != null)) { - _l.print = function(o) { - return toffee.__print(_l, o); - }; - } - if (!(_l.json != null)) { - _l.json = function(o) { - return toffee.__json(_l, o); - }; - } - if (!(_l.raw != null)) { - _l.raw = function(o) { - return toffee.__raw(_l, o); - }; - } - if (!(_l.html != null)) { - _l.html = function(o) { - return toffee.__html(_l, o); - }; - } - if (!(_l.escape != null)) { - _l.escape = function(o) { - return toffee.__escape(_l, o); - }; - } - if (!(_l.partial != null)) { - _l.partial = function(path, vars) { - return toffee.__partial(toffee.templates["/include_order/output.toffee"], _l, path, vars); - }; - } - if (!(_l.snippet != null)) { - _l.snippet = function(path, vars) { - return toffee.__snippet(toffee.templates["/include_order/output.toffee"], _l, path, vars); - }; - } - _t.print = _l.print; - _t.json = _l.json; - _t.raw = _l.raw; - _t.html = _l.html; - _t.escape = _l.escape; - _t.partial = _l.partial; - _t.snippet = _l.snippet; + toffee.__augmentLocals(__locals); with (__locals) {; __toffee.out = []; @@ -2282,11 +1612,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { }; tmpl.pub = function(__locals) { - var _l, _ln, _t, _to, _ts; - _l = __locals; - _t = _l.__toffee = { - out: [] - }; + var _ln, _to, _ts; _to = function(x) { return __locals.__toffee.out.push(x); }; @@ -2296,48 +1622,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts = function(x) { return __locals.__toffee.state = x; }; - if (!(_l.print != null)) { - _l.print = function(o) { - return toffee.__print(_l, o); - }; - } - if (!(_l.json != null)) { - _l.json = function(o) { - return toffee.__json(_l, o); - }; - } - if (!(_l.raw != null)) { - _l.raw = function(o) { - return toffee.__raw(_l, o); - }; - } - if (!(_l.html != null)) { - _l.html = function(o) { - return toffee.__html(_l, o); - }; - } - if (!(_l.escape != null)) { - _l.escape = function(o) { - return toffee.__escape(_l, o); - }; - } - if (!(_l.partial != null)) { - _l.partial = function(path, vars) { - return toffee.__partial(toffee.templates["/include_recursion/input.toffee"], _l, path, vars); - }; - } - if (!(_l.snippet != null)) { - _l.snippet = function(path, vars) { - return toffee.__snippet(toffee.templates["/include_recursion/input.toffee"], _l, path, vars); - }; - } - _t.print = _l.print; - _t.json = _l.json; - _t.raw = _l.raw; - _t.html = _l.html; - _t.escape = _l.escape; - _t.partial = _l.partial; - _t.snippet = _l.snippet; + toffee.__augmentLocals(__locals); with (__locals) {; __toffee.out = []; @@ -2373,11 +1658,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { }; tmpl.pub = function(__locals) { - var _l, _ln, _t, _to, _ts; - _l = __locals; - _t = _l.__toffee = { - out: [] - }; + var _ln, _to, _ts; _to = function(x) { return __locals.__toffee.out.push(x); }; @@ -2387,48 +1668,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts = function(x) { return __locals.__toffee.state = x; }; - if (!(_l.print != null)) { - _l.print = function(o) { - return toffee.__print(_l, o); - }; - } - if (!(_l.json != null)) { - _l.json = function(o) { - return toffee.__json(_l, o); - }; - } - if (!(_l.raw != null)) { - _l.raw = function(o) { - return toffee.__raw(_l, o); - }; - } - if (!(_l.html != null)) { - _l.html = function(o) { - return toffee.__html(_l, o); - }; - } - if (!(_l.escape != null)) { - _l.escape = function(o) { - return toffee.__escape(_l, o); - }; - } - if (!(_l.partial != null)) { - _l.partial = function(path, vars) { - return toffee.__partial(toffee.templates["/include_recursion/output.toffee"], _l, path, vars); - }; - } - if (!(_l.snippet != null)) { - _l.snippet = function(path, vars) { - return toffee.__snippet(toffee.templates["/include_recursion/output.toffee"], _l, path, vars); - }; - } - _t.print = _l.print; - _t.json = _l.json; - _t.raw = _l.raw; - _t.html = _l.html; - _t.escape = _l.escape; - _t.partial = _l.partial; - _t.snippet = _l.snippet; + toffee.__augmentLocals(__locals); with (__locals) {; __toffee.out = []; @@ -2456,11 +1696,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { }; tmpl.pub = function(__locals) { - var _l, _ln, _t, _to, _ts; - _l = __locals; - _t = _l.__toffee = { - out: [] - }; + var _ln, _to, _ts; _to = function(x) { return __locals.__toffee.out.push(x); }; @@ -2470,48 +1706,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts = function(x) { return __locals.__toffee.state = x; }; - if (!(_l.print != null)) { - _l.print = function(o) { - return toffee.__print(_l, o); - }; - } - if (!(_l.json != null)) { - _l.json = function(o) { - return toffee.__json(_l, o); - }; - } - if (!(_l.raw != null)) { - _l.raw = function(o) { - return toffee.__raw(_l, o); - }; - } - if (!(_l.html != null)) { - _l.html = function(o) { - return toffee.__html(_l, o); - }; - } - if (!(_l.escape != null)) { - _l.escape = function(o) { - return toffee.__escape(_l, o); - }; - } - if (!(_l.partial != null)) { - _l.partial = function(path, vars) { - return toffee.__partial(toffee.templates["/include_techniques/input.toffee"], _l, path, vars); - }; - } - if (!(_l.snippet != null)) { - _l.snippet = function(path, vars) { - return toffee.__snippet(toffee.templates["/include_techniques/input.toffee"], _l, path, vars); - }; - } - _t.print = _l.print; - _t.json = _l.json; - _t.raw = _l.raw; - _t.html = _l.html; - _t.escape = _l.escape; - _t.partial = _l.partial; - _t.snippet = _l.snippet; + toffee.__augmentLocals(__locals); with (__locals) {; __toffee.out = []; @@ -2562,11 +1757,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { }; tmpl.pub = function(__locals) { - var from, _l, _ln, _t, _to, _ts; - _l = __locals; - _t = _l.__toffee = { - out: [] - }; + var from, _ln, _to, _ts; _to = function(x) { return __locals.__toffee.out.push(x); }; @@ -2576,48 +1767,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts = function(x) { return __locals.__toffee.state = x; }; - if (!(_l.print != null)) { - _l.print = function(o) { - return toffee.__print(_l, o); - }; - } - if (!(_l.json != null)) { - _l.json = function(o) { - return toffee.__json(_l, o); - }; - } - if (!(_l.raw != null)) { - _l.raw = function(o) { - return toffee.__raw(_l, o); - }; - } - if (!(_l.html != null)) { - _l.html = function(o) { - return toffee.__html(_l, o); - }; - } - if (!(_l.escape != null)) { - _l.escape = function(o) { - return toffee.__escape(_l, o); - }; - } - if (!(_l.partial != null)) { - _l.partial = function(path, vars) { - return toffee.__partial(toffee.templates["/include_techniques/message.toffee"], _l, path, vars); - }; - } - if (!(_l.snippet != null)) { - _l.snippet = function(path, vars) { - return toffee.__snippet(toffee.templates["/include_techniques/message.toffee"], _l, path, vars); - }; - } - _t.print = _l.print; - _t.json = _l.json; - _t.raw = _l.raw; - _t.html = _l.html; - _t.escape = _l.escape; - _t.partial = _l.partial; - _t.snippet = _l.snippet; + toffee.__augmentLocals(__locals); with (__locals) {; __toffee.out = []; @@ -2652,11 +1802,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { }; tmpl.pub = function(__locals) { - var _l, _ln, _t, _to, _ts; - _l = __locals; - _t = _l.__toffee = { - out: [] - }; + var _ln, _to, _ts; _to = function(x) { return __locals.__toffee.out.push(x); }; @@ -2666,48 +1812,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts = function(x) { return __locals.__toffee.state = x; }; - if (!(_l.print != null)) { - _l.print = function(o) { - return toffee.__print(_l, o); - }; - } - if (!(_l.json != null)) { - _l.json = function(o) { - return toffee.__json(_l, o); - }; - } - if (!(_l.raw != null)) { - _l.raw = function(o) { - return toffee.__raw(_l, o); - }; - } - if (!(_l.html != null)) { - _l.html = function(o) { - return toffee.__html(_l, o); - }; - } - if (!(_l.escape != null)) { - _l.escape = function(o) { - return toffee.__escape(_l, o); - }; - } - if (!(_l.partial != null)) { - _l.partial = function(path, vars) { - return toffee.__partial(toffee.templates["/include_techniques/output.toffee"], _l, path, vars); - }; - } - if (!(_l.snippet != null)) { - _l.snippet = function(path, vars) { - return toffee.__snippet(toffee.templates["/include_techniques/output.toffee"], _l, path, vars); - }; - } - _t.print = _l.print; - _t.json = _l.json; - _t.raw = _l.raw; - _t.html = _l.html; - _t.escape = _l.escape; - _t.partial = _l.partial; - _t.snippet = _l.snippet; + toffee.__augmentLocals(__locals); with (__locals) {; __toffee.out = []; @@ -2758,11 +1863,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { }; tmpl.pub = function(__locals) { - var i, square, x, _i, _j, _l, _ln, _t, _to, _ts; - _l = __locals; - _t = _l.__toffee = { - out: [] - }; + var i, square, x, _i, _j, _ln, _to, _ts; _to = function(x) { return __locals.__toffee.out.push(x); }; @@ -2772,48 +1873,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts = function(x) { return __locals.__toffee.state = x; }; - if (!(_l.print != null)) { - _l.print = function(o) { - return toffee.__print(_l, o); - }; - } - if (!(_l.json != null)) { - _l.json = function(o) { - return toffee.__json(_l, o); - }; - } - if (!(_l.raw != null)) { - _l.raw = function(o) { - return toffee.__raw(_l, o); - }; - } - if (!(_l.html != null)) { - _l.html = function(o) { - return toffee.__html(_l, o); - }; - } - if (!(_l.escape != null)) { - _l.escape = function(o) { - return toffee.__escape(_l, o); - }; - } - if (!(_l.partial != null)) { - _l.partial = function(path, vars) { - return toffee.__partial(toffee.templates["/indent_attack/input.toffee"], _l, path, vars); - }; - } - if (!(_l.snippet != null)) { - _l.snippet = function(path, vars) { - return toffee.__snippet(toffee.templates["/indent_attack/input.toffee"], _l, path, vars); - }; - } - _t.print = _l.print; - _t.json = _l.json; - _t.raw = _l.raw; - _t.html = _l.html; - _t.escape = _l.escape; - _t.partial = _l.partial; - _t.snippet = _l.snippet; + toffee.__augmentLocals(__locals); with (__locals) {; __toffee.out = []; @@ -3076,11 +2136,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { }; tmpl.pub = function(__locals) { - var _l, _ln, _t, _to, _ts; - _l = __locals; - _t = _l.__toffee = { - out: [] - }; + var _ln, _to, _ts; _to = function(x) { return __locals.__toffee.out.push(x); }; @@ -3090,48 +2146,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts = function(x) { return __locals.__toffee.state = x; }; - if (!(_l.print != null)) { - _l.print = function(o) { - return toffee.__print(_l, o); - }; - } - if (!(_l.json != null)) { - _l.json = function(o) { - return toffee.__json(_l, o); - }; - } - if (!(_l.raw != null)) { - _l.raw = function(o) { - return toffee.__raw(_l, o); - }; - } - if (!(_l.html != null)) { - _l.html = function(o) { - return toffee.__html(_l, o); - }; - } - if (!(_l.escape != null)) { - _l.escape = function(o) { - return toffee.__escape(_l, o); - }; - } - if (!(_l.partial != null)) { - _l.partial = function(path, vars) { - return toffee.__partial(toffee.templates["/indent_attack/output.toffee"], _l, path, vars); - }; - } - if (!(_l.snippet != null)) { - _l.snippet = function(path, vars) { - return toffee.__snippet(toffee.templates["/indent_attack/output.toffee"], _l, path, vars); - }; - } - _t.print = _l.print; - _t.json = _l.json; - _t.raw = _l.raw; - _t.html = _l.html; - _t.escape = _l.escape; - _t.partial = _l.partial; - _t.snippet = _l.snippet; + toffee.__augmentLocals(__locals); with (__locals) {; __toffee.out = []; @@ -3189,11 +2204,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { }; tmpl.pub = function(__locals) { - var supplies, supply, _i, _l, _len, _ln, _t, _to, _ts; - _l = __locals; - _t = _l.__toffee = { - out: [] - }; + var supplies, supply, _i, _len, _ln, _to, _ts; _to = function(x) { return __locals.__toffee.out.push(x); }; @@ -3203,48 +2214,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts = function(x) { return __locals.__toffee.state = x; }; - if (!(_l.print != null)) { - _l.print = function(o) { - return toffee.__print(_l, o); - }; - } - if (!(_l.json != null)) { - _l.json = function(o) { - return toffee.__json(_l, o); - }; - } - if (!(_l.raw != null)) { - _l.raw = function(o) { - return toffee.__raw(_l, o); - }; - } - if (!(_l.html != null)) { - _l.html = function(o) { - return toffee.__html(_l, o); - }; - } - if (!(_l.escape != null)) { - _l.escape = function(o) { - return toffee.__escape(_l, o); - }; - } - if (!(_l.partial != null)) { - _l.partial = function(path, vars) { - return toffee.__partial(toffee.templates["/junk/input.toffee"], _l, path, vars); - }; - } - if (!(_l.snippet != null)) { - _l.snippet = function(path, vars) { - return toffee.__snippet(toffee.templates["/junk/input.toffee"], _l, path, vars); - }; - } - _t.print = _l.print; - _t.json = _l.json; - _t.raw = _l.raw; - _t.html = _l.html; - _t.escape = _l.escape; - _t.partial = _l.partial; - _t.snippet = _l.snippet; + toffee.__augmentLocals(__locals); with (__locals) {; __toffee.out = []; @@ -3291,11 +2261,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { }; tmpl.pub = function(__locals) { - var _l, _ln, _t, _to, _ts; - _l = __locals; - _t = _l.__toffee = { - out: [] - }; + var _ln, _to, _ts; _to = function(x) { return __locals.__toffee.out.push(x); }; @@ -3305,48 +2271,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts = function(x) { return __locals.__toffee.state = x; }; - if (!(_l.print != null)) { - _l.print = function(o) { - return toffee.__print(_l, o); - }; - } - if (!(_l.json != null)) { - _l.json = function(o) { - return toffee.__json(_l, o); - }; - } - if (!(_l.raw != null)) { - _l.raw = function(o) { - return toffee.__raw(_l, o); - }; - } - if (!(_l.html != null)) { - _l.html = function(o) { - return toffee.__html(_l, o); - }; - } - if (!(_l.escape != null)) { - _l.escape = function(o) { - return toffee.__escape(_l, o); - }; - } - if (!(_l.partial != null)) { - _l.partial = function(path, vars) { - return toffee.__partial(toffee.templates["/junk/output.toffee"], _l, path, vars); - }; - } - if (!(_l.snippet != null)) { - _l.snippet = function(path, vars) { - return toffee.__snippet(toffee.templates["/junk/output.toffee"], _l, path, vars); - }; - } - _t.print = _l.print; - _t.json = _l.json; - _t.raw = _l.raw; - _t.html = _l.html; - _t.escape = _l.escape; - _t.partial = _l.partial; - _t.snippet = _l.snippet; + toffee.__augmentLocals(__locals); with (__locals) {; __toffee.out = []; @@ -3378,11 +2303,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { }; tmpl.pub = function(__locals) { - var echo_it, print_it, print_it_twice, _l, _ln, _t, _to, _ts; - _l = __locals; - _t = _l.__toffee = { - out: [] - }; + var echo_it, print_it, print_it_twice, _ln, _to, _ts; _to = function(x) { return __locals.__toffee.out.push(x); }; @@ -3392,48 +2313,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts = function(x) { return __locals.__toffee.state = x; }; - if (!(_l.print != null)) { - _l.print = function(o) { - return toffee.__print(_l, o); - }; - } - if (!(_l.json != null)) { - _l.json = function(o) { - return toffee.__json(_l, o); - }; - } - if (!(_l.raw != null)) { - _l.raw = function(o) { - return toffee.__raw(_l, o); - }; - } - if (!(_l.html != null)) { - _l.html = function(o) { - return toffee.__html(_l, o); - }; - } - if (!(_l.escape != null)) { - _l.escape = function(o) { - return toffee.__escape(_l, o); - }; - } - if (!(_l.partial != null)) { - _l.partial = function(path, vars) { - return toffee.__partial(toffee.templates["/lambda_fns/input.toffee"], _l, path, vars); - }; - } - if (!(_l.snippet != null)) { - _l.snippet = function(path, vars) { - return toffee.__snippet(toffee.templates["/lambda_fns/input.toffee"], _l, path, vars); - }; - } - _t.print = _l.print; - _t.json = _l.json; - _t.raw = _l.raw; - _t.html = _l.html; - _t.escape = _l.escape; - _t.partial = _l.partial; - _t.snippet = _l.snippet; + toffee.__augmentLocals(__locals); with (__locals) {; __toffee.out = []; @@ -3487,11 +2367,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { }; tmpl.pub = function(__locals) { - var _l, _ln, _t, _to, _ts; - _l = __locals; - _t = _l.__toffee = { - out: [] - }; + var _ln, _to, _ts; _to = function(x) { return __locals.__toffee.out.push(x); }; @@ -3501,48 +2377,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts = function(x) { return __locals.__toffee.state = x; }; - if (!(_l.print != null)) { - _l.print = function(o) { - return toffee.__print(_l, o); - }; - } - if (!(_l.json != null)) { - _l.json = function(o) { - return toffee.__json(_l, o); - }; - } - if (!(_l.raw != null)) { - _l.raw = function(o) { - return toffee.__raw(_l, o); - }; - } - if (!(_l.html != null)) { - _l.html = function(o) { - return toffee.__html(_l, o); - }; - } - if (!(_l.escape != null)) { - _l.escape = function(o) { - return toffee.__escape(_l, o); - }; - } - if (!(_l.partial != null)) { - _l.partial = function(path, vars) { - return toffee.__partial(toffee.templates["/lambda_fns/output.toffee"], _l, path, vars); - }; - } - if (!(_l.snippet != null)) { - _l.snippet = function(path, vars) { - return toffee.__snippet(toffee.templates["/lambda_fns/output.toffee"], _l, path, vars); - }; - } - _t.print = _l.print; - _t.json = _l.json; - _t.raw = _l.raw; - _t.html = _l.html; - _t.escape = _l.escape; - _t.partial = _l.partial; - _t.snippet = _l.snippet; + toffee.__augmentLocals(__locals); with (__locals) {; __toffee.out = []; @@ -3570,11 +2405,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { }; tmpl.pub = function(__locals) { - var _l, _ln, _t, _to, _ts; - _l = __locals; - _t = _l.__toffee = { - out: [] - }; + var _ln, _to, _ts; _to = function(x) { return __locals.__toffee.out.push(x); }; @@ -3584,48 +2415,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts = function(x) { return __locals.__toffee.state = x; }; - if (!(_l.print != null)) { - _l.print = function(o) { - return toffee.__print(_l, o); - }; - } - if (!(_l.json != null)) { - _l.json = function(o) { - return toffee.__json(_l, o); - }; - } - if (!(_l.raw != null)) { - _l.raw = function(o) { - return toffee.__raw(_l, o); - }; - } - if (!(_l.html != null)) { - _l.html = function(o) { - return toffee.__html(_l, o); - }; - } - if (!(_l.escape != null)) { - _l.escape = function(o) { - return toffee.__escape(_l, o); - }; - } - if (!(_l.partial != null)) { - _l.partial = function(path, vars) { - return toffee.__partial(toffee.templates["/multiline_interpolation/foo.toffee"], _l, path, vars); - }; - } - if (!(_l.snippet != null)) { - _l.snippet = function(path, vars) { - return toffee.__snippet(toffee.templates["/multiline_interpolation/foo.toffee"], _l, path, vars); - }; - } - _t.print = _l.print; - _t.json = _l.json; - _t.raw = _l.raw; - _t.html = _l.html; - _t.escape = _l.escape; - _t.partial = _l.partial; - _t.snippet = _l.snippet; + toffee.__augmentLocals(__locals); with (__locals) {; __toffee.out = []; @@ -3655,11 +2445,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { }; tmpl.pub = function(__locals) { - var _l, _ln, _t, _to, _ts; - _l = __locals; - _t = _l.__toffee = { - out: [] - }; + var _ln, _to, _ts; _to = function(x) { return __locals.__toffee.out.push(x); }; @@ -3669,48 +2455,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts = function(x) { return __locals.__toffee.state = x; }; - if (!(_l.print != null)) { - _l.print = function(o) { - return toffee.__print(_l, o); - }; - } - if (!(_l.json != null)) { - _l.json = function(o) { - return toffee.__json(_l, o); - }; - } - if (!(_l.raw != null)) { - _l.raw = function(o) { - return toffee.__raw(_l, o); - }; - } - if (!(_l.html != null)) { - _l.html = function(o) { - return toffee.__html(_l, o); - }; - } - if (!(_l.escape != null)) { - _l.escape = function(o) { - return toffee.__escape(_l, o); - }; - } - if (!(_l.partial != null)) { - _l.partial = function(path, vars) { - return toffee.__partial(toffee.templates["/multiline_interpolation/input.toffee"], _l, path, vars); - }; - } - if (!(_l.snippet != null)) { - _l.snippet = function(path, vars) { - return toffee.__snippet(toffee.templates["/multiline_interpolation/input.toffee"], _l, path, vars); - }; - } - _t.print = _l.print; - _t.json = _l.json; - _t.raw = _l.raw; - _t.html = _l.html; - _t.escape = _l.escape; - _t.partial = _l.partial; - _t.snippet = _l.snippet; + toffee.__augmentLocals(__locals); with (__locals) {; __toffee.out = []; @@ -3748,11 +2493,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { }; tmpl.pub = function(__locals) { - var _l, _ln, _t, _to, _ts; - _l = __locals; - _t = _l.__toffee = { - out: [] - }; + var _ln, _to, _ts; _to = function(x) { return __locals.__toffee.out.push(x); }; @@ -3762,48 +2503,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts = function(x) { return __locals.__toffee.state = x; }; - if (!(_l.print != null)) { - _l.print = function(o) { - return toffee.__print(_l, o); - }; - } - if (!(_l.json != null)) { - _l.json = function(o) { - return toffee.__json(_l, o); - }; - } - if (!(_l.raw != null)) { - _l.raw = function(o) { - return toffee.__raw(_l, o); - }; - } - if (!(_l.html != null)) { - _l.html = function(o) { - return toffee.__html(_l, o); - }; - } - if (!(_l.escape != null)) { - _l.escape = function(o) { - return toffee.__escape(_l, o); - }; - } - if (!(_l.partial != null)) { - _l.partial = function(path, vars) { - return toffee.__partial(toffee.templates["/multiline_interpolation/output.toffee"], _l, path, vars); - }; - } - if (!(_l.snippet != null)) { - _l.snippet = function(path, vars) { - return toffee.__snippet(toffee.templates["/multiline_interpolation/output.toffee"], _l, path, vars); - }; - } - _t.print = _l.print; - _t.json = _l.json; - _t.raw = _l.raw; - _t.html = _l.html; - _t.escape = _l.escape; - _t.partial = _l.partial; - _t.snippet = _l.snippet; + toffee.__augmentLocals(__locals); with (__locals) {; __toffee.out = []; @@ -3835,11 +2535,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { }; tmpl.pub = function(__locals) { - var _l, _ln, _t, _to, _ts; - _l = __locals; - _t = _l.__toffee = { - out: [] - }; + var _ln, _to, _ts; _to = function(x) { return __locals.__toffee.out.push(x); }; @@ -3849,48 +2545,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts = function(x) { return __locals.__toffee.state = x; }; - if (!(_l.print != null)) { - _l.print = function(o) { - return toffee.__print(_l, o); - }; - } - if (!(_l.json != null)) { - _l.json = function(o) { - return toffee.__json(_l, o); - }; - } - if (!(_l.raw != null)) { - _l.raw = function(o) { - return toffee.__raw(_l, o); - }; - } - if (!(_l.html != null)) { - _l.html = function(o) { - return toffee.__html(_l, o); - }; - } - if (!(_l.escape != null)) { - _l.escape = function(o) { - return toffee.__escape(_l, o); - }; - } - if (!(_l.partial != null)) { - _l.partial = function(path, vars) { - return toffee.__partial(toffee.templates["/plaintext/input.toffee"], _l, path, vars); - }; - } - if (!(_l.snippet != null)) { - _l.snippet = function(path, vars) { - return toffee.__snippet(toffee.templates["/plaintext/input.toffee"], _l, path, vars); - }; - } - _t.print = _l.print; - _t.json = _l.json; - _t.raw = _l.raw; - _t.html = _l.html; - _t.escape = _l.escape; - _t.partial = _l.partial; - _t.snippet = _l.snippet; + toffee.__augmentLocals(__locals); with (__locals) {; __toffee.out = []; @@ -3918,11 +2573,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { }; tmpl.pub = function(__locals) { - var _l, _ln, _t, _to, _ts; - _l = __locals; - _t = _l.__toffee = { - out: [] - }; + var _ln, _to, _ts; _to = function(x) { return __locals.__toffee.out.push(x); }; @@ -3932,48 +2583,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts = function(x) { return __locals.__toffee.state = x; }; - if (!(_l.print != null)) { - _l.print = function(o) { - return toffee.__print(_l, o); - }; - } - if (!(_l.json != null)) { - _l.json = function(o) { - return toffee.__json(_l, o); - }; - } - if (!(_l.raw != null)) { - _l.raw = function(o) { - return toffee.__raw(_l, o); - }; - } - if (!(_l.html != null)) { - _l.html = function(o) { - return toffee.__html(_l, o); - }; - } - if (!(_l.escape != null)) { - _l.escape = function(o) { - return toffee.__escape(_l, o); - }; - } - if (!(_l.partial != null)) { - _l.partial = function(path, vars) { - return toffee.__partial(toffee.templates["/plaintext/output.toffee"], _l, path, vars); - }; - } - if (!(_l.snippet != null)) { - _l.snippet = function(path, vars) { - return toffee.__snippet(toffee.templates["/plaintext/output.toffee"], _l, path, vars); - }; - } - _t.print = _l.print; - _t.json = _l.json; - _t.raw = _l.raw; - _t.html = _l.html; - _t.escape = _l.escape; - _t.partial = _l.partial; - _t.snippet = _l.snippet; + toffee.__augmentLocals(__locals); with (__locals) {; __toffee.out = []; @@ -4001,11 +2611,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { }; tmpl.pub = function(__locals) { - var msg, _l, _ln, _t, _to, _ts; - _l = __locals; - _t = _l.__toffee = { - out: [] - }; + var msg, _ln, _to, _ts; _to = function(x) { return __locals.__toffee.out.push(x); }; @@ -4015,48 +2621,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts = function(x) { return __locals.__toffee.state = x; }; - if (!(_l.print != null)) { - _l.print = function(o) { - return toffee.__print(_l, o); - }; - } - if (!(_l.json != null)) { - _l.json = function(o) { - return toffee.__json(_l, o); - }; - } - if (!(_l.raw != null)) { - _l.raw = function(o) { - return toffee.__raw(_l, o); - }; - } - if (!(_l.html != null)) { - _l.html = function(o) { - return toffee.__html(_l, o); - }; - } - if (!(_l.escape != null)) { - _l.escape = function(o) { - return toffee.__escape(_l, o); - }; - } - if (!(_l.partial != null)) { - _l.partial = function(path, vars) { - return toffee.__partial(toffee.templates["/snippets/foo/bar/body.toffee"], _l, path, vars); - }; - } - if (!(_l.snippet != null)) { - _l.snippet = function(path, vars) { - return toffee.__snippet(toffee.templates["/snippets/foo/bar/body.toffee"], _l, path, vars); - }; - } - _t.print = _l.print; - _t.json = _l.json; - _t.raw = _l.raw; - _t.html = _l.html; - _t.escape = _l.escape; - _t.partial = _l.partial; - _t.snippet = _l.snippet; + toffee.__augmentLocals(__locals); with (__locals) {; __toffee.out = []; @@ -4083,11 +2648,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { }; tmpl.pub = function(__locals) { - var from, msg, _l, _ln, _t, _to, _ts; - _l = __locals; - _t = _l.__toffee = { - out: [] - }; + var from, msg, _ln, _to, _ts; _to = function(x) { return __locals.__toffee.out.push(x); }; @@ -4097,48 +2658,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts = function(x) { return __locals.__toffee.state = x; }; - if (!(_l.print != null)) { - _l.print = function(o) { - return toffee.__print(_l, o); - }; - } - if (!(_l.json != null)) { - _l.json = function(o) { - return toffee.__json(_l, o); - }; - } - if (!(_l.raw != null)) { - _l.raw = function(o) { - return toffee.__raw(_l, o); - }; - } - if (!(_l.html != null)) { - _l.html = function(o) { - return toffee.__html(_l, o); - }; - } - if (!(_l.escape != null)) { - _l.escape = function(o) { - return toffee.__escape(_l, o); - }; - } - if (!(_l.partial != null)) { - _l.partial = function(path, vars) { - return toffee.__partial(toffee.templates["/snippets/foo/message.toffee"], _l, path, vars); - }; - } - if (!(_l.snippet != null)) { - _l.snippet = function(path, vars) { - return toffee.__snippet(toffee.templates["/snippets/foo/message.toffee"], _l, path, vars); - }; - } - _t.print = _l.print; - _t.json = _l.json; - _t.raw = _l.raw; - _t.html = _l.html; - _t.escape = _l.escape; - _t.partial = _l.partial; - _t.snippet = _l.snippet; + toffee.__augmentLocals(__locals); with (__locals) {; __toffee.out = []; @@ -4168,11 +2688,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { }; tmpl.pub = function(__locals) { - var _l, _ln, _t, _to, _ts; - _l = __locals; - _t = _l.__toffee = { - out: [] - }; + var _ln, _to, _ts; _to = function(x) { return __locals.__toffee.out.push(x); }; @@ -4182,48 +2698,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts = function(x) { return __locals.__toffee.state = x; }; - if (!(_l.print != null)) { - _l.print = function(o) { - return toffee.__print(_l, o); - }; - } - if (!(_l.json != null)) { - _l.json = function(o) { - return toffee.__json(_l, o); - }; - } - if (!(_l.raw != null)) { - _l.raw = function(o) { - return toffee.__raw(_l, o); - }; - } - if (!(_l.html != null)) { - _l.html = function(o) { - return toffee.__html(_l, o); - }; - } - if (!(_l.escape != null)) { - _l.escape = function(o) { - return toffee.__escape(_l, o); - }; - } - if (!(_l.partial != null)) { - _l.partial = function(path, vars) { - return toffee.__partial(toffee.templates["/snippets/input.toffee"], _l, path, vars); - }; - } - if (!(_l.snippet != null)) { - _l.snippet = function(path, vars) { - return toffee.__snippet(toffee.templates["/snippets/input.toffee"], _l, path, vars); - }; - } - _t.print = _l.print; - _t.json = _l.json; - _t.raw = _l.raw; - _t.html = _l.html; - _t.escape = _l.escape; - _t.partial = _l.partial; - _t.snippet = _l.snippet; + toffee.__augmentLocals(__locals); with (__locals) {; __toffee.out = []; @@ -4264,11 +2739,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { }; tmpl.pub = function(__locals) { - var _l, _ln, _t, _to, _ts; - _l = __locals; - _t = _l.__toffee = { - out: [] - }; + var _ln, _to, _ts; _to = function(x) { return __locals.__toffee.out.push(x); }; @@ -4278,48 +2749,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts = function(x) { return __locals.__toffee.state = x; }; - if (!(_l.print != null)) { - _l.print = function(o) { - return toffee.__print(_l, o); - }; - } - if (!(_l.json != null)) { - _l.json = function(o) { - return toffee.__json(_l, o); - }; - } - if (!(_l.raw != null)) { - _l.raw = function(o) { - return toffee.__raw(_l, o); - }; - } - if (!(_l.html != null)) { - _l.html = function(o) { - return toffee.__html(_l, o); - }; - } - if (!(_l.escape != null)) { - _l.escape = function(o) { - return toffee.__escape(_l, o); - }; - } - if (!(_l.partial != null)) { - _l.partial = function(path, vars) { - return toffee.__partial(toffee.templates["/snippets/output.toffee"], _l, path, vars); - }; - } - if (!(_l.snippet != null)) { - _l.snippet = function(path, vars) { - return toffee.__snippet(toffee.templates["/snippets/output.toffee"], _l, path, vars); - }; - } - _t.print = _l.print; - _t.json = _l.json; - _t.raw = _l.raw; - _t.html = _l.html; - _t.escape = _l.escape; - _t.partial = _l.partial; - _t.snippet = _l.snippet; + toffee.__augmentLocals(__locals); with (__locals) {; __toffee.out = []; @@ -4361,11 +2791,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { }; tmpl.pub = function(__locals) { - var _l, _ln, _t, _to, _ts; - _l = __locals; - _t = _l.__toffee = { - out: [] - }; + var _ln, _to, _ts; _to = function(x) { return __locals.__toffee.out.push(x); }; @@ -4375,48 +2801,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts = function(x) { return __locals.__toffee.state = x; }; - if (!(_l.print != null)) { - _l.print = function(o) { - return toffee.__print(_l, o); - }; - } - if (!(_l.json != null)) { - _l.json = function(o) { - return toffee.__json(_l, o); - }; - } - if (!(_l.raw != null)) { - _l.raw = function(o) { - return toffee.__raw(_l, o); - }; - } - if (!(_l.html != null)) { - _l.html = function(o) { - return toffee.__html(_l, o); - }; - } - if (!(_l.escape != null)) { - _l.escape = function(o) { - return toffee.__escape(_l, o); - }; - } - if (!(_l.partial != null)) { - _l.partial = function(path, vars) { - return toffee.__partial(toffee.templates["/special_cases/input.toffee"], _l, path, vars); - }; - } - if (!(_l.snippet != null)) { - _l.snippet = function(path, vars) { - return toffee.__snippet(toffee.templates["/special_cases/input.toffee"], _l, path, vars); - }; - } - _t.print = _l.print; - _t.json = _l.json; - _t.raw = _l.raw; - _t.html = _l.html; - _t.escape = _l.escape; - _t.partial = _l.partial; - _t.snippet = _l.snippet; + toffee.__augmentLocals(__locals); with (__locals) {; __toffee.out = []; @@ -4481,11 +2866,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { }; tmpl.pub = function(__locals) { - var _l, _ln, _t, _to, _ts; - _l = __locals; - _t = _l.__toffee = { - out: [] - }; + var _ln, _to, _ts; _to = function(x) { return __locals.__toffee.out.push(x); }; @@ -4495,48 +2876,7 @@ toffee.__inlineInclude = function(path, locals, parent_locals) { _ts = function(x) { return __locals.__toffee.state = x; }; - if (!(_l.print != null)) { - _l.print = function(o) { - return toffee.__print(_l, o); - }; - } - if (!(_l.json != null)) { - _l.json = function(o) { - return toffee.__json(_l, o); - }; - } - if (!(_l.raw != null)) { - _l.raw = function(o) { - return toffee.__raw(_l, o); - }; - } - if (!(_l.html != null)) { - _l.html = function(o) { - return toffee.__html(_l, o); - }; - } - if (!(_l.escape != null)) { - _l.escape = function(o) { - return toffee.__escape(_l, o); - }; - } - if (!(_l.partial != null)) { - _l.partial = function(path, vars) { - return toffee.__partial(toffee.templates["/special_cases/output.toffee"], _l, path, vars); - }; - } - if (!(_l.snippet != null)) { - _l.snippet = function(path, vars) { - return toffee.__snippet(toffee.templates["/special_cases/output.toffee"], _l, path, vars); - }; - } - _t.print = _l.print; - _t.json = _l.json; - _t.raw = _l.raw; - _t.html = _l.html; - _t.escape = _l.escape; - _t.partial = _l.partial; - _t.snippet = _l.snippet; + toffee.__augmentLocals(__locals); with (__locals) {; __toffee.out = []; From 484b39257c2ba65fb1b5c1d3a98496ef425ae3b5 Mon Sep 17 00:00:00 2001 From: "ccoyne77@gmail.com" Date: Thu, 16 Aug 2012 16:41:49 -0400 Subject: [PATCH 027/132] uglifyJS support for minimized output for browser --- Cakefile | 2 +- lib/command_line.js | 4 +- lib/engine.js | 5 +- lib/view.js | 17 +- src/command_line.coffee | 4 +- src/engine.coffee | 3 + src/view.coffee | 22 +- .../express3/public/javascripts/test_cases.js | 2996 +---------------- test/run_cases.coffee | 45 +- 9 files changed, 152 insertions(+), 2946 deletions(-) diff --git a/Cakefile b/Cakefile index 6f8d166..185591a 100644 --- a/Cakefile +++ b/Cakefile @@ -44,7 +44,7 @@ generateExpressTest = (cb) -> # generate the JS file bundling all the tests - proc = spawn 'coffee', ['./src/command_line.coffee', './test/cases', '-o', './test/express3/public/javascripts/test_cases.js'] + proc = spawn 'coffee', ['./src/command_line.coffee', '-m', './test/cases', '-o', './test/express3/public/javascripts/test_cases.js'] proc.stderr.on 'data', (buffer) -> console.log buffer.toString() proc.stdout.on 'data', (buffer) -> console.log buffer.toString() proc.on 'exit', (status) -> diff --git a/lib/command_line.js b/lib/command_line.js index 417f5b1..b15972c 100644 --- a/lib/command_line.js +++ b/lib/command_line.js @@ -64,7 +64,7 @@ } } } else { - out_text += "\n" + compile(start_path, curr_path); + out_text += "\n;\n" + compile(start_path, curr_path); } return out_text; }; @@ -83,7 +83,7 @@ process.exit(1); } start_path = path.normalize(start_path); - out_text = "" + (getCommonHeadersJs(true, false)) + (recurseRun(start_path, start_path, '')); + out_text = "" + (getCommonHeadersJs(true, true)) + "\n;\n" + (recurseRun(start_path, start_path, '')); if (program.print) { console.log(out_text); } diff --git a/lib/engine.js b/lib/engine.js index b0ba08a..9f78bed 100644 --- a/lib/engine.js +++ b/lib/engine.js @@ -27,6 +27,7 @@ this.run = __bind(this.run, this); options = options || {}; this.verbose = options.verbose || false; + this.minimize = options.minimize || false; this.prettyPrintErrors = options.prettyPrintErrors != null ? options.prettyPrintErrors : true; this.viewCache = {}; } @@ -159,7 +160,8 @@ view_options = { fileName: filename, verbose: this.verbose, - prettyPrintErrors: this.prettyPrintErrors + prettyPrintErrors: this.prettyPrintErrors, + minimize: this.minimize }; v = new view(txt, view_options); this.viewCache[filename] = v; @@ -196,6 +198,7 @@ fileName: filename, verbose: _this.verbose, prettyPrintErrors: _this.prettyPrintErrors, + minimize: _this.minimize, cb: function(v) { _this._log("" + filename + " updated and ready"); return _this.viewCache[filename] = v; diff --git a/lib/view.js b/lib/view.js index fd3cac9..13137a0 100644 --- a/lib/view.js +++ b/lib/view.js @@ -19,6 +19,17 @@ } minimizeJs = function(js) { + var ast, jsp, pro; + try { + jsp = require("uglify-js").parser; + pro = require("uglify-js").uglify; + ast = jsp.parse(js, true); + js = pro.gen_code(ast); + } catch (e) { + console.log(js); + console.log(e); + process.exit(1); + } return js; }; @@ -29,7 +40,7 @@ include_bundle_headers: includes some functions needed for browser use */ - return "if not toffee? then toffee = {}\nif not toffee.templates then toffee.templates = {}\n\ntoffee.states = " + (JSON.stringify(states)) + "\n\ntoffee.__json = (locals, o) ->\n if not o? then return \"null\"\n else return \"\" + JSON.stringify(o).replace(//g,'\\\\u003E').replace(/&/g,'\\\\u0026')\n\ntoffee.__raw = (locals, o) -> o\n\ntoffee.__html = (locals, o) ->\n (\"\"+o).replace(/&/g, '&').replace(//g, '>').replace(/\"/g, '"')\n\ntoffee.__escape = (locals, o) ->\n if (not locals.__toffee.autoEscape?) or locals.__toffee.autoEscape\n if o is undefined then return ''\n if o? and (typeof o) is \"object\" then return locals.json o\n return locals.html o\n return o\n\ntoffee.__augmentLocals = (locals) ->\n _l = locals\n _t = _l.__toffee = { out: []}\n if not _l.print? then _l.print = (o) -> toffee.__print _l, o\n if not _l.json? then _l.json = (o) -> toffee.__json _l, o\n if not _l.raw? then _l.raw = (o) -> toffee.__raw _l, o\n if not _l.html? then _l.html = (o) -> toffee.__html _l, o\n if not _l.escape? then _l.escape = (o) -> toffee.__escape _l, o\n if not _l.partial? then _l.partial = (path, vars) -> toffee.__partial toffee.templates[\"" + this.bundlePath + "\"], _l, path, vars\n if not _l.snippet? then _l.snippet = (path, vars) -> toffee.__snippet toffee.templates[\"" + this.bundlePath + "\"], _l, path, vars\n _t.print = _l.print\n _t.json = _l.json\n _t.raw = _l.raw\n _t.html = _l.html\n _t.escape = _l.escape\n _t.partial = _l.partial\n _t.snippet = _l.snippet\n\n" + (include_bundle_headers ? getBundleHeaders() : ""); + return "if not toffee? then toffee = {}\nif not toffee.templates then toffee.templates = {}\n\ntoffee.states = " + (JSON.stringify(states)) + "\n\ntoffee.__json = (locals, o) ->\n if not o? then return \"null\"\n else return \"\" + JSON.stringify(o).replace(//g,'\\\\u003E').replace(/&/g,'\\\\u0026')\n\ntoffee.__raw = (locals, o) -> o\n\ntoffee.__html = (locals, o) ->\n (\"\"+o).replace(/&/g, '&').replace(//g, '>').replace(/\"/g, '"')\n\ntoffee.__escape = (locals, o) ->\n if (not locals.__toffee.autoEscape?) or locals.__toffee.autoEscape\n if o is undefined then return ''\n if o? and (typeof o) is \"object\" then return locals.json o\n return locals.html o\n return o\n\ntoffee.__augmentLocals = (locals, bundle_path) ->\n _l = locals\n _t = _l.__toffee = { out: []}\n if not _l.print? then _l.print = (o) -> toffee.__print _l, o\n if not _l.json? then _l.json = (o) -> toffee.__json _l, o\n if not _l.raw? then _l.raw = (o) -> toffee.__raw _l, o\n if not _l.html? then _l.html = (o) -> toffee.__html _l, o\n if not _l.escape? then _l.escape = (o) -> toffee.__escape _l, o\n if not _l.partial? then _l.partial = (path, vars) -> toffee.__partial toffee.templates[\"\#{bundle_path}\"], _l, path, vars\n if not _l.snippet? then _l.snippet = (path, vars) -> toffee.__snippet toffee.templates[\"\#{bundle_path}\"], _l, path, vars\n _t.print = _l.print\n _t.json = _l.json\n _t.raw = _l.raw\n _t.html = _l.html\n _t.escape = _l.escape\n _t.partial = _l.partial\n _t.snippet = _l.snippet\n\n" + (include_bundle_headers ? getBundleHeaders() : ""); }; getBundleHeaders = function() { @@ -523,13 +534,13 @@ view.prototype._coffeeHeaders = function() { var ___; ___ = this._tabAsSpaces(); - return "" + (this.browserMode ? '' : getCommonHeaders(false)) + "\ntmpl = toffee.templates[\"" + this.bundlePath + "\"] =\n bundlePath: \"" + this.bundlePath + "\"\ntmpl.pub = (__locals) ->\n" + ___ + "_to = (x) -> __locals.__toffee.out.push x\n" + ___ + "_ln = (x) -> __locals.__toffee.lineno = x\n" + ___ + "_ts = (x) -> __locals.__toffee.state = x\n" + ___ + "toffee.__augmentLocals __locals\n\n" + ___ + "`with (__locals) {`\n" + ___ + "__toffee.out = []"; + return "" + (this.browserMode ? '' : getCommonHeaders(false)) + "\ntmpl = toffee.templates[\"" + this.bundlePath + "\"] =\n bundlePath: \"" + this.bundlePath + "\"\ntmpl.pub = (__locals) ->\n" + ___ + "_to = (x) -> __locals.__toffee.out.push x\n" + ___ + "_ln = (x) -> __locals.__toffee.lineno = x\n" + ___ + "_ts = (x) -> __locals.__toffee.state = x\n" + ___ + "toffee.__augmentLocals __locals, \"" + this.bundlePath + "\"\n\n" + ___ + "`with (__locals) {`\n" + ___ + "__toffee.out = []"; }; view.prototype._coffeeFooters = function() { var ___; ___ = this._tabAsSpaces(); - return "\n\n" + ___ + "__toffee.res = __toffee.out.join \"\"\n" + ___ + "return __toffee.res\n" + ___ + "`} /* closing JS 'with' */ `\n# sometimes we want to execute the whole thing in a sandbox\n# and just output results\nif __toffee_run_input?\n" + ___ + "return tmpl.pub __toffee_run_input"; + return "\n\n" + ___ + "__toffee.res = __toffee.out.join \"\"\n" + ___ + "return __toffee.res\n" + ___ + "`true; } /* closing JS 'with' */ `\n# sometimes we want to execute the whole thing in a sandbox\n# and just output results\nif __toffee_run_input?\n" + ___ + "return tmpl.pub __toffee_run_input"; }; return view; diff --git a/src/command_line.coffee b/src/command_line.coffee index ce7d870..633d639 100644 --- a/src/command_line.coffee +++ b/src/command_line.coffee @@ -74,7 +74,7 @@ recurseRun = (start_path, curr_path, out_text) -> if sub_stats.isDirectory() out_text = recurseRun start_path, sub_path, out_text else - out_text += "\n" + compile start_path, curr_path + out_text += "\n;\n" + compile start_path, curr_path return out_text @@ -91,7 +91,7 @@ run = exports.run = -> console.log "Input file/path not found. toffee --help for examples" process.exit 1 start_path = path.normalize start_path - out_text = """#{getCommonHeadersJs true, false}#{recurseRun start_path, start_path, ''}""" + out_text = """#{getCommonHeadersJs true, true}\n;\n#{recurseRun start_path, start_path, ''}""" if program.print console.log out_text if program.output diff --git a/src/engine.coffee b/src/engine.coffee index 424c759..f76d6ad 100644 --- a/src/engine.coffee +++ b/src/engine.coffee @@ -10,6 +10,7 @@ class engine constructor: (options) -> options = options or {} @verbose = options.verbose or false + @minimize = options.minimize or false @prettyPrintErrors = if options.prettyPrintErrors? then options.prettyPrintErrors else true @viewCache = {} # filename @@ -114,6 +115,7 @@ class engine fileName: filename verbose: @verbose prettyPrintErrors: @prettyPrintErrors + minimize: @minimize v = new view txt, view_options @viewCache[filename] = v @_monitorForChanges filename, options @@ -139,6 +141,7 @@ class engine fileName: filename verbose: @verbose prettyPrintErrors: @prettyPrintErrors + minimize: @minimize cb: (v) => @_log "#{filename} updated and ready" @viewCache[filename] = v diff --git a/src/view.coffee b/src/view.coffee index cfb2dc4..8adfe27 100644 --- a/src/view.coffee +++ b/src/view.coffee @@ -8,8 +8,20 @@ try catch e coffee = require "coffee-script" + minimizeJs = (js) -> # uglify doesn't seem to be working right; #TODO: This + try + jsp = require("uglify-js").parser + pro = require("uglify-js").uglify + ast = jsp.parse js, true # parse code and get the initial AST + #ast = pro.ast_mangle ast # get a new AST with mangled names + #ast = pro.ast_squeeze ast # get an AST with compression optimizations + js = pro.gen_code ast + catch e + console.log js + console.log e + process.exit 1 js getCommonHeaders = (include_bundle_headers) -> @@ -41,7 +53,7 @@ toffee.__escape = (locals, o) -> return locals.html o return o -toffee.__augmentLocals = (locals) -> +toffee.__augmentLocals = (locals, bundle_path) -> _l = locals _t = _l.__toffee = { out: []} if not _l.print? then _l.print = (o) -> toffee.__print _l, o @@ -49,8 +61,8 @@ toffee.__augmentLocals = (locals) -> if not _l.raw? then _l.raw = (o) -> toffee.__raw _l, o if not _l.html? then _l.html = (o) -> toffee.__html _l, o if not _l.escape? then _l.escape = (o) -> toffee.__escape _l, o - if not _l.partial? then _l.partial = (path, vars) -> toffee.__partial toffee.templates["#{@bundlePath}"], _l, path, vars - if not _l.snippet? then _l.snippet = (path, vars) -> toffee.__snippet toffee.templates["#{@bundlePath}"], _l, path, vars + if not _l.partial? then _l.partial = (path, vars) -> toffee.__partial toffee.templates["\#{bundle_path}"], _l, path, vars + if not _l.snippet? then _l.snippet = (path, vars) -> toffee.__snippet toffee.templates["\#{bundle_path}"], _l, path, vars _t.print = _l.print _t.json = _l.json _t.raw = _l.raw @@ -474,7 +486,7 @@ tmpl.pub = (__locals) -> #{___}_to = (x) -> __locals.__toffee.out.push x #{___}_ln = (x) -> __locals.__toffee.lineno = x #{___}_ts = (x) -> __locals.__toffee.state = x -#{___}toffee.__augmentLocals __locals +#{___}toffee.__augmentLocals __locals, "#{@bundlePath}" #{___}`with (__locals) {` #{___}__toffee.out = [] @@ -485,7 +497,7 @@ tmpl.pub = (__locals) -> """\n #{___}__toffee.res = __toffee.out.join "" #{___}return __toffee.res -#{___}`} /* closing JS 'with' */ ` +#{___}`true; } /* closing JS 'with' */ ` # sometimes we want to execute the whole thing in a sandbox # and just output results if __toffee_run_input? diff --git a/test/express3/public/javascripts/test_cases.js b/test/express3/public/javascripts/test_cases.js index 57e89bf..fc8dd10 100644 --- a/test/express3/public/javascripts/test_cases.js +++ b/test/express3/public/javascripts/test_cases.js @@ -1,2917 +1,79 @@ -var toffee; - -if (!(typeof toffee !== "undefined" && toffee !== null)) toffee = {}; - -if (!toffee.templates) toffee.templates = {}; - -toffee.states = { - "TOFFEE": 1, - "COFFEE": 2 -}; - -toffee.__json = function(locals, o) { - if (!(o != null)) { - return "null"; - } else { - return "" + JSON.stringify(o).replace(//g, '\\u003E').replace(/&/g, '\\u0026'); - } -}; - -toffee.__raw = function(locals, o) { - return o; -}; - -toffee.__html = function(locals, o) { - return ("" + o).replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"'); -}; - -toffee.__escape = function(locals, o) { - if ((!(locals.__toffee.autoEscape != null)) || locals.__toffee.autoEscape) { - if (o === void 0) return ''; - if ((o != null) && (typeof o) === "object") return locals.json(o); - return locals.html(o); - } - return o; -}; - -toffee.__augmentLocals = function(locals) { - var _l, _t; - _l = locals; - _t = _l.__toffee = { - out: [] - }; - if (!(_l.print != null)) { - _l.print = function(o) { - return toffee.__print(_l, o); - }; - } - if (!(_l.json != null)) { - _l.json = function(o) { - return toffee.__json(_l, o); - }; - } - if (!(_l.raw != null)) { - _l.raw = function(o) { - return toffee.__raw(_l, o); - }; - } - if (!(_l.html != null)) { - _l.html = function(o) { - return toffee.__html(_l, o); - }; - } - if (!(_l.escape != null)) { - _l.escape = function(o) { - return toffee.__escape(_l, o); - }; - } - if (!(_l.partial != null)) { - _l.partial = function(path, vars) { - return toffee.__partial(toffee.templates["undefined"], _l, path, vars); - }; - } - if (!(_l.snippet != null)) { - _l.snippet = function(path, vars) { - return toffee.__snippet(toffee.templates["undefined"], _l, path, vars); - }; - } - _t.print = _l.print; - _t.json = _l.json; - _t.raw = _l.raw; - _t.html = _l.html; - _t.escape = _l.escape; - _t.partial = _l.partial; - return _t.snippet = _l.snippet; -}; - -toffee.__print = function(locals, o) { - if (locals.__toffee.state === toffee.states.COFFEE) { - locals.__toffee.out.push(o); - return ''; - } else { - return "" + o; - } -}; - -toffee.__normalize = function(path) { - var np, part, parts, _i, _len; - if ((!(path != null)) || path === "/") { - return path; - } else { - parts = path.split("/"); - np = []; - if (parts[0]) np.push(''); - for (_i = 0, _len = parts.length; _i < _len; _i++) { - part = parts[_i]; - if (part === "..") { - if (np.length > 1) { - np.pop(); - } else { - np.push(part); - } - } else { - if (part !== ".") np.push(part); - } - } - path = np.join("/"); - if (!path) path = "/"; - return path; - } -}; - -toffee.__partial = function(parent_tmpl, parent_locals, path, vars) { - path = toffee.__normalize(parent_tmpl.bundlePath + "/../" + path); - return toffee.__inlineInclude(path, vars, parent_locals); -}; - -toffee.__snippet = function(parent_tmpl, parent_locals, path, vars) { - path = toffee.__normalize(parent_tmpl.bundlePath + "/../" + path); - vars = vars != null ? vars : {}; - vars.__toffee = vars.__toffee || {}; - vars.__toffee.noInheritance = true; - return toffee.__inlineInclude(path, vars, parent_locals); -}; - -toffee.__inlineInclude = function(path, locals, parent_locals) { - var k, options, v; - options = locals || {}; - options.__toffee = options.__toffee || {}; - if (!options.__toffee.noInheritance) { - for (k in parent_locals) { - v = parent_locals[k]; - if (!((locals != null ? locals[k] : void 0) != null)) { - if (!(k === "print" || k === "partial" || k === "snippet" || k === "layout" || k === "__toffee")) { - options[k] = v; - } - } - } - } - if (!toffee.templates[path]) { - return "Inline toffee include: Could not find " + path; - } else { - return toffee.templates[path].pub(options); - } -}; - -(function() { - var tmpl; - - tmpl = toffee.templates["/big_file/input.toffee"] = { - bundlePath: "/big_file/input.toffee" - }; - - tmpl.pub = function(__locals) { - var count, i, _i, _ln, _to, _ts; - _to = function(x) { - return __locals.__toffee.out.push(x); - }; - _ln = function(x) { - return __locals.__toffee.lineno = x; - }; - _ts = function(x) { - return __locals.__toffee.state = x; - }; - toffee.__augmentLocals(__locals); - with (__locals) {; - - __toffee.out = []; - _ts(1); - _ts(2); - count = 0; - for (i = _i = 0; _i < 2; i = ++_i) { - _ts(1); - _ts(1); - _ln(3); - _to("" + (escape(count++))); - _ln(4); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _ln(5); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _ln(6); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _ln(7); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _ln(8); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _ln(9); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _ln(10); - _to("..."); - _ts(2); - _ts(2); - count += 1; - print(" " + count + "..."); - _ts(1); - _ln(13); - _to(" "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _ln(14); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _ln(15); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _ln(16); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _ln(17); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _ln(18); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _ln(19); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _to("... "); - _to("" + (escape(count++))); - _ln(20); - _to("..."); - _ts(2); - _ts(2); - count += 1; - print(" " + count + "..."); - } - __toffee.res = __toffee.out.join(""); - return __toffee.res; - return } /* closing JS 'with' */ ; - }; - - if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { - return tmpl.pub(__toffee_run_input); - } - -}).call(this); - -(function() { - var tmpl; - - tmpl = toffee.templates["/big_file/output.toffee"] = { - bundlePath: "/big_file/output.toffee" - }; - - tmpl.pub = function(__locals) { - var _ln, _to, _ts; - _to = function(x) { - return __locals.__toffee.out.push(x); - }; - _ln = function(x) { - return __locals.__toffee.lineno = x; - }; - _ts = function(x) { - return __locals.__toffee.state = x; - }; - toffee.__augmentLocals(__locals); - with (__locals) {; - - __toffee.out = []; - _ts(1); - _ts(1); - _ln(1); - _to("0... 1... 2... 3... 4... 5... 6... 7... 8... 9... 10... 11... 12... 13... 14... 15... 16... 17... 18... 19... 20... 21... 22... 23... 24... 25... 26... 27... 28... 29... 30... 31... 32... 33... 34... 35... 36... 37... 38... 39... 40... 41... 42... 43... 44... 45... 46... 47... 48... 49... 50... 51... 52... 53... 54... 55... 56... 57... 58... 59... 60... 61... 62... 63... 64... 65... 66... 67... 68... 70... 70... 71... 72... 73... 74... 75... 76... 77... 78... 79... 80... 81... 82... 83... 84... 85... 86... 87... 88... 89... 90... 91... 92... 93... 94... 95... 96... 97... 98... 99... 100... 101... 102... 103... 104... 105... 106... 107... 108... 109... 110... 111... 112... 113... 114... 115... 116... 117... 118... 119... 120... 121... 122... 123... 124... 125... 126... 127... 128... 129... 130... 131... 132... 133... 134... 135... 136... 137... 138... 139... 140... 141... 142... 143... 144... 145... 146... 147... 148... 149... 150... 151... 152... 153... 154... 155... 156... 157... 158... 159... 160... 162...162... 163... 164... 165... 166... 167... 168... 169... 170... 171... 172... 173... 174... 175... 176... 177... 178... 179... 180... 181... 182... 183... 184... 185... 186... 187... 188... 189... 190... 191... 192... 193... 194... 195... 196... 197... 198... 199... 200... 201... 202... 203... 204... 205... 206... 207... 208... 209... 210... 211... 212... 213... 214... 215... 216... 217... 218... 219... 220... 221... 222... 223... 224... 225... 226... 227... 228... 229... 230... 232... 232... 233... 234... 235... 236... 237... 238... 239... 240... 241... 242... 243... 244... 245... 246... 247... 248... 249... 250... 251... 252... 253... 254... 255... 256... 257... 258... 259... 260... 261... 262... 263... 264... 265... 266... 267... 268... 269... 270... 271... 272... 273... 274... 275... 276... 277... 278... 279... 280... 281... 282... 283... 284... 285... 286... 287... 288... 289... 290... 291... 292... 293... 294... 295... 296... 297... 298... 299... 300... 301... 302... 303... 304... 305... 306... 307... 308... 309... 310... 311... 312... 313... 314... 315... 316... 317... 318... 319... 320... 321... 322... 324..."); - _ts(2); - __toffee.res = __toffee.out.join(""); - return __toffee.res; - return } /* closing JS 'with' */ ; - }; - - if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { - return tmpl.pub(__toffee_run_input); - } - -}).call(this); - -(function() { - var tmpl; - - tmpl = toffee.templates["/comments/input.toffee"] = { - bundlePath: "/comments/input.toffee" - }; - - tmpl.pub = function(__locals) { - var _ln, _to, _ts; - _to = function(x) { - return __locals.__toffee.out.push(x); - }; - _ln = function(x) { - return __locals.__toffee.lineno = x; - }; - _ts = function(x) { - return __locals.__toffee.state = x; - }; - toffee.__augmentLocals(__locals); - with (__locals) {; - - __toffee.out = []; - _ts(1); - _ts(1); - _ln(1); - _to("\n"); - _ln(2); - _to("Pass 1\n"); - _ln(3); - _ts(2); - _ts(1); - _ln(8); - _to("\n"); - _ln(9); - _to("Pass 2\n"); - _ln(10); - _ts(2); - _ts(2); - /* - print "FAIL FAIL FAIL" - #{ foo } - */ - - _ts(1); - _ln(19); - _to("\n"); - _ln(20); - _to("Pass 3"); - _ts(2); - _ts(1); - _to("\n"); - _ln(21); - _ts(2); - __toffee.res = __toffee.out.join(""); - return __toffee.res; - return } /* closing JS 'with' */ ; - }; - - if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { - return tmpl.pub(__toffee_run_input); - } - -}).call(this); - -(function() { - var tmpl; - - tmpl = toffee.templates["/comments/output.toffee"] = { - bundlePath: "/comments/output.toffee" - }; - - tmpl.pub = function(__locals) { - var _ln, _to, _ts; - _to = function(x) { - return __locals.__toffee.out.push(x); - }; - _ln = function(x) { - return __locals.__toffee.lineno = x; - }; - _ts = function(x) { - return __locals.__toffee.state = x; - }; - toffee.__augmentLocals(__locals); - with (__locals) {; - - __toffee.out = []; - _ts(1); - _ts(1); - _ln(1); - _to("\n"); - _ln(2); - _to("Pass 1\n"); - _ln(3); - _to("\n"); - _ln(4); - _to("Pass 2\n"); - _ln(5); - _to("\n"); - _ln(6); - _to("Pass 3\n"); - _ln(7); - _ts(2); - __toffee.res = __toffee.out.join(""); - return __toffee.res; - return } /* closing JS 'with' */ ; - }; - - if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { - return tmpl.pub(__toffee_run_input); - } - -}).call(this); - -(function() { - var tmpl; - - tmpl = toffee.templates["/custom_escape/input.toffee"] = { - bundlePath: "/custom_escape/input.toffee" - }; - - tmpl.pub = function(__locals) { - var w, x, y, z, _ln, _to, _ts; - _to = function(x) { - return __locals.__toffee.out.push(x); - }; - _ln = function(x) { - return __locals.__toffee.lineno = x; - }; - _ts = function(x) { - return __locals.__toffee.state = x; - }; - toffee.__augmentLocals(__locals); - with (__locals) {; - - __toffee.out = []; - _ts(1); - _ts(2); - x = '"Hello world"'; - y = ''; - z = 'click&clack'; - w = [ - 1, 2, { - "place": "The Dreadfort" - } - ]; - _ts(1); - _ln(6); - _to("

    \n"); - _ln(7); - _to(" default x = "); - _to("" + (x != null ? escape(x) : '')); - _to("\n"); - _ln(8); - _to(" default y = "); - _to("" + (y != null ? escape(y) : '')); - _to("\n"); - _ln(9); - _to(" default z = "); - _to("" + (z != null ? escape(z) : '')); - _to("\n"); - _ln(10); - _to(" default w = "); - _to("" + (w != null ? escape(w) : '')); - _to("\n"); - _ln(11); - _to("

    \n"); - _ln(12); - _to("

    \n"); - _ln(13); - _to(" raw x = "); - _to("" + (raw(x))); - _to("\n"); - _ln(14); - _to(" raw y = "); - _to("" + (raw(y))); - _to("\n"); - _ln(15); - _to(" raw z = "); - _to("" + (raw(z))); - _to("\n"); - _ln(16); - _to(" raw w = "); - _to("" + (raw(w))); - _to("\n"); - _ln(17); - _to("

    \n"); - _ln(18); - _to("\n"); - _ln(24); - _to("

    \n"); - _ln(25); - _ts(2); - _ts(2); - print(" raw printed x = " + x + "\n"); - print(" raw printed y = " + y + "\n"); - print(" raw printed z = " + z + "\n"); - print(" raw printed w = " + w); - _ts(1); - _ln(30); - _to("\n"); - _ln(31); - _to("

    "); - _ts(2); - __toffee.res = __toffee.out.join(""); - return __toffee.res; - return } /* closing JS 'with' */ ; - }; - - if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { - return tmpl.pub(__toffee_run_input); - } - -}).call(this); - -(function() { - var tmpl; - - tmpl = toffee.templates["/custom_escape/output.toffee"] = { - bundlePath: "/custom_escape/output.toffee" - }; - - tmpl.pub = function(__locals) { - var _ln, _to, _ts; - _to = function(x) { - return __locals.__toffee.out.push(x); - }; - _ln = function(x) { - return __locals.__toffee.lineno = x; - }; - _ts = function(x) { - return __locals.__toffee.state = x; - }; - toffee.__augmentLocals(__locals); - with (__locals) {; - - __toffee.out = []; - _ts(1); - _ts(1); - _ln(1); - _to("

    \n"); - _ln(2); - _to(" default x = [\"Hello world\"]\n"); - _ln(3); - _to(" default y = []\n"); - _ln(4); - _to(" default z = [click&clack]\n"); - _ln(5); - _to(" default w = [1,2,[object Object]]\n"); - _ln(6); - _to("

    \n"); - _ln(7); - _to("

    \n"); - _ln(8); - _to(" raw x = \"Hello world\"\n"); - _ln(9); - _to(" raw y = \n"); - _ln(10); - _to(" raw z = click&clack\n"); - _ln(11); - _to(" raw w = 1,2,[object Object]\n"); - _ln(12); - _to("

    \n"); - _ln(13); - _to("\n"); - _ln(19); - _to("

    \n"); - _ln(20); - _to(" raw printed x = \"Hello world\"\n"); - _ln(21); - _to(" raw printed y = \n"); - _ln(22); - _to(" raw printed z = click&clack\n"); - _ln(23); - _to(" raw printed w = 1,2,[object Object]\n"); - _ln(24); - _to("

    "); - _ts(2); - __toffee.res = __toffee.out.join(""); - return __toffee.res; - return } /* closing JS 'with' */ ; - }; - - if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { - return tmpl.pub(__toffee_run_input); - } - -}).call(this); - -(function() { - var tmpl; - - tmpl = toffee.templates["/eco_compare/input.toffee"] = { - bundlePath: "/eco_compare/input.toffee" - }; - - tmpl.pub = function(__locals) { - var f, friends, project, _i, _len, _ln, _ref, _to, _ts; - _to = function(x) { - return __locals.__toffee.out.push(x); - }; - _ln = function(x) { - return __locals.__toffee.lineno = x; - }; - _ts = function(x) { - return __locals.__toffee.state = x; - }; - toffee.__augmentLocals(__locals); - with (__locals) {; - - __toffee.out = []; - _ts(1); - _ts(2); - this.projects = [ - { - url: "http://localhost:3000", - name: "okcupid", - description: "A site for singles" - }, { - url: "http://localhost:3001", - name: "tallygram", - description: "A site for anyone" - } - ]; - if (this.projects.length) { - _ref = this.projects; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - project = _ref[_i]; - _ts(1); - _ts(1); - _ln(8); - _to("\n"); - _ln(9); - _to(" "); - _to("" + (escape(project.name))); - _to("\n"); - _ln(10); - _to("

    "); - _to("" + (escape(project.description))); - _to("

    \n"); - _ln(11); - _to(" "); - _ts(2); - } - } else { - _ts(1); - _ts(1); - _ln(12); - _to(" No projects "); - _ts(2); - } - friends = [ - { - gender: "f", - name: "Jennie" - }, { - gender: "f", - name: "Rachel" - }, { - gender: "m", - name: "Petar" - }, { - gender: "f", - name: "Marissa" - } - ]; - _ts(1); - _ln(20); - _to("\n"); - _ln(21); - _to("\n"); - _ln(22); - _to("You have "); - _to("" + (escape(((function() { - var _j, _len1, _results; - _results = []; - for (_j = 0, _len1 = friends.length; _j < _len1; _j++) { - f = friends[_j]; - if (f.gender === "f") _results.push(f); - } - return _results; - })()).length))); - _to(" female friends."); - _ts(2); - __toffee.res = __toffee.out.join(""); - return __toffee.res; - return } /* closing JS 'with' */ ; - }; - - if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { - return tmpl.pub(__toffee_run_input); - } - -}).call(this); - -(function() { - var tmpl; - - tmpl = toffee.templates["/eco_compare/output.toffee"] = { - bundlePath: "/eco_compare/output.toffee" - }; - - tmpl.pub = function(__locals) { - var _ln, _to, _ts; - _to = function(x) { - return __locals.__toffee.out.push(x); - }; - _ln = function(x) { - return __locals.__toffee.lineno = x; - }; - _ts = function(x) { - return __locals.__toffee.state = x; - }; - toffee.__augmentLocals(__locals); - with (__locals) {; - - __toffee.out = []; - _ts(1); - _ts(1); - _ln(1); - _to("\n"); - _ln(2); - _to(" okcupid\n"); - _ln(3); - _to("

    A site for singles

    \n"); - _ln(4); - _to(" \n"); - _ln(5); - _to(" tallygram\n"); - _ln(6); - _to("

    A site for anyone

    \n"); - _ln(7); - _to(" \n"); - _ln(8); - _to("\n"); - _ln(9); - _to("You have 3 female friends."); - _ts(2); - __toffee.res = __toffee.out.join(""); - return __toffee.res; - return } /* closing JS 'with' */ ; - }; - - if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { - return tmpl.pub(__toffee_run_input); - } - -}).call(this); - -(function() { - var tmpl; - - tmpl = toffee.templates["/escape/input.toffee"] = { - bundlePath: "/escape/input.toffee" - }; - - tmpl.pub = function(__locals) { - var w, x, y, z, _ln, _to, _ts; - _to = function(x) { - return __locals.__toffee.out.push(x); - }; - _ln = function(x) { - return __locals.__toffee.lineno = x; - }; - _ts = function(x) { - return __locals.__toffee.state = x; - }; - toffee.__augmentLocals(__locals); - with (__locals) {; - - __toffee.out = []; - _ts(1); - _ts(2); - x = '"Hello world"'; - y = '
    '; - z = 'click&clack'; - w = [ - 1, 2, { - "place": "The Dreadfort" - } - ]; - _ts(1); - _ln(6); - _to("

    \n"); - _ln(7); - _to(" default x = "); - _to("" + (x != null ? escape(x) : '')); - _to("\n"); - _ln(8); - _to(" default y = "); - _to("" + (y != null ? escape(y) : '')); - _to("\n"); - _ln(9); - _to(" default z = "); - _to("" + (z != null ? escape(z) : '')); - _to("\n"); - _ln(10); - _to(" default w = "); - _to("" + (w != null ? escape(w) : '')); - _to("\n"); - _ln(11); - _to(" default r = "); - _to("" + (typeof r !== "undefined" && r !== null ? escape(r) : '')); - _to("\n"); - _ln(12); - _to(" default w.foo = "); - _to("" + (escape(w.foo))); - _to("\n"); - _ln(13); - _to("

    \n"); - _ln(14); - _to("

    \n"); - _ln(15); - _to(" raw x = "); - _to("" + (raw(x))); - _to("\n"); - _ln(16); - _to(" raw y = "); - _to("" + (raw(y))); - _to("\n"); - _ln(17); - _to(" raw z = "); - _to("" + (raw(z))); - _to("\n"); - _ln(18); - _to(" raw w = "); - _to("" + (raw(w))); - _to("\n"); - _ln(19); - _to("

    \n"); - _ln(20); - _to("\n"); - _ln(26); - _to("

    \n"); - _ln(27); - _ts(2); - _ts(2); - print(" raw printed x = " + x + "\n"); - print(" raw printed y = " + y + "\n"); - print(" raw printed z = " + z + "\n"); - print(" raw printed w = " + w); - _ts(1); - _ln(32); - _to("\n"); - _ln(33); - _to("

    \n"); - _ln(34); - _to("

    \n"); - _ln(35); - _ts(2); - _ts(2); - print(" json printed x = " + (raw(raw(raw(raw(json(x)))))) + "\n"); - print(" json printed y = " + (raw(raw(raw(raw(json(y)))))) + "\n"); - print(" json printed z = " + (raw(raw(raw(raw(json(z)))))) + "\n"); - print(" json printed w = " + (raw(raw(raw(raw(json(w))))))); - _ts(1); - _ln(40); - _to("\n"); - _ln(41); - _to("

    \n"); - _ln(42); - _to("

    \n"); - _ln(43); - _ts(2); - _ts(2); - print(" html printed longhand x = " + (__toffee.html(x)) + "\n"); - print(" html printed longhand y = " + (__toffee.html(y)) + "\n"); - print(" html printed longhand z = " + (__toffee.html(z)) + "\n"); - print(" html printed longhand w = " + (__toffee.html(w))); - _ts(1); - _ln(48); - _to("\n"); - _ln(49); - _to("

    "); - _ts(2); - __toffee.res = __toffee.out.join(""); - return __toffee.res; - return } /* closing JS 'with' */ ; - }; - - if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { - return tmpl.pub(__toffee_run_input); - } - -}).call(this); - -(function() { - var tmpl; - - tmpl = toffee.templates["/escape/output.toffee"] = { - bundlePath: "/escape/output.toffee" - }; - - tmpl.pub = function(__locals) { - var _ln, _to, _ts; - _to = function(x) { - return __locals.__toffee.out.push(x); - }; - _ln = function(x) { - return __locals.__toffee.lineno = x; - }; - _ts = function(x) { - return __locals.__toffee.state = x; - }; - toffee.__augmentLocals(__locals); - with (__locals) {; - - __toffee.out = []; - _ts(1); - _ts(1); - _ln(1); - _to("

    \n"); - _ln(2); - _to(" default x = "Hello world"\n"); - _ln(3); - _to(" default y = <hr />\n"); - _ln(4); - _to(" default z = click&clack\n"); - _ln(5); - _to(" default w = [1,2,{\"place\":\"The Dreadfort\"}]\n"); - _ln(6); - _to(" default r = \n"); - _ln(7); - _to(" default w.foo = \n"); - _ln(8); - _to("

    \n"); - _ln(9); - _to("

    \n"); - _ln(10); - _to(" raw x = \"Hello world\"\n"); - _ln(11); - _to(" raw y =


    \n"); - _ln(12); - _to(" raw z = click&clack\n"); - _ln(13); - _to(" raw w = 1,2,[object Object]\n"); - _ln(14); - _to("

    \n"); - _ln(15); - _to("\n"); - _ln(21); - _to("

    \n"); - _ln(22); - _to(" raw printed x = \"Hello world\"\n"); - _ln(23); - _to(" raw printed y =


    \n"); - _ln(24); - _to(" raw printed z = click&clack\n"); - _ln(25); - _to(" raw printed w = 1,2,[object Object]\n"); - _ln(26); - _to("

    \n"); - _ln(27); - _to("

    \n"); - _ln(28); - _to(" json printed x = \"\\\"Hello world\\\"\"\n"); - _ln(29); - _to(" json printed y = \"\\u003Chr /\\u003E\"\n"); - _ln(30); - _to(" json printed z = \"click\\u0026clack\"\n"); - _ln(31); - _to(" json printed w = [1,2,{\"place\":\"The Dreadfort\"}]\n"); - _ln(32); - _to("

    \n"); - _ln(33); - _to("

    \n"); - _ln(34); - _to(" html printed longhand x = "Hello world"\n"); - _ln(35); - _to(" html printed longhand y = <hr />\n"); - _ln(36); - _to(" html printed longhand z = click&clack\n"); - _ln(37); - _to(" html printed longhand w = 1,2,[object Object]\n"); - _ln(38); - _to("

    "); - _ts(2); - __toffee.res = __toffee.out.join(""); - return __toffee.res; - return } /* closing JS 'with' */ ; - }; - - if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { - return tmpl.pub(__toffee_run_input); - } - -}).call(this); - -(function() { - var tmpl; - - tmpl = toffee.templates["/hello_world/input.toffee"] = { - bundlePath: "/hello_world/input.toffee" - }; - - tmpl.pub = function(__locals) { - var _ln, _to, _ts; - _to = function(x) { - return __locals.__toffee.out.push(x); - }; - _ln = function(x) { - return __locals.__toffee.lineno = x; - }; - _ts = function(x) { - return __locals.__toffee.state = x; - }; - toffee.__augmentLocals(__locals); - with (__locals) {; - - __toffee.out = []; - _ts(1); - _ts(1); - _ln(1); - _to("" + (typeof greeting !== "undefined" && greeting !== null ? escape(greeting) : '')); - _to(", world."); - _ts(2); - __toffee.res = __toffee.out.join(""); - return __toffee.res; - return } /* closing JS 'with' */ ; - }; - - if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { - return tmpl.pub(__toffee_run_input); - } - -}).call(this); - -(function() { - var tmpl; - - tmpl = toffee.templates["/hello_world/output.toffee"] = { - bundlePath: "/hello_world/output.toffee" - }; - - tmpl.pub = function(__locals) { - var _ln, _to, _ts; - _to = function(x) { - return __locals.__toffee.out.push(x); - }; - _ln = function(x) { - return __locals.__toffee.lineno = x; - }; - _ts = function(x) { - return __locals.__toffee.state = x; - }; - toffee.__augmentLocals(__locals); - with (__locals) {; - - __toffee.out = []; - _ts(1); - _ts(1); - _ln(1); - _to("Hello, world."); - _ts(2); - __toffee.res = __toffee.out.join(""); - return __toffee.res; - return } /* closing JS 'with' */ ; - }; - - if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { - return tmpl.pub(__toffee_run_input); - } - -}).call(this); - -(function() { - var tmpl; - - tmpl = toffee.templates["/hello_world/temp.toffee"] = { - bundlePath: "/hello_world/temp.toffee" - }; - - tmpl.pub = function(__locals) { - var _ln, _to, _ts; - _to = function(x) { - return __locals.__toffee.out.push(x); - }; - _ln = function(x) { - return __locals.__toffee.lineno = x; - }; - _ts = function(x) { - return __locals.__toffee.state = x; - }; - toffee.__augmentLocals(__locals); - with (__locals) {; - - __toffee.out = []; - _ts(1); - _ts(1); - _ln(1); - _to("a\n"); - _ln(2); - _to("b\n"); - _ln(3); - _to("c\n"); - _ln(4); - _to("" + (escape(passed_fn(100)))); - _to("\n"); - _ln(5); - _to("d\n"); - _ln(6); - _to("e\n"); - _ln(7); - _to("f"); - _ts(2); - __toffee.res = __toffee.out.join(""); - return __toffee.res; - return } /* closing JS 'with' */ ; - }; - - if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { - return tmpl.pub(__toffee_run_input); - } - -}).call(this); - -(function() { - var tmpl; - - tmpl = toffee.templates["/include_order/child.toffee"] = { - bundlePath: "/include_order/child.toffee" - }; - - tmpl.pub = function(__locals) { - var _ln, _to, _ts; - _to = function(x) { - return __locals.__toffee.out.push(x); - }; - _ln = function(x) { - return __locals.__toffee.lineno = x; - }; - _ts = function(x) { - return __locals.__toffee.state = x; - }; - toffee.__augmentLocals(__locals); - with (__locals) {; - - __toffee.out = []; - _ts(1); - _ts(1); - _ln(1); - _to("a\n"); - _ln(2); - _ts(2); - _ts(2); - say_hi(); - _ts(1); - _ln(4); - _to("\n"); - _ln(5); - _to("b"); - _ts(2); - __toffee.res = __toffee.out.join(""); - return __toffee.res; - return } /* closing JS 'with' */ ; - }; - - if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { - return tmpl.pub(__toffee_run_input); - } - -}).call(this); - -(function() { - var tmpl; - - tmpl = toffee.templates["/include_order/input.toffee"] = { - bundlePath: "/include_order/input.toffee" - }; - - tmpl.pub = function(__locals) { - var say_hi, _ln, _to, _ts; - _to = function(x) { - return __locals.__toffee.out.push(x); - }; - _ln = function(x) { - return __locals.__toffee.lineno = x; - }; - _ts = function(x) { - return __locals.__toffee.state = x; - }; - toffee.__augmentLocals(__locals); - with (__locals) {; - - __toffee.out = []; - _ts(1); - _ts(2); - say_hi = function() { - _ts(1); - _ts(1); - _ln(3); - _to("hi"); - return _ts(2); - }; - _ts(1); - _ln(4); - _to("1\n"); - _ln(5); - _to("2\n"); - _ln(6); - _to("" + (partial("child.toffee", { - say_hi: say_hi - }))); - _to("\n"); - _ln(7); - _to("3\n"); - _ln(8); - _to("4"); - _ts(2); - __toffee.res = __toffee.out.join(""); - return __toffee.res; - return } /* closing JS 'with' */ ; - }; - - if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { - return tmpl.pub(__toffee_run_input); - } - -}).call(this); - -(function() { - var tmpl; - - tmpl = toffee.templates["/include_order/output.toffee"] = { - bundlePath: "/include_order/output.toffee" - }; - - tmpl.pub = function(__locals) { - var _ln, _to, _ts; - _to = function(x) { - return __locals.__toffee.out.push(x); - }; - _ln = function(x) { - return __locals.__toffee.lineno = x; - }; - _ts = function(x) { - return __locals.__toffee.state = x; - }; - toffee.__augmentLocals(__locals); - with (__locals) {; - - __toffee.out = []; - _ts(1); - _ts(1); - _ln(1); - _to("1\n"); - _ln(2); - _to("2\n"); - _ln(3); - _to("hia\n"); - _ln(4); - _to("\n"); - _ln(5); - _to("b\n"); - _ln(6); - _to("3\n"); - _ln(7); - _to("4"); - _ts(2); - __toffee.res = __toffee.out.join(""); - return __toffee.res; - return } /* closing JS 'with' */ ; - }; - - if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { - return tmpl.pub(__toffee_run_input); - } - -}).call(this); - -(function() { - var tmpl; - - tmpl = toffee.templates["/include_recursion/input.toffee"] = { - bundlePath: "/include_recursion/input.toffee" - }; - - tmpl.pub = function(__locals) { - var _ln, _to, _ts; - _to = function(x) { - return __locals.__toffee.out.push(x); - }; - _ln = function(x) { - return __locals.__toffee.lineno = x; - }; - _ts = function(x) { - return __locals.__toffee.state = x; - }; - toffee.__augmentLocals(__locals); - with (__locals) {; - - __toffee.out = []; - _ts(1); - _ts(2); - if (countdown === 0) { - _ts(1); - _ts(1); - _ln(2); - _to("blastoff!"); - _ts(2); - } else { - print("" + countdown + "..." + (partial('input.toffee', { - countdown: countdown - 1 - }))); - } - __toffee.res = __toffee.out.join(""); - return __toffee.res; - return } /* closing JS 'with' */ ; - }; - - if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { - return tmpl.pub(__toffee_run_input); - } - -}).call(this); - -(function() { - var tmpl; - - tmpl = toffee.templates["/include_recursion/output.toffee"] = { - bundlePath: "/include_recursion/output.toffee" - }; - - tmpl.pub = function(__locals) { - var _ln, _to, _ts; - _to = function(x) { - return __locals.__toffee.out.push(x); - }; - _ln = function(x) { - return __locals.__toffee.lineno = x; - }; - _ts = function(x) { - return __locals.__toffee.state = x; - }; - toffee.__augmentLocals(__locals); - with (__locals) {; - - __toffee.out = []; - _ts(1); - _ts(1); - _ln(1); - _to("10...9...8...7...6...5...4...3...2...1...blastoff!"); - _ts(2); - __toffee.res = __toffee.out.join(""); - return __toffee.res; - return } /* closing JS 'with' */ ; - }; - - if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { - return tmpl.pub(__toffee_run_input); - } - -}).call(this); - -(function() { - var tmpl; - - tmpl = toffee.templates["/include_techniques/input.toffee"] = { - bundlePath: "/include_techniques/input.toffee" - }; - - tmpl.pub = function(__locals) { - var _ln, _to, _ts; - _to = function(x) { - return __locals.__toffee.out.push(x); - }; - _ln = function(x) { - return __locals.__toffee.lineno = x; - }; - _ts = function(x) { - return __locals.__toffee.state = x; - }; - toffee.__augmentLocals(__locals); - with (__locals) {; - - __toffee.out = []; - _ts(1); - _ts(1); - _ln(1); - _to("" + (partial("message.toffee", { - from: "Chris " - }))); - _to("\n"); - _ln(2); - _to("" + (partial("message.toffee", { - from: "Max & Sam" - }))); - _to("\n"); - _ln(3); - _ts(2); - _ts(2); - print(partial("message.toffee", { - from: "Christian" - })); - _ts(1); - _ts(1); - _ln(5); - _to("" + (partial("message.toffee", { - from: "Jennie" - }))); - _ts(2); - print(partial("message.toffee", { - sender: "The enemy" - })); - __toffee.res = __toffee.out.join(""); - return __toffee.res; - return } /* closing JS 'with' */ ; - }; - - if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { - return tmpl.pub(__toffee_run_input); - } - -}).call(this); - -(function() { - var tmpl; - - tmpl = toffee.templates["/include_techniques/message.toffee"] = { - bundlePath: "/include_techniques/message.toffee" - }; - - tmpl.pub = function(__locals) { - var from, _ln, _to, _ts; - _to = function(x) { - return __locals.__toffee.out.push(x); - }; - _ln = function(x) { - return __locals.__toffee.lineno = x; - }; - _ts = function(x) { - return __locals.__toffee.state = x; - }; - toffee.__augmentLocals(__locals); - with (__locals) {; - - __toffee.out = []; - _ts(1); - _ts(2); - from = from || "Unknown"; - _ts(1); - _ln(3); - _to("From: "); - _to("" + (from != null ? escape(from) : '')); - _to(" \n"); - _ln(4); - _to("Msg: Hello, world\n"); - _ln(5); - _ts(2); - __toffee.res = __toffee.out.join(""); - return __toffee.res; - return } /* closing JS 'with' */ ; - }; - - if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { - return tmpl.pub(__toffee_run_input); - } - -}).call(this); - -(function() { - var tmpl; - - tmpl = toffee.templates["/include_techniques/output.toffee"] = { - bundlePath: "/include_techniques/output.toffee" - }; - - tmpl.pub = function(__locals) { - var _ln, _to, _ts; - _to = function(x) { - return __locals.__toffee.out.push(x); - }; - _ln = function(x) { - return __locals.__toffee.lineno = x; - }; - _ts = function(x) { - return __locals.__toffee.state = x; - }; - toffee.__augmentLocals(__locals); - with (__locals) {; - - __toffee.out = []; - _ts(1); - _ts(1); - _ln(1); - _to("From: Chris <ccoyne77@gmail> \n"); - _ln(2); - _to("Msg: Hello, world\n"); - _ln(3); - _to("\n"); - _ln(4); - _to("From: Max & Sam \n"); - _ln(5); - _to("Msg: Hello, world\n"); - _ln(6); - _to("\n"); - _ln(7); - _to("From: Christian \n"); - _ln(8); - _to("Msg: Hello, world\n"); - _ln(9); - _to("From: Jennie \n"); - _ln(10); - _to("Msg: Hello, world\n"); - _ln(11); - _to("From: Unknown \n"); - _ln(12); - _to("Msg: Hello, world\n"); - _ln(13); - _ts(2); - __toffee.res = __toffee.out.join(""); - return __toffee.res; - return } /* closing JS 'with' */ ; - }; - - if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { - return tmpl.pub(__toffee_run_input); - } - -}).call(this); - -(function() { - var tmpl; - - tmpl = toffee.templates["/indent_attack/input.toffee"] = { - bundlePath: "/indent_attack/input.toffee" - }; - - tmpl.pub = function(__locals) { - var i, square, x, _i, _j, _ln, _to, _ts; - _to = function(x) { - return __locals.__toffee.out.push(x); - }; - _ln = function(x) { - return __locals.__toffee.lineno = x; - }; - _ts = function(x) { - return __locals.__toffee.state = x; - }; - toffee.__augmentLocals(__locals); - with (__locals) {; - - __toffee.out = []; - _ts(1); - _ts(1); - _ln(1); - _to("
    \n"); - _ln(2); - _to(" "); - _ts(2); - _ts(2); - if (1 === 1) { - if (2 === 2) { - if (3 === 3) { - _ts(1); - _ts(1); - _ln(5); - _to("Pass1"); - _ts(2); - } - } - } - if (1 === 1) { - if (2 === 3) { - if (3 === 3) { - _ts(1); - _ts(1); - _ln(9); - _to("Fail"); - _ts(2); - } else { - _ts(1); - _ts(1); - _ln(11); - _to("Fail"); - _ts(2); - } - } else { - if (2 === 2) { - if (3 === 3) { - _ts(1); - _ts(1); - _ln(14); - _to("Pass2"); - _ts(2); - } - } - } - } - _ts(1); - _ln(15); - _to("\n"); - _ln(16); - _to("
    \n"); - _ln(17); - _to("\n"); - _ln(18); - _ts(2); - _ts(2); - if (1 === 1) { - if (2 === 2) { - if (3 === 3) { - _ts(1); - _ts(1); - _ln(21); - _to("Pass3"); - _ts(2); - } - } - } - if (1 === 1) { - if (2 === 3) { - if (3 === 3) { - _ts(1); - _ts(1); - _ln(25); - _to("Fail"); - _ts(2); - } else { - _ts(1); - _ts(1); - _ln(27); - _to("Fail"); - _ts(2); - } - } else { - if (2 === 2) { - if (3 === 3) { - _ts(1); - _ts(1); - _ln(30); - _to("Pass4"); - _ts(2); - } - } - } - } - _ts(1); - _ln(31); - _to("\n"); - _ln(32); - _to("
    \n"); - _ln(33); - _to("\n"); - _ln(34); - _ts(2); - _ts(2); - if (10 === 10) { - if (20 === 20) { - if (30 === 30) { - _ts(1); - _ts(1); - _ln(37); - _to("Pass5"); - _ts(2); - } - } - } - if (10 === 10) { - if (20 === 30) { - if (30 === 30) { - _ts(1); - _ts(1); - _ln(41); - _to("Fail"); - _ts(2); - } else { - _ts(1); - _ts(1); - _ln(43); - _to("Fail"); - _ts(2); - } - } else { - if (20 === 20) { - if (30 === 30) { - _ts(1); - _ts(1); - _ln(46); - _to("Pass6"); - _ts(2); - } - } - } - } - _ts(1); - _ln(47); - _to("\n"); - _ln(48); - _to("\n"); - _ln(49); - _ts(2); - _ts(2); - if (99 === 99) { - print('Pass7'); - } else { - print('Fail'); - _ts(1); - _ts(1); - _ln(54); - _to("Fail8"); - _ts(2); - } - _ts(1); - _ts(1); - _ln(55); - _to("Pass8"); - _ts(2); - _ts(1); - _ln(56); - _to("\n"); - _ln(57); - _to("\n"); - _ln(58); - _ts(2); - _ts(2); - _ts(1); - _ts(1); - _ln(60); - _to("...passed with flying colors."); - _ts(2); - _ts(1); - _ln(82); - _to("\n"); - _ln(83); - _to("

    \n"); - _ln(84); - _to(" "); - _ts(2); - _ts(2); - x = 20; - if (x > 1) { - for (i = _i = 12; 12 <= x ? _i < x : _i > x; i = 12 <= x ? ++_i : --_i) { - square = 16; - _ts(1); - _ts(1); - _ln(89); - _to("Pass"); - _to("" + (i != null ? escape(i) : '')); - _ts(2); - _ts(2); - if (i === square) { - _ts(1); - _ts(1); - _ln(90); - _to("(a perfect square)"); - _ts(2); - } - } - } - _ts(1); - _ln(92); - _to("\n"); - _ln(93); - _to(" "); - _ts(2); - _ts(2); - x = 20; - if (x > 1) { - for (i = _j = 12; 12 <= x ? _j < x : _j > x; i = 12 <= x ? ++_j : --_j) { - square = 16; - } - _ts(1); - _ts(1); - _ln(98); - _to("Pass"); - _to("" + (i != null ? escape(i) : '')); - _ts(2); - _ts(2); - if (i === square) { - _ts(1); - _ts(1); - _ln(99); - _to("(a perfect square)"); - _ts(2); - } - } - _ts(1); - _ln(101); - _to("\n"); - _ln(102); - _to("

    "); - _ts(2); - __toffee.res = __toffee.out.join(""); - return __toffee.res; - return } /* closing JS 'with' */ ; - }; - - if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { - return tmpl.pub(__toffee_run_input); - } - -}).call(this); - -(function() { - var tmpl; - - tmpl = toffee.templates["/indent_attack/output.toffee"] = { - bundlePath: "/indent_attack/output.toffee" - }; - - tmpl.pub = function(__locals) { - var _ln, _to, _ts; - _to = function(x) { - return __locals.__toffee.out.push(x); - }; - _ln = function(x) { - return __locals.__toffee.lineno = x; - }; - _ts = function(x) { - return __locals.__toffee.state = x; - }; - toffee.__augmentLocals(__locals); - with (__locals) {; - - __toffee.out = []; - _ts(1); - _ts(1); - _ln(1); - _to("
    \n"); - _ln(2); - _to(" Pass1Pass2\n"); - _ln(3); - _to("
    \n"); - _ln(4); - _to("\n"); - _ln(5); - _to("Pass3Pass4\n"); - _ln(6); - _to("
    \n"); - _ln(7); - _to("\n"); - _ln(8); - _to("Pass5Pass6\n"); - _ln(9); - _to("\n"); - _ln(10); - _to("Pass7Pass8\n"); - _ln(11); - _to("\n"); - _ln(12); - _to("...passed with flying colors.\n"); - _ln(13); - _to("

    \n"); - _ln(14); - _to(" Pass12Pass13Pass14Pass15Pass16(a perfect square)Pass17Pass18Pass19\n"); - _ln(15); - _to(" Pass20\n"); - _ln(16); - _to("

    "); - _ts(2); - __toffee.res = __toffee.out.join(""); - return __toffee.res; - return } /* closing JS 'with' */ ; - }; - - if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { - return tmpl.pub(__toffee_run_input); - } - -}).call(this); - -(function() { - var tmpl; - - tmpl = toffee.templates["/junk/input.toffee"] = { - bundlePath: "/junk/input.toffee" - }; - - tmpl.pub = function(__locals) { - var supplies, supply, _i, _len, _ln, _to, _ts; - _to = function(x) { - return __locals.__toffee.out.push(x); - }; - _ln = function(x) { - return __locals.__toffee.lineno = x; - }; - _ts = function(x) { - return __locals.__toffee.state = x; - }; - toffee.__augmentLocals(__locals); - with (__locals) {; - - __toffee.out = []; - _ts(1); - _ts(2); - supplies = ["broom", "mop", "vacuum"]; - _ts(1); - _ln(3); - _to("
      \n"); - _ln(4); - _to(" "); - _ts(2); - _ts(2); - for (_i = 0, _len = supplies.length; _i < _len; _i++) { - supply = supplies[_i]; - _ts(1); - _ts(1); - _to("
    • "); - _to("" + (supply != null ? escape(supply) : '')); - _to("
    • "); - _ts(2); - } - _ts(1); - _to("\n"); - _ln(5); - _to("
    "); - _ts(2); - __toffee.res = __toffee.out.join(""); - return __toffee.res; - return } /* closing JS 'with' */ ; - }; - - if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { - return tmpl.pub(__toffee_run_input); - } - -}).call(this); - -(function() { - var tmpl; - - tmpl = toffee.templates["/junk/output.toffee"] = { - bundlePath: "/junk/output.toffee" - }; - - tmpl.pub = function(__locals) { - var _ln, _to, _ts; - _to = function(x) { - return __locals.__toffee.out.push(x); - }; - _ln = function(x) { - return __locals.__toffee.lineno = x; - }; - _ts = function(x) { - return __locals.__toffee.state = x; - }; - toffee.__augmentLocals(__locals); - with (__locals) {; - - __toffee.out = []; - _ts(1); - _ts(1); - _ln(1); - _to("
      \n"); - _ln(2); - _to("
    • broom
    • mop
    • vacuum
    • \n"); - _ln(3); - _to("
    "); - _ts(2); - __toffee.res = __toffee.out.join(""); - return __toffee.res; - return } /* closing JS 'with' */ ; - }; - - if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { - return tmpl.pub(__toffee_run_input); - } - -}).call(this); - -(function() { - var tmpl; - - tmpl = toffee.templates["/lambda_fns/input.toffee"] = { - bundlePath: "/lambda_fns/input.toffee" - }; - - tmpl.pub = function(__locals) { - var echo_it, print_it, print_it_twice, _ln, _to, _ts; - _to = function(x) { - return __locals.__toffee.out.push(x); - }; - _ln = function(x) { - return __locals.__toffee.lineno = x; - }; - _ts = function(x) { - return __locals.__toffee.state = x; - }; - toffee.__augmentLocals(__locals); - with (__locals) {; - - __toffee.out = []; - _ts(1); - _ts(2); - print_it = function(msg) { - _ts(1); - _ts(1); - _ln(2); - _to("" + (msg != null ? escape(msg) : '')); - return _ts(2); - }; - print_it_twice = function(msg) { - var m; - _ts(1); - _ts(1); - _ln(5); - _to("" + (msg != null ? escape(msg) : '')); - _ts(2); - m = msg; - _ts(1); - _ts(1); - _ln(7); - _to("" + (m != null ? escape(m) : '')); - return _ts(2); - }; - echo_it = function(msg) { - var v; - v = msg; - return v; - }; - print_it("Pass"); - print_it_twice("Pass"); - print(echo_it("Pass")); - __toffee.res = __toffee.out.join(""); - return __toffee.res; - return } /* closing JS 'with' */ ; - }; - - if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { - return tmpl.pub(__toffee_run_input); - } - -}).call(this); - -(function() { - var tmpl; - - tmpl = toffee.templates["/lambda_fns/output.toffee"] = { - bundlePath: "/lambda_fns/output.toffee" - }; - - tmpl.pub = function(__locals) { - var _ln, _to, _ts; - _to = function(x) { - return __locals.__toffee.out.push(x); - }; - _ln = function(x) { - return __locals.__toffee.lineno = x; - }; - _ts = function(x) { - return __locals.__toffee.state = x; - }; - toffee.__augmentLocals(__locals); - with (__locals) {; - - __toffee.out = []; - _ts(1); - _ts(1); - _ln(1); - _to("PassPassPassPass"); - _ts(2); - __toffee.res = __toffee.out.join(""); - return __toffee.res; - return } /* closing JS 'with' */ ; - }; - - if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { - return tmpl.pub(__toffee_run_input); - } - -}).call(this); - -(function() { - var tmpl; - - tmpl = toffee.templates["/multiline_interpolation/foo.toffee"] = { - bundlePath: "/multiline_interpolation/foo.toffee" - }; - - tmpl.pub = function(__locals) { - var _ln, _to, _ts; - _to = function(x) { - return __locals.__toffee.out.push(x); - }; - _ln = function(x) { - return __locals.__toffee.lineno = x; - }; - _ts = function(x) { - return __locals.__toffee.state = x; - }; - toffee.__augmentLocals(__locals); - with (__locals) {; - - __toffee.out = []; - _ts(1); - _ts(1); - _ln(1); - _to("" + (typeof a !== "undefined" && a !== null ? escape(a) : '')); - _to(" "); - _to("" + (typeof b !== "undefined" && b !== null ? escape(b) : '')); - _ts(2); - __toffee.res = __toffee.out.join(""); - return __toffee.res; - return } /* closing JS 'with' */ ; - }; - - if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { - return tmpl.pub(__toffee_run_input); - } - -}).call(this); - -(function() { - var tmpl; - - tmpl = toffee.templates["/multiline_interpolation/input.toffee"] = { - bundlePath: "/multiline_interpolation/input.toffee" - }; - - tmpl.pub = function(__locals) { - var _ln, _to, _ts; - _to = function(x) { - return __locals.__toffee.out.push(x); - }; - _ln = function(x) { - return __locals.__toffee.lineno = x; - }; - _ts = function(x) { - return __locals.__toffee.state = x; - }; - toffee.__augmentLocals(__locals); - with (__locals) {; - - __toffee.out = []; - _ts(1); - _ts(1); - _ln(1); - _to("" + (escape("Hello, " + "world"))); - _ln(4); - _to("\n"); - _ln(5); - _to("
    \n"); - _ln(6); - _to("" + (partial("foo.toffee", { - a: "Goodbye" + ',', - b: "world" - }))); - _ln(10); - _ts(2); - __toffee.res = __toffee.out.join(""); - return __toffee.res; - return } /* closing JS 'with' */ ; - }; - - if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { - return tmpl.pub(__toffee_run_input); - } - -}).call(this); - -(function() { - var tmpl; - - tmpl = toffee.templates["/multiline_interpolation/output.toffee"] = { - bundlePath: "/multiline_interpolation/output.toffee" - }; - - tmpl.pub = function(__locals) { - var _ln, _to, _ts; - _to = function(x) { - return __locals.__toffee.out.push(x); - }; - _ln = function(x) { - return __locals.__toffee.lineno = x; - }; - _ts = function(x) { - return __locals.__toffee.state = x; - }; - toffee.__augmentLocals(__locals); - with (__locals) {; - - __toffee.out = []; - _ts(1); - _ts(1); - _ln(1); - _to("Hello, world\n"); - _ln(2); - _to("
    \n"); - _ln(3); - _to("Goodbye, world"); - _ts(2); - __toffee.res = __toffee.out.join(""); - return __toffee.res; - return } /* closing JS 'with' */ ; - }; - - if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { - return tmpl.pub(__toffee_run_input); - } - -}).call(this); - -(function() { - var tmpl; - - tmpl = toffee.templates["/plaintext/input.toffee"] = { - bundlePath: "/plaintext/input.toffee" - }; - - tmpl.pub = function(__locals) { - var _ln, _to, _ts; - _to = function(x) { - return __locals.__toffee.out.push(x); - }; - _ln = function(x) { - return __locals.__toffee.lineno = x; - }; - _ts = function(x) { - return __locals.__toffee.state = x; - }; - toffee.__augmentLocals(__locals); - with (__locals) {; - - __toffee.out = []; - _ts(1); - _ts(1); - _ln(1); - _to("Hi there."); - _ts(2); - __toffee.res = __toffee.out.join(""); - return __toffee.res; - return } /* closing JS 'with' */ ; - }; - - if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { - return tmpl.pub(__toffee_run_input); - } - -}).call(this); - -(function() { - var tmpl; - - tmpl = toffee.templates["/plaintext/output.toffee"] = { - bundlePath: "/plaintext/output.toffee" - }; - - tmpl.pub = function(__locals) { - var _ln, _to, _ts; - _to = function(x) { - return __locals.__toffee.out.push(x); - }; - _ln = function(x) { - return __locals.__toffee.lineno = x; - }; - _ts = function(x) { - return __locals.__toffee.state = x; - }; - toffee.__augmentLocals(__locals); - with (__locals) {; - - __toffee.out = []; - _ts(1); - _ts(1); - _ln(1); - _to("Hi there."); - _ts(2); - __toffee.res = __toffee.out.join(""); - return __toffee.res; - return } /* closing JS 'with' */ ; - }; - - if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { - return tmpl.pub(__toffee_run_input); - } - -}).call(this); - -(function() { - var tmpl; - - tmpl = toffee.templates["/snippets/foo/bar/body.toffee"] = { - bundlePath: "/snippets/foo/bar/body.toffee" - }; - - tmpl.pub = function(__locals) { - var msg, _ln, _to, _ts; - _to = function(x) { - return __locals.__toffee.out.push(x); - }; - _ln = function(x) { - return __locals.__toffee.lineno = x; - }; - _ts = function(x) { - return __locals.__toffee.state = x; - }; - toffee.__augmentLocals(__locals); - with (__locals) {; - - __toffee.out = []; - _ts(1); - _ts(2); - msg = msg || "Unknown message"; - print(msg); - __toffee.res = __toffee.out.join(""); - return __toffee.res; - return } /* closing JS 'with' */ ; - }; - - if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { - return tmpl.pub(__toffee_run_input); - } - -}).call(this); - -(function() { - var tmpl; - - tmpl = toffee.templates["/snippets/foo/message.toffee"] = { - bundlePath: "/snippets/foo/message.toffee" - }; - - tmpl.pub = function(__locals) { - var from, msg, _ln, _to, _ts; - _to = function(x) { - return __locals.__toffee.out.push(x); - }; - _ln = function(x) { - return __locals.__toffee.lineno = x; - }; - _ts = function(x) { - return __locals.__toffee.state = x; - }; - toffee.__augmentLocals(__locals); - with (__locals) {; - - __toffee.out = []; - _ts(1); - _ts(2); - from = from || "Unknown sender"; - msg = msg || "Unknown message."; - print("From: " + from + "\n" + (snippet('./bar/body.toffee', { - msg: msg - }))); - __toffee.res = __toffee.out.join(""); - return __toffee.res; - return } /* closing JS 'with' */ ; - }; - - if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { - return tmpl.pub(__toffee_run_input); - } - -}).call(this); - -(function() { - var tmpl; - - tmpl = toffee.templates["/snippets/input.toffee"] = { - bundlePath: "/snippets/input.toffee" - }; - - tmpl.pub = function(__locals) { - var _ln, _to, _ts; - _to = function(x) { - return __locals.__toffee.out.push(x); - }; - _ln = function(x) { - return __locals.__toffee.lineno = x; - }; - _ts = function(x) { - return __locals.__toffee.state = x; - }; - toffee.__augmentLocals(__locals); - with (__locals) {; - - __toffee.out = []; - _ts(1); - _ts(1); - _ln(1); - _to("" + (partial("./foo/message.toffee"))); - _to("\n"); - _ln(2); - _to("" + (escape(snippet("./foo/message.toffee")))); - _to("\n"); - _ln(3); - _to("" + (partial("./foo/message.toffee", { - from: "Sam" - }))); - _to("\n"); - _ln(4); - _to("" + (escape(snippet("./foo/message.toffee", { - from: "Max" - })))); - _ts(2); - __toffee.res = __toffee.out.join(""); - return __toffee.res; - return } /* closing JS 'with' */ ; - }; - - if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { - return tmpl.pub(__toffee_run_input); - } - -}).call(this); - -(function() { - var tmpl; - - tmpl = toffee.templates["/snippets/output.toffee"] = { - bundlePath: "/snippets/output.toffee" - }; - - tmpl.pub = function(__locals) { - var _ln, _to, _ts; - _to = function(x) { - return __locals.__toffee.out.push(x); - }; - _ln = function(x) { - return __locals.__toffee.lineno = x; - }; - _ts = function(x) { - return __locals.__toffee.state = x; - }; - toffee.__augmentLocals(__locals); - with (__locals) {; - - __toffee.out = []; - _ts(1); - _ts(1); - _ln(1); - _to("From: Preloaded sender\n"); - _ln(2); - _to("Preloaded message.\n"); - _ln(3); - _to("From: Unknown sender\n"); - _ln(4); - _to("Unknown message.\n"); - _ln(5); - _to("From: Sam\n"); - _ln(6); - _to("Preloaded message.\n"); - _ln(7); - _to("From: Max\n"); - _ln(8); - _to("Unknown message."); - _ts(2); - __toffee.res = __toffee.out.join(""); - return __toffee.res; - return } /* closing JS 'with' */ ; - }; - - if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { - return tmpl.pub(__toffee_run_input); - } - -}).call(this); - -(function() { - var tmpl; - - tmpl = toffee.templates["/special_cases/input.toffee"] = { - bundlePath: "/special_cases/input.toffee" - }; - - tmpl.pub = function(__locals) { - var _ln, _to, _ts; - _to = function(x) { - return __locals.__toffee.out.push(x); - }; - _ln = function(x) { - return __locals.__toffee.lineno = x; - }; - _ts = function(x) { - return __locals.__toffee.state = x; - }; - toffee.__augmentLocals(__locals); - with (__locals) {; - - __toffee.out = []; - _ts(1); - _ts(1); - _ln(5); - _to("\n"); - _ln(6); - _ts(2); - _ts(2); - _ts(1); - _ts(1); - _ln(7); - _to('"' + "PASSED" + '"'); - _ts(2); - _ts(1); - _ln(8); - _to("\n"); - _ln(9); - _ts(2); - _ts(1); - _ln(13); - _to("\n"); - _ln(14); - _to("

    \n"); - _ln(15); - _to(" "); - _to("" + (print("" + 'click & clack' + ""))); - _to("\n"); - _ln(16); - _to("

    \n"); - _ln(17); - _ts(2); - _ts(1); - _ln(21); - _to("\n"); - _ln(22); - _to("A backslash is a \\\n"); - _ln(23); - _to(""); - _ts(2); - __toffee.res = __toffee.out.join(""); - return __toffee.res; - return } /* closing JS 'with' */ ; - }; - - if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { - return tmpl.pub(__toffee_run_input); - } - -}).call(this); - -(function() { - var tmpl; - - tmpl = toffee.templates["/special_cases/output.toffee"] = { - bundlePath: "/special_cases/output.toffee" - }; - - tmpl.pub = function(__locals) { - var _ln, _to, _ts; - _to = function(x) { - return __locals.__toffee.out.push(x); - }; - _ln = function(x) { - return __locals.__toffee.lineno = x; - }; - _ts = function(x) { - return __locals.__toffee.state = x; - }; - toffee.__augmentLocals(__locals); - with (__locals) {; - - __toffee.out = []; - _ts(1); - _ts(1); - _ln(1); - _to("\n"); - _ln(2); - _to('"' + "PASSED\"\n"); - _ln(3); - _to("\n"); - _ln(4); - _to("

    \n"); - _ln(5); - _to(" click & clack\n"); - _ln(6); - _to("

    \n"); - _ln(7); - _to("\n"); - _ln(8); - _to("A backslash is a \\\n"); - _ln(9); - _to(""); - _ts(2); - __toffee.res = __toffee.out.join(""); - return __toffee.res; - return } /* closing JS 'with' */ ; - }; - - if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { - return tmpl.pub(__toffee_run_input); - } - -}).call(this); +var toffee;if(!(typeof toffee!=="undefined"&&toffee!==null))toffee={};if(!toffee.templates)toffee.templates={};toffee.states={TOFFEE:1,COFFEE:2};toffee.__json=function(locals,o){if(!(o!=null)){return"null"}else{return""+JSON.stringify(o).replace(//g,"\\u003E").replace(/&/g,"\\u0026")}};toffee.__raw=function(locals,o){return o};toffee.__html=function(locals,o){return(""+o).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")};toffee.__escape=function(locals,o){if(!(locals.__toffee.autoEscape!=null)||locals.__toffee.autoEscape){if(o===void 0)return"";if(o!=null&&typeof o==="object")return locals.json(o);return locals.html(o)}return o};toffee.__augmentLocals=function(locals,bundle_path){var _l,_t;_l=locals;_t=_l.__toffee={out:[]};if(!(_l.print!=null)){_l.print=function(o){return toffee.__print(_l,o)}}if(!(_l.json!=null)){_l.json=function(o){return toffee.__json(_l,o)}}if(!(_l.raw!=null)){_l.raw=function(o){return toffee.__raw(_l,o)}}if(!(_l.html!=null)){_l.html=function(o){return toffee.__html(_l,o)}}if(!(_l.escape!=null)){_l.escape=function(o){return toffee.__escape(_l,o)}}if(!(_l.partial!=null)){_l.partial=function(path,vars){return toffee.__partial(toffee.templates[""+bundle_path],_l,path,vars)}}if(!(_l.snippet!=null)){_l.snippet=function(path,vars){return toffee.__snippet(toffee.templates[""+bundle_path],_l,path,vars)}}_t.print=_l.print;_t.json=_l.json;_t.raw=_l.raw;_t.html=_l.html;_t.escape=_l.escape;_t.partial=_l.partial;return _t.snippet=_l.snippet};toffee.__print=function(locals,o){if(locals.__toffee.state===toffee.states.COFFEE){locals.__toffee.out.push(o);return""}else{return""+o}};toffee.__normalize=function(path){var np,part,parts,_i,_len;if(!(path!=null)||path==="/"){return path}else{parts=path.split("/");np=[];if(parts[0])np.push("");for(_i=0,_len=parts.length;_i<_len;_i++){part=parts[_i];if(part===".."){if(np.length>1){np.pop()}else{np.push(part)}}else{if(part!==".")np.push(part)}}path=np.join("/");if(!path)path="/";return path}};toffee.__partial=function(parent_tmpl,parent_locals,path,vars){path=toffee.__normalize(parent_tmpl.bundlePath+"/../"+path);return toffee.__inlineInclude(path,vars,parent_locals)};toffee.__snippet=function(parent_tmpl,parent_locals,path,vars){path=toffee.__normalize(parent_tmpl.bundlePath+"/../"+path);vars=vars!=null?vars:{};vars.__toffee=vars.__toffee||{};vars.__toffee.noInheritance=true;return toffee.__inlineInclude(path,vars,parent_locals)};toffee.__inlineInclude=function(path,locals,parent_locals){var k,options,v;options=locals||{};options.__toffee=options.__toffee||{};if(!options.__toffee.noInheritance){for(k in parent_locals){v=parent_locals[k];if(!((locals!=null?locals[k]:void 0)!=null)){if(!(k==="print"||k==="partial"||k==="snippet"||k==="layout"||k==="__toffee")){options[k]=v}}}}if(!toffee.templates[path]){return"Inline toffee include: Could not find "+path}else{return toffee.templates[path].pub(options)}} +; + +; +(function(){var tmpl;tmpl=toffee.templates["/big_file/input.toffee"]={bundlePath:"/big_file/input.toffee"};tmpl.pub=function(__locals){var count,i,_i,_ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/big_file/input.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(2);count=0;for(i=_i=0;_i<2;i=++_i){_ts(1);_ts(1);_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("...");_ts(2);_ts(2);count+=1;print(" "+count+"...");_ts(1);_to(" ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("...");_ts(2);_ts(2);count+=1;print(" "+count+"...")}__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +; +(function(){var tmpl;tmpl=toffee.templates["/big_file/output.toffee"]={bundlePath:"/big_file/output.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/big_file/output.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("0... 1... 2... 3... 4... 5... 6... 7... 8... 9... 10... 11... 12... 13... 14... 15... 16... 17... 18... 19... 20... 21... 22... 23... 24... 25... 26... 27... 28... 29... 30... 31... 32... 33... 34... 35... 36... 37... 38... 39... 40... 41... 42... 43... 44... 45... 46... 47... 48... 49... 50... 51... 52... 53... 54... 55... 56... 57... 58... 59... 60... 61... 62... 63... 64... 65... 66... 67... 68... 70... 70... 71... 72... 73... 74... 75... 76... 77... 78... 79... 80... 81... 82... 83... 84... 85... 86... 87... 88... 89... 90... 91... 92... 93... 94... 95... 96... 97... 98... 99... 100... 101... 102... 103... 104... 105... 106... 107... 108... 109... 110... 111... 112... 113... 114... 115... 116... 117... 118... 119... 120... 121... 122... 123... 124... 125... 126... 127... 128... 129... 130... 131... 132... 133... 134... 135... 136... 137... 138... 139... 140... 141... 142... 143... 144... 145... 146... 147... 148... 149... 150... 151... 152... 153... 154... 155... 156... 157... 158... 159... 160... 162...162... 163... 164... 165... 166... 167... 168... 169... 170... 171... 172... 173... 174... 175... 176... 177... 178... 179... 180... 181... 182... 183... 184... 185... 186... 187... 188... 189... 190... 191... 192... 193... 194... 195... 196... 197... 198... 199... 200... 201... 202... 203... 204... 205... 206... 207... 208... 209... 210... 211... 212... 213... 214... 215... 216... 217... 218... 219... 220... 221... 222... 223... 224... 225... 226... 227... 228... 229... 230... 232... 232... 233... 234... 235... 236... 237... 238... 239... 240... 241... 242... 243... 244... 245... 246... 247... 248... 249... 250... 251... 252... 253... 254... 255... 256... 257... 258... 259... 260... 261... 262... 263... 264... 265... 266... 267... 268... 269... 270... 271... 272... 273... 274... 275... 276... 277... 278... 279... 280... 281... 282... 283... 284... 285... 286... 287... 288... 289... 290... 291... 292... 293... 294... 295... 296... 297... 298... 299... 300... 301... 302... 303... 304... 305... 306... 307... 308... 309... 310... 311... 312... 313... 314... 315... 316... 317... 318... 319... 320... 321... 322... 324...");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +; +(function(){var tmpl;tmpl=toffee.templates["/comments/input.toffee"]={bundlePath:"/comments/input.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/comments/input.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("\n");_to("Pass 1\n");_ts(2);_ts(1);_to("\n");_to("Pass 2\n");_ts(2);_ts(2);_ts(1);_to("\n");_to("Pass 3");_ts(2);_ts(1);_to("\n");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +; +(function(){var tmpl;tmpl=toffee.templates["/comments/output.toffee"]={bundlePath:"/comments/output.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/comments/output.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("\n");_to("Pass 1\n");_to("\n");_to("Pass 2\n");_to("\n");_to("Pass 3\n");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +; +(function(){var tmpl;tmpl=toffee.templates["/custom_escape/input.toffee"]={bundlePath:"/custom_escape/input.toffee"};tmpl.pub=function(__locals){var w,x,y,z,_ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/custom_escape/input.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(2);x='"Hello world"';y="";z="click&clack";w=[1,2,{place:"The Dreadfort"}];_ts(1);_to("

    \n");_to(" default x = ");_to(""+(x!=null?escape(x):""));_to("\n");_to(" default y = ");_to(""+(y!=null?escape(y):""));_to("\n");_to(" default z = ");_to(""+(z!=null?escape(z):""));_to("\n");_to(" default w = ");_to(""+(w!=null?escape(w):""));_to("\n");_to("

    \n");_to("

    \n");_to(" raw x = ");_to(""+raw(x));_to("\n");_to(" raw y = ");_to(""+raw(y));_to("\n");_to(" raw z = ");_to(""+raw(z));_to("\n");_to(" raw w = ");_to(""+raw(w));_to("\n");_to("

    \n");_to("\n");_to("

    \n");_ts(2);_ts(2);print(" raw printed x = "+x+"\n");print(" raw printed y = "+y+"\n");print(" raw printed z = "+z+"\n");print(" raw printed w = "+w);_ts(1);_to("\n");_to("

    ");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +; +(function(){var tmpl;tmpl=toffee.templates["/custom_escape/output.toffee"]={bundlePath:"/custom_escape/output.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/custom_escape/output.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("

    \n");_to(' default x = ["Hello world"]\n');_to(" default y = []\n");_to(" default z = [click&clack]\n");_to(" default w = [1,2,[object Object]]\n");_to("

    \n");_to("

    \n");_to(' raw x = "Hello world"\n');_to(" raw y = \n");_to(" raw z = click&clack\n");_to(" raw w = 1,2,[object Object]\n");_to("

    \n");_to("\n");_to("

    \n");_to(' raw printed x = "Hello world"\n');_to(" raw printed y = \n");_to(" raw printed z = click&clack\n");_to(" raw printed w = 1,2,[object Object]\n");_to("

    ");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +; +(function(){var tmpl;tmpl=toffee.templates["/eco_compare/input.toffee"]={bundlePath:"/eco_compare/input.toffee"};tmpl.pub=function(__locals){var f,friends,project,_i,_len,_ln,_ref,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/eco_compare/input.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(2);this.projects=[{url:"http://localhost:3000",name:"okcupid",description:"A site for singles"},{url:"http://localhost:3001",name:"tallygram",description:"A site for anyone"}];if(this.projects.length){_ref=this.projects;for(_i=0,_len=_ref.length;_i<_len;_i++){project=_ref[_i];_ts(1);_ts(1);_to("\n");_to(" ");_to(""+escape(project.name));_to("\n");_to("

    ");_to(""+escape(project.description));_to("

    \n");_to(" ");_ts(2)}}else{_ts(1);_ts(1);_to(" No projects ");_ts(2)}friends=[{gender:"f",name:"Jennie"},{gender:"f",name:"Rachel"},{gender:"m",name:"Petar"},{gender:"f",name:"Marissa"}];_ts(1);_to("\n");_to("\n");_to("You have ");_to(""+escape(function(){var _j,_len1,_results;_results=[];for(_j=0,_len1=friends.length;_j<_len1;_j++){f=friends[_j];if(f.gender==="f")_results.push(f)}return _results}().length));_to(" female friends.");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +; +(function(){var tmpl;tmpl=toffee.templates["/eco_compare/output.toffee"]={bundlePath:"/eco_compare/output.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/eco_compare/output.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("\n");_to(' okcupid\n');_to("

    A site for singles

    \n");_to(" \n");_to(' tallygram\n');_to("

    A site for anyone

    \n");_to(" \n");_to("\n");_to("You have 3 female friends.");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +; +(function(){var tmpl;tmpl=toffee.templates["/escape/input.toffee"]={bundlePath:"/escape/input.toffee"};tmpl.pub=function(__locals){var w,x,y,z,_ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/escape/input.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(2);x='"Hello world"';y="
    ";z="click&clack";w=[1,2,{place:"The Dreadfort"}];_ts(1);_to("

    \n");_to(" default x = ");_to(""+(x!=null?escape(x):""));_to("\n");_to(" default y = ");_to(""+(y!=null?escape(y):""));_to("\n");_to(" default z = ");_to(""+(z!=null?escape(z):""));_to("\n");_to(" default w = ");_to(""+(w!=null?escape(w):""));_to("\n");_to(" default r = ");_to(""+(typeof r!=="undefined"&&r!==null?escape(r):""));_to("\n");_to(" default w.foo = ");_to(""+escape(w.foo));_to("\n");_to("

    \n");_to("

    \n");_to(" raw x = ");_to(""+raw(x));_to("\n");_to(" raw y = ");_to(""+raw(y));_to("\n");_to(" raw z = ");_to(""+raw(z));_to("\n");_to(" raw w = ");_to(""+raw(w));_to("\n");_to("

    \n");_to("\n");_to("

    \n");_ts(2);_ts(2);print(" raw printed x = "+x+"\n");print(" raw printed y = "+y+"\n");print(" raw printed z = "+z+"\n");print(" raw printed w = "+w);_ts(1);_to("\n");_to("

    \n");_to("

    \n");_ts(2);_ts(2);print(" json printed x = "+raw(raw(raw(raw(json(x)))))+"\n");print(" json printed y = "+raw(raw(raw(raw(json(y)))))+"\n");print(" json printed z = "+raw(raw(raw(raw(json(z)))))+"\n");print(" json printed w = "+raw(raw(raw(raw(json(w))))));_ts(1);_to("\n");_to("

    \n");_to("

    \n");_ts(2);_ts(2);print(" html printed longhand x = "+__toffee.html(x)+"\n");print(" html printed longhand y = "+__toffee.html(y)+"\n");print(" html printed longhand z = "+__toffee.html(z)+"\n");print(" html printed longhand w = "+__toffee.html(w));_ts(1);_to("\n");_to("

    ");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +; +(function(){var tmpl;tmpl=toffee.templates["/escape/output.toffee"]={bundlePath:"/escape/output.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/escape/output.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("

    \n");_to(" default x = "Hello world"\n");_to(" default y = <hr />\n");_to(" default z = click&clack\n");_to(' default w = [1,2,{"place":"The Dreadfort"}]\n');_to(" default r = \n");_to(" default w.foo = \n");_to("

    \n");_to("

    \n");_to(' raw x = "Hello world"\n');_to(" raw y =


    \n");_to(" raw z = click&clack\n");_to(" raw w = 1,2,[object Object]\n");_to("

    \n");_to("\n");_to("

    \n");_to(' raw printed x = "Hello world"\n');_to(" raw printed y =


    \n");_to(" raw printed z = click&clack\n");_to(" raw printed w = 1,2,[object Object]\n");_to("

    \n");_to("

    \n");_to(' json printed x = "\\"Hello world\\""\n');_to(' json printed y = "\\u003Chr /\\u003E"\n');_to(' json printed z = "click\\u0026clack"\n');_to(' json printed w = [1,2,{"place":"The Dreadfort"}]\n');_to("

    \n");_to("

    \n");_to(" html printed longhand x = "Hello world"\n");_to(" html printed longhand y = <hr />\n");_to(" html printed longhand z = click&clack\n");_to(" html printed longhand w = 1,2,[object Object]\n");_to("

    ");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +; +(function(){var tmpl;tmpl=toffee.templates["/hello_world/input.toffee"]={bundlePath:"/hello_world/input.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/hello_world/input.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to(""+(typeof greeting!=="undefined"&&greeting!==null?escape(greeting):""));_to(", world.");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +; +(function(){var tmpl;tmpl=toffee.templates["/hello_world/output.toffee"]={bundlePath:"/hello_world/output.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/hello_world/output.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("Hello, world.");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +; +(function(){var tmpl;tmpl=toffee.templates["/hello_world/temp.toffee"]={bundlePath:"/hello_world/temp.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/hello_world/temp.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("a\n");_to("b\n");_to("c\n");_to(""+escape(passed_fn(100)));_to("\n");_to("d\n");_to("e\n");_to("f");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +; +(function(){var tmpl;tmpl=toffee.templates["/include_order/child.toffee"]={bundlePath:"/include_order/child.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/include_order/child.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("a\n");_ts(2);_ts(2);say_hi();_ts(1);_to("\n");_to("b");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +; +(function(){var tmpl;tmpl=toffee.templates["/include_order/input.toffee"]={bundlePath:"/include_order/input.toffee"};tmpl.pub=function(__locals){var say_hi,_ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/include_order/input.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(2);say_hi=function(){_ts(1);_ts(1);_to("hi");return _ts(2)};_ts(1);_to("1\n");_to("2\n");_to(""+partial("child.toffee",{say_hi:say_hi}));_to("\n");_to("3\n");_to("4");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +; +(function(){var tmpl;tmpl=toffee.templates["/include_order/output.toffee"]={bundlePath:"/include_order/output.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/include_order/output.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("1\n");_to("2\n");_to("hia\n");_to("\n");_to("b\n");_to("3\n");_to("4");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +; +(function(){var tmpl;tmpl=toffee.templates["/include_recursion/input.toffee"]={bundlePath:"/include_recursion/input.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/include_recursion/input.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(2);if(countdown===0){_ts(1);_ts(1);_to("blastoff!");_ts(2)}else{print(""+countdown+"..."+partial("input.toffee",{countdown:countdown-1}))}__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +; +(function(){var tmpl;tmpl=toffee.templates["/include_recursion/output.toffee"]={bundlePath:"/include_recursion/output.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/include_recursion/output.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("10...9...8...7...6...5...4...3...2...1...blastoff!");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +; +(function(){var tmpl;tmpl=toffee.templates["/include_techniques/input.toffee"]={bundlePath:"/include_techniques/input.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/include_techniques/input.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to(""+partial("message.toffee",{from:"Chris "}));_to("\n");_to(""+partial("message.toffee",{from:"Max & Sam"}));_to("\n");_ts(2);_ts(2);print(partial("message.toffee",{from:"Christian"}));_ts(1);_ts(1);_to(""+partial("message.toffee",{from:"Jennie"}));_ts(2);print(partial("message.toffee",{sender:"The enemy"}));__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +; +(function(){var tmpl;tmpl=toffee.templates["/include_techniques/message.toffee"]={bundlePath:"/include_techniques/message.toffee"};tmpl.pub=function(__locals){var from,_ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/include_techniques/message.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(2);from=from||"Unknown";_ts(1);_to("From: ");_to(""+(from!=null?escape(from):""));_to(" \n");_to("Msg: Hello, world\n");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +; +(function(){var tmpl;tmpl=toffee.templates["/include_techniques/output.toffee"]={bundlePath:"/include_techniques/output.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/include_techniques/output.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("From: Chris <ccoyne77@gmail> \n");_to("Msg: Hello, world\n");_to("\n");_to("From: Max & Sam \n");_to("Msg: Hello, world\n");_to("\n");_to("From: Christian \n");_to("Msg: Hello, world\n");_to("From: Jennie \n");_to("Msg: Hello, world\n");_to("From: Unknown \n");_to("Msg: Hello, world\n");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +; +(function(){var tmpl;tmpl=toffee.templates["/indent_attack/input.toffee"]={bundlePath:"/indent_attack/input.toffee"};tmpl.pub=function(__locals){var i,square,x,_i,_j,_ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/indent_attack/input.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("
    \n");_to(" ");_ts(2);_ts(2);if(1===1){if(2===2){if(3===3){_ts(1);_ts(1);_to("Pass1");_ts(2)}}}if(1===1){if(2===3){if(3===3){_ts(1);_ts(1);_to("Fail");_ts(2)}else{_ts(1);_ts(1);_to("Fail");_ts(2)}}else{if(2===2){if(3===3){_ts(1);_ts(1);_to("Pass2");_ts(2)}}}}_ts(1);_to("\n");_to("
    \n");_to("\n");_ts(2);_ts(2);if(1===1){if(2===2){if(3===3){_ts(1);_ts(1);_to("Pass3");_ts(2)}}}if(1===1){if(2===3){if(3===3){_ts(1);_ts(1);_to("Fail");_ts(2)}else{_ts(1);_ts(1);_to("Fail");_ts(2)}}else{if(2===2){if(3===3){_ts(1);_ts(1);_to("Pass4");_ts(2)}}}}_ts(1);_to("\n");_to("
    \n");_to("\n");_ts(2);_ts(2);if(10===10){if(20===20){if(30===30){_ts(1);_ts(1);_to("Pass5");_ts(2)}}}if(10===10){if(20===30){if(30===30){_ts(1);_ts(1);_to("Fail");_ts(2)}else{_ts(1);_ts(1);_to("Fail");_ts(2)}}else{if(20===20){if(30===30){_ts(1);_ts(1);_to("Pass6");_ts(2)}}}}_ts(1);_to("\n");_to("\n");_ts(2);_ts(2);if(99===99){print("Pass7")}else{print("Fail");_ts(1);_ts(1);_to("Fail8");_ts(2)}_ts(1);_ts(1);_to("Pass8");_ts(2);_ts(1);_to("\n");_to("\n");_ts(2);_ts(2);_ts(1);_ts(1);_to("...passed with flying colors.");_ts(2);_ts(1);_to("\n");_to("

    \n");_to(" ");_ts(2);_ts(2);x=20;if(x>1){for(i=_i=12;12<=x?_ix;i=12<=x?++_i:--_i){square=16;_ts(1);_ts(1);_to("Pass");_to(""+(i!=null?escape(i):""));_ts(2);_ts(2);if(i===square){_ts(1);_ts(1);_to("(a perfect square)");_ts(2)}}}_ts(1);_to("\n");_to(" ");_ts(2);_ts(2);x=20;if(x>1){for(i=_j=12;12<=x?_jx;i=12<=x?++_j:--_j){square=16}_ts(1);_ts(1);_to("Pass");_to(""+(i!=null?escape(i):""));_ts(2);_ts(2);if(i===square){_ts(1);_ts(1);_to("(a perfect square)");_ts(2)}}_ts(1);_to("\n");_to("

    ");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +; +(function(){var tmpl;tmpl=toffee.templates["/indent_attack/output.toffee"]={bundlePath:"/indent_attack/output.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/indent_attack/output.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("
    \n");_to(" Pass1Pass2\n");_to("
    \n");_to("\n");_to("Pass3Pass4\n");_to("
    \n");_to("\n");_to("Pass5Pass6\n");_to("\n");_to("Pass7Pass8\n");_to("\n");_to("...passed with flying colors.\n");_to("

    \n");_to(" Pass12Pass13Pass14Pass15Pass16(a perfect square)Pass17Pass18Pass19\n");_to(" Pass20\n");_to("

    ");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +; +(function(){var tmpl;tmpl=toffee.templates["/junk/input.toffee"]={bundlePath:"/junk/input.toffee"};tmpl.pub=function(__locals){var supplies,supply,_i,_len,_ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/junk/input.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(2);supplies=["broom","mop","vacuum"];_ts(1);_to("
      \n");_to(" ");_ts(2);_ts(2);for(_i=0,_len=supplies.length;_i<_len;_i++){supply=supplies[_i];_ts(1);_ts(1);_to("
    • ");_to(""+(supply!=null?escape(supply):""));_to("
    • ");_ts(2)}_ts(1);_to("\n");_to("
    ");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +; +(function(){var tmpl;tmpl=toffee.templates["/junk/output.toffee"]={bundlePath:"/junk/output.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/junk/output.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("
      \n");_to("
    • broom
    • mop
    • vacuum
    • \n");_to("
    ");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +; +(function(){var tmpl;tmpl=toffee.templates["/lambda_fns/input.toffee"]={bundlePath:"/lambda_fns/input.toffee"};tmpl.pub=function(__locals){var echo_it,print_it,print_it_twice,_ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/lambda_fns/input.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(2);print_it=function(msg){_ts(1);_ts(1);_to(""+(msg!=null?escape(msg):""));return _ts(2)};print_it_twice=function(msg){var m;_ts(1);_ts(1);_to(""+(msg!=null?escape(msg):""));_ts(2);m=msg;_ts(1);_ts(1);_to(""+(m!=null?escape(m):""));return _ts(2)};echo_it=function(msg){var v;v=msg;return v};print_it("Pass");print_it_twice("Pass");print(echo_it("Pass"));__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +; +(function(){var tmpl;tmpl=toffee.templates["/lambda_fns/output.toffee"]={bundlePath:"/lambda_fns/output.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/lambda_fns/output.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("PassPassPassPass");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +; +(function(){var tmpl;tmpl=toffee.templates["/multiline_interpolation/foo.toffee"]={bundlePath:"/multiline_interpolation/foo.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/multiline_interpolation/foo.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to(""+(typeof a!=="undefined"&&a!==null?escape(a):""));_to(" ");_to(""+(typeof b!=="undefined"&&b!==null?escape(b):""));_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +; +(function(){var tmpl;tmpl=toffee.templates["/multiline_interpolation/input.toffee"]={bundlePath:"/multiline_interpolation/input.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/multiline_interpolation/input.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to(""+escape("Hello, "+"world"));_to("\n");_to("
    \n");_to(""+partial("foo.toffee",{a:"Goodbye"+",",b:"world"}));_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +; +(function(){var tmpl;tmpl=toffee.templates["/multiline_interpolation/output.toffee"]={bundlePath:"/multiline_interpolation/output.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/multiline_interpolation/output.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("Hello, world\n");_to("
    \n");_to("Goodbye, world");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +; +(function(){var tmpl;tmpl=toffee.templates["/plaintext/input.toffee"]={bundlePath:"/plaintext/input.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/plaintext/input.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("Hi there.");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +; +(function(){var tmpl;tmpl=toffee.templates["/plaintext/output.toffee"]={bundlePath:"/plaintext/output.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/plaintext/output.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("Hi there.");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +; +(function(){var tmpl;tmpl=toffee.templates["/snippets/foo/bar/body.toffee"]={bundlePath:"/snippets/foo/bar/body.toffee"};tmpl.pub=function(__locals){var msg,_ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/snippets/foo/bar/body.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(2);msg=msg||"Unknown message";print(msg);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +; +(function(){var tmpl;tmpl=toffee.templates["/snippets/foo/message.toffee"]={bundlePath:"/snippets/foo/message.toffee"};tmpl.pub=function(__locals){var from,msg,_ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/snippets/foo/message.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(2);from=from||"Unknown sender";msg=msg||"Unknown message.";print("From: "+from+"\n"+snippet("./bar/body.toffee",{msg:msg}));__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +; +(function(){var tmpl;tmpl=toffee.templates["/snippets/input.toffee"]={bundlePath:"/snippets/input.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/snippets/input.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to(""+partial("./foo/message.toffee"));_to("\n");_to(""+escape(snippet("./foo/message.toffee")));_to("\n");_to(""+partial("./foo/message.toffee",{from:"Sam"}));_to("\n");_to(""+escape(snippet("./foo/message.toffee",{from:"Max"})));_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +; +(function(){var tmpl;tmpl=toffee.templates["/snippets/output.toffee"]={bundlePath:"/snippets/output.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/snippets/output.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("From: Preloaded sender\n");_to("Preloaded message.\n");_to("From: Unknown sender\n");_to("Unknown message.\n");_to("From: Sam\n");_to("Preloaded message.\n");_to("From: Max\n");_to("Unknown message.");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +; +(function(){var tmpl;tmpl=toffee.templates["/special_cases/input.toffee"]={bundlePath:"/special_cases/input.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/special_cases/input.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("\n");_ts(2);_ts(2);_ts(1);_ts(1);_to('"'+"PASSED"+'"');_ts(2);_ts(1);_to("\n");_ts(2);_ts(1);_to("\n");_to("

    \n");_to(" ");_to(""+print(""+"click & clack"+""));_to("\n");_to("

    \n");_ts(2);_ts(1);_to("\n");_to("A backslash is a \\\n");_to("");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +; +(function(){var tmpl;tmpl=toffee.templates["/special_cases/output.toffee"]={bundlePath:"/special_cases/output.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/special_cases/output.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("\n");_to('"'+'PASSED"\n');_to("\n");_to("

    \n");_to(" click & clack\n");_to("

    \n");_to("\n");_to("A backslash is a \\\n");_to("");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) \ No newline at end of file diff --git a/test/run_cases.coffee b/test/run_cases.coffee index 9b6a520..102b704 100644 --- a/test/run_cases.coffee +++ b/test/run_cases.coffee @@ -2,12 +2,20 @@ fs = require 'fs' path = require 'path' -e = new engine({ +regular_engine = new engine({ verbose: false prettyPrintErrors: false }) -run_case_dir = (dir, cb) -> +minimized_engine = new engine({ + verbose: false + prettyPrintErrors: false + minimize: true +}) + +# --------------------------------------------------------------- + +run_case_dir = (eng, dir, cb) -> expected = fs.readFileSync "#{dir}/output.toffee", "utf8" if path.existsSync "#{dir}/vars.js" vars = fs.readFileSync "#{dir}/vars.js", "utf8" @@ -15,7 +23,7 @@ run_case_dir = (dir, cb) -> else vars = {} d = Date.now() - e.run "#{dir}/input.toffee", vars, (err, res) -> + eng.run "#{dir}/input.toffee", vars, (err, res) -> time_ms = Date.now() - d if err cb err, time_ms @@ -27,12 +35,12 @@ run_case_dir = (dir, cb) -> else cb null, time_ms -run_all_case_dirs = (cb) -> +run_all_case_dirs = (eng, cb) -> time_ms = 0 case_dirs = fs.readdirSync "#{__dirname}/cases/" countdown = case_dirs.length for dir in case_dirs - run_case_dir "#{__dirname}/cases/#{dir}", (err, ms) -> + run_case_dir eng, "#{__dirname}/cases/#{dir}", (err, ms) -> countdown-- time_ms += ms if err @@ -41,20 +49,27 @@ run_all_case_dirs = (cb) -> if countdown is 0 cb null, time_ms, case_dirs.length -run_all_case_dirs (err, time, tests_run) -> - - console.log "SUCCESS for #{tests_run} cold tests in #{time}ms" - +run_multiple_runs = (eng, num_runs, cb) -> times = [] - speed_runs = 20 - countdown = speed_runs + countdown = num_runs total_time = 0 total_tests = 0 - for i in [0...speed_runs] - run_all_case_dirs (err, time, tests_run) -> + for i in [0...num_runs] + run_all_case_dirs regular_engine, (err, time, tests_run) -> countdown-- total_time += time total_tests += tests_run if countdown is 0 - console.log "SUCCESS for #{total_tests} hot tests in #{total_time}ms. #{total_time / total_tests}ms/test" - process.exit 0 \ No newline at end of file + cb null, total_time, total_tests + +# ---------------------------------------------------------------- + +run_all_case_dirs regular_engine, (err, time, tests_run) -> + console.log "Regular Engine: SUCCESS for #{tests_run} cold tests in #{time}ms (#{(time/tests_run).toFixed 2}ms/test)" + run_multiple_runs regular_engine, 30, (err, time, tests_run) -> + console.log "Regular Engine: SUCCESS for #{tests_run} hot tests in #{time}ms (#{(time/tests_run).toFixed 2}ms/test)" + run_all_case_dirs minimized_engine, (err, time, tests_run) -> + console.log "Minimized (browser) Engine: SUCCESS for #{tests_run} cold tests in #{time}ms (#{(time/tests_run).toFixed 2}ms/test)" + run_multiple_runs minimized_engine, 30, (err, time, tests_run) -> + console.log "Minimized (browser) Engine: SUCCESS for #{tests_run} hot tests in #{time}ms (#{(time/tests_run).toFixed 2}ms/test)" + process.exit 0 \ No newline at end of file From 192ee279fc9f45377ca580d90dd9845f67dac714 Mon Sep 17 00:00:00 2001 From: "ccoyne77@gmail.com" Date: Thu, 16 Aug 2012 17:00:44 -0400 Subject: [PATCH 028/132] uglifyJS support for minimized output for browsers --- Cakefile | 15 +- lib/command_line.js | 2 +- src/command_line.coffee | 2 +- .../express3/public/javascripts/test_cases.js | 1 - test/express3/views/index.toffee | 267 ++++++++++++------ 5 files changed, 199 insertions(+), 88 deletions(-) diff --git a/Cakefile b/Cakefile index 185591a..8e9d3c5 100644 --- a/Cakefile +++ b/Cakefile @@ -82,16 +82,23 @@ generateExpressTest = (cb) -> \n\n\n #{dir} - \#{partial '../../cases/#{dir}/input.toffee', #{vars}} + #{expected_output} - #{expected_output} + \#{partial '../../cases/#{dir}/input.toffee', #{vars}} - + \n\n\n """ diff --git a/lib/command_line.js b/lib/command_line.js index b15972c..53a5443 100644 --- a/lib/command_line.js +++ b/lib/command_line.js @@ -83,7 +83,7 @@ process.exit(1); } start_path = path.normalize(start_path); - out_text = "" + (getCommonHeadersJs(true, true)) + "\n;\n" + (recurseRun(start_path, start_path, '')); + out_text = "" + (getCommonHeadersJs(true, true)) + "\n" + (recurseRun(start_path, start_path, '')); if (program.print) { console.log(out_text); } diff --git a/src/command_line.coffee b/src/command_line.coffee index 633d639..d272176 100644 --- a/src/command_line.coffee +++ b/src/command_line.coffee @@ -91,7 +91,7 @@ run = exports.run = -> console.log "Input file/path not found. toffee --help for examples" process.exit 1 start_path = path.normalize start_path - out_text = """#{getCommonHeadersJs true, true}\n;\n#{recurseRun start_path, start_path, ''}""" + out_text = """#{getCommonHeadersJs true, true}\n#{recurseRun start_path, start_path, ''}""" if program.print console.log out_text if program.output diff --git a/test/express3/public/javascripts/test_cases.js b/test/express3/public/javascripts/test_cases.js index fc8dd10..ac0c7a8 100644 --- a/test/express3/public/javascripts/test_cases.js +++ b/test/express3/public/javascripts/test_cases.js @@ -1,5 +1,4 @@ var toffee;if(!(typeof toffee!=="undefined"&&toffee!==null))toffee={};if(!toffee.templates)toffee.templates={};toffee.states={TOFFEE:1,COFFEE:2};toffee.__json=function(locals,o){if(!(o!=null)){return"null"}else{return""+JSON.stringify(o).replace(//g,"\\u003E").replace(/&/g,"\\u0026")}};toffee.__raw=function(locals,o){return o};toffee.__html=function(locals,o){return(""+o).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")};toffee.__escape=function(locals,o){if(!(locals.__toffee.autoEscape!=null)||locals.__toffee.autoEscape){if(o===void 0)return"";if(o!=null&&typeof o==="object")return locals.json(o);return locals.html(o)}return o};toffee.__augmentLocals=function(locals,bundle_path){var _l,_t;_l=locals;_t=_l.__toffee={out:[]};if(!(_l.print!=null)){_l.print=function(o){return toffee.__print(_l,o)}}if(!(_l.json!=null)){_l.json=function(o){return toffee.__json(_l,o)}}if(!(_l.raw!=null)){_l.raw=function(o){return toffee.__raw(_l,o)}}if(!(_l.html!=null)){_l.html=function(o){return toffee.__html(_l,o)}}if(!(_l.escape!=null)){_l.escape=function(o){return toffee.__escape(_l,o)}}if(!(_l.partial!=null)){_l.partial=function(path,vars){return toffee.__partial(toffee.templates[""+bundle_path],_l,path,vars)}}if(!(_l.snippet!=null)){_l.snippet=function(path,vars){return toffee.__snippet(toffee.templates[""+bundle_path],_l,path,vars)}}_t.print=_l.print;_t.json=_l.json;_t.raw=_l.raw;_t.html=_l.html;_t.escape=_l.escape;_t.partial=_l.partial;return _t.snippet=_l.snippet};toffee.__print=function(locals,o){if(locals.__toffee.state===toffee.states.COFFEE){locals.__toffee.out.push(o);return""}else{return""+o}};toffee.__normalize=function(path){var np,part,parts,_i,_len;if(!(path!=null)||path==="/"){return path}else{parts=path.split("/");np=[];if(parts[0])np.push("");for(_i=0,_len=parts.length;_i<_len;_i++){part=parts[_i];if(part===".."){if(np.length>1){np.pop()}else{np.push(part)}}else{if(part!==".")np.push(part)}}path=np.join("/");if(!path)path="/";return path}};toffee.__partial=function(parent_tmpl,parent_locals,path,vars){path=toffee.__normalize(parent_tmpl.bundlePath+"/../"+path);return toffee.__inlineInclude(path,vars,parent_locals)};toffee.__snippet=function(parent_tmpl,parent_locals,path,vars){path=toffee.__normalize(parent_tmpl.bundlePath+"/../"+path);vars=vars!=null?vars:{};vars.__toffee=vars.__toffee||{};vars.__toffee.noInheritance=true;return toffee.__inlineInclude(path,vars,parent_locals)};toffee.__inlineInclude=function(path,locals,parent_locals){var k,options,v;options=locals||{};options.__toffee=options.__toffee||{};if(!options.__toffee.noInheritance){for(k in parent_locals){v=parent_locals[k];if(!((locals!=null?locals[k]:void 0)!=null)){if(!(k==="print"||k==="partial"||k==="snippet"||k==="layout"||k==="__toffee")){options[k]=v}}}}if(!toffee.templates[path]){return"Inline toffee include: Could not find "+path}else{return toffee.templates[path].pub(options)}} -; ; (function(){var tmpl;tmpl=toffee.templates["/big_file/input.toffee"]={bundlePath:"/big_file/input.toffee"};tmpl.pub=function(__locals){var count,i,_i,_ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/big_file/input.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(2);count=0;for(i=_i=0;_i<2;i=++_i){_ts(1);_ts(1);_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("...");_ts(2);_ts(2);count+=1;print(" "+count+"...");_ts(1);_to(" ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("...");_ts(2);_ts(2);count+=1;print(" "+count+"...")}__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) diff --git a/test/express3/views/index.toffee b/test/express3/views/index.toffee index cb75d1b..1d22161 100644 --- a/test/express3/views/index.toffee +++ b/test/express3/views/index.toffee @@ -15,16 +15,23 @@ big_file - #{partial '../../cases/big_file/input.toffee', {}} + 0... 1... 2... 3... 4... 5... 6... 7... 8... 9... 10... 11... 12... 13... 14... 15... 16... 17... 18... 19... 20... 21... 22... 23... 24... 25... 26... 27... 28... 29... 30... 31... 32... 33... 34... 35... 36... 37... 38... 39... 40... 41... 42... 43... 44... 45... 46... 47... 48... 49... 50... 51... 52... 53... 54... 55... 56... 57... 58... 59... 60... 61... 62... 63... 64... 65... 66... 67... 68... 70... 70... 71... 72... 73... 74... 75... 76... 77... 78... 79... 80... 81... 82... 83... 84... 85... 86... 87... 88... 89... 90... 91... 92... 93... 94... 95... 96... 97... 98... 99... 100... 101... 102... 103... 104... 105... 106... 107... 108... 109... 110... 111... 112... 113... 114... 115... 116... 117... 118... 119... 120... 121... 122... 123... 124... 125... 126... 127... 128... 129... 130... 131... 132... 133... 134... 135... 136... 137... 138... 139... 140... 141... 142... 143... 144... 145... 146... 147... 148... 149... 150... 151... 152... 153... 154... 155... 156... 157... 158... 159... 160... 162...162... 163... 164... 165... 166... 167... 168... 169... 170... 171... 172... 173... 174... 175... 176... 177... 178... 179... 180... 181... 182... 183... 184... 185... 186... 187... 188... 189... 190... 191... 192... 193... 194... 195... 196... 197... 198... 199... 200... 201... 202... 203... 204... 205... 206... 207... 208... 209... 210... 211... 212... 213... 214... 215... 216... 217... 218... 219... 220... 221... 222... 223... 224... 225... 226... 227... 228... 229... 230... 232... 232... 233... 234... 235... 236... 237... 238... 239... 240... 241... 242... 243... 244... 245... 246... 247... 248... 249... 250... 251... 252... 253... 254... 255... 256... 257... 258... 259... 260... 261... 262... 263... 264... 265... 266... 267... 268... 269... 270... 271... 272... 273... 274... 275... 276... 277... 278... 279... 280... 281... 282... 283... 284... 285... 286... 287... 288... 289... 290... 291... 292... 293... 294... 295... 296... 297... 298... 299... 300... 301... 302... 303... 304... 305... 306... 307... 308... 309... 310... 311... 312... 313... 314... 315... 316... 317... 318... 319... 320... 321... 322... 324... - 0... 1... 2... 3... 4... 5... 6... 7... 8... 9... 10... 11... 12... 13... 14... 15... 16... 17... 18... 19... 20... 21... 22... 23... 24... 25... 26... 27... 28... 29... 30... 31... 32... 33... 34... 35... 36... 37... 38... 39... 40... 41... 42... 43... 44... 45... 46... 47... 48... 49... 50... 51... 52... 53... 54... 55... 56... 57... 58... 59... 60... 61... 62... 63... 64... 65... 66... 67... 68... 70... 70... 71... 72... 73... 74... 75... 76... 77... 78... 79... 80... 81... 82... 83... 84... 85... 86... 87... 88... 89... 90... 91... 92... 93... 94... 95... 96... 97... 98... 99... 100... 101... 102... 103... 104... 105... 106... 107... 108... 109... 110... 111... 112... 113... 114... 115... 116... 117... 118... 119... 120... 121... 122... 123... 124... 125... 126... 127... 128... 129... 130... 131... 132... 133... 134... 135... 136... 137... 138... 139... 140... 141... 142... 143... 144... 145... 146... 147... 148... 149... 150... 151... 152... 153... 154... 155... 156... 157... 158... 159... 160... 162...162... 163... 164... 165... 166... 167... 168... 169... 170... 171... 172... 173... 174... 175... 176... 177... 178... 179... 180... 181... 182... 183... 184... 185... 186... 187... 188... 189... 190... 191... 192... 193... 194... 195... 196... 197... 198... 199... 200... 201... 202... 203... 204... 205... 206... 207... 208... 209... 210... 211... 212... 213... 214... 215... 216... 217... 218... 219... 220... 221... 222... 223... 224... 225... 226... 227... 228... 229... 230... 232... 232... 233... 234... 235... 236... 237... 238... 239... 240... 241... 242... 243... 244... 245... 246... 247... 248... 249... 250... 251... 252... 253... 254... 255... 256... 257... 258... 259... 260... 261... 262... 263... 264... 265... 266... 267... 268... 269... 270... 271... 272... 273... 274... 275... 276... 277... 278... 279... 280... 281... 282... 283... 284... 285... 286... 287... 288... 289... 290... 291... 292... 293... 294... 295... 296... 297... 298... 299... 300... 301... 302... 303... 304... 305... 306... 307... 308... 309... 310... 311... 312... 313... 314... 315... 316... 317... 318... 319... 320... 321... 322... 324... + #{partial '../../cases/big_file/input.toffee', {}} - + @@ -35,11 +42,7 @@ comments - #{partial '../../cases/comments/input.toffee', { - "greeting": "Hello" -}} - - + Pass 1 Pass 2 @@ -47,14 +50,25 @@ Pass 2 Pass 3 - + #{partial '../../cases/comments/input.toffee', { + "greeting": "Hello" +}} + + @@ -65,9 +79,7 @@ Pass 3 eco_compare - #{partial '../../cases/eco_compare/input.toffee', {}} - - + okcupid

    A site for singles

    @@ -77,12 +89,21 @@ Pass 3 You have 3 female friends. - + #{partial '../../cases/eco_compare/input.toffee', {}} + + @@ -93,9 +114,7 @@ You have 3 female friends. escape - #{partial '../../cases/escape/input.toffee', {}} - -

    +

    default x = "Hello world" default y = <hr /> default z = click&clack @@ -134,12 +153,21 @@ You have 3 female friends. html printed longhand w = 1,2,[object Object]

    - + #{partial '../../cases/escape/input.toffee', {}} + + @@ -150,20 +178,27 @@ You have 3 female friends. hello_world - #{partial '../../cases/hello_world/input.toffee', { + Hello, world. + + #{partial '../../cases/hello_world/input.toffee', { "greeting": "Hello" }} - Hello, world. - - + @@ -174,11 +209,7 @@ You have 3 female friends. include_order - #{partial '../../cases/include_order/input.toffee', { - "greeting": "Hello" -}} - - 1 + 1 2 hia @@ -186,14 +217,25 @@ b 3 4 - + #{partial '../../cases/include_order/input.toffee', { + "greeting": "Hello" +}} + + @@ -204,20 +246,27 @@ b include_recursion - #{partial '../../cases/include_recursion/input.toffee', { + 10...9...8...7...6...5...4...3...2...1...blastoff! + + #{partial '../../cases/include_recursion/input.toffee', { "countdown" : 10 }} - 10...9...8...7...6...5...4...3...2...1...blastoff! - - + @@ -228,10 +277,7 @@ b include_techniques - #{partial '../../cases/include_techniques/input.toffee', { -}} - - From: Chris <ccoyne77@gmail> + From: Chris <ccoyne77@gmail> Msg: Hello, world From: Max & Sam @@ -245,13 +291,23 @@ From: Unknown Msg: Hello, world - + #{partial '../../cases/include_techniques/input.toffee', { +}} + + @@ -262,10 +318,7 @@ Msg: Hello, world indent_attack - #{partial '../../cases/indent_attack/input.toffee', { -}} - -
    +
    Pass1Pass2
    @@ -282,13 +335,23 @@ Pass7Pass8 Pass20

    - + #{partial '../../cases/indent_attack/input.toffee', { +}} + + @@ -299,18 +362,25 @@ Pass7Pass8 junk - #{partial '../../cases/junk/input.toffee', {}} - -
      +
      • broom
      • mop
      • vacuum
      - + #{partial '../../cases/junk/input.toffee', {}} + + @@ -321,16 +391,23 @@ Pass7Pass8 lambda_fns - #{partial '../../cases/lambda_fns/input.toffee', {}} + PassPassPassPass - PassPassPassPass + #{partial '../../cases/lambda_fns/input.toffee', {}} - + @@ -341,18 +418,25 @@ Pass7Pass8 multiline_interpolation - #{partial '../../cases/multiline_interpolation/input.toffee', {}} - - Hello, world + Hello, world
      Goodbye, world - + #{partial '../../cases/multiline_interpolation/input.toffee', {}} + + @@ -363,16 +447,23 @@ Goodbye, world plaintext - #{partial '../../cases/plaintext/input.toffee', {}} + Hi there. - Hi there. + #{partial '../../cases/plaintext/input.toffee', {}} - + @@ -383,12 +474,7 @@ Goodbye, world snippets - #{partial '../../cases/snippets/input.toffee', { - "from": "Preloaded sender", - "msg" : "Preloaded message." -}} - - From: Preloaded sender + From: Preloaded sender Preloaded message. From: Unknown sender Unknown message. @@ -397,15 +483,27 @@ Preloaded message. From: Max Unknown message. - + #{partial '../../cases/snippets/input.toffee', { + "from": "Preloaded sender", + "msg" : "Preloaded message." +}} + + @@ -416,9 +514,7 @@ Unknown message. special_cases - #{partial '../../cases/special_cases/input.toffee', {}} - - + "PASSED"

      @@ -430,12 +526,21 @@ A backslash is a \ var passed = "\"passed\""; - + #{partial '../../cases/special_cases/input.toffee', {}} + + From 87308a1dced4a5d3f3db08eb5ad617b76b688721 Mon Sep 17 00:00:00 2001 From: "ccoyne77@gmail.com" Date: Thu, 16 Aug 2012 17:01:33 -0400 Subject: [PATCH 029/132] uglifyJS support for minimized output for browsers --- package.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 4addda2..1c63586 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "toffee", "description": "An Express 3.x and 2.x templating language based on CoffeeScript with slicker tokens and syntax. Built with love at OkCupid.", - "version": "0.0.38", + "version": "0.0.39", "directories": { "lib": "./lib" }, @@ -10,7 +10,8 @@ "bin": "./bin/toffee", "dependencies": { "coffee-script": "*", - "commander": "*" + "commander": "*", + "uglify-js": "*" }, "repository": { "type": "git", From 5cbefaaf3b6875672c49dab2839ebe4b685cdeb8 Mon Sep 17 00:00:00 2001 From: "ccoyne77@gmail.com" Date: Tue, 28 Aug 2012 10:36:58 -0400 Subject: [PATCH 030/132] scrollbars in error boxes' --- lib/errorHandler.js | 10 +++++----- package.json | 2 +- src/errorHandler.coffee | 12 ++++++------ 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/lib/errorHandler.js b/lib/errorHandler.js index e51bf27..2c0b8fc 100644 --- a/lib/errorHandler.js +++ b/lib/errorHandler.js @@ -181,21 +181,21 @@ cerr = this.getConvertedError(); res = ""; header = "" + cerr.dir_name + "/" + cerr.file + ": " + (_ppEscape(cerr.message)) + ""; - res += "

      \n \n
      " + header + "
      \n \n
      \n \n
      "; + res += "
      \n \n
      " + header + "
      \n \n
      \n \n
      "; if ((_ref = cerr.stack) != null ? _ref.length : void 0) { - res += "
      "; + res += "
      "; count = 0; _ref1 = cerr.stack; for (i = _i = 0, _len = _ref1.length; _i < _len; i = ++_i) { item = _ref1[i]; if (i === 0) { - res += "
      " + (count++) + " " + item.line + "
      "; + res += "
      " + (count++) + " " + item.line + "
      "; } else if (item.in_src_file && (item.above_pub_call || item.at_pub_call)) { - res += "
      " + (count++) + " [" + (this._lineRangeToPhrase(item.line_range)) + "] " + cerr.dir_name + "/" + cerr.file + "
      "; + res += "
      " + (count++) + " [" + (this._lineRangeToPhrase(item.line_range)) + "] " + cerr.dir_name + "/" + cerr.file + "
      "; } else if (item.in_src_file) { continue; } else { - res += "
      " + (count++) + item.line + "
      "; + res += "
      " + (count++) + item.line + "
      "; } } res += "
      "; diff --git a/package.json b/package.json index 1c63586..96de2ab 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "toffee", "description": "An Express 3.x and 2.x templating language based on CoffeeScript with slicker tokens and syntax. Built with love at OkCupid.", - "version": "0.0.39", + "version": "0.0.40", "directories": { "lib": "./lib" }, diff --git a/src/errorHandler.coffee b/src/errorHandler.coffee index fbe503a..a7af59f 100644 --- a/src/errorHandler.coffee +++ b/src/errorHandler.coffee @@ -151,23 +151,23 @@ class toffeeError res = "" header = "#{cerr.dir_name}/#{cerr.file}: #{_ppEscape cerr.message}" res += """ -
      +
      \n
      #{header}
      \n
      - \n
      + \n
      """ if cerr.stack?.length - res += "
      " + res += "
      " count = 0 for item,i in cerr.stack if i is 0 - res += "
      #{count++} #{item.line}
      " + res += "
      #{count++} #{item.line}
      " else if item.in_src_file and (item.above_pub_call or item.at_pub_call) - res += "
      #{count++} [#{@_lineRangeToPhrase item.line_range}] #{cerr.dir_name}/#{cerr.file}
      " + res += "
      #{count++} [#{@_lineRangeToPhrase item.line_range}] #{cerr.dir_name}/#{cerr.file}
      " else if item.in_src_file continue else - res += "
      #{count++}#{item.line}
      " + res += "
      #{count++}#{item.line}
      " res += "
      " for i in [(cerr.line_range[0]-3)...(cerr.line_range[1]+1)] From 09874c2c0bb1e29e78a49a5a0bfcb7a66896e03d Mon Sep 17 00:00:00 2001 From: "ccoyne77@gmail.com" Date: Tue, 28 Aug 2012 15:27:27 -0400 Subject: [PATCH 031/132] added coffee output to command line program --- lib/command_line.js | 20 ++++++++++++++----- lib/errorHandler.js | 2 +- src/command_line.coffee | 15 +++++++++++--- src/errorHandler.coffee | 4 ++-- .../express3/public/javascripts/test_cases.js | 1 + 5 files changed, 31 insertions(+), 11 deletions(-) diff --git a/lib/command_line.js b/lib/command_line.js index 53a5443..a06696a 100644 --- a/lib/command_line.js +++ b/lib/command_line.js @@ -29,7 +29,7 @@ and path is /foo/bar/car/thing.toffee */ - var bundle_path, js, source, v; + var bundle_path, output, source, v; source = fs.readFileSync(path, 'utf8'); bundle_path = path.slice(start_path.length); v = new view(source, { @@ -38,12 +38,16 @@ browserMode: true, minimize: (program.minimize != null) && program.minimize }); - js = v._toJavaScript(); + if (program.coffee) { + output = v._toCoffee(); + } else { + output = v._toJavaScript(); + } if (v.error) { process.stderr.write(v.error.getPrettyPrintText()); process.exit(1); } - return js; + return output; }; recurseRun = function(start_path, curr_path, out_text) { @@ -70,7 +74,7 @@ }; run = exports.run = function() { - var out_text, start_path; + var header_out, out_text, start_path, template_out; if (program.args.length !== 1) { console.log("Unexpected input. toffee --help for examples"); console.log(program.args); @@ -83,7 +87,13 @@ process.exit(1); } start_path = path.normalize(start_path); - out_text = "" + (getCommonHeadersJs(true, true)) + "\n" + (recurseRun(start_path, start_path, '')); + template_out = recurseRun(start_path, start_path, ''); + header_out = getCommonHeadersJs(true, true); + if (program.coffee) { + out_text = "`" + header_out + "`\n" + template_out; + } else { + out_text = "" + header_out + "\n;\n" + template_out; + } if (program.print) { console.log(out_text); } diff --git a/lib/errorHandler.js b/lib/errorHandler.js index 2c0b8fc..e03ce87 100644 --- a/lib/errorHandler.js +++ b/lib/errorHandler.js @@ -181,7 +181,7 @@ cerr = this.getConvertedError(); res = ""; header = "" + cerr.dir_name + "/" + cerr.file + ": " + (_ppEscape(cerr.message)) + ""; - res += "
      \n \n
      " + header + "
      \n \n
      \n \n
      "; + res += "
      \n \n
      " + header + "
      \n \n
      \n \n
      "; if ((_ref = cerr.stack) != null ? _ref.length : void 0) { res += "
      "; count = 0; diff --git a/src/command_line.coffee b/src/command_line.coffee index d272176..ab25017 100644 --- a/src/command_line.coffee +++ b/src/command_line.coffee @@ -53,11 +53,14 @@ compile = (start_path, path) -> bundlePath: bundle_path browserMode: true minimize: program.minimize? and program.minimize - js = v._toJavaScript() + if program.coffee + output = v._toCoffee() + else + output = v._toJavaScript() if v.error process.stderr.write v.error.getPrettyPrintText() process.exit 1 - js + output # ----------------------------------------------------------------------------- @@ -91,7 +94,13 @@ run = exports.run = -> console.log "Input file/path not found. toffee --help for examples" process.exit 1 start_path = path.normalize start_path - out_text = """#{getCommonHeadersJs true, true}\n#{recurseRun start_path, start_path, ''}""" + template_out = recurseRun start_path, start_path, '' + header_out = getCommonHeadersJs true, true + if program.coffee + out_text = "`#{header_out}`\n#{template_out}" + else + out_text = "#{header_out}\n;\n#{template_out}" + if program.print console.log out_text if program.output diff --git a/src/errorHandler.coffee b/src/errorHandler.coffee index a7af59f..c86835a 100644 --- a/src/errorHandler.coffee +++ b/src/errorHandler.coffee @@ -151,10 +151,10 @@ class toffeeError res = "" header = "#{cerr.dir_name}/#{cerr.file}: #{_ppEscape cerr.message}" res += """ -
      +
      \n
      #{header}
      \n
      - \n
      + \n
      """ if cerr.stack?.length res += "
      " diff --git a/test/express3/public/javascripts/test_cases.js b/test/express3/public/javascripts/test_cases.js index ac0c7a8..fc8dd10 100644 --- a/test/express3/public/javascripts/test_cases.js +++ b/test/express3/public/javascripts/test_cases.js @@ -1,4 +1,5 @@ var toffee;if(!(typeof toffee!=="undefined"&&toffee!==null))toffee={};if(!toffee.templates)toffee.templates={};toffee.states={TOFFEE:1,COFFEE:2};toffee.__json=function(locals,o){if(!(o!=null)){return"null"}else{return""+JSON.stringify(o).replace(//g,"\\u003E").replace(/&/g,"\\u0026")}};toffee.__raw=function(locals,o){return o};toffee.__html=function(locals,o){return(""+o).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")};toffee.__escape=function(locals,o){if(!(locals.__toffee.autoEscape!=null)||locals.__toffee.autoEscape){if(o===void 0)return"";if(o!=null&&typeof o==="object")return locals.json(o);return locals.html(o)}return o};toffee.__augmentLocals=function(locals,bundle_path){var _l,_t;_l=locals;_t=_l.__toffee={out:[]};if(!(_l.print!=null)){_l.print=function(o){return toffee.__print(_l,o)}}if(!(_l.json!=null)){_l.json=function(o){return toffee.__json(_l,o)}}if(!(_l.raw!=null)){_l.raw=function(o){return toffee.__raw(_l,o)}}if(!(_l.html!=null)){_l.html=function(o){return toffee.__html(_l,o)}}if(!(_l.escape!=null)){_l.escape=function(o){return toffee.__escape(_l,o)}}if(!(_l.partial!=null)){_l.partial=function(path,vars){return toffee.__partial(toffee.templates[""+bundle_path],_l,path,vars)}}if(!(_l.snippet!=null)){_l.snippet=function(path,vars){return toffee.__snippet(toffee.templates[""+bundle_path],_l,path,vars)}}_t.print=_l.print;_t.json=_l.json;_t.raw=_l.raw;_t.html=_l.html;_t.escape=_l.escape;_t.partial=_l.partial;return _t.snippet=_l.snippet};toffee.__print=function(locals,o){if(locals.__toffee.state===toffee.states.COFFEE){locals.__toffee.out.push(o);return""}else{return""+o}};toffee.__normalize=function(path){var np,part,parts,_i,_len;if(!(path!=null)||path==="/"){return path}else{parts=path.split("/");np=[];if(parts[0])np.push("");for(_i=0,_len=parts.length;_i<_len;_i++){part=parts[_i];if(part===".."){if(np.length>1){np.pop()}else{np.push(part)}}else{if(part!==".")np.push(part)}}path=np.join("/");if(!path)path="/";return path}};toffee.__partial=function(parent_tmpl,parent_locals,path,vars){path=toffee.__normalize(parent_tmpl.bundlePath+"/../"+path);return toffee.__inlineInclude(path,vars,parent_locals)};toffee.__snippet=function(parent_tmpl,parent_locals,path,vars){path=toffee.__normalize(parent_tmpl.bundlePath+"/../"+path);vars=vars!=null?vars:{};vars.__toffee=vars.__toffee||{};vars.__toffee.noInheritance=true;return toffee.__inlineInclude(path,vars,parent_locals)};toffee.__inlineInclude=function(path,locals,parent_locals){var k,options,v;options=locals||{};options.__toffee=options.__toffee||{};if(!options.__toffee.noInheritance){for(k in parent_locals){v=parent_locals[k];if(!((locals!=null?locals[k]:void 0)!=null)){if(!(k==="print"||k==="partial"||k==="snippet"||k==="layout"||k==="__toffee")){options[k]=v}}}}if(!toffee.templates[path]){return"Inline toffee include: Could not find "+path}else{return toffee.templates[path].pub(options)}} +; ; (function(){var tmpl;tmpl=toffee.templates["/big_file/input.toffee"]={bundlePath:"/big_file/input.toffee"};tmpl.pub=function(__locals){var count,i,_i,_ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/big_file/input.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(2);count=0;for(i=_i=0;_i<2;i=++_i){_ts(1);_ts(1);_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("...");_ts(2);_ts(2);count+=1;print(" "+count+"...");_ts(1);_to(" ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("...");_ts(2);_ts(2);count+=1;print(" "+count+"...")}__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) From f60a165025a95d974e46d617319331f0e1f33bd8 Mon Sep 17 00:00:00 2001 From: "ccoyne77@gmail.com" Date: Tue, 4 Sep 2012 18:18:34 -0400 Subject: [PATCH 032/132] exposed engine for manual usage, per user request --- index.coffee | 2 + index.js | 2 + lib/toffee_lang.js | 282 ++++++++---------- lib/view.js | 2 + package.json | 2 +- src/view.coffee | 4 +- .../express3/public/javascripts/test_cases.js | 78 ++--- test/run_cases.coffee | 3 +- 8 files changed, 171 insertions(+), 204 deletions(-) diff --git a/index.coffee b/index.coffee index 3a6b2c5..4e04d3d 100644 --- a/index.coffee +++ b/index.coffee @@ -1,5 +1,7 @@ # expose the render function eclass = require('./lib/engine').engine +exports.engine = eclass + e = new eclass { verbose: false, prettyPrintErrors: true } exports.expressEngine = e diff --git a/index.js b/index.js index 5d397bc..f509006 100644 --- a/index.js +++ b/index.js @@ -4,6 +4,8 @@ eclass = require('./lib/engine').engine; + exports.engine = eclass; + e = new eclass({ verbose: false, prettyPrintErrors: true diff --git a/lib/toffee_lang.js b/lib/toffee_lang.js index 11f943b..dc48bf1 100644 --- a/lib/toffee_lang.js +++ b/lib/toffee_lang.js @@ -56,195 +56,115 @@ parseError: function parseError(str, hash) { throw new Error(str); }, parse: function parse(input) { - var self = this, - stack = [0], - vstack = [null], // semantic value stack - lstack = [], // location stack - table = this.table, - yytext = '', - yylineno = 0, - yyleng = 0, - recovering = 0, - TERROR = 2, - EOF = 1; - - //this.reductionCount = this.shiftCount = 0; - + var self = this, stack = [0], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1; this.lexer.setInput(input); this.lexer.yy = this.yy; this.yy.lexer = this.lexer; - if (typeof this.lexer.yylloc == 'undefined') + this.yy.parser = this; + if (typeof this.lexer.yylloc == "undefined") this.lexer.yylloc = {}; var yyloc = this.lexer.yylloc; lstack.push(yyloc); - - if (typeof this.yy.parseError === 'function') + var ranges = this.lexer.options && this.lexer.options.ranges; + if (typeof this.yy.parseError === "function") this.parseError = this.yy.parseError; - - function popStack (n) { - stack.length = stack.length - 2*n; + function popStack(n) { + stack.length = stack.length - 2 * n; vstack.length = vstack.length - n; lstack.length = lstack.length - n; } - function lex() { var token; - token = self.lexer.lex() || 1; // $end = 1 - // if token isn't its numeric value, convert - if (typeof token !== 'number') { + token = self.lexer.lex() || 1; + if (typeof token !== "number") { token = self.symbols_[token] || token; } return token; } - - var symbol, preErrorSymbol, state, action, a, r, yyval={},p,len,newState, expected; + var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected; while (true) { - // retreive state number from top of stack - state = stack[stack.length-1]; - - // use default actions if available + state = stack[stack.length - 1]; if (this.defaultActions[state]) { action = this.defaultActions[state]; } else { - if (symbol == null) + if (symbol === null || typeof symbol == "undefined") { symbol = lex(); - // read action for current state and first input + } action = table[state] && table[state][symbol]; } - - // handle parse error - _handle_error: - if (typeof action === 'undefined' || !action.length || !action[0]) { - + if (typeof action === "undefined" || !action.length || !action[0]) { + var errStr = ""; if (!recovering) { - // Report error expected = []; - for (p in table[state]) if (this.terminals_[p] && p > 2) { - expected.push("'"+this.terminals_[p]+"'"); - } - var errStr = ''; + for (p in table[state]) + if (this.terminals_[p] && p > 2) { + expected.push("'" + this.terminals_[p] + "'"); + } if (this.lexer.showPosition) { - errStr = 'Parse error on line '+(yylineno+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+expected.join(', ') + ", got '" + this.terminals_[symbol]+ "'"; + errStr = "Parse error on line " + (yylineno + 1) + ":\n" + this.lexer.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'"; } else { - errStr = 'Parse error on line '+(yylineno+1)+": Unexpected " + - (symbol == 1 /*EOF*/ ? "end of input" : - ("'"+(this.terminals_[symbol] || symbol)+"'")); + errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == 1?"end of input":"'" + (this.terminals_[symbol] || symbol) + "'"); } - this.parseError(errStr, - {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected}); + this.parseError(errStr, {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected}); } - - // just recovered from another error - if (recovering == 3) { - if (symbol == EOF) { - throw new Error(errStr || 'Parsing halted.'); - } - - // discard current lookahead and grab another + } + if (action[0] instanceof Array && action.length > 1) { + throw new Error("Parse Error: multiple actions possible at state: " + state + ", token: " + symbol); + } + switch (action[0]) { + case 1: + stack.push(symbol); + vstack.push(this.lexer.yytext); + lstack.push(this.lexer.yylloc); + stack.push(action[1]); + symbol = null; + if (!preErrorSymbol) { yyleng = this.lexer.yyleng; yytext = this.lexer.yytext; yylineno = this.lexer.yylineno; yyloc = this.lexer.yylloc; - symbol = lex(); + if (recovering > 0) + recovering--; + } else { + symbol = preErrorSymbol; + preErrorSymbol = null; } - - // try to recover from error - while (1) { - // check for error recovery rule in this state - if ((TERROR.toString()) in table[state]) { - break; - } - if (state == 0) { - throw new Error(errStr || 'Parsing halted.'); - } - popStack(1); - state = stack[stack.length-1]; + break; + case 2: + len = this.productions_[action[1]][1]; + yyval.$ = vstack[vstack.length - len]; + yyval._$ = {first_line: lstack[lstack.length - (len || 1)].first_line, last_line: lstack[lstack.length - 1].last_line, first_column: lstack[lstack.length - (len || 1)].first_column, last_column: lstack[lstack.length - 1].last_column}; + if (ranges) { + yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]]; } - - preErrorSymbol = symbol; // save the lookahead token - symbol = TERROR; // insert generic error symbol as new lookahead - state = stack[stack.length-1]; - action = table[state] && table[state][TERROR]; - recovering = 3; // allow 3 real symbols to be shifted before reporting a new error - } - - // this shouldn't happen, unless resolve defaults are off - if (action[0] instanceof Array && action.length > 1) { - throw new Error('Parse Error: multiple actions possible at state: '+state+', token: '+symbol); - } - - switch (action[0]) { - - case 1: // shift - //this.shiftCount++; - - stack.push(symbol); - vstack.push(this.lexer.yytext); - lstack.push(this.lexer.yylloc); - stack.push(action[1]); // push state - symbol = null; - if (!preErrorSymbol) { // normal execution/no error - yyleng = this.lexer.yyleng; - yytext = this.lexer.yytext; - yylineno = this.lexer.yylineno; - yyloc = this.lexer.yylloc; - if (recovering > 0) - recovering--; - } else { // error just occurred, resume old lookahead f/ before error - symbol = preErrorSymbol; - preErrorSymbol = null; - } - break; - - case 2: // reduce - //this.reductionCount++; - - len = this.productions_[action[1]][1]; - - // perform semantic action - yyval.$ = vstack[vstack.length-len]; // default to $$ = $1 - // default location, uses first token for firsts, last for lasts - yyval._$ = { - first_line: lstack[lstack.length-(len||1)].first_line, - last_line: lstack[lstack.length-1].last_line, - first_column: lstack[lstack.length-(len||1)].first_column, - last_column: lstack[lstack.length-1].last_column - }; - r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack); - - if (typeof r !== 'undefined') { - return r; - } - - // pop off stack - if (len) { - stack = stack.slice(0,-1*len*2); - vstack = vstack.slice(0, -1*len); - lstack = lstack.slice(0, -1*len); - } - - stack.push(this.productions_[action[1]][0]); // push nonterminal (reduce) - vstack.push(yyval.$); - lstack.push(yyval._$); - // goto new state = table[STATE][NONTERMINAL] - newState = table[stack[stack.length-2]][stack[stack.length-1]]; - stack.push(newState); - break; - - case 3: // accept - return true; + r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack); + if (typeof r !== "undefined") { + return r; + } + if (len) { + stack = stack.slice(0, -1 * len * 2); + vstack = vstack.slice(0, -1 * len); + lstack = lstack.slice(0, -1 * len); + } + stack.push(this.productions_[action[1]][0]); + vstack.push(yyval.$); + lstack.push(yyval._$); + newState = table[stack[stack.length - 2]][stack[stack.length - 1]]; + stack.push(newState); + break; + case 3: + return true; } - } - return true; -}}; +} +}; /* Jison generated lexer */ var lexer = (function(){ var lexer = ({EOF:1, parseError:function parseError(str, hash) { - if (this.yy.parseError) { - this.yy.parseError(str, hash); + if (this.yy.parser) { + this.yy.parser.parseError(str, hash); } else { throw new Error(str); } @@ -256,21 +176,55 @@ setInput:function (input) { this.yytext = this.matched = this.match = ''; this.conditionStack = ['INITIAL']; this.yylloc = {first_line:1,first_column:0,last_line:1,last_column:0}; + if (this.options.ranges) this.yylloc.range = [0,0]; + this.offset = 0; return this; }, input:function () { var ch = this._input[0]; - this.yytext+=ch; + this.yytext += ch; this.yyleng++; - this.match+=ch; - this.matched+=ch; - var lines = ch.match(/\n/); - if (lines) this.yylineno++; + this.offset++; + this.match += ch; + this.matched += ch; + var lines = ch.match(/(?:\r\n?|\n).*/g); + if (lines) { + this.yylineno++; + this.yylloc.last_line++; + } else { + this.yylloc.last_column++; + } + if (this.options.ranges) this.yylloc.range[1]++; + this._input = this._input.slice(1); return ch; }, unput:function (ch) { + var len = ch.length; + var lines = ch.split(/(?:\r\n?|\n)/g); + this._input = ch + this._input; + this.yytext = this.yytext.substr(0, this.yytext.length-len-1); + //this.yyleng -= len; + this.offset -= len; + var oldLines = this.match.split(/(?:\r\n?|\n)/g); + this.match = this.match.substr(0, this.match.length-1); + this.matched = this.matched.substr(0, this.matched.length-1); + + if (lines.length-1) this.yylineno -= lines.length-1; + var r = this.yylloc.range; + + this.yylloc = {first_line: this.yylloc.first_line, + last_line: this.yylineno+1, + first_column: this.yylloc.first_column, + last_column: lines ? + (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length: + this.yylloc.first_column - len + }; + + if (this.options.ranges) { + this.yylloc.range = [r[0], r[0] + this.yyleng - len]; + } return this; }, more:function () { @@ -278,7 +232,7 @@ more:function () { return this; }, less:function (n) { - this._input = this.match.slice(n) + this._input; + this.unput(this.match.slice(n)); }, pastInput:function () { var past = this.matched.substr(0, this.matched.length - this.match.length); @@ -322,15 +276,19 @@ next:function () { } } if (match) { - lines = match[0].match(/\n.*/g); + lines = match[0].match(/(?:\r\n?|\n).*/g); if (lines) this.yylineno += lines.length; this.yylloc = {first_line: this.yylloc.last_line, last_line: this.yylineno+1, first_column: this.yylloc.last_column, - last_column: lines ? lines[lines.length-1].length-1 : this.yylloc.last_column + match[0].length} + last_column: lines ? lines[lines.length-1].length-lines[lines.length-1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match[0].length}; this.yytext += match[0]; this.match += match[0]; + this.matches = match; this.yyleng = this.yytext.length; + if (this.options.ranges) { + this.yylloc.range = [this.offset, this.offset += this.yyleng]; + } this._more = false; this._input = this._input.slice(match[0].length); this.matched += match[0]; @@ -342,7 +300,7 @@ next:function () { if (this._input === "") { return this.EOF; } else { - this.parseError('Lexical error on line '+(this.yylineno+1)+'. Unrecognized text.\n'+this.showPosition(), + return this.parseError('Lexical error on line '+(this.yylineno+1)+'. Unrecognized text.\n'+this.showPosition(), {text: "", token: null, line: this.yylineno}); } }, @@ -392,23 +350,25 @@ case 7:return 5; break; } }; -lexer.rules = [/^\{##/,/^##\}/,/^:\}/,/^\{:/,/^\{#/,/^#\}/,/^[^{}#\\:\-]+|[\\{}#:\-]/,/^$/]; +lexer.rules = [/^(?:\{##)/,/^(?:##\})/,/^(?::\})/,/^(?:\{:)/,/^(?:\{#)/,/^(?:#\})/,/^(?:[^{}#\\:\-]+|[\\{}#:\-])/,/^(?:$)/]; lexer.conditions = {"INITIAL":{"rules":[0,1,2,3,4,5,6,7],"inclusive":true}}; return lexer;})() parser.lexer = lexer; -return parser; +function Parser () { this.yy = {}; }Parser.prototype = parser;parser.Parser = Parser; +return new Parser; })(); if (typeof require !== 'undefined' && typeof exports !== 'undefined') { exports.parser = toffee_lang; +exports.Parser = toffee_lang.Parser; exports.parse = function () { return toffee_lang.parse.apply(toffee_lang, arguments); } exports.main = function commonjsMain(args) { if (!args[1]) throw new Error('Usage: '+args[0]+' FILE'); + var source, cwd; if (typeof process !== 'undefined') { - var source = require('fs').readFileSync(require('path').join(process.cwd(), args[1]), "utf8"); + source = require('fs').readFileSync(require('path').resolve(args[1]), "utf8"); } else { - var cwd = require("file").path(require("file").cwd()); - var source = cwd.join(args[1]).read({charset: "utf-8"}); + source = require("file").path(require("file").cwd()).join(args[1]).read({charset: "utf-8"}); } return exports.parser.parse(source); } diff --git a/lib/view.js b/lib/view.js index 13137a0..15aa18f 100644 --- a/lib/view.js +++ b/lib/view.js @@ -24,6 +24,8 @@ jsp = require("uglify-js").parser; pro = require("uglify-js").uglify; ast = jsp.parse(js, true); + ast = pro.ast_mangle(ast); + ast = pro.ast_squeeze(ast); js = pro.gen_code(ast); } catch (e) { console.log(js); diff --git a/package.json b/package.json index 96de2ab..aa2a55d 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "toffee", "description": "An Express 3.x and 2.x templating language based on CoffeeScript with slicker tokens and syntax. Built with love at OkCupid.", - "version": "0.0.40", + "version": "0.0.41", "directories": { "lib": "./lib" }, diff --git a/src/view.coffee b/src/view.coffee index 8adfe27..1ce7b9c 100644 --- a/src/view.coffee +++ b/src/view.coffee @@ -15,8 +15,8 @@ minimizeJs = (js) -> jsp = require("uglify-js").parser pro = require("uglify-js").uglify ast = jsp.parse js, true # parse code and get the initial AST - #ast = pro.ast_mangle ast # get a new AST with mangled names - #ast = pro.ast_squeeze ast # get an AST with compression optimizations + ast = pro.ast_mangle ast # get a new AST with mangled names + ast = pro.ast_squeeze ast # get an AST with compression optimizations js = pro.gen_code ast catch e console.log js diff --git a/test/express3/public/javascripts/test_cases.js b/test/express3/public/javascripts/test_cases.js index fc8dd10..cf63ef5 100644 --- a/test/express3/public/javascripts/test_cases.js +++ b/test/express3/public/javascripts/test_cases.js @@ -1,79 +1,79 @@ -var toffee;if(!(typeof toffee!=="undefined"&&toffee!==null))toffee={};if(!toffee.templates)toffee.templates={};toffee.states={TOFFEE:1,COFFEE:2};toffee.__json=function(locals,o){if(!(o!=null)){return"null"}else{return""+JSON.stringify(o).replace(//g,"\\u003E").replace(/&/g,"\\u0026")}};toffee.__raw=function(locals,o){return o};toffee.__html=function(locals,o){return(""+o).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")};toffee.__escape=function(locals,o){if(!(locals.__toffee.autoEscape!=null)||locals.__toffee.autoEscape){if(o===void 0)return"";if(o!=null&&typeof o==="object")return locals.json(o);return locals.html(o)}return o};toffee.__augmentLocals=function(locals,bundle_path){var _l,_t;_l=locals;_t=_l.__toffee={out:[]};if(!(_l.print!=null)){_l.print=function(o){return toffee.__print(_l,o)}}if(!(_l.json!=null)){_l.json=function(o){return toffee.__json(_l,o)}}if(!(_l.raw!=null)){_l.raw=function(o){return toffee.__raw(_l,o)}}if(!(_l.html!=null)){_l.html=function(o){return toffee.__html(_l,o)}}if(!(_l.escape!=null)){_l.escape=function(o){return toffee.__escape(_l,o)}}if(!(_l.partial!=null)){_l.partial=function(path,vars){return toffee.__partial(toffee.templates[""+bundle_path],_l,path,vars)}}if(!(_l.snippet!=null)){_l.snippet=function(path,vars){return toffee.__snippet(toffee.templates[""+bundle_path],_l,path,vars)}}_t.print=_l.print;_t.json=_l.json;_t.raw=_l.raw;_t.html=_l.html;_t.escape=_l.escape;_t.partial=_l.partial;return _t.snippet=_l.snippet};toffee.__print=function(locals,o){if(locals.__toffee.state===toffee.states.COFFEE){locals.__toffee.out.push(o);return""}else{return""+o}};toffee.__normalize=function(path){var np,part,parts,_i,_len;if(!(path!=null)||path==="/"){return path}else{parts=path.split("/");np=[];if(parts[0])np.push("");for(_i=0,_len=parts.length;_i<_len;_i++){part=parts[_i];if(part===".."){if(np.length>1){np.pop()}else{np.push(part)}}else{if(part!==".")np.push(part)}}path=np.join("/");if(!path)path="/";return path}};toffee.__partial=function(parent_tmpl,parent_locals,path,vars){path=toffee.__normalize(parent_tmpl.bundlePath+"/../"+path);return toffee.__inlineInclude(path,vars,parent_locals)};toffee.__snippet=function(parent_tmpl,parent_locals,path,vars){path=toffee.__normalize(parent_tmpl.bundlePath+"/../"+path);vars=vars!=null?vars:{};vars.__toffee=vars.__toffee||{};vars.__toffee.noInheritance=true;return toffee.__inlineInclude(path,vars,parent_locals)};toffee.__inlineInclude=function(path,locals,parent_locals){var k,options,v;options=locals||{};options.__toffee=options.__toffee||{};if(!options.__toffee.noInheritance){for(k in parent_locals){v=parent_locals[k];if(!((locals!=null?locals[k]:void 0)!=null)){if(!(k==="print"||k==="partial"||k==="snippet"||k==="layout"||k==="__toffee")){options[k]=v}}}}if(!toffee.templates[path]){return"Inline toffee include: Could not find "+path}else{return toffee.templates[path].pub(options)}} +var toffee;if(typeof toffee=="undefined"||toffee===null)toffee={};toffee.templates||(toffee.templates={}),toffee.states={TOFFEE:1,COFFEE:2},toffee.__json=function(e,t){return t==null?"null":""+JSON.stringify(t).replace(//g,"\\u003E").replace(/&/g,"\\u0026")},toffee.__raw=function(e,t){return t},toffee.__html=function(e,t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")},toffee.__escape=function(e,t){return e.__toffee.autoEscape==null||e.__toffee.autoEscape?t===void 0?"":t!=null&&typeof t=="object"?e.json(t):e.html(t):t},toffee.__augmentLocals=function(e,t){var n,r;return n=e,r=n.__toffee={out:[]},n.print==null&&(n.print=function(e){return toffee.__print(n,e)}),n.json==null&&(n.json=function(e){return toffee.__json(n,e)}),n.raw==null&&(n.raw=function(e){return toffee.__raw(n,e)}),n.html==null&&(n.html=function(e){return toffee.__html(n,e)}),n.escape==null&&(n.escape=function(e){return toffee.__escape(n,e)}),n.partial==null&&(n.partial=function(e,r){return toffee.__partial(toffee.templates[""+t],n,e,r)}),n.snippet==null&&(n.snippet=function(e,r){return toffee.__snippet(toffee.templates[""+t],n,e,r)}),r.print=n.print,r.json=n.json,r.raw=n.raw,r.html=n.html,r.escape=n.escape,r.partial=n.partial,r.snippet=n.snippet},toffee.__print=function(e,t){return e.__toffee.state===toffee.states.COFFEE?(e.__toffee.out.push(t),""):""+t},toffee.__normalize=function(e){var t,n,r,i,s;if(e==null||e==="/")return e;r=e.split("/"),t=[],r[0]&&t.push("");for(i=0,s=r.length;i1?t.pop():t.push(n):n!=="."&&t.push(n);return e=t.join("/"),e||(e="/"),e},toffee.__partial=function(e,t,n,r){return n=toffee.__normalize(e.bundlePath+"/../"+n),toffee.__inlineInclude(n,r,t)},toffee.__snippet=function(e,t,n,r){return n=toffee.__normalize(e.bundlePath+"/../"+n),r=r!=null?r:{},r.__toffee=r.__toffee||{},r.__toffee.noInheritance=!0,toffee.__inlineInclude(n,r,t)},toffee.__inlineInclude=function(e,t,n){var r,i,s;i=t||{},i.__toffee=i.__toffee||{};if(!i.__toffee.noInheritance)for(r in n)s=n[r],(t!=null?t[r]:void 0)==null&&r!=="print"&&r!=="partial"&&r!=="snippet"&&r!=="layout"&&r!=="__toffee"&&(i[r]=s);return toffee.templates[e]?toffee.templates[e].pub(i):"Inline toffee include: Could not find "+e} ; ; -(function(){var tmpl;tmpl=toffee.templates["/big_file/input.toffee"]={bundlePath:"/big_file/input.toffee"};tmpl.pub=function(__locals){var count,i,_i,_ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/big_file/input.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(2);count=0;for(i=_i=0;_i<2;i=++_i){_ts(1);_ts(1);_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("...");_ts(2);_ts(2);count+=1;print(" "+count+"...");_ts(1);_to(" ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("... ");_to(""+escape(count++));_to("...");_ts(2);_ts(2);count+=1;print(" "+count+"...")}__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +(function(){var tmpl;tmpl=toffee.templates["/big_file/input.toffee"]={bundlePath:"/big_file/input.toffee"},tmpl.pub=function(__locals){var count,i,_i,_ln,_to,_ts;_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/big_file/input.toffee");with(__locals){__toffee.out=[],_ts(1),_ts(2),count=0;for(i=_i=0;_i<2;i=++_i)_ts(1),_ts(1),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("..."),_ts(2),_ts(2),count+=1,print(" "+count+"..."),_ts(1),_to(" "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("..."),_ts(2),_ts(2),count+=1,print(" "+count+"...");return __toffee.res=__toffee.out.join(""),__toffee.res}};if(typeof __toffee_run_input!="undefined"&&__toffee_run_input!==null)return tmpl.pub(__toffee_run_input)}).call(this) ; -(function(){var tmpl;tmpl=toffee.templates["/big_file/output.toffee"]={bundlePath:"/big_file/output.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/big_file/output.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("0... 1... 2... 3... 4... 5... 6... 7... 8... 9... 10... 11... 12... 13... 14... 15... 16... 17... 18... 19... 20... 21... 22... 23... 24... 25... 26... 27... 28... 29... 30... 31... 32... 33... 34... 35... 36... 37... 38... 39... 40... 41... 42... 43... 44... 45... 46... 47... 48... 49... 50... 51... 52... 53... 54... 55... 56... 57... 58... 59... 60... 61... 62... 63... 64... 65... 66... 67... 68... 70... 70... 71... 72... 73... 74... 75... 76... 77... 78... 79... 80... 81... 82... 83... 84... 85... 86... 87... 88... 89... 90... 91... 92... 93... 94... 95... 96... 97... 98... 99... 100... 101... 102... 103... 104... 105... 106... 107... 108... 109... 110... 111... 112... 113... 114... 115... 116... 117... 118... 119... 120... 121... 122... 123... 124... 125... 126... 127... 128... 129... 130... 131... 132... 133... 134... 135... 136... 137... 138... 139... 140... 141... 142... 143... 144... 145... 146... 147... 148... 149... 150... 151... 152... 153... 154... 155... 156... 157... 158... 159... 160... 162...162... 163... 164... 165... 166... 167... 168... 169... 170... 171... 172... 173... 174... 175... 176... 177... 178... 179... 180... 181... 182... 183... 184... 185... 186... 187... 188... 189... 190... 191... 192... 193... 194... 195... 196... 197... 198... 199... 200... 201... 202... 203... 204... 205... 206... 207... 208... 209... 210... 211... 212... 213... 214... 215... 216... 217... 218... 219... 220... 221... 222... 223... 224... 225... 226... 227... 228... 229... 230... 232... 232... 233... 234... 235... 236... 237... 238... 239... 240... 241... 242... 243... 244... 245... 246... 247... 248... 249... 250... 251... 252... 253... 254... 255... 256... 257... 258... 259... 260... 261... 262... 263... 264... 265... 266... 267... 268... 269... 270... 271... 272... 273... 274... 275... 276... 277... 278... 279... 280... 281... 282... 283... 284... 285... 286... 287... 288... 289... 290... 291... 292... 293... 294... 295... 296... 297... 298... 299... 300... 301... 302... 303... 304... 305... 306... 307... 308... 309... 310... 311... 312... 313... 314... 315... 316... 317... 318... 319... 320... 321... 322... 324...");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +(function(){var tmpl;tmpl=toffee.templates["/big_file/output.toffee"]={bundlePath:"/big_file/output.toffee"},tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/big_file/output.toffee");with(__locals)return __toffee.out=[],_ts(1),_ts(1),_to("0... 1... 2... 3... 4... 5... 6... 7... 8... 9... 10... 11... 12... 13... 14... 15... 16... 17... 18... 19... 20... 21... 22... 23... 24... 25... 26... 27... 28... 29... 30... 31... 32... 33... 34... 35... 36... 37... 38... 39... 40... 41... 42... 43... 44... 45... 46... 47... 48... 49... 50... 51... 52... 53... 54... 55... 56... 57... 58... 59... 60... 61... 62... 63... 64... 65... 66... 67... 68... 70... 70... 71... 72... 73... 74... 75... 76... 77... 78... 79... 80... 81... 82... 83... 84... 85... 86... 87... 88... 89... 90... 91... 92... 93... 94... 95... 96... 97... 98... 99... 100... 101... 102... 103... 104... 105... 106... 107... 108... 109... 110... 111... 112... 113... 114... 115... 116... 117... 118... 119... 120... 121... 122... 123... 124... 125... 126... 127... 128... 129... 130... 131... 132... 133... 134... 135... 136... 137... 138... 139... 140... 141... 142... 143... 144... 145... 146... 147... 148... 149... 150... 151... 152... 153... 154... 155... 156... 157... 158... 159... 160... 162...162... 163... 164... 165... 166... 167... 168... 169... 170... 171... 172... 173... 174... 175... 176... 177... 178... 179... 180... 181... 182... 183... 184... 185... 186... 187... 188... 189... 190... 191... 192... 193... 194... 195... 196... 197... 198... 199... 200... 201... 202... 203... 204... 205... 206... 207... 208... 209... 210... 211... 212... 213... 214... 215... 216... 217... 218... 219... 220... 221... 222... 223... 224... 225... 226... 227... 228... 229... 230... 232... 232... 233... 234... 235... 236... 237... 238... 239... 240... 241... 242... 243... 244... 245... 246... 247... 248... 249... 250... 251... 252... 253... 254... 255... 256... 257... 258... 259... 260... 261... 262... 263... 264... 265... 266... 267... 268... 269... 270... 271... 272... 273... 274... 275... 276... 277... 278... 279... 280... 281... 282... 283... 284... 285... 286... 287... 288... 289... 290... 291... 292... 293... 294... 295... 296... 297... 298... 299... 300... 301... 302... 303... 304... 305... 306... 307... 308... 309... 310... 311... 312... 313... 314... 315... 316... 317... 318... 319... 320... 321... 322... 324..."),_ts(2),__toffee.res=__toffee.out.join(""),__toffee.res};if(typeof __toffee_run_input!="undefined"&&__toffee_run_input!==null)return tmpl.pub(__toffee_run_input)}).call(this) ; -(function(){var tmpl;tmpl=toffee.templates["/comments/input.toffee"]={bundlePath:"/comments/input.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/comments/input.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("\n");_to("Pass 1\n");_ts(2);_ts(1);_to("\n");_to("Pass 2\n");_ts(2);_ts(2);_ts(1);_to("\n");_to("Pass 3");_ts(2);_ts(1);_to("\n");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +(function(){var tmpl;tmpl=toffee.templates["/comments/input.toffee"]={bundlePath:"/comments/input.toffee"},tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/comments/input.toffee");with(__locals)return __toffee.out=[],_ts(1),_ts(1),_to("\n"),_to("Pass 1\n"),_ts(2),_ts(1),_to("\n"),_to("Pass 2\n"),_ts(2),_ts(2),_ts(1),_to("\n"),_to("Pass 3"),_ts(2),_ts(1),_to("\n"),_ts(2),__toffee.res=__toffee.out.join(""),__toffee.res};if(typeof __toffee_run_input!="undefined"&&__toffee_run_input!==null)return tmpl.pub(__toffee_run_input)}).call(this) ; -(function(){var tmpl;tmpl=toffee.templates["/comments/output.toffee"]={bundlePath:"/comments/output.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/comments/output.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("\n");_to("Pass 1\n");_to("\n");_to("Pass 2\n");_to("\n");_to("Pass 3\n");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +(function(){var tmpl;tmpl=toffee.templates["/comments/output.toffee"]={bundlePath:"/comments/output.toffee"},tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/comments/output.toffee");with(__locals)return __toffee.out=[],_ts(1),_ts(1),_to("\n"),_to("Pass 1\n"),_to("\n"),_to("Pass 2\n"),_to("\n"),_to("Pass 3\n"),_ts(2),__toffee.res=__toffee.out.join(""),__toffee.res};if(typeof __toffee_run_input!="undefined"&&__toffee_run_input!==null)return tmpl.pub(__toffee_run_input)}).call(this) ; -(function(){var tmpl;tmpl=toffee.templates["/custom_escape/input.toffee"]={bundlePath:"/custom_escape/input.toffee"};tmpl.pub=function(__locals){var w,x,y,z,_ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/custom_escape/input.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(2);x='"Hello world"';y="";z="click&clack";w=[1,2,{place:"The Dreadfort"}];_ts(1);_to("

      \n");_to(" default x = ");_to(""+(x!=null?escape(x):""));_to("\n");_to(" default y = ");_to(""+(y!=null?escape(y):""));_to("\n");_to(" default z = ");_to(""+(z!=null?escape(z):""));_to("\n");_to(" default w = ");_to(""+(w!=null?escape(w):""));_to("\n");_to("

      \n");_to("

      \n");_to(" raw x = ");_to(""+raw(x));_to("\n");_to(" raw y = ");_to(""+raw(y));_to("\n");_to(" raw z = ");_to(""+raw(z));_to("\n");_to(" raw w = ");_to(""+raw(w));_to("\n");_to("

      \n");_to("\n");_to("

      \n");_ts(2);_ts(2);print(" raw printed x = "+x+"\n");print(" raw printed y = "+y+"\n");print(" raw printed z = "+z+"\n");print(" raw printed w = "+w);_ts(1);_to("\n");_to("

      ");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +(function(){var tmpl;tmpl=toffee.templates["/custom_escape/input.toffee"]={bundlePath:"/custom_escape/input.toffee"},tmpl.pub=function(__locals){var w,x,y,z,_ln,_to,_ts;_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/custom_escape/input.toffee");with(__locals)return __toffee.out=[],_ts(1),_ts(2),x='"Hello world"',y="",z="click&clack",w=[1,2,{place:"The Dreadfort"}],_ts(1),_to("

      \n"),_to(" default x = "),_to(""+(x!=null?escape(x):"")),_to("\n"),_to(" default y = "),_to(""+(y!=null?escape(y):"")),_to("\n"),_to(" default z = "),_to(""+(z!=null?escape(z):"")),_to("\n"),_to(" default w = "),_to(""+(w!=null?escape(w):"")),_to("\n"),_to("

      \n"),_to("

      \n"),_to(" raw x = "),_to(""+raw(x)),_to("\n"),_to(" raw y = "),_to(""+raw(y)),_to("\n"),_to(" raw z = "),_to(""+raw(z)),_to("\n"),_to(" raw w = "),_to(""+raw(w)),_to("\n"),_to("

      \n"),_to("\n"),_to("

      \n"),_ts(2),_ts(2),print(" raw printed x = "+x+"\n"),print(" raw printed y = "+y+"\n"),print(" raw printed z = "+z+"\n"),print(" raw printed w = "+w),_ts(1),_to("\n"),_to("

      "),_ts(2),__toffee.res=__toffee.out.join(""),__toffee.res};if(typeof __toffee_run_input!="undefined"&&__toffee_run_input!==null)return tmpl.pub(__toffee_run_input)}).call(this) ; -(function(){var tmpl;tmpl=toffee.templates["/custom_escape/output.toffee"]={bundlePath:"/custom_escape/output.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/custom_escape/output.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("

      \n");_to(' default x = ["Hello world"]\n');_to(" default y = []\n");_to(" default z = [click&clack]\n");_to(" default w = [1,2,[object Object]]\n");_to("

      \n");_to("

      \n");_to(' raw x = "Hello world"\n');_to(" raw y = \n");_to(" raw z = click&clack\n");_to(" raw w = 1,2,[object Object]\n");_to("

      \n");_to("\n");_to("

      \n");_to(' raw printed x = "Hello world"\n');_to(" raw printed y = \n");_to(" raw printed z = click&clack\n");_to(" raw printed w = 1,2,[object Object]\n");_to("

      ");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +(function(){var tmpl;tmpl=toffee.templates["/custom_escape/output.toffee"]={bundlePath:"/custom_escape/output.toffee"},tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/custom_escape/output.toffee");with(__locals)return __toffee.out=[],_ts(1),_ts(1),_to("

      \n"),_to(' default x = ["Hello world"]\n'),_to(" default y = []\n"),_to(" default z = [click&clack]\n"),_to(" default w = [1,2,[object Object]]\n"),_to("

      \n"),_to("

      \n"),_to(' raw x = "Hello world"\n'),_to(" raw y = \n"),_to(" raw z = click&clack\n"),_to(" raw w = 1,2,[object Object]\n"),_to("

      \n"),_to("\n"),_to("

      \n"),_to(' raw printed x = "Hello world"\n'),_to(" raw printed y = \n"),_to(" raw printed z = click&clack\n"),_to(" raw printed w = 1,2,[object Object]\n"),_to("

      "),_ts(2),__toffee.res=__toffee.out.join(""),__toffee.res};if(typeof __toffee_run_input!="undefined"&&__toffee_run_input!==null)return tmpl.pub(__toffee_run_input)}).call(this) ; -(function(){var tmpl;tmpl=toffee.templates["/eco_compare/input.toffee"]={bundlePath:"/eco_compare/input.toffee"};tmpl.pub=function(__locals){var f,friends,project,_i,_len,_ln,_ref,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/eco_compare/input.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(2);this.projects=[{url:"http://localhost:3000",name:"okcupid",description:"A site for singles"},{url:"http://localhost:3001",name:"tallygram",description:"A site for anyone"}];if(this.projects.length){_ref=this.projects;for(_i=0,_len=_ref.length;_i<_len;_i++){project=_ref[_i];_ts(1);_ts(1);_to("\n");_to(" ");_to(""+escape(project.name));_to("\n");_to("

      ");_to(""+escape(project.description));_to("

      \n");_to(" ");_ts(2)}}else{_ts(1);_ts(1);_to(" No projects ");_ts(2)}friends=[{gender:"f",name:"Jennie"},{gender:"f",name:"Rachel"},{gender:"m",name:"Petar"},{gender:"f",name:"Marissa"}];_ts(1);_to("\n");_to("\n");_to("You have ");_to(""+escape(function(){var _j,_len1,_results;_results=[];for(_j=0,_len1=friends.length;_j<_len1;_j++){f=friends[_j];if(f.gender==="f")_results.push(f)}return _results}().length));_to(" female friends.");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +(function(){var tmpl;tmpl=toffee.templates["/eco_compare/input.toffee"]={bundlePath:"/eco_compare/input.toffee"},tmpl.pub=function(__locals){var f,friends,project,_i,_len,_ln,_ref,_to,_ts;_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/eco_compare/input.toffee");with(__locals){__toffee.out=[],_ts(1),_ts(2),this.projects=[{url:"http://localhost:3000",name:"okcupid",description:"A site for singles"},{url:"http://localhost:3001",name:"tallygram",description:"A site for anyone"}];if(this.projects.length){_ref=this.projects;for(_i=0,_len=_ref.length;_i<_len;_i++)project=_ref[_i],_ts(1),_ts(1),_to("\n"),_to(' '),_to(""+escape(project.name)),_to("\n"),_to("

      "),_to(""+escape(project.description)),_to("

      \n"),_to(" "),_ts(2)}else _ts(1),_ts(1),_to(" No projects "),_ts(2);return friends=[{gender:"f",name:"Jennie"},{gender:"f",name:"Rachel"},{gender:"m",name:"Petar"},{gender:"f",name:"Marissa"}],_ts(1),_to("\n"),_to("\n"),_to("You have "),_to(""+escape(function(){var e,t,n;n=[];for(e=0,t=friends.length;eokcupid\n');_to("

      A site for singles

      \n");_to(" \n");_to(' tallygram\n');_to("

      A site for anyone

      \n");_to(" \n");_to("\n");_to("You have 3 female friends.");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +(function(){var tmpl;tmpl=toffee.templates["/eco_compare/output.toffee"]={bundlePath:"/eco_compare/output.toffee"},tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/eco_compare/output.toffee");with(__locals)return __toffee.out=[],_ts(1),_ts(1),_to("\n"),_to(' okcupid\n'),_to("

      A site for singles

      \n"),_to(" \n"),_to(' tallygram\n'),_to("

      A site for anyone

      \n"),_to(" \n"),_to("\n"),_to("You have 3 female friends."),_ts(2),__toffee.res=__toffee.out.join(""),__toffee.res};if(typeof __toffee_run_input!="undefined"&&__toffee_run_input!==null)return tmpl.pub(__toffee_run_input)}).call(this) ; -(function(){var tmpl;tmpl=toffee.templates["/escape/input.toffee"]={bundlePath:"/escape/input.toffee"};tmpl.pub=function(__locals){var w,x,y,z,_ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/escape/input.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(2);x='"Hello world"';y="
      ";z="click&clack";w=[1,2,{place:"The Dreadfort"}];_ts(1);_to("

      \n");_to(" default x = ");_to(""+(x!=null?escape(x):""));_to("\n");_to(" default y = ");_to(""+(y!=null?escape(y):""));_to("\n");_to(" default z = ");_to(""+(z!=null?escape(z):""));_to("\n");_to(" default w = ");_to(""+(w!=null?escape(w):""));_to("\n");_to(" default r = ");_to(""+(typeof r!=="undefined"&&r!==null?escape(r):""));_to("\n");_to(" default w.foo = ");_to(""+escape(w.foo));_to("\n");_to("

      \n");_to("

      \n");_to(" raw x = ");_to(""+raw(x));_to("\n");_to(" raw y = ");_to(""+raw(y));_to("\n");_to(" raw z = ");_to(""+raw(z));_to("\n");_to(" raw w = ");_to(""+raw(w));_to("\n");_to("

      \n");_to("\n");_to("

      \n");_ts(2);_ts(2);print(" raw printed x = "+x+"\n");print(" raw printed y = "+y+"\n");print(" raw printed z = "+z+"\n");print(" raw printed w = "+w);_ts(1);_to("\n");_to("

      \n");_to("

      \n");_ts(2);_ts(2);print(" json printed x = "+raw(raw(raw(raw(json(x)))))+"\n");print(" json printed y = "+raw(raw(raw(raw(json(y)))))+"\n");print(" json printed z = "+raw(raw(raw(raw(json(z)))))+"\n");print(" json printed w = "+raw(raw(raw(raw(json(w))))));_ts(1);_to("\n");_to("

      \n");_to("

      \n");_ts(2);_ts(2);print(" html printed longhand x = "+__toffee.html(x)+"\n");print(" html printed longhand y = "+__toffee.html(y)+"\n");print(" html printed longhand z = "+__toffee.html(z)+"\n");print(" html printed longhand w = "+__toffee.html(w));_ts(1);_to("\n");_to("

      ");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +(function(){var tmpl;tmpl=toffee.templates["/escape/input.toffee"]={bundlePath:"/escape/input.toffee"},tmpl.pub=function(__locals){var w,x,y,z,_ln,_to,_ts;_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/escape/input.toffee");with(__locals)return __toffee.out=[],_ts(1),_ts(2),x='"Hello world"',y="
      ",z="click&clack",w=[1,2,{place:"The Dreadfort"}],_ts(1),_to("

      \n"),_to(" default x = "),_to(""+(x!=null?escape(x):"")),_to("\n"),_to(" default y = "),_to(""+(y!=null?escape(y):"")),_to("\n"),_to(" default z = "),_to(""+(z!=null?escape(z):"")),_to("\n"),_to(" default w = "),_to(""+(w!=null?escape(w):"")),_to("\n"),_to(" default r = "),_to(""+(typeof r!="undefined"&&r!==null?escape(r):"")),_to("\n"),_to(" default w.foo = "),_to(""+escape(w.foo)),_to("\n"),_to("

      \n"),_to("

      \n"),_to(" raw x = "),_to(""+raw(x)),_to("\n"),_to(" raw y = "),_to(""+raw(y)),_to("\n"),_to(" raw z = "),_to(""+raw(z)),_to("\n"),_to(" raw w = "),_to(""+raw(w)),_to("\n"),_to("

      \n"),_to("\n"),_to("

      \n"),_ts(2),_ts(2),print(" raw printed x = "+x+"\n"),print(" raw printed y = "+y+"\n"),print(" raw printed z = "+z+"\n"),print(" raw printed w = "+w),_ts(1),_to("\n"),_to("

      \n"),_to("

      \n"),_ts(2),_ts(2),print(" json printed x = "+raw(raw(raw(raw(json(x)))))+"\n"),print(" json printed y = "+raw(raw(raw(raw(json(y)))))+"\n"),print(" json printed z = "+raw(raw(raw(raw(json(z)))))+"\n"),print(" json printed w = "+raw(raw(raw(raw(json(w)))))),_ts(1),_to("\n"),_to("

      \n"),_to("

      \n"),_ts(2),_ts(2),print(" html printed longhand x = "+__toffee.html(x)+"\n"),print(" html printed longhand y = "+__toffee.html(y)+"\n"),print(" html printed longhand z = "+__toffee.html(z)+"\n"),print(" html printed longhand w = "+__toffee.html(w)),_ts(1),_to("\n"),_to("

      "),_ts(2),__toffee.res=__toffee.out.join(""),__toffee.res};if(typeof __toffee_run_input!="undefined"&&__toffee_run_input!==null)return tmpl.pub(__toffee_run_input)}).call(this) ; -(function(){var tmpl;tmpl=toffee.templates["/escape/output.toffee"]={bundlePath:"/escape/output.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/escape/output.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("

      \n");_to(" default x = "Hello world"\n");_to(" default y = <hr />\n");_to(" default z = click&clack\n");_to(' default w = [1,2,{"place":"The Dreadfort"}]\n');_to(" default r = \n");_to(" default w.foo = \n");_to("

      \n");_to("

      \n");_to(' raw x = "Hello world"\n');_to(" raw y =


      \n");_to(" raw z = click&clack\n");_to(" raw w = 1,2,[object Object]\n");_to("

      \n");_to("\n");_to("

      \n");_to(' raw printed x = "Hello world"\n');_to(" raw printed y =


      \n");_to(" raw printed z = click&clack\n");_to(" raw printed w = 1,2,[object Object]\n");_to("

      \n");_to("

      \n");_to(' json printed x = "\\"Hello world\\""\n');_to(' json printed y = "\\u003Chr /\\u003E"\n');_to(' json printed z = "click\\u0026clack"\n');_to(' json printed w = [1,2,{"place":"The Dreadfort"}]\n');_to("

      \n");_to("

      \n");_to(" html printed longhand x = "Hello world"\n");_to(" html printed longhand y = <hr />\n");_to(" html printed longhand z = click&clack\n");_to(" html printed longhand w = 1,2,[object Object]\n");_to("

      ");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +(function(){var tmpl;tmpl=toffee.templates["/escape/output.toffee"]={bundlePath:"/escape/output.toffee"},tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/escape/output.toffee");with(__locals)return __toffee.out=[],_ts(1),_ts(1),_to("

      \n"),_to(" default x = "Hello world"\n"),_to(" default y = <hr />\n"),_to(" default z = click&clack\n"),_to(' default w = [1,2,{"place":"The Dreadfort"}]\n'),_to(" default r = \n"),_to(" default w.foo = \n"),_to("

      \n"),_to("

      \n"),_to(' raw x = "Hello world"\n'),_to(" raw y =


      \n"),_to(" raw z = click&clack\n"),_to(" raw w = 1,2,[object Object]\n"),_to("

      \n"),_to("\n"),_to("

      \n"),_to(' raw printed x = "Hello world"\n'),_to(" raw printed y =


      \n"),_to(" raw printed z = click&clack\n"),_to(" raw printed w = 1,2,[object Object]\n"),_to("

      \n"),_to("

      \n"),_to(' json printed x = "\\"Hello world\\""\n'),_to(' json printed y = "\\u003Chr /\\u003E"\n'),_to(' json printed z = "click\\u0026clack"\n'),_to(' json printed w = [1,2,{"place":"The Dreadfort"}]\n'),_to("

      \n"),_to("

      \n"),_to(" html printed longhand x = "Hello world"\n"),_to(" html printed longhand y = <hr />\n"),_to(" html printed longhand z = click&clack\n"),_to(" html printed longhand w = 1,2,[object Object]\n"),_to("

      "),_ts(2),__toffee.res=__toffee.out.join(""),__toffee.res};if(typeof __toffee_run_input!="undefined"&&__toffee_run_input!==null)return tmpl.pub(__toffee_run_input)}).call(this) ; -(function(){var tmpl;tmpl=toffee.templates["/hello_world/input.toffee"]={bundlePath:"/hello_world/input.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/hello_world/input.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to(""+(typeof greeting!=="undefined"&&greeting!==null?escape(greeting):""));_to(", world.");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +(function(){var tmpl;tmpl=toffee.templates["/hello_world/input.toffee"]={bundlePath:"/hello_world/input.toffee"},tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/hello_world/input.toffee");with(__locals)return __toffee.out=[],_ts(1),_ts(1),_to(""+(typeof greeting!="undefined"&&greeting!==null?escape(greeting):"")),_to(", world."),_ts(2),__toffee.res=__toffee.out.join(""),__toffee.res};if(typeof __toffee_run_input!="undefined"&&__toffee_run_input!==null)return tmpl.pub(__toffee_run_input)}).call(this) ; -(function(){var tmpl;tmpl=toffee.templates["/hello_world/output.toffee"]={bundlePath:"/hello_world/output.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/hello_world/output.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("Hello, world.");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +(function(){var tmpl;tmpl=toffee.templates["/hello_world/output.toffee"]={bundlePath:"/hello_world/output.toffee"},tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/hello_world/output.toffee");with(__locals)return __toffee.out=[],_ts(1),_ts(1),_to("Hello, world."),_ts(2),__toffee.res=__toffee.out.join(""),__toffee.res};if(typeof __toffee_run_input!="undefined"&&__toffee_run_input!==null)return tmpl.pub(__toffee_run_input)}).call(this) ; -(function(){var tmpl;tmpl=toffee.templates["/hello_world/temp.toffee"]={bundlePath:"/hello_world/temp.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/hello_world/temp.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("a\n");_to("b\n");_to("c\n");_to(""+escape(passed_fn(100)));_to("\n");_to("d\n");_to("e\n");_to("f");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +(function(){var tmpl;tmpl=toffee.templates["/hello_world/temp.toffee"]={bundlePath:"/hello_world/temp.toffee"},tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/hello_world/temp.toffee");with(__locals)return __toffee.out=[],_ts(1),_ts(1),_to("a\n"),_to("b\n"),_to("c\n"),_to(""+escape(passed_fn(100))),_to("\n"),_to("d\n"),_to("e\n"),_to("f"),_ts(2),__toffee.res=__toffee.out.join(""),__toffee.res};if(typeof __toffee_run_input!="undefined"&&__toffee_run_input!==null)return tmpl.pub(__toffee_run_input)}).call(this) ; -(function(){var tmpl;tmpl=toffee.templates["/include_order/child.toffee"]={bundlePath:"/include_order/child.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/include_order/child.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("a\n");_ts(2);_ts(2);say_hi();_ts(1);_to("\n");_to("b");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +(function(){var tmpl;tmpl=toffee.templates["/include_order/child.toffee"]={bundlePath:"/include_order/child.toffee"},tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/include_order/child.toffee");with(__locals)return __toffee.out=[],_ts(1),_ts(1),_to("a\n"),_ts(2),_ts(2),say_hi(),_ts(1),_to("\n"),_to("b"),_ts(2),__toffee.res=__toffee.out.join(""),__toffee.res};if(typeof __toffee_run_input!="undefined"&&__toffee_run_input!==null)return tmpl.pub(__toffee_run_input)}).call(this) ; -(function(){var tmpl;tmpl=toffee.templates["/include_order/input.toffee"]={bundlePath:"/include_order/input.toffee"};tmpl.pub=function(__locals){var say_hi,_ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/include_order/input.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(2);say_hi=function(){_ts(1);_ts(1);_to("hi");return _ts(2)};_ts(1);_to("1\n");_to("2\n");_to(""+partial("child.toffee",{say_hi:say_hi}));_to("\n");_to("3\n");_to("4");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +(function(){var tmpl;tmpl=toffee.templates["/include_order/input.toffee"]={bundlePath:"/include_order/input.toffee"},tmpl.pub=function(__locals){var say_hi,_ln,_to,_ts;_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/include_order/input.toffee");with(__locals)return __toffee.out=[],_ts(1),_ts(2),say_hi=function(){return _ts(1),_ts(1),_to("hi"),_ts(2)},_ts(1),_to("1\n"),_to("2\n"),_to(""+partial("child.toffee",{say_hi:say_hi})),_to("\n"),_to("3\n"),_to("4"),_ts(2),__toffee.res=__toffee.out.join(""),__toffee.res};if(typeof __toffee_run_input!="undefined"&&__toffee_run_input!==null)return tmpl.pub(__toffee_run_input)}).call(this) ; -(function(){var tmpl;tmpl=toffee.templates["/include_order/output.toffee"]={bundlePath:"/include_order/output.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/include_order/output.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("1\n");_to("2\n");_to("hia\n");_to("\n");_to("b\n");_to("3\n");_to("4");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +(function(){var tmpl;tmpl=toffee.templates["/include_order/output.toffee"]={bundlePath:"/include_order/output.toffee"},tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/include_order/output.toffee");with(__locals)return __toffee.out=[],_ts(1),_ts(1),_to("1\n"),_to("2\n"),_to("hia\n"),_to("\n"),_to("b\n"),_to("3\n"),_to("4"),_ts(2),__toffee.res=__toffee.out.join(""),__toffee.res};if(typeof __toffee_run_input!="undefined"&&__toffee_run_input!==null)return tmpl.pub(__toffee_run_input)}).call(this) ; -(function(){var tmpl;tmpl=toffee.templates["/include_recursion/input.toffee"]={bundlePath:"/include_recursion/input.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/include_recursion/input.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(2);if(countdown===0){_ts(1);_ts(1);_to("blastoff!");_ts(2)}else{print(""+countdown+"..."+partial("input.toffee",{countdown:countdown-1}))}__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +(function(){var tmpl;tmpl=toffee.templates["/include_recursion/input.toffee"]={bundlePath:"/include_recursion/input.toffee"},tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/include_recursion/input.toffee");with(__locals)return __toffee.out=[],_ts(1),_ts(2),countdown===0?(_ts(1),_ts(1),_to("blastoff!"),_ts(2)):print(""+countdown+"..."+partial("input.toffee",{countdown:countdown-1})),__toffee.res=__toffee.out.join(""),__toffee.res};if(typeof __toffee_run_input!="undefined"&&__toffee_run_input!==null)return tmpl.pub(__toffee_run_input)}).call(this) ; -(function(){var tmpl;tmpl=toffee.templates["/include_recursion/output.toffee"]={bundlePath:"/include_recursion/output.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/include_recursion/output.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("10...9...8...7...6...5...4...3...2...1...blastoff!");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +(function(){var tmpl;tmpl=toffee.templates["/include_recursion/output.toffee"]={bundlePath:"/include_recursion/output.toffee"},tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/include_recursion/output.toffee");with(__locals)return __toffee.out=[],_ts(1),_ts(1),_to("10...9...8...7...6...5...4...3...2...1...blastoff!"),_ts(2),__toffee.res=__toffee.out.join(""),__toffee.res};if(typeof __toffee_run_input!="undefined"&&__toffee_run_input!==null)return tmpl.pub(__toffee_run_input)}).call(this) ; -(function(){var tmpl;tmpl=toffee.templates["/include_techniques/input.toffee"]={bundlePath:"/include_techniques/input.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/include_techniques/input.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to(""+partial("message.toffee",{from:"Chris "}));_to("\n");_to(""+partial("message.toffee",{from:"Max & Sam"}));_to("\n");_ts(2);_ts(2);print(partial("message.toffee",{from:"Christian"}));_ts(1);_ts(1);_to(""+partial("message.toffee",{from:"Jennie"}));_ts(2);print(partial("message.toffee",{sender:"The enemy"}));__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +(function(){var tmpl;tmpl=toffee.templates["/include_techniques/input.toffee"]={bundlePath:"/include_techniques/input.toffee"},tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/include_techniques/input.toffee");with(__locals)return __toffee.out=[],_ts(1),_ts(1),_to(""+partial("message.toffee",{from:"Chris "})),_to("\n"),_to(""+partial("message.toffee",{from:"Max & Sam"})),_to("\n"),_ts(2),_ts(2),print(partial("message.toffee",{from:"Christian"})),_ts(1),_ts(1),_to(""+partial("message.toffee",{from:"Jennie"})),_ts(2),print(partial("message.toffee",{sender:"The enemy"})),__toffee.res=__toffee.out.join(""),__toffee.res};if(typeof __toffee_run_input!="undefined"&&__toffee_run_input!==null)return tmpl.pub(__toffee_run_input)}).call(this) ; -(function(){var tmpl;tmpl=toffee.templates["/include_techniques/message.toffee"]={bundlePath:"/include_techniques/message.toffee"};tmpl.pub=function(__locals){var from,_ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/include_techniques/message.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(2);from=from||"Unknown";_ts(1);_to("From: ");_to(""+(from!=null?escape(from):""));_to(" \n");_to("Msg: Hello, world\n");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +(function(){var tmpl;tmpl=toffee.templates["/include_techniques/message.toffee"]={bundlePath:"/include_techniques/message.toffee"},tmpl.pub=function(__locals){var from,_ln,_to,_ts;_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/include_techniques/message.toffee");with(__locals)return __toffee.out=[],_ts(1),_ts(2),from=from||"Unknown",_ts(1),_to("From: "),_to(""+(from!=null?escape(from):"")),_to(" \n"),_to("Msg: Hello, world\n"),_ts(2),__toffee.res=__toffee.out.join(""),__toffee.res};if(typeof __toffee_run_input!="undefined"&&__toffee_run_input!==null)return tmpl.pub(__toffee_run_input)}).call(this) ; -(function(){var tmpl;tmpl=toffee.templates["/include_techniques/output.toffee"]={bundlePath:"/include_techniques/output.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/include_techniques/output.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("From: Chris <ccoyne77@gmail> \n");_to("Msg: Hello, world\n");_to("\n");_to("From: Max & Sam \n");_to("Msg: Hello, world\n");_to("\n");_to("From: Christian \n");_to("Msg: Hello, world\n");_to("From: Jennie \n");_to("Msg: Hello, world\n");_to("From: Unknown \n");_to("Msg: Hello, world\n");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +(function(){var tmpl;tmpl=toffee.templates["/include_techniques/output.toffee"]={bundlePath:"/include_techniques/output.toffee"},tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/include_techniques/output.toffee");with(__locals)return __toffee.out=[],_ts(1),_ts(1),_to("From: Chris <ccoyne77@gmail> \n"),_to("Msg: Hello, world\n"),_to("\n"),_to("From: Max & Sam \n"),_to("Msg: Hello, world\n"),_to("\n"),_to("From: Christian \n"),_to("Msg: Hello, world\n"),_to("From: Jennie \n"),_to("Msg: Hello, world\n"),_to("From: Unknown \n"),_to("Msg: Hello, world\n"),_ts(2),__toffee.res=__toffee.out.join(""),__toffee.res};if(typeof __toffee_run_input!="undefined"&&__toffee_run_input!==null)return tmpl.pub(__toffee_run_input)}).call(this) ; -(function(){var tmpl;tmpl=toffee.templates["/indent_attack/input.toffee"]={bundlePath:"/indent_attack/input.toffee"};tmpl.pub=function(__locals){var i,square,x,_i,_j,_ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/indent_attack/input.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("
      \n");_to(" ");_ts(2);_ts(2);if(1===1){if(2===2){if(3===3){_ts(1);_ts(1);_to("Pass1");_ts(2)}}}if(1===1){if(2===3){if(3===3){_ts(1);_ts(1);_to("Fail");_ts(2)}else{_ts(1);_ts(1);_to("Fail");_ts(2)}}else{if(2===2){if(3===3){_ts(1);_ts(1);_to("Pass2");_ts(2)}}}}_ts(1);_to("\n");_to("
      \n");_to("\n");_ts(2);_ts(2);if(1===1){if(2===2){if(3===3){_ts(1);_ts(1);_to("Pass3");_ts(2)}}}if(1===1){if(2===3){if(3===3){_ts(1);_ts(1);_to("Fail");_ts(2)}else{_ts(1);_ts(1);_to("Fail");_ts(2)}}else{if(2===2){if(3===3){_ts(1);_ts(1);_to("Pass4");_ts(2)}}}}_ts(1);_to("\n");_to("
      \n");_to("\n");_ts(2);_ts(2);if(10===10){if(20===20){if(30===30){_ts(1);_ts(1);_to("Pass5");_ts(2)}}}if(10===10){if(20===30){if(30===30){_ts(1);_ts(1);_to("Fail");_ts(2)}else{_ts(1);_ts(1);_to("Fail");_ts(2)}}else{if(20===20){if(30===30){_ts(1);_ts(1);_to("Pass6");_ts(2)}}}}_ts(1);_to("\n");_to("\n");_ts(2);_ts(2);if(99===99){print("Pass7")}else{print("Fail");_ts(1);_ts(1);_to("Fail8");_ts(2)}_ts(1);_ts(1);_to("Pass8");_ts(2);_ts(1);_to("\n");_to("\n");_ts(2);_ts(2);_ts(1);_ts(1);_to("...passed with flying colors.");_ts(2);_ts(1);_to("\n");_to("

      \n");_to(" ");_ts(2);_ts(2);x=20;if(x>1){for(i=_i=12;12<=x?_ix;i=12<=x?++_i:--_i){square=16;_ts(1);_ts(1);_to("Pass");_to(""+(i!=null?escape(i):""));_ts(2);_ts(2);if(i===square){_ts(1);_ts(1);_to("(a perfect square)");_ts(2)}}}_ts(1);_to("\n");_to(" ");_ts(2);_ts(2);x=20;if(x>1){for(i=_j=12;12<=x?_jx;i=12<=x?++_j:--_j){square=16}_ts(1);_ts(1);_to("Pass");_to(""+(i!=null?escape(i):""));_ts(2);_ts(2);if(i===square){_ts(1);_ts(1);_to("(a perfect square)");_ts(2)}}_ts(1);_to("\n");_to("

      ");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +(function(){var tmpl;tmpl=toffee.templates["/indent_attack/input.toffee"]={bundlePath:"/indent_attack/input.toffee"},tmpl.pub=function(__locals){var i,square,x,_i,_j,_ln,_to,_ts;_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/indent_attack/input.toffee");with(__locals){__toffee.out=[],_ts(1),_ts(1),_to("
      \n"),_to(" "),_ts(2),_ts(2),_ts(1),_ts(1),_to("Pass1"),_ts(2),_ts(1),_ts(1),_to("Pass2"),_ts(2),_ts(1),_to("\n"),_to("
      \n"),_to("\n"),_ts(2),_ts(2),_ts(1),_ts(1),_to("Pass3"),_ts(2),_ts(1),_ts(1),_to("Pass4"),_ts(2),_ts(1),_to("\n"),_to("
      \n"),_to("\n"),_ts(2),_ts(2),_ts(1),_ts(1),_to("Pass5"),_ts(2),_ts(1),_ts(1),_to("Pass6"),_ts(2),_ts(1),_to("\n"),_to("\n"),_ts(2),_ts(2),print("Pass7"),_ts(1),_ts(1),_to("Pass8"),_ts(2),_ts(1),_to("\n"),_to("\n"),_ts(2),_ts(2),_ts(1),_ts(1),_to("...passed with flying colors."),_ts(2),_ts(1),_to("\n"),_to("

      \n"),_to(" "),_ts(2),_ts(2),x=20;if(x>1)for(i=_i=12;12<=x?_ix;i=12<=x?++_i:--_i)square=16,_ts(1),_ts(1),_to("Pass"),_to(""+(i!=null?escape(i):"")),_ts(2),_ts(2),i===square&&(_ts(1),_ts(1),_to("(a perfect square)"),_ts(2));_ts(1),_to("\n"),_to(" "),_ts(2),_ts(2),x=20;if(x>1){for(i=_j=12;12<=x?_jx;i=12<=x?++_j:--_j)square=16;_ts(1),_ts(1),_to("Pass"),_to(""+(i!=null?escape(i):"")),_ts(2),_ts(2),i===square&&(_ts(1),_ts(1),_to("(a perfect square)"),_ts(2))}return _ts(1),_to("\n"),_to("

      "),_ts(2),__toffee.res=__toffee.out.join(""),__toffee.res}};if(typeof __toffee_run_input!="undefined"&&__toffee_run_input!==null)return tmpl.pub(__toffee_run_input)}).call(this) ; -(function(){var tmpl;tmpl=toffee.templates["/indent_attack/output.toffee"]={bundlePath:"/indent_attack/output.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/indent_attack/output.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("
      \n");_to(" Pass1Pass2\n");_to("
      \n");_to("\n");_to("Pass3Pass4\n");_to("
      \n");_to("\n");_to("Pass5Pass6\n");_to("\n");_to("Pass7Pass8\n");_to("\n");_to("...passed with flying colors.\n");_to("

      \n");_to(" Pass12Pass13Pass14Pass15Pass16(a perfect square)Pass17Pass18Pass19\n");_to(" Pass20\n");_to("

      ");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +(function(){var tmpl;tmpl=toffee.templates["/indent_attack/output.toffee"]={bundlePath:"/indent_attack/output.toffee"},tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/indent_attack/output.toffee");with(__locals)return __toffee.out=[],_ts(1),_ts(1),_to("
      \n"),_to(" Pass1Pass2\n"),_to("
      \n"),_to("\n"),_to("Pass3Pass4\n"),_to("
      \n"),_to("\n"),_to("Pass5Pass6\n"),_to("\n"),_to("Pass7Pass8\n"),_to("\n"),_to("...passed with flying colors.\n"),_to("

      \n"),_to(" Pass12Pass13Pass14Pass15Pass16(a perfect square)Pass17Pass18Pass19\n"),_to(" Pass20\n"),_to("

      "),_ts(2),__toffee.res=__toffee.out.join(""),__toffee.res};if(typeof __toffee_run_input!="undefined"&&__toffee_run_input!==null)return tmpl.pub(__toffee_run_input)}).call(this) ; -(function(){var tmpl;tmpl=toffee.templates["/junk/input.toffee"]={bundlePath:"/junk/input.toffee"};tmpl.pub=function(__locals){var supplies,supply,_i,_len,_ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/junk/input.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(2);supplies=["broom","mop","vacuum"];_ts(1);_to("
        \n");_to(" ");_ts(2);_ts(2);for(_i=0,_len=supplies.length;_i<_len;_i++){supply=supplies[_i];_ts(1);_ts(1);_to("
      • ");_to(""+(supply!=null?escape(supply):""));_to("
      • ");_ts(2)}_ts(1);_to("\n");_to("
      ");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +(function(){var tmpl;tmpl=toffee.templates["/junk/input.toffee"]={bundlePath:"/junk/input.toffee"},tmpl.pub=function(__locals){var supplies,supply,_i,_len,_ln,_to,_ts;_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/junk/input.toffee");with(__locals){__toffee.out=[],_ts(1),_ts(2),supplies=["broom","mop","vacuum"],_ts(1),_to("
        \n"),_to(" "),_ts(2),_ts(2);for(_i=0,_len=supplies.length;_i<_len;_i++)supply=supplies[_i],_ts(1),_ts(1),_to("
      • "),_to(""+(supply!=null?escape(supply):"")),_to("
      • "),_ts(2);return _ts(1),_to("\n"),_to("
      "),_ts(2),__toffee.res=__toffee.out.join(""),__toffee.res}};if(typeof __toffee_run_input!="undefined"&&__toffee_run_input!==null)return tmpl.pub(__toffee_run_input)}).call(this) ; -(function(){var tmpl;tmpl=toffee.templates["/junk/output.toffee"]={bundlePath:"/junk/output.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/junk/output.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("
        \n");_to("
      • broom
      • mop
      • vacuum
      • \n");_to("
      ");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +(function(){var tmpl;tmpl=toffee.templates["/junk/output.toffee"]={bundlePath:"/junk/output.toffee"},tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/junk/output.toffee");with(__locals)return __toffee.out=[],_ts(1),_ts(1),_to("
        \n"),_to("
      • broom
      • mop
      • vacuum
      • \n"),_to("
      "),_ts(2),__toffee.res=__toffee.out.join(""),__toffee.res};if(typeof __toffee_run_input!="undefined"&&__toffee_run_input!==null)return tmpl.pub(__toffee_run_input)}).call(this) ; -(function(){var tmpl;tmpl=toffee.templates["/lambda_fns/input.toffee"]={bundlePath:"/lambda_fns/input.toffee"};tmpl.pub=function(__locals){var echo_it,print_it,print_it_twice,_ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/lambda_fns/input.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(2);print_it=function(msg){_ts(1);_ts(1);_to(""+(msg!=null?escape(msg):""));return _ts(2)};print_it_twice=function(msg){var m;_ts(1);_ts(1);_to(""+(msg!=null?escape(msg):""));_ts(2);m=msg;_ts(1);_ts(1);_to(""+(m!=null?escape(m):""));return _ts(2)};echo_it=function(msg){var v;v=msg;return v};print_it("Pass");print_it_twice("Pass");print(echo_it("Pass"));__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +(function(){var tmpl;tmpl=toffee.templates["/lambda_fns/input.toffee"]={bundlePath:"/lambda_fns/input.toffee"},tmpl.pub=function(__locals){var echo_it,print_it,print_it_twice,_ln,_to,_ts;_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/lambda_fns/input.toffee");with(__locals)return __toffee.out=[],_ts(1),_ts(2),print_it=function(e){return _ts(1),_ts(1),_to(""+(e!=null?escape(e):"")),_ts(2)},print_it_twice=function(e){var t;return _ts(1),_ts(1),_to(""+(e!=null?escape(e):"")),_ts(2),t=e,_ts(1),_ts(1),_to(""+(t!=null?escape(t):"")),_ts(2)},echo_it=function(e){var t;return t=e,t},print_it("Pass"),print_it_twice("Pass"),print(echo_it("Pass")),__toffee.res=__toffee.out.join(""),__toffee.res};if(typeof __toffee_run_input!="undefined"&&__toffee_run_input!==null)return tmpl.pub(__toffee_run_input)}).call(this) ; -(function(){var tmpl;tmpl=toffee.templates["/lambda_fns/output.toffee"]={bundlePath:"/lambda_fns/output.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/lambda_fns/output.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("PassPassPassPass");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +(function(){var tmpl;tmpl=toffee.templates["/lambda_fns/output.toffee"]={bundlePath:"/lambda_fns/output.toffee"},tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/lambda_fns/output.toffee");with(__locals)return __toffee.out=[],_ts(1),_ts(1),_to("PassPassPassPass"),_ts(2),__toffee.res=__toffee.out.join(""),__toffee.res};if(typeof __toffee_run_input!="undefined"&&__toffee_run_input!==null)return tmpl.pub(__toffee_run_input)}).call(this) ; -(function(){var tmpl;tmpl=toffee.templates["/multiline_interpolation/foo.toffee"]={bundlePath:"/multiline_interpolation/foo.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/multiline_interpolation/foo.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to(""+(typeof a!=="undefined"&&a!==null?escape(a):""));_to(" ");_to(""+(typeof b!=="undefined"&&b!==null?escape(b):""));_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +(function(){var tmpl;tmpl=toffee.templates["/multiline_interpolation/foo.toffee"]={bundlePath:"/multiline_interpolation/foo.toffee"},tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/multiline_interpolation/foo.toffee");with(__locals)return __toffee.out=[],_ts(1),_ts(1),_to(""+(typeof a!="undefined"&&a!==null?escape(a):"")),_to(" "),_to(""+(typeof b!="undefined"&&b!==null?escape(b):"")),_ts(2),__toffee.res=__toffee.out.join(""),__toffee.res};if(typeof __toffee_run_input!="undefined"&&__toffee_run_input!==null)return tmpl.pub(__toffee_run_input)}).call(this) ; -(function(){var tmpl;tmpl=toffee.templates["/multiline_interpolation/input.toffee"]={bundlePath:"/multiline_interpolation/input.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/multiline_interpolation/input.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to(""+escape("Hello, "+"world"));_to("\n");_to("
      \n");_to(""+partial("foo.toffee",{a:"Goodbye"+",",b:"world"}));_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +(function(){var tmpl;tmpl=toffee.templates["/multiline_interpolation/input.toffee"]={bundlePath:"/multiline_interpolation/input.toffee"},tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/multiline_interpolation/input.toffee");with(__locals)return __toffee.out=[],_ts(1),_ts(1),_to(""+escape("Hello, world")),_to("\n"),_to("
      \n"),_to(""+partial("foo.toffee",{a:"Goodbye,",b:"world"})),_ts(2),__toffee.res=__toffee.out.join(""),__toffee.res};if(typeof __toffee_run_input!="undefined"&&__toffee_run_input!==null)return tmpl.pub(__toffee_run_input)}).call(this) ; -(function(){var tmpl;tmpl=toffee.templates["/multiline_interpolation/output.toffee"]={bundlePath:"/multiline_interpolation/output.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/multiline_interpolation/output.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("Hello, world\n");_to("
      \n");_to("Goodbye, world");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +(function(){var tmpl;tmpl=toffee.templates["/multiline_interpolation/output.toffee"]={bundlePath:"/multiline_interpolation/output.toffee"},tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/multiline_interpolation/output.toffee");with(__locals)return __toffee.out=[],_ts(1),_ts(1),_to("Hello, world\n"),_to("
      \n"),_to("Goodbye, world"),_ts(2),__toffee.res=__toffee.out.join(""),__toffee.res};if(typeof __toffee_run_input!="undefined"&&__toffee_run_input!==null)return tmpl.pub(__toffee_run_input)}).call(this) ; -(function(){var tmpl;tmpl=toffee.templates["/plaintext/input.toffee"]={bundlePath:"/plaintext/input.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/plaintext/input.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("Hi there.");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +(function(){var tmpl;tmpl=toffee.templates["/plaintext/input.toffee"]={bundlePath:"/plaintext/input.toffee"},tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/plaintext/input.toffee");with(__locals)return __toffee.out=[],_ts(1),_ts(1),_to("Hi there."),_ts(2),__toffee.res=__toffee.out.join(""),__toffee.res};if(typeof __toffee_run_input!="undefined"&&__toffee_run_input!==null)return tmpl.pub(__toffee_run_input)}).call(this) ; -(function(){var tmpl;tmpl=toffee.templates["/plaintext/output.toffee"]={bundlePath:"/plaintext/output.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/plaintext/output.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("Hi there.");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +(function(){var tmpl;tmpl=toffee.templates["/plaintext/output.toffee"]={bundlePath:"/plaintext/output.toffee"},tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/plaintext/output.toffee");with(__locals)return __toffee.out=[],_ts(1),_ts(1),_to("Hi there."),_ts(2),__toffee.res=__toffee.out.join(""),__toffee.res};if(typeof __toffee_run_input!="undefined"&&__toffee_run_input!==null)return tmpl.pub(__toffee_run_input)}).call(this) ; -(function(){var tmpl;tmpl=toffee.templates["/snippets/foo/bar/body.toffee"]={bundlePath:"/snippets/foo/bar/body.toffee"};tmpl.pub=function(__locals){var msg,_ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/snippets/foo/bar/body.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(2);msg=msg||"Unknown message";print(msg);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +(function(){var tmpl;tmpl=toffee.templates["/snippets/foo/bar/body.toffee"]={bundlePath:"/snippets/foo/bar/body.toffee"},tmpl.pub=function(__locals){var msg,_ln,_to,_ts;_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/snippets/foo/bar/body.toffee");with(__locals)return __toffee.out=[],_ts(1),_ts(2),msg=msg||"Unknown message",print(msg),__toffee.res=__toffee.out.join(""),__toffee.res};if(typeof __toffee_run_input!="undefined"&&__toffee_run_input!==null)return tmpl.pub(__toffee_run_input)}).call(this) ; -(function(){var tmpl;tmpl=toffee.templates["/snippets/foo/message.toffee"]={bundlePath:"/snippets/foo/message.toffee"};tmpl.pub=function(__locals){var from,msg,_ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/snippets/foo/message.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(2);from=from||"Unknown sender";msg=msg||"Unknown message.";print("From: "+from+"\n"+snippet("./bar/body.toffee",{msg:msg}));__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +(function(){var tmpl;tmpl=toffee.templates["/snippets/foo/message.toffee"]={bundlePath:"/snippets/foo/message.toffee"},tmpl.pub=function(__locals){var from,msg,_ln,_to,_ts;_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/snippets/foo/message.toffee");with(__locals)return __toffee.out=[],_ts(1),_ts(2),from=from||"Unknown sender",msg=msg||"Unknown message.",print("From: "+from+"\n"+snippet("./bar/body.toffee",{msg:msg})),__toffee.res=__toffee.out.join(""),__toffee.res};if(typeof __toffee_run_input!="undefined"&&__toffee_run_input!==null)return tmpl.pub(__toffee_run_input)}).call(this) ; -(function(){var tmpl;tmpl=toffee.templates["/snippets/input.toffee"]={bundlePath:"/snippets/input.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/snippets/input.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to(""+partial("./foo/message.toffee"));_to("\n");_to(""+escape(snippet("./foo/message.toffee")));_to("\n");_to(""+partial("./foo/message.toffee",{from:"Sam"}));_to("\n");_to(""+escape(snippet("./foo/message.toffee",{from:"Max"})));_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +(function(){var tmpl;tmpl=toffee.templates["/snippets/input.toffee"]={bundlePath:"/snippets/input.toffee"},tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/snippets/input.toffee");with(__locals)return __toffee.out=[],_ts(1),_ts(1),_to(""+partial("./foo/message.toffee")),_to("\n"),_to(""+escape(snippet("./foo/message.toffee"))),_to("\n"),_to(""+partial("./foo/message.toffee",{from:"Sam"})),_to("\n"),_to(""+escape(snippet("./foo/message.toffee",{from:"Max"}))),_ts(2),__toffee.res=__toffee.out.join(""),__toffee.res};if(typeof __toffee_run_input!="undefined"&&__toffee_run_input!==null)return tmpl.pub(__toffee_run_input)}).call(this) ; -(function(){var tmpl;tmpl=toffee.templates["/snippets/output.toffee"]={bundlePath:"/snippets/output.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/snippets/output.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("From: Preloaded sender\n");_to("Preloaded message.\n");_to("From: Unknown sender\n");_to("Unknown message.\n");_to("From: Sam\n");_to("Preloaded message.\n");_to("From: Max\n");_to("Unknown message.");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +(function(){var tmpl;tmpl=toffee.templates["/snippets/output.toffee"]={bundlePath:"/snippets/output.toffee"},tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/snippets/output.toffee");with(__locals)return __toffee.out=[],_ts(1),_ts(1),_to("From: Preloaded sender\n"),_to("Preloaded message.\n"),_to("From: Unknown sender\n"),_to("Unknown message.\n"),_to("From: Sam\n"),_to("Preloaded message.\n"),_to("From: Max\n"),_to("Unknown message."),_ts(2),__toffee.res=__toffee.out.join(""),__toffee.res};if(typeof __toffee_run_input!="undefined"&&__toffee_run_input!==null)return tmpl.pub(__toffee_run_input)}).call(this) ; -(function(){var tmpl;tmpl=toffee.templates["/special_cases/input.toffee"]={bundlePath:"/special_cases/input.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/special_cases/input.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("\n");_ts(2);_ts(2);_ts(1);_ts(1);_to('"'+"PASSED"+'"');_ts(2);_ts(1);_to("\n");_ts(2);_ts(1);_to("\n");_to("

      \n");_to(" ");_to(""+print(""+"click & clack"+""));_to("\n");_to("

      \n");_ts(2);_ts(1);_to("\n");_to("A backslash is a \\\n");_to("");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) +(function(){var tmpl;tmpl=toffee.templates["/special_cases/input.toffee"]={bundlePath:"/special_cases/input.toffee"},tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/special_cases/input.toffee");with(__locals)return __toffee.out=[],_ts(1),_ts(1),_to("\n"),_ts(2),_ts(2),_ts(1),_ts(1),_to('"PASSED"'),_ts(2),_ts(1),_to("\n"),_ts(2),_ts(1),_to("\n"),_to("

      \n"),_to(" "),_to(""+print("click & clack")),_to("\n"),_to("

      \n"),_ts(2),_ts(1),_to("\n"),_to("A backslash is a \\\n"),_to(""),_ts(2),__toffee.res=__toffee.out.join(""),__toffee.res};if(typeof __toffee_run_input!="undefined"&&__toffee_run_input!==null)return tmpl.pub(__toffee_run_input)}).call(this) ; -(function(){var tmpl;tmpl=toffee.templates["/special_cases/output.toffee"]={bundlePath:"/special_cases/output.toffee"};tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(x){return __locals.__toffee.out.push(x)};_ln=function(x){return __locals.__toffee.lineno=x};_ts=function(x){return __locals.__toffee.state=x};toffee.__augmentLocals(__locals,"/special_cases/output.toffee");with(__locals){__toffee.out=[];_ts(1);_ts(1);_to("\n");_to('"'+'PASSED"\n');_to("\n");_to("

      \n");_to(" click & clack\n");_to("

      \n");_to("\n");_to("A backslash is a \\\n");_to("");_ts(2);__toffee.res=__toffee.out.join("");return __toffee.res;return true}};if(typeof __toffee_run_input!=="undefined"&&__toffee_run_input!==null){return tmpl.pub(__toffee_run_input)}}).call(this) \ No newline at end of file +(function(){var tmpl;tmpl=toffee.templates["/special_cases/output.toffee"]={bundlePath:"/special_cases/output.toffee"},tmpl.pub=function(__locals){var _ln,_to,_ts;_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/special_cases/output.toffee");with(__locals)return __toffee.out=[],_ts(1),_ts(1),_to("\n"),_to('"PASSED"\n'),_to("\n"),_to("

      \n"),_to(" click & clack\n"),_to("

      \n"),_to("\n"),_to("A backslash is a \\\n"),_to(""),_ts(2),__toffee.res=__toffee.out.join(""),__toffee.res};if(typeof __toffee_run_input!="undefined"&&__toffee_run_input!==null)return tmpl.pub(__toffee_run_input)}).call(this) \ No newline at end of file diff --git a/test/run_cases.coffee b/test/run_cases.coffee index 102b704..67651fc 100644 --- a/test/run_cases.coffee +++ b/test/run_cases.coffee @@ -17,7 +17,8 @@ minimized_engine = new engine({ run_case_dir = (eng, dir, cb) -> expected = fs.readFileSync "#{dir}/output.toffee", "utf8" - if path.existsSync "#{dir}/vars.js" + existsSync = if path.existsSync? then path.existsSync else fs.existsSync + if existsSync "#{dir}/vars.js" vars = fs.readFileSync "#{dir}/vars.js", "utf8" vars = eval "(#{vars})" else From 038adad097ff45c0f2d09931ef0ecee5bdf538fb Mon Sep 17 00:00:00 2001 From: "ccoyne77@gmail.com" Date: Wed, 5 Sep 2012 15:38:18 -0400 Subject: [PATCH 033/132] toffee.js added, which defines headers if you want to include them separately from templates in the browser --- toffee.js | 1 + 1 file changed, 1 insertion(+) create mode 100644 toffee.js diff --git a/toffee.js b/toffee.js new file mode 100644 index 0000000..99d6cbf --- /dev/null +++ b/toffee.js @@ -0,0 +1 @@ +var toffee;if(typeof toffee=="undefined"||toffee===null)toffee={};toffee.templates||(toffee.templates={}),toffee.states={TOFFEE:1,COFFEE:2},toffee.__json=function(e,t){return t==null?"null":""+JSON.stringify(t).replace(//g,"\\u003E").replace(/&/g,"\\u0026")},toffee.__raw=function(e,t){return t},toffee.__html=function(e,t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")},toffee.__escape=function(e,t){return e.__toffee.autoEscape==null||e.__toffee.autoEscape?t===void 0?"":t!=null&&typeof t=="object"?e.json(t):e.html(t):t},toffee.__augmentLocals=function(e,t){var n,r;return n=e,r=n.__toffee={out:[]},n.print==null&&(n.print=function(e){return toffee.__print(n,e)}),n.json==null&&(n.json=function(e){return toffee.__json(n,e)}),n.raw==null&&(n.raw=function(e){return toffee.__raw(n,e)}),n.html==null&&(n.html=function(e){return toffee.__html(n,e)}),n.escape==null&&(n.escape=function(e){return toffee.__escape(n,e)}),n.partial==null&&(n.partial=function(e,r){return toffee.__partial(toffee.templates[""+t],n,e,r)}),n.snippet==null&&(n.snippet=function(e,r){return toffee.__snippet(toffee.templates[""+t],n,e,r)}),r.print=n.print,r.json=n.json,r.raw=n.raw,r.html=n.html,r.escape=n.escape,r.partial=n.partial,r.snippet=n.snippet},toffee.__print=function(e,t){return e.__toffee.state===toffee.states.COFFEE?(e.__toffee.out.push(t),""):""+t},toffee.__normalize=function(e){var t,n,r,i,s;if(e==null||e==="/")return e;r=e.split("/"),t=[],r[0]&&t.push("");for(i=0,s=r.length;i1?t.pop():t.push(n):n!=="."&&t.push(n);return e=t.join("/"),e||(e="/"),e},toffee.__partial=function(e,t,n,r){return n=toffee.__normalize(e.bundlePath+"/../"+n),toffee.__inlineInclude(n,r,t)},toffee.__snippet=function(e,t,n,r){return n=toffee.__normalize(e.bundlePath+"/../"+n),r=r!=null?r:{},r.__toffee=r.__toffee||{},r.__toffee.noInheritance=!0,toffee.__inlineInclude(n,r,t)},toffee.__inlineInclude=function(e,t,n){var r,i,s;i=t||{},i.__toffee=i.__toffee||{};if(!i.__toffee.noInheritance)for(r in n)s=n[r],(t!=null?t[r]:void 0)==null&&r!=="print"&&r!=="partial"&&r!=="snippet"&&r!=="layout"&&r!=="__toffee"&&(i[r]=s);return toffee.templates[e]?toffee.templates[e].pub(i):"Inline toffee include: Could not find "+e} \ No newline at end of file From 3c0eb36312356075a96cc855831a8109450f9914 Mon Sep 17 00:00:00 2001 From: "ccoyne77@gmail.com" Date: Wed, 5 Sep 2012 15:39:23 -0400 Subject: [PATCH 034/132] more browser compile options --- Cakefile | 27 +++++++++----- lib/command_line.js | 24 +++++++++---- package.json | 2 +- src/command_line.coffee | 35 +++++++++++++------ .../express3/public/javascripts/test_cases.js | 2 -- test/express3/public/javascripts/toffee.js | 1 + test/express3/views/index.toffee | 1 + 7 files changed, 64 insertions(+), 28 deletions(-) create mode 100644 test/express3/public/javascripts/toffee.js diff --git a/Cakefile b/Cakefile index 8e9d3c5..6384da8 100644 --- a/Cakefile +++ b/Cakefile @@ -1,7 +1,8 @@ -{spawn, exec} = require 'child_process' -fs = require 'fs' -jison = require 'jison' -path = require 'path' +{spawn, exec} = require 'child_process' +fs = require 'fs' +jison = require 'jison' +path = require 'path' +{getCommonHeadersJs} = require './lib/view' task 'build', 'build the whole jam', (cb) -> console.log "Building" @@ -11,9 +12,10 @@ task 'build', 'build the whole jam', (cb) -> buildParser -> runCoffee ['-c', '-o', 'lib/'].concat(files), -> runCoffee ['-c', 'index.coffee'], -> - generateExpressTest -> - console.log "Done building." - cb() if typeof cb is 'function' + buildCommonHeaders -> + generateExpressTest -> + console.log "Done building." + cb() if typeof cb is 'function' runCoffee = (args, cb) -> proc = spawn 'coffee', args @@ -40,23 +42,32 @@ buildParser = (cb) -> fs.writeFileSync "./lib/#{file_name}", source cb() +buildCommonHeaders = (cb) -> + headers = getCommonHeadersJs true, true + fs.writeFileSync "./toffee.js", headers, "utf8" + cb() + generateExpressTest = (cb) -> # generate the JS file bundling all the tests - proc = spawn 'coffee', ['./src/command_line.coffee', '-m', './test/cases', '-o', './test/express3/public/javascripts/test_cases.js'] + proc = spawn 'coffee', ['./src/command_line.coffee', '-n', '-m', './test/cases', '-o', './test/express3/public/javascripts/test_cases.js'] proc.stderr.on 'data', (buffer) -> console.log buffer.toString() proc.stdout.on 'data', (buffer) -> console.log buffer.toString() proc.on 'exit', (status) -> process.exit(1) if status isnt 0 cb() if typeof cb is 'function' + headers = getCommonHeadersJs true, true + fs.writeFileSync "./test/express3/public/javascripts/toffee.js", headers, "utf8" + # generate an index page that tests them all test_page = """ Test Toffee in the browser + - - - - - """ - - case_dirs = fs.readdirSync "./test/cases/" - - for dir,i in case_dirs - if dir isnt "custom_escape" # a special case since this isn't actually JSON - expected_output = fs.readFileSync "./test/cases/#{dir}/output.toffee", "utf8" - if path.existsSync "./test/cases/#{dir}/vars.js" - vars = fs.readFileSync "./test/cases/#{dir}/vars.js", "utf8" - else - vars = "{}" - rid = i - test_page += """ - \n\n\n - - - - - - - - - - - \n\n\n - """ - - test_page += """ -
      FILEEXPECTED OUTPUTSERVER RENDERBROWSER RENDER
      #{dir}#{expected_output}\#{partial '../../cases/#{dir}/input.toffee', #{vars}}
      - - - """ - fs.writeFileSync "./test/express3/views/index.toffee", test_page, "utf8" \ No newline at end of file diff --git a/README.md b/README.md index 2838547..aaac64c 100644 --- a/README.md +++ b/README.md @@ -408,13 +408,12 @@ Also, I'm likely to accept good pull requests. If you'd like to edit code for this project, note that you should always edit the `.coffee` files, as the `.js` files are generated automatically by building. -To build +To build and test your changes + ``` > cake build +> cake test ``` -To make sure you didn't break something -``` -> coffee tests/run_cases.coffee -``` + diff --git a/package.json b/package.json index 8711420..b53cf31 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,9 @@ "mkdirp": "*" }, "devDependencies": { - "jison" : "*" + "jison" : "*", + "zombie": "*", + "assert": "*" }, "repository": { "type": "git", diff --git a/test/express3/app.coffee b/test/express3/app.coffee index 32370c7..5f3ec68 100644 --- a/test/express3/app.coffee +++ b/test/express3/app.coffee @@ -1,32 +1,40 @@ -express = require 'express' -routes = require './routes' -http = require 'http' -toffee = require 'toffee' - -app = express() - - -app.configure -> - - toffee.expressEngine.verbose = true - #toffee.expressEngine.autoEscape = false - toffee.expressEngine.prettyPrintErrors = false - - app.set 'port', process.env.PORT or 3033 - app.set 'views', __dirname + '/views' - app.set 'view engine', 'toffee' - app.use express.favicon() - app.use express.logger 'dev' - app.use express.bodyParser() - app.use express.methodOverride() - app.use app.router - app.use express.static __dirname + '/public' - -app.configure 'development', -> - app.use express.errorHandler() - -app.get '/', routes.index - -http.createServer(app).listen app.get('port'), -> - console.log "Express server listening on port #{app.get('port')}" \ No newline at end of file +run = (cb) -> + express = require 'express' + routes = require './routes' + http = require 'http' + toffee = require 'toffee' + + app = express() + + + app.configure -> + + toffee.expressEngine.verbose = not module.parent + toffee.expressEngine.prettyPrintErrors = false + + app.set 'port', process.env.PORT or 3033 + app.set 'views', __dirname + '/views' + app.set 'view engine', 'toffee' + app.use express.favicon() + app.use express.logger 'dev' + app.use express.bodyParser() + app.use express.methodOverride() + app.use app.router + app.use express.static __dirname + '/public' + + app.configure 'development', -> + app.use express.errorHandler() + + app.get '/', routes.index + + http.createServer(app).listen app.get('port'), -> + console.log "Express server listening on port #{app.get('port')}" + if cb? then cb() + + +if not module.parent + run() + +else + exports.run = (cb) -> run cb \ No newline at end of file diff --git a/test/express3/public/javascripts/jquery-1.9.0.min.js b/test/express3/public/javascripts/jquery-1.9.0.min.js new file mode 100644 index 0000000..50d1b22 --- /dev/null +++ b/test/express3/public/javascripts/jquery-1.9.0.min.js @@ -0,0 +1,4 @@ +/*! jQuery v1.9.0 | (c) 2005, 2012 jQuery Foundation, Inc. | jquery.org/license */(function(e,t){"use strict";function n(e){var t=e.length,n=st.type(e);return st.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}function r(e){var t=Tt[e]={};return st.each(e.match(lt)||[],function(e,n){t[n]=!0}),t}function i(e,n,r,i){if(st.acceptData(e)){var o,a,s=st.expando,u="string"==typeof n,l=e.nodeType,c=l?st.cache:e,f=l?e[s]:e[s]&&s;if(f&&c[f]&&(i||c[f].data)||!u||r!==t)return f||(l?e[s]=f=K.pop()||st.guid++:f=s),c[f]||(c[f]={},l||(c[f].toJSON=st.noop)),("object"==typeof n||"function"==typeof n)&&(i?c[f]=st.extend(c[f],n):c[f].data=st.extend(c[f].data,n)),o=c[f],i||(o.data||(o.data={}),o=o.data),r!==t&&(o[st.camelCase(n)]=r),u?(a=o[n],null==a&&(a=o[st.camelCase(n)])):a=o,a}}function o(e,t,n){if(st.acceptData(e)){var r,i,o,a=e.nodeType,u=a?st.cache:e,l=a?e[st.expando]:st.expando;if(u[l]){if(t&&(r=n?u[l]:u[l].data)){st.isArray(t)?t=t.concat(st.map(t,st.camelCase)):t in r?t=[t]:(t=st.camelCase(t),t=t in r?[t]:t.split(" "));for(i=0,o=t.length;o>i;i++)delete r[t[i]];if(!(n?s:st.isEmptyObject)(r))return}(n||(delete u[l].data,s(u[l])))&&(a?st.cleanData([e],!0):st.support.deleteExpando||u!=u.window?delete u[l]:u[l]=null)}}}function a(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(Nt,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:wt.test(r)?st.parseJSON(r):r}catch(o){}st.data(e,n,r)}else r=t}return r}function s(e){var t;for(t in e)if(("data"!==t||!st.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function u(){return!0}function l(){return!1}function c(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function f(e,t,n){if(t=t||0,st.isFunction(t))return st.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return st.grep(e,function(e){return e===t===n});if("string"==typeof t){var r=st.grep(e,function(e){return 1===e.nodeType});if(Wt.test(t))return st.filter(t,r,!n);t=st.filter(t,r)}return st.grep(e,function(e){return st.inArray(e,t)>=0===n})}function p(e){var t=zt.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function d(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function h(e){var t=e.getAttributeNode("type");return e.type=(t&&t.specified)+"/"+e.type,e}function g(e){var t=nn.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function m(e,t){for(var n,r=0;null!=(n=e[r]);r++)st._data(n,"globalEval",!t||st._data(t[r],"globalEval"))}function y(e,t){if(1===t.nodeType&&st.hasData(e)){var n,r,i,o=st._data(e),a=st._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)st.event.add(t,n,s[n][r])}a.data&&(a.data=st.extend({},a.data))}}function v(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!st.support.noCloneEvent&&t[st.expando]){r=st._data(t);for(i in r.events)st.removeEvent(t,i,r.handle);t.removeAttribute(st.expando)}"script"===n&&t.text!==e.text?(h(t).text=e.text,g(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),st.support.html5Clone&&e.innerHTML&&!st.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Zt.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}function b(e,n){var r,i,o=0,a=e.getElementsByTagName!==t?e.getElementsByTagName(n||"*"):e.querySelectorAll!==t?e.querySelectorAll(n||"*"):t;if(!a)for(a=[],r=e.childNodes||e;null!=(i=r[o]);o++)!n||st.nodeName(i,n)?a.push(i):st.merge(a,b(i,n));return n===t||n&&st.nodeName(e,n)?st.merge([e],a):a}function x(e){Zt.test(e.type)&&(e.defaultChecked=e.checked)}function T(e,t){if(t in e)return t;for(var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Nn.length;i--;)if(t=Nn[i]+n,t in e)return t;return r}function w(e,t){return e=t||e,"none"===st.css(e,"display")||!st.contains(e.ownerDocument,e)}function N(e,t){for(var n,r=[],i=0,o=e.length;o>i;i++)n=e[i],n.style&&(r[i]=st._data(n,"olddisplay"),t?(r[i]||"none"!==n.style.display||(n.style.display=""),""===n.style.display&&w(n)&&(r[i]=st._data(n,"olddisplay",S(n.nodeName)))):r[i]||w(n)||st._data(n,"olddisplay",st.css(n,"display")));for(i=0;o>i;i++)n=e[i],n.style&&(t&&"none"!==n.style.display&&""!==n.style.display||(n.style.display=t?r[i]||"":"none"));return e}function C(e,t,n){var r=mn.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function k(e,t,n,r,i){for(var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;4>o;o+=2)"margin"===n&&(a+=st.css(e,n+wn[o],!0,i)),r?("content"===n&&(a-=st.css(e,"padding"+wn[o],!0,i)),"margin"!==n&&(a-=st.css(e,"border"+wn[o]+"Width",!0,i))):(a+=st.css(e,"padding"+wn[o],!0,i),"padding"!==n&&(a+=st.css(e,"border"+wn[o]+"Width",!0,i)));return a}function E(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=ln(e),a=st.support.boxSizing&&"border-box"===st.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=un(e,t,o),(0>i||null==i)&&(i=e.style[t]),yn.test(i))return i;r=a&&(st.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+k(e,t,n||(a?"border":"content"),r,o)+"px"}function S(e){var t=V,n=bn[e];return n||(n=A(e,t),"none"!==n&&n||(cn=(cn||st(" + + :} + {::} + #} +
    + + \ No newline at end of file diff --git a/test/express3_error_handling/views/test_bad_coffee_syntax.toffee b/test/express3_error_handling/views/test_bad_coffee_syntax.toffee new file mode 100644 index 0000000..1df5dd2 --- /dev/null +++ b/test/express3_error_handling/views/test_bad_coffee_syntax.toffee @@ -0,0 +1,15 @@ + +{# + x = "Foo" +#} + +{# + y = "Bar" + {: + Hello there + {# + var x = 100 + #} + :} +#} +Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah Bleah bleah bleah Bleah \ No newline at end of file diff --git a/test/express3_error_handling/views/test_bad_runtime.toffee b/test/express3_error_handling/views/test_bad_runtime.toffee new file mode 100644 index 0000000..0a8d912 --- /dev/null +++ b/test/express3_error_handling/views/test_bad_runtime.toffee @@ -0,0 +1,13 @@ + +About to convert a circular JSON structure + +{# + x = [1,2,3] + x.push x + {: +

    x as JSON

    + {# + print JSON.stringify x + #} + :} +#} diff --git a/test/express3_error_handling/views/test_bad_str_interpolate.toffee b/test/express3_error_handling/views/test_bad_str_interpolate.toffee new file mode 100644 index 0000000..d0e946d --- /dev/null +++ b/test/express3_error_handling/views/test_bad_str_interpolate.toffee @@ -0,0 +1,6 @@ + +This is a bad variable. + +foo.bar = #{foo.bar} + +Hah. \ No newline at end of file diff --git a/test/express3_error_handling/views/test_bad_toffee_syntax.toffee b/test/express3_error_handling/views/test_bad_toffee_syntax.toffee new file mode 100644 index 0000000..d5dff31 --- /dev/null +++ b/test/express3_error_handling/views/test_bad_toffee_syntax.toffee @@ -0,0 +1,10 @@ + +{# + x = "Foo" +#} + +{# + {: :} + y = "Bar" + {: +#} diff --git a/test/generate_express_test.coffee b/test/generate_express_test.coffee index a3e310e..d87540e 100644 --- a/test/generate_express_test.coffee +++ b/test/generate_express_test.coffee @@ -56,10 +56,10 @@ generateExpressTest = (cb) -> for dir,i in case_dirs expected_output = fs.readFileSync "./test/cases/#{dir}/output.toffee", "utf8" - if path.existsSync "./test/cases/#{dir}/vars.coffee" + if fs.existsSync "./test/cases/#{dir}/vars.coffee" coffee_vars = fs.readFileSync "./test/cases/#{dir}/vars.coffee", "utf8" js_vars = coffee.compile(coffee_vars, {bare: true}).replace(/;[ \n]*$/,'') - else if path.existsSync "./test/cases/#{dir}/vars.js" + else if fs.existsSync "./test/cases/#{dir}/vars.js" coffee_vars = fs.readFileSync "./test/cases/#{dir}/vars.js", "utf8" js_vars = coffee_vars; else From d908843f69a0fa3d6cdafe45977b97631611ec81 Mon Sep 17 00:00:00 2001 From: Chris Coyne Date: Sat, 22 Mar 2014 17:19:28 -0400 Subject: [PATCH 104/132] fixed file not found error returning string instead of error object; version bump --- index.js | 2 +- lib/command_line.js | 8 +-- lib/consts.js | 2 +- lib/engine.js | 119 ++++++++++++++++++++++++-------------------- lib/errorHandler.js | 22 ++++---- lib/pool.js | 2 +- lib/utils.js | 6 +-- lib/view.js | 55 ++++++++++---------- package.json | 2 +- src/engine.coffee | 4 +- 10 files changed, 116 insertions(+), 106 deletions(-) diff --git a/index.js b/index.js index 0559cbe..fe0e9a4 100644 --- a/index.js +++ b/index.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.6.3 +// Generated by CoffeeScript 1.7.1 (function() { var e, engine, getCommonHeaders, getCommonHeadersJs, to_express, view, __express, _ref; diff --git a/lib/command_line.js b/lib/command_line.js index 81fe5ff..a7658d0 100644 --- a/lib/command_line.js +++ b/lib/command_line.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.6.3 +// Generated by CoffeeScript 1.7.1 (function() { var compile, fs, getCommonHeadersJs, getVersionNumber, maybeAttachHeaders, mkdirp, path, program, recurseRun, run, view, _ref; @@ -20,17 +20,17 @@ }; program.on('--help', function() { - return console.log("\n Examples:\n\n toffee views # recurses through views and builds views.js\n toffee foo.toffee # builds foo.js\n toffee views -o templates # builds templates.js\n toffee -p foo.toffee # outputs JS to stdout\n\n\n Then use in your :\n\n \n \n "); + return console.log("\n Examples: \n \n toffee views # recurses through views and builds views.js \n toffee foo.toffee # builds foo.js \n toffee views -o templates # builds templates.js \n toffee -p foo.toffee # outputs JS to stdout \n \n \n Then use in your : \n \n \n \n"); }); program.version(getVersionNumber()).option('-o, --output [path]', 'file (bundles all output into a single .js)').option('-d, --output_dir [path]', 'compiles templates into parallel .js files').option('-p, --print', 'print to stdout').option('-m, --minimize', 'minimize output (ugly, smaller file(s))').option('-c, --coffee', 'output to CoffeeScript (not JS)').option('-b, --bundle_path [path]', 'bundle_path (instead of "/") for templates').option('-n, --no_headers', 'exclude boilerplate toffee (requires toffee.js included separately)').parse(process.argv); compile = function(start_path, full_path) { + /* e.g., if start_path is /foo/bar and path is /foo/bar/car/thing.toffee - */ - + */ var bundle_path, output, source, v; source = fs.readFileSync(full_path, 'utf8'); bundle_path = full_path.slice(start_path.length); diff --git a/lib/consts.js b/lib/consts.js index 9a81c38..31125bd 100644 --- a/lib/consts.js +++ b/lib/consts.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.6.3 +// Generated by CoffeeScript 1.7.1 (function() { exports.states = { TOFFEE: 1, diff --git a/lib/engine.js b/lib/engine.js index bb2013a..518ce4e 100644 --- a/lib/engine.js +++ b/lib/engine.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.6.3 +// Generated by CoffeeScript 1.7.1 (function() { var MAX_CACHED_SANDBOXES, Pool, engine, fs, path, sandboxCons, states, tweakables, util, utils, view, vm, _ref, __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; @@ -77,6 +77,7 @@ }; engine.prototype.run = function(filename, options, cb) { + /* "options" contains the pub vars and may contain special items: layout: path to a template expecting a body var (express 2.x style, but for use with express 3.x) @@ -86,8 +87,7 @@ __toffee.noInheritance: if true, don't pass variables through unless explicitly passed __toffee.repress if true, don't output anything; useful with including definition files with passback of vars __toffee.autoEscape: if set as false, don't escape output of #{} vars by default - */ - + */ var err, k, layout_options, post_process, res, v, _ref1, _ref2, _ref3, _ref4, _ref5; if (options.prettyPrintErrors == null) { options.prettyPrintErrors = this.prettyPrintErrors; @@ -142,12 +142,11 @@ }; engine.prototype.runSync = function(filename, options) { + /* "options" the same as run() above - */ - - var ctx, err, realpath, res, start_time, v, _ref1, _ref2, _ref3, - _this = this; + */ + var ctx, err, realpath, res, start_time, v, _ref1, _ref2, _ref3; start_time = Date.now(); options = options || {}; options.__toffee = options.__toffee || {}; @@ -156,21 +155,29 @@ v = (this._viewCacheGet(realpath)) || (this._loadCacheAndMonitor(realpath, options)); if (v) { if (this.fsErrorCache[realpath]) { - _ref1 = ["Couldn't load " + realpath, null], err = _ref1[0], res = _ref1[1]; + _ref1 = [new Error("Couldn't load " + realpath), null], err = _ref1[0], res = _ref1[1]; } else { options.__toffee.parent = realpath; - options.partial = options.partial || function(fname, lvars) { - return _this._fn_partial(fname, lvars, realpath, options); - }; - options.snippet = options.snippet || function(fname, lvars) { - return _this._fn_snippet(fname, lvars, realpath, options); - }; - options.load = options.load || function(fname, lvars) { - return _this._fn_load(fname, lvars, realpath, options); - }; - options.print = options.print || function(txt) { - return _this._fn_print(txt, options); - }; + options.partial = options.partial || (function(_this) { + return function(fname, lvars) { + return _this._fn_partial(fname, lvars, realpath, options); + }; + })(this); + options.snippet = options.snippet || (function(_this) { + return function(fname, lvars) { + return _this._fn_snippet(fname, lvars, realpath, options); + }; + })(this); + options.load = options.load || (function(_this) { + return function(fname, lvars) { + return _this._fn_load(fname, lvars, realpath, options); + }; + })(this); + options.print = options.print || (function(_this) { + return function(txt) { + return _this._fn_print(txt, options); + }; + })(this); if (options.console == null) { options.console = { log: console.log @@ -181,7 +188,7 @@ this.pool.release(ctx); } } else { - _ref3 = ["Couldn't load " + realpath, null], err = _ref3[0], res = _ref3[1]; + _ref3 = [new Error("Couldn't load " + realpath), null], err = _ref3[0], res = _ref3[1]; } this._log("" + realpath + " run in " + (Date.now() - start_time) + "ms"); return [err, res]; @@ -288,33 +295,34 @@ }; engine.prototype._reloadFileInBkg = function(filename, options) { - var _this = this; - return fs.readFile(filename, 'utf8', function(err, txt) { - var ctx, v, view_options, _ref1; - if (err || (txt !== _this.viewCache[filename].txt)) { - if (err) { - _this.fsErrorCache[filename] = Date.now(); - txt = "Error: Could not read " + filename; - if (((_ref1 = options.__toffee) != null ? _ref1.parent : void 0) != null) { - txt += " requested in " + options.__toffee.parent; - } - } - if (!(err && _this.viewCache[filename].fsError)) { - view_options = _this._generateViewOptions(filename); - ctx = _this.pool.get(); - view_options.ctx = ctx; - view_options.cb = function(v) { - _this._log("" + filename + " updated and ready"); - _this.viewCache[filename] = v; - return _this.pool.release(ctx); - }; + return fs.readFile(filename, 'utf8', (function(_this) { + return function(err, txt) { + var ctx, v, view_options, _ref1; + if (err || (txt !== _this.viewCache[filename].txt)) { if (err) { - view_options.fsError = true; + _this.fsErrorCache[filename] = Date.now(); + txt = "Error: Could not read " + filename; + if (((_ref1 = options.__toffee) != null ? _ref1.parent : void 0) != null) { + txt += " requested in " + options.__toffee.parent; + } + } + if (!(err && _this.viewCache[filename].fsError)) { + view_options = _this._generateViewOptions(filename); + ctx = _this.pool.get(); + view_options.ctx = ctx; + view_options.cb = function(v) { + _this._log("" + filename + " updated and ready"); + _this.viewCache[filename] = v; + return _this.pool.release(ctx); + }; + if (err) { + view_options.fsError = true; + } + return v = new view(txt, view_options); } - return v = new view(txt, view_options); } - } - }); + }; + })(this)); }; engine.prototype._generateViewOptions = function(filename) { @@ -330,28 +338,29 @@ }; engine.prototype._monitorForChanges = function(filename, options) { + /* we must continuously unwatch/rewatch because some editors/systems invoke a "rename" event and we'll end up following the wrong, old 'file' as a new one is dropped in its place. Files that are missing are ignored here because they get picked up by new calls to _loadCacheAndMonitor - */ - - var e, fsw, - _this = this; + */ + var e, fsw; if (this.fsErrorCache[filename] == null) { fsw = null; try { this._log("" + filename + " starting fs.watch()"); return fsw = fs.watch(filename, { persistent: true - }, function(change) { - _this._log("" + filename + " closing fs.watch()"); - fsw.close(); - _this._monitorForChanges(filename, options); - return _this._reloadFileInBkg(filename, options); - }); + }, (function(_this) { + return function(change) { + _this._log("" + filename + " closing fs.watch()"); + fsw.close(); + _this._monitorForChanges(filename, options); + return _this._reloadFileInBkg(filename, options); + }; + })(this)); } catch (_error) { e = _error; this._log("fs.watch() failed for " + filename + "; settings fsErrorCache = true"); diff --git a/lib/errorHandler.js b/lib/errorHandler.js index fece7e0..96f1ea4 100644 --- a/lib/errorHandler.js +++ b/lib/errorHandler.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.6.3 +// Generated by CoffeeScript 1.7.1 (function() { var errorTypes, path, toffeeError, util, _ppEscape, __hasProp = {}.hasOwnProperty, @@ -41,6 +41,7 @@ } toffeeError.prototype.getConvertedError = function() { + /* -------------------------------------- returns a JS style error, but with some extras { @@ -51,8 +52,7 @@ ...etc... } ------------------------------------------ - */ - + */ var line, res, _ref, _ref1, _ref2; res = { stack: [], @@ -105,11 +105,11 @@ }; toffeeError.prototype._convertRuntimeStackLines = function(converted_err) { + /* a little more complicated, so extracted. Returns an array of dictionaries where there's extra info on each line in the stack. - */ - + */ var at_pub_call, hit_pub_yet, i, in_src_file, line, lineno, lrange, m, rxx_inline, rxx_pub, stack, _i, _len, _results; hit_pub_yet = false; stack = converted_err.stack; @@ -156,10 +156,10 @@ }; toffeeError.prototype.getPrettyPrintText = function() { + /* returns a TEXT only blob explaining the error - */ - + */ var cerr, count, header, i, item, res, _i, _len, _ref, _ref1; cerr = this.getConvertedError(); header = "" + cerr.dir_name + "/" + cerr.file + ": " + cerr.message; @@ -189,11 +189,11 @@ }; toffeeError.prototype.getPrettyPrint = function() { + /* returns an HTML blob explaining the error with lines highlighted - */ - + */ var cerr, count, extra, header, i, item, j, line, padding, padding_len, res, _i, _j, _len, _ref, _ref1, _ref2, _ref3, _ref4; cerr = this.getConvertedError(); res = ""; @@ -270,12 +270,12 @@ }; toffeeError.prototype._convertOffensiveLineToToffeeRange = function(lineno) { + /* Given the error line in a converted file, hunts for surrounding __toffee.lineno calls and returns a pair array with the error position range in the original toffee file. - */ - + */ var next, next_matches, ol, prev, prev_matches, res, tl; ol = this.offensiveSrcLines; tl = this.toffeeSrcLines; diff --git a/lib/pool.js b/lib/pool.js index 34e4fd7..16ab81f 100644 --- a/lib/pool.js +++ b/lib/pool.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.6.3 +// Generated by CoffeeScript 1.7.1 (function() { var Pool; diff --git a/lib/utils.js b/lib/utils.js index 45f1cfa..8b7bdf4 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.6.3 +// Generated by CoffeeScript 1.7.1 (function() { var lex, lexer; @@ -7,12 +7,12 @@ lex = new lexer.Lexer(); exports.interpolateString = function(str) { + /* Similar to the interpolateString function in CoffeeScript, except that it doesn't actually work on anything inside an outer #{}; we're just looking to recognize them. - */ - + */ var expr, i, inner, interpolated, letter, pi, res, tag, tokens, value, _i, _len, _ref; tokens = []; res = []; diff --git a/lib/view.js b/lib/view.js index fbcc0da..7264dfe 100644 --- a/lib/view.js +++ b/lib/view.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.6.3 +// Generated by CoffeeScript 1.7.1 (function() { var TAB_SPACES, coffee, e, errorHandler, errorTypes, getBundleHeaders, getCommonHeaders, getCommonHeadersJs, minimizeJs, parser, spaces, states, tabs, toffeeError, util, utils, view, vm, _ref, _ref1; @@ -62,24 +62,24 @@ }; getCommonHeaders = function(tab_level, include_bundle_headers, auto_escape) { + /* each view will use this, or if they're bundled together, it'll only be used once. include_bundle_headers: includes some functions needed for browser use - */ - + */ var __; __ = tabs(tab_level); return "\n\n" + __ + "if not toffee? then toffee = {}\n" + __ + "if not toffee.templates then toffee.templates = {}\n\n" + __ + "toffee.states = " + (JSON.stringify(states)) + "\n\n" + __ + "toffee.__json = (locals, o) ->\n" + __ + " if not o? then return \"null\"\n" + __ + " else return \"\" + JSON.stringify(o).replace(//g,'\\\\u003E').replace(/&/g,'\\\\u0026')\n\n" + __ + "toffee.__raw = (locals, o) -> o\n\n" + __ + "toffee.__html = (locals, o) ->\n" + __ + " (\"\"+o).replace(/&/g, '&').replace(//g, '>').replace(/\"/g, '"')\n\n" + __ + "toffee.__escape = (locals, o) ->\n" + __ + " if locals.__toffee.autoEscape? then ae = locals.__toffee.autoEscape\n" + __ + " else if " + (auto_escape != null) + " then ae = " + auto_escape + "\n" + __ + " else ae = true\n" + __ + " if ae\n" + __ + " if o is undefined then return ''\n" + __ + " if o? and (typeof o) is \"object\" then return locals.json o\n" + __ + " return locals.html o\n" + __ + " return o\n\n" + __ + "toffee.__augmentLocals = (locals, bundle_path) ->\n" + __ + " _l = locals\n" + __ + " _t = _l.__toffee = {out: []}\n" + __ + " if not _l.print? then _l.print = (o) -> toffee.__print _l, o\n" + __ + " if not _l.json? then _l.json = (o) -> toffee.__json _l, o\n" + __ + " if not _l.raw? then _l.raw = (o) -> toffee.__raw _l, o\n" + __ + " if not _l.html? then _l.html = (o) -> toffee.__html _l, o\n" + __ + " if not _l.escape? then _l.escape = (o) -> toffee.__escape _l, o\n" + __ + " if not _l.partial? then _l.partial = (path, vars) -> toffee.__partial toffee.templates[\"\#{bundle_path}\"], _l, path, vars\n" + __ + " if not _l.snippet? then _l.snippet = (path, vars) -> toffee.__snippet toffee.templates[\"\#{bundle_path}\"], _l, path, vars\n" + __ + " if not _l.load? then _l.load = (path, vars) -> toffee.__load toffee.templates[\"\#{bundle_path}\"], _l, path, vars\n" + __ + " _t.print = _l.print\n" + __ + " _t.json = _l.json\n" + __ + " _t.raw = _l.raw\n" + __ + " _t.html = _l.html\n" + __ + " _t.escape = _l.escape\n" + __ + " _t.partial = _l.partial\n" + __ + " _t.snippet = _l.snippet\n" + __ + " _t.load = _l.load\n\n" + (include_bundle_headers ? getBundleHeaders(tab_level) : ""); }; getBundleHeaders = function(tab_level) { + /* header stuff only needed when compiling to a JS file - */ - + */ var __; __ = tabs(tab_level); return "\n\n" + __ + "toffee.__print = (locals, o) ->\n" + __ + " if locals.__toffee.state is toffee.states.COFFEE\n" + __ + " locals.__toffee.out.push o\n" + __ + " return ''\n" + __ + " else\n" + __ + " return \"\#{o}\"\n\n" + __ + "toffee.__normalize = (path) ->\n" + __ + " if (not path?) or path is \"/\"\n" + __ + " return path\n" + __ + " else\n" + __ + " parts = path.split \"/\"\n" + __ + " np = []\n" + __ + " # make sure path always starts with '/'\n" + __ + " if parts[0]\n" + __ + " np.push ''\n" + __ + " for part in parts\n" + __ + " if part is \"..\"\n" + __ + " if np.length > 1\n" + __ + " np.pop()\n" + __ + " else\n" + __ + " np.push part\n" + __ + " else\n" + __ + " if part isnt \".\"\n" + __ + " np.push part\n" + __ + " path = np.join \"/\"\n" + __ + " if not path then path = \"/\"\n" + __ + " return path\n\n" + __ + "toffee.__partial = (parent_tmpl, parent_locals, path, vars) ->\n" + __ + " path = toffee.__normalize parent_tmpl.bundlePath + \"/../\" + path\n" + __ + " return toffee.__inlineInclude path, vars, parent_locals\n\n" + __ + "toffee.__snippet = (parent_tmpl, parent_locals, path, vars) ->\n" + __ + " path = toffee.__normalize parent_tmpl.bundlePath + \"/../\" + path\n" + __ + " vars = if vars? then vars else {}\n" + __ + " vars.__toffee = vars.__toffee or {}\n" + __ + " vars.__toffee.noInheritance = true\n" + __ + " return toffee.__inlineInclude path, vars, parent_locals\n\n" + __ + "toffee.__load = (parent_tmpl, parent_locals, path, vars) ->\n" + __ + " path = toffee.__normalize parent_tmpl.bundlePath + \"/../\" + path\n" + __ + " vars = if vars? then vars else {}\n" + __ + " vars.__toffee = vars.__toffee or {}\n" + __ + " vars.__toffee.repress = true\n" + __ + " return toffee.__inlineInclude path, vars, parent_locals\n\n" + __ + "toffee.__inlineInclude = (path, locals, parent_locals) ->\n" + __ + " options = locals or {}\n" + __ + " options.passback = {}\n" + __ + " options.__toffee = options.__toffee or {}\n" + __ + "\n" + __ + " # we need to make a shallow copy of parent variables\n" + __ + " reserved = {}\n" + __ + " reserved[k] = true for k in [\"passback\", \"load\", \"print\", \"partial\", \"snippet\", \"layout\", \"__toffee\", \"postProcess\"]\n" + __ + " if not options.__toffee.noInheritance\n" + __ + " for k,v of parent_locals when not locals?[k]?\n" + __ + " if not reserved[k]?\n" + __ + " options[k] = v\n" + __ + "\n" + __ + " if not toffee.templates[path]\n" + __ + " return \"Inline toffee include: Could not find \#{path}\"\n" + __ + " else\n" + __ + " res = toffee.templates[path].pub options\n" + __ + " for k,v of options.passback\n" + __ + " parent_locals[k] = v\n" + __ + " return res"; @@ -99,12 +99,11 @@ view = (function() { function view(txt, options) { + /* important options: cb: if this is set, compilation will happen async and cb will be executed when it's ready - */ - - var _this = this; + */ options = options || {}; this.fileName = options.fileName || options.filename || null; this.bundlePath = options.bundlePath || "/"; @@ -123,19 +122,21 @@ this.fun = null; this.error = null; if (options.cb) { - this._prepAsync(txt, options.ctx, (function() { - return options.cb(_this); - })); + this._prepAsync(txt, options.ctx, ((function(_this) { + return function() { + return options.cb(_this); + }; + })(this))); } } view.prototype._prepAsync = function(txt, ctx, cb) { + /* Only once it's fully compiled does it callback. Defers via setTimeouts in each stage in the compile process for CPU friendliness. This is a lot prettier with iced-coffee-script. - */ - + */ var v; this._log("Prepping " + (this.fileName != null ? this.fileName : 'unknown') + " async."); this._toTokenObj(); @@ -165,10 +166,10 @@ }; view.prototype._cleanTabs = function(obj) { + /* replaces tabs with spaces in their coffee regions - */ - + */ var item, _i, _len, _ref2, _ref3, _results; if ((_ref2 = obj[0]) === "TOFFEE_ZONE" || _ref2 === "COFFEE_ZONE") { _ref3 = obj[1]; @@ -184,10 +185,10 @@ }; view.prototype.run = function(options, ctx) { + /* returns [err, str] - */ - + */ var fun, line, pair, res, txt, _i, _len, _ref2; ctx = ctx || vm.createContext({}); fun = this._toFun(ctx); @@ -227,10 +228,10 @@ }; view.prototype._toTokenObj = function() { + /* compiles Toffee to token array - */ - + */ if (this.tokenObj == null) { try { this.tokenObj = parser.parse(this.txt); @@ -333,10 +334,10 @@ }; view.prototype._snippetIsSoloToken = function(str) { + /* if the inside is something like #{ foo } not #{ foo.bar } or other complex thing. - */ - + */ if (str.match(/^[$A-Za-z_\x7f-\uffff][$\w\x7f-\uffff]*$/)) { return true; } @@ -431,12 +432,12 @@ }; view.prototype._quoteStr = function(s) { + /* returns a triple-quoted string, dividing into single quoted start and stops, if the string begins with double quotes, since coffee doesn't want to let us escape those. - */ - + */ var follow, lead, res; lead = ""; follow = ""; @@ -470,11 +471,11 @@ }; view.prototype._escapeForStr = function(s) { + /* escapes a string so it can make it into coffeescript triple quotes without losing whitespace, etc. - */ - + */ s = s.replace(/\\/g, '\\\\'); s = s.replace(/\n/g, '\\n'); s = s.replace(/\t/g, '\\t'); @@ -515,13 +516,13 @@ }; view.prototype._getIndentationDelta = function(coffee, baseline) { + /* given an arbitrarily indented set of coffeescript, returns the delta between the first and last lines, in chars. Ignores leading/trailing whitespace lines If passed a baseline, uses that instead of own. - */ - + */ var lines, res, y, y_l; if (baseline == null) { baseline = this._getIndentationBaseline(coffee); diff --git a/package.json b/package.json index c24febf..20be5d2 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "toffee", "description": "A NodeJs, Express 3.x, Express 2.x, and browser-side templating language based on CoffeeScript with slicker tokens and syntax.", - "version": "0.1.6", + "version": "0.1.7", "directories": { "lib": "./lib" }, diff --git a/src/engine.coffee b/src/engine.coffee index e181a67..cabc862 100644 --- a/src/engine.coffee +++ b/src/engine.coffee @@ -119,7 +119,7 @@ class engine if v if @fsErrorCache[realpath] - [err, res] = ["Couldn't load #{realpath}", null] + [err, res] = [new Error("Couldn't load #{realpath}"), null] else options.__toffee.parent = realpath options.partial = options.partial or (fname, lvars) => @_fn_partial fname, lvars, realpath, options @@ -131,7 +131,7 @@ class engine [err, res] = v.run options, ctx @pool.release(ctx) else - [err, res] = ["Couldn't load #{realpath}", null] + [err, res] = [new Error("Couldn't load #{realpath}"), null] @_log "#{realpath} run in #{Date.now() - start_time}ms" return [err, res] From 98994ba9773ade8c1dce856481c594fd65f5c628 Mon Sep 17 00:00:00 2001 From: Lee Olayvar Date: Wed, 30 Apr 2014 22:06:28 -0700 Subject: [PATCH 105/132] Cakefile updated to support CoffeeScript 1.7.0+ As of [this PR](https://github.com/jashkenas/coffee-script/pull/3279), CoffeeScript now requires Cakefiles to register their local coffee installation as to ensure version compatibility. --- Cakefile | 1 + 1 file changed, 1 insertion(+) diff --git a/Cakefile b/Cakefile index b98c59d..7fb37f1 100644 --- a/Cakefile +++ b/Cakefile @@ -1,3 +1,4 @@ +require 'coffee-script/register' {spawn, exec} = require 'child_process' fs = require 'fs' jison = require 'jison' From e78daa03420db187e3b20da36f7b18d15beff8a8 Mon Sep 17 00:00:00 2001 From: Chris Coyne Date: Thu, 1 May 2014 10:35:44 -0400 Subject: [PATCH 106/132] fixed unnecessary file monitoring w/consolidate cacheless; version bump; better testing file with iced --- Cakefile | 4 +- README.md | 5 +- index.coffee | 15 +-- index.js | 28 ++--- lib/command_line.js | 8 +- lib/consts.js | 2 +- lib/engine.js | 138 +++++++++++---------- lib/errorHandler.js | 22 ++-- lib/pool.js | 2 +- lib/utils.js | 6 +- lib/view.js | 55 ++++---- package.json | 12 +- src/engine.coffee | 17 ++- test/express3/public/javascripts/toffee.js | 2 - test/run_cases.coffee | 102 --------------- test/run_cases.iced | 108 ++++++++++++++++ toffee.js | 2 - 17 files changed, 272 insertions(+), 256 deletions(-) delete mode 100644 test/run_cases.coffee create mode 100644 test/run_cases.iced diff --git a/Cakefile b/Cakefile index 7fb37f1..7ec1ff2 100644 --- a/Cakefile +++ b/Cakefile @@ -1,4 +1,4 @@ -require 'coffee-script/register' +require 'iced-coffee-script/register' {spawn, exec} = require 'child_process' fs = require 'fs' jison = require 'jison' @@ -19,7 +19,7 @@ task 'build', 'build the whole jam', (cb) -> cb() if typeof cb is 'function' task 'test', 'test server and browser support', (cb) -> - run_cases = require './test/run_cases' + run_cases = require './test/run_cases.iced' run_cases.test -> console.log "Done." diff --git a/README.md b/README.md index 8639da0..c4afd2c 100644 --- a/README.md +++ b/README.md @@ -484,8 +484,9 @@ as the `.js` files are generated automatically by building. To build and test your changes ``` -> cake build -> cake test +# icake is iced-coffee-script's version of cake +> icake build +> icake test ``` diff --git a/index.coffee b/index.coffee index 4136ef3..c8d2cfe 100644 --- a/index.coffee +++ b/index.coffee @@ -7,8 +7,9 @@ exports.view = view exports.getCommonHeaders = getCommonHeaders exports.getCommonHeadersJs = getCommonHeadersJs -exports.expressEngine = e = new engine { verbose: false, prettyPrintErrors: true } +exports.expressEngine = e = new engine { verbose: false, prettyPrintErrors: true } exports.render = e.run +cacheless_engine = new engine { verbose: false, prettyPrintErrors: true, cache: false} # given a template string, returns a function that can be called # on an object to render it. @@ -43,17 +44,9 @@ __express = exports.__express = to_express e # -------------------------------------------- exports.__consolidate_engine_render = (filename, options, cb) -> - if (options.cache?) and options.cache - eng = e - else - eng = new engine { verbose: false, prettyPrintErrors: true } + eng = if options.cache then e else cacheless_engine eng.run filename, options, (err, res) -> - if err - if typeof(err) is "string" - err = new Error err - cb err - else - cb null, res + cb err, res # consolidate.js wants this, but it might generally be useful # -------------------------------------------- diff --git a/index.js b/index.js index fe0e9a4..6e72198 100644 --- a/index.js +++ b/index.js @@ -1,6 +1,6 @@ -// Generated by CoffeeScript 1.7.1 +// Generated by CoffeeScript 1.6.3 (function() { - var e, engine, getCommonHeaders, getCommonHeadersJs, to_express, view, __express, _ref; + var cacheless_engine, e, engine, getCommonHeaders, getCommonHeadersJs, to_express, view, __express, _ref; engine = require('./lib/engine').engine; @@ -21,6 +21,12 @@ exports.render = e.run; + cacheless_engine = new engine({ + verbose: false, + prettyPrintErrors: true, + cache: false + }); + exports.compileStr = function(template_str, options) { var v; v = new view(template_str, options); @@ -48,23 +54,9 @@ exports.__consolidate_engine_render = function(filename, options, cb) { var eng; - if ((options.cache != null) && options.cache) { - eng = e; - } else { - eng = new engine({ - verbose: false, - prettyPrintErrors: true - }); - } + eng = options.cache ? e : cacheless_engine; return eng.run(filename, options, function(err, res) { - if (err) { - if (typeof err === "string") { - err = new Error(err); - } - return cb(err); - } else { - return cb(null, res); - } + return cb(err, res); }); }; diff --git a/lib/command_line.js b/lib/command_line.js index a7658d0..81fe5ff 100644 --- a/lib/command_line.js +++ b/lib/command_line.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.7.1 +// Generated by CoffeeScript 1.6.3 (function() { var compile, fs, getCommonHeadersJs, getVersionNumber, maybeAttachHeaders, mkdirp, path, program, recurseRun, run, view, _ref; @@ -20,17 +20,17 @@ }; program.on('--help', function() { - return console.log("\n Examples: \n \n toffee views # recurses through views and builds views.js \n toffee foo.toffee # builds foo.js \n toffee views -o templates # builds templates.js \n toffee -p foo.toffee # outputs JS to stdout \n \n \n Then use in your : \n \n \n \n"); + return console.log("\n Examples:\n\n toffee views # recurses through views and builds views.js\n toffee foo.toffee # builds foo.js\n toffee views -o templates # builds templates.js\n toffee -p foo.toffee # outputs JS to stdout\n\n\n Then use in your :\n\n \n \n "); }); program.version(getVersionNumber()).option('-o, --output [path]', 'file (bundles all output into a single .js)').option('-d, --output_dir [path]', 'compiles templates into parallel .js files').option('-p, --print', 'print to stdout').option('-m, --minimize', 'minimize output (ugly, smaller file(s))').option('-c, --coffee', 'output to CoffeeScript (not JS)').option('-b, --bundle_path [path]', 'bundle_path (instead of "/") for templates').option('-n, --no_headers', 'exclude boilerplate toffee (requires toffee.js included separately)').parse(process.argv); compile = function(start_path, full_path) { - /* e.g., if start_path is /foo/bar and path is /foo/bar/car/thing.toffee - */ + */ + var bundle_path, output, source, v; source = fs.readFileSync(full_path, 'utf8'); bundle_path = full_path.slice(start_path.length); diff --git a/lib/consts.js b/lib/consts.js index 31125bd..9a81c38 100644 --- a/lib/consts.js +++ b/lib/consts.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.7.1 +// Generated by CoffeeScript 1.6.3 (function() { exports.states = { TOFFEE: 1, diff --git a/lib/engine.js b/lib/engine.js index 518ce4e..c9ac735 100644 --- a/lib/engine.js +++ b/lib/engine.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.7.1 +// Generated by CoffeeScript 1.6.3 (function() { var MAX_CACHED_SANDBOXES, Pool, engine, fs, path, sandboxCons, states, tweakables, util, utils, view, vm, _ref, __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; @@ -40,6 +40,7 @@ this.prettyPrintErrors = options.prettyPrintErrors != null ? options.prettyPrintErrors : true; this.prettyLogErrors = options.prettyLogErrors != null ? options.prettyLogErrors : true; this.autoEscape = options.autoEscape != null ? options.autoEscape : true; + this.cache = options.cache != null ? options.cache : true; this.additionalErrorHandler = options.additionalErrorHandler || null; this.viewCache = {}; this.fsErrorCache = {}; @@ -77,7 +78,6 @@ }; engine.prototype.run = function(filename, options, cb) { - /* "options" contains the pub vars and may contain special items: layout: path to a template expecting a body var (express 2.x style, but for use with express 3.x) @@ -87,7 +87,8 @@ __toffee.noInheritance: if true, don't pass variables through unless explicitly passed __toffee.repress if true, don't output anything; useful with including definition files with passback of vars __toffee.autoEscape: if set as false, don't escape output of #{} vars by default - */ + */ + var err, k, layout_options, post_process, res, v, _ref1, _ref2, _ref3, _ref4, _ref5; if (options.prettyPrintErrors == null) { options.prettyPrintErrors = this.prettyPrintErrors; @@ -142,42 +143,39 @@ }; engine.prototype.runSync = function(filename, options) { - /* "options" the same as run() above - */ - var ctx, err, realpath, res, start_time, v, _ref1, _ref2, _ref3; + */ + + var ctx, err, realpath, res, start_time, v, _ref1, _ref2, _ref3, + _this = this; start_time = Date.now(); options = options || {}; options.__toffee = options.__toffee || {}; options.__toffee.dir = options.__toffee.dir || process.cwd(); realpath = this.normalizeFilename(options.__toffee.dir, filename); - v = (this._viewCacheGet(realpath)) || (this._loadCacheAndMonitor(realpath, options)); + if (this.cache) { + v = (this._viewCacheGet(realpath)) || (this._loadCacheAndMonitor(realpath, options)); + } else { + v = this._loadWithoutCache(realpath, options); + } if (v) { if (this.fsErrorCache[realpath]) { _ref1 = [new Error("Couldn't load " + realpath), null], err = _ref1[0], res = _ref1[1]; } else { options.__toffee.parent = realpath; - options.partial = options.partial || (function(_this) { - return function(fname, lvars) { - return _this._fn_partial(fname, lvars, realpath, options); - }; - })(this); - options.snippet = options.snippet || (function(_this) { - return function(fname, lvars) { - return _this._fn_snippet(fname, lvars, realpath, options); - }; - })(this); - options.load = options.load || (function(_this) { - return function(fname, lvars) { - return _this._fn_load(fname, lvars, realpath, options); - }; - })(this); - options.print = options.print || (function(_this) { - return function(txt) { - return _this._fn_print(txt, options); - }; - })(this); + options.partial = options.partial || function(fname, lvars) { + return _this._fn_partial(fname, lvars, realpath, options); + }; + options.snippet = options.snippet || function(fname, lvars) { + return _this._fn_snippet(fname, lvars, realpath, options); + }; + options.load = options.load || function(fname, lvars) { + return _this._fn_load(fname, lvars, realpath, options); + }; + options.print = options.print || function(txt) { + return _this._fn_print(txt, options); + }; if (options.console == null) { options.console = { log: console.log @@ -267,6 +265,22 @@ } }; + engine.prototype._loadWithoutCache = function(filename, options) { + var e, txt, v, view_options, _ref1; + try { + txt = fs.readFileSync(filename, 'utf8'); + } catch (_error) { + e = _error; + txt = "Error: Could not read " + filename; + if (((_ref1 = options.__toffee) != null ? _ref1.parent : void 0) != null) { + txt += " first requested in " + options.__toffee.parent; + } + } + view_options = this._generateViewOptions(filename); + v = new view(txt, view_options); + return v; + }; + engine.prototype._loadCacheAndMonitor = function(filename, options) { var e, previous_fs_err, txt, v, view_options, _ref1; previous_fs_err = this.fsErrorCache[filename] != null; @@ -295,34 +309,33 @@ }; engine.prototype._reloadFileInBkg = function(filename, options) { - return fs.readFile(filename, 'utf8', (function(_this) { - return function(err, txt) { - var ctx, v, view_options, _ref1; - if (err || (txt !== _this.viewCache[filename].txt)) { - if (err) { - _this.fsErrorCache[filename] = Date.now(); - txt = "Error: Could not read " + filename; - if (((_ref1 = options.__toffee) != null ? _ref1.parent : void 0) != null) { - txt += " requested in " + options.__toffee.parent; - } + var _this = this; + return fs.readFile(filename, 'utf8', function(err, txt) { + var ctx, v, view_options, _ref1; + if (err || (txt !== _this.viewCache[filename].txt)) { + if (err) { + _this.fsErrorCache[filename] = Date.now(); + txt = "Error: Could not read " + filename; + if (((_ref1 = options.__toffee) != null ? _ref1.parent : void 0) != null) { + txt += " requested in " + options.__toffee.parent; } - if (!(err && _this.viewCache[filename].fsError)) { - view_options = _this._generateViewOptions(filename); - ctx = _this.pool.get(); - view_options.ctx = ctx; - view_options.cb = function(v) { - _this._log("" + filename + " updated and ready"); - _this.viewCache[filename] = v; - return _this.pool.release(ctx); - }; - if (err) { - view_options.fsError = true; - } - return v = new view(txt, view_options); + } + if (!(err && _this.viewCache[filename].fsError)) { + view_options = _this._generateViewOptions(filename); + ctx = _this.pool.get(); + view_options.ctx = ctx; + view_options.cb = function(v) { + _this._log("" + filename + " updated and ready"); + _this.viewCache[filename] = v; + return _this.pool.release(ctx); + }; + if (err) { + view_options.fsError = true; } + return v = new view(txt, view_options); } - }; - })(this)); + } + }); }; engine.prototype._generateViewOptions = function(filename) { @@ -338,29 +351,28 @@ }; engine.prototype._monitorForChanges = function(filename, options) { - /* we must continuously unwatch/rewatch because some editors/systems invoke a "rename" event and we'll end up following the wrong, old 'file' as a new one is dropped in its place. Files that are missing are ignored here because they get picked up by new calls to _loadCacheAndMonitor - */ - var e, fsw; + */ + + var e, fsw, + _this = this; if (this.fsErrorCache[filename] == null) { fsw = null; try { this._log("" + filename + " starting fs.watch()"); return fsw = fs.watch(filename, { persistent: true - }, (function(_this) { - return function(change) { - _this._log("" + filename + " closing fs.watch()"); - fsw.close(); - _this._monitorForChanges(filename, options); - return _this._reloadFileInBkg(filename, options); - }; - })(this)); + }, function(change) { + _this._log("" + filename + " closing fs.watch()"); + fsw.close(); + _this._monitorForChanges(filename, options); + return _this._reloadFileInBkg(filename, options); + }); } catch (_error) { e = _error; this._log("fs.watch() failed for " + filename + "; settings fsErrorCache = true"); diff --git a/lib/errorHandler.js b/lib/errorHandler.js index 96f1ea4..fece7e0 100644 --- a/lib/errorHandler.js +++ b/lib/errorHandler.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.7.1 +// Generated by CoffeeScript 1.6.3 (function() { var errorTypes, path, toffeeError, util, _ppEscape, __hasProp = {}.hasOwnProperty, @@ -41,7 +41,6 @@ } toffeeError.prototype.getConvertedError = function() { - /* -------------------------------------- returns a JS style error, but with some extras { @@ -52,7 +51,8 @@ ...etc... } ------------------------------------------ - */ + */ + var line, res, _ref, _ref1, _ref2; res = { stack: [], @@ -105,11 +105,11 @@ }; toffeeError.prototype._convertRuntimeStackLines = function(converted_err) { - /* a little more complicated, so extracted. Returns an array of dictionaries where there's extra info on each line in the stack. - */ + */ + var at_pub_call, hit_pub_yet, i, in_src_file, line, lineno, lrange, m, rxx_inline, rxx_pub, stack, _i, _len, _results; hit_pub_yet = false; stack = converted_err.stack; @@ -156,10 +156,10 @@ }; toffeeError.prototype.getPrettyPrintText = function() { - /* returns a TEXT only blob explaining the error - */ + */ + var cerr, count, header, i, item, res, _i, _len, _ref, _ref1; cerr = this.getConvertedError(); header = "" + cerr.dir_name + "/" + cerr.file + ": " + cerr.message; @@ -189,11 +189,11 @@ }; toffeeError.prototype.getPrettyPrint = function() { - /* returns an HTML blob explaining the error with lines highlighted - */ + */ + var cerr, count, extra, header, i, item, j, line, padding, padding_len, res, _i, _j, _len, _ref, _ref1, _ref2, _ref3, _ref4; cerr = this.getConvertedError(); res = ""; @@ -270,12 +270,12 @@ }; toffeeError.prototype._convertOffensiveLineToToffeeRange = function(lineno) { - /* Given the error line in a converted file, hunts for surrounding __toffee.lineno calls and returns a pair array with the error position range in the original toffee file. - */ + */ + var next, next_matches, ol, prev, prev_matches, res, tl; ol = this.offensiveSrcLines; tl = this.toffeeSrcLines; diff --git a/lib/pool.js b/lib/pool.js index 16ab81f..34e4fd7 100644 --- a/lib/pool.js +++ b/lib/pool.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.7.1 +// Generated by CoffeeScript 1.6.3 (function() { var Pool; diff --git a/lib/utils.js b/lib/utils.js index 8b7bdf4..45f1cfa 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.7.1 +// Generated by CoffeeScript 1.6.3 (function() { var lex, lexer; @@ -7,12 +7,12 @@ lex = new lexer.Lexer(); exports.interpolateString = function(str) { - /* Similar to the interpolateString function in CoffeeScript, except that it doesn't actually work on anything inside an outer #{}; we're just looking to recognize them. - */ + */ + var expr, i, inner, interpolated, letter, pi, res, tag, tokens, value, _i, _len, _ref; tokens = []; res = []; diff --git a/lib/view.js b/lib/view.js index 7264dfe..fbcc0da 100644 --- a/lib/view.js +++ b/lib/view.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.7.1 +// Generated by CoffeeScript 1.6.3 (function() { var TAB_SPACES, coffee, e, errorHandler, errorTypes, getBundleHeaders, getCommonHeaders, getCommonHeadersJs, minimizeJs, parser, spaces, states, tabs, toffeeError, util, utils, view, vm, _ref, _ref1; @@ -62,24 +62,24 @@ }; getCommonHeaders = function(tab_level, include_bundle_headers, auto_escape) { - /* each view will use this, or if they're bundled together, it'll only be used once. include_bundle_headers: includes some functions needed for browser use - */ + */ + var __; __ = tabs(tab_level); return "\n\n" + __ + "if not toffee? then toffee = {}\n" + __ + "if not toffee.templates then toffee.templates = {}\n\n" + __ + "toffee.states = " + (JSON.stringify(states)) + "\n\n" + __ + "toffee.__json = (locals, o) ->\n" + __ + " if not o? then return \"null\"\n" + __ + " else return \"\" + JSON.stringify(o).replace(//g,'\\\\u003E').replace(/&/g,'\\\\u0026')\n\n" + __ + "toffee.__raw = (locals, o) -> o\n\n" + __ + "toffee.__html = (locals, o) ->\n" + __ + " (\"\"+o).replace(/&/g, '&').replace(//g, '>').replace(/\"/g, '"')\n\n" + __ + "toffee.__escape = (locals, o) ->\n" + __ + " if locals.__toffee.autoEscape? then ae = locals.__toffee.autoEscape\n" + __ + " else if " + (auto_escape != null) + " then ae = " + auto_escape + "\n" + __ + " else ae = true\n" + __ + " if ae\n" + __ + " if o is undefined then return ''\n" + __ + " if o? and (typeof o) is \"object\" then return locals.json o\n" + __ + " return locals.html o\n" + __ + " return o\n\n" + __ + "toffee.__augmentLocals = (locals, bundle_path) ->\n" + __ + " _l = locals\n" + __ + " _t = _l.__toffee = {out: []}\n" + __ + " if not _l.print? then _l.print = (o) -> toffee.__print _l, o\n" + __ + " if not _l.json? then _l.json = (o) -> toffee.__json _l, o\n" + __ + " if not _l.raw? then _l.raw = (o) -> toffee.__raw _l, o\n" + __ + " if not _l.html? then _l.html = (o) -> toffee.__html _l, o\n" + __ + " if not _l.escape? then _l.escape = (o) -> toffee.__escape _l, o\n" + __ + " if not _l.partial? then _l.partial = (path, vars) -> toffee.__partial toffee.templates[\"\#{bundle_path}\"], _l, path, vars\n" + __ + " if not _l.snippet? then _l.snippet = (path, vars) -> toffee.__snippet toffee.templates[\"\#{bundle_path}\"], _l, path, vars\n" + __ + " if not _l.load? then _l.load = (path, vars) -> toffee.__load toffee.templates[\"\#{bundle_path}\"], _l, path, vars\n" + __ + " _t.print = _l.print\n" + __ + " _t.json = _l.json\n" + __ + " _t.raw = _l.raw\n" + __ + " _t.html = _l.html\n" + __ + " _t.escape = _l.escape\n" + __ + " _t.partial = _l.partial\n" + __ + " _t.snippet = _l.snippet\n" + __ + " _t.load = _l.load\n\n" + (include_bundle_headers ? getBundleHeaders(tab_level) : ""); }; getBundleHeaders = function(tab_level) { - /* header stuff only needed when compiling to a JS file - */ + */ + var __; __ = tabs(tab_level); return "\n\n" + __ + "toffee.__print = (locals, o) ->\n" + __ + " if locals.__toffee.state is toffee.states.COFFEE\n" + __ + " locals.__toffee.out.push o\n" + __ + " return ''\n" + __ + " else\n" + __ + " return \"\#{o}\"\n\n" + __ + "toffee.__normalize = (path) ->\n" + __ + " if (not path?) or path is \"/\"\n" + __ + " return path\n" + __ + " else\n" + __ + " parts = path.split \"/\"\n" + __ + " np = []\n" + __ + " # make sure path always starts with '/'\n" + __ + " if parts[0]\n" + __ + " np.push ''\n" + __ + " for part in parts\n" + __ + " if part is \"..\"\n" + __ + " if np.length > 1\n" + __ + " np.pop()\n" + __ + " else\n" + __ + " np.push part\n" + __ + " else\n" + __ + " if part isnt \".\"\n" + __ + " np.push part\n" + __ + " path = np.join \"/\"\n" + __ + " if not path then path = \"/\"\n" + __ + " return path\n\n" + __ + "toffee.__partial = (parent_tmpl, parent_locals, path, vars) ->\n" + __ + " path = toffee.__normalize parent_tmpl.bundlePath + \"/../\" + path\n" + __ + " return toffee.__inlineInclude path, vars, parent_locals\n\n" + __ + "toffee.__snippet = (parent_tmpl, parent_locals, path, vars) ->\n" + __ + " path = toffee.__normalize parent_tmpl.bundlePath + \"/../\" + path\n" + __ + " vars = if vars? then vars else {}\n" + __ + " vars.__toffee = vars.__toffee or {}\n" + __ + " vars.__toffee.noInheritance = true\n" + __ + " return toffee.__inlineInclude path, vars, parent_locals\n\n" + __ + "toffee.__load = (parent_tmpl, parent_locals, path, vars) ->\n" + __ + " path = toffee.__normalize parent_tmpl.bundlePath + \"/../\" + path\n" + __ + " vars = if vars? then vars else {}\n" + __ + " vars.__toffee = vars.__toffee or {}\n" + __ + " vars.__toffee.repress = true\n" + __ + " return toffee.__inlineInclude path, vars, parent_locals\n\n" + __ + "toffee.__inlineInclude = (path, locals, parent_locals) ->\n" + __ + " options = locals or {}\n" + __ + " options.passback = {}\n" + __ + " options.__toffee = options.__toffee or {}\n" + __ + "\n" + __ + " # we need to make a shallow copy of parent variables\n" + __ + " reserved = {}\n" + __ + " reserved[k] = true for k in [\"passback\", \"load\", \"print\", \"partial\", \"snippet\", \"layout\", \"__toffee\", \"postProcess\"]\n" + __ + " if not options.__toffee.noInheritance\n" + __ + " for k,v of parent_locals when not locals?[k]?\n" + __ + " if not reserved[k]?\n" + __ + " options[k] = v\n" + __ + "\n" + __ + " if not toffee.templates[path]\n" + __ + " return \"Inline toffee include: Could not find \#{path}\"\n" + __ + " else\n" + __ + " res = toffee.templates[path].pub options\n" + __ + " for k,v of options.passback\n" + __ + " parent_locals[k] = v\n" + __ + " return res"; @@ -99,11 +99,12 @@ view = (function() { function view(txt, options) { - /* important options: cb: if this is set, compilation will happen async and cb will be executed when it's ready - */ + */ + + var _this = this; options = options || {}; this.fileName = options.fileName || options.filename || null; this.bundlePath = options.bundlePath || "/"; @@ -122,21 +123,19 @@ this.fun = null; this.error = null; if (options.cb) { - this._prepAsync(txt, options.ctx, ((function(_this) { - return function() { - return options.cb(_this); - }; - })(this))); + this._prepAsync(txt, options.ctx, (function() { + return options.cb(_this); + })); } } view.prototype._prepAsync = function(txt, ctx, cb) { - /* Only once it's fully compiled does it callback. Defers via setTimeouts in each stage in the compile process for CPU friendliness. This is a lot prettier with iced-coffee-script. - */ + */ + var v; this._log("Prepping " + (this.fileName != null ? this.fileName : 'unknown') + " async."); this._toTokenObj(); @@ -166,10 +165,10 @@ }; view.prototype._cleanTabs = function(obj) { - /* replaces tabs with spaces in their coffee regions - */ + */ + var item, _i, _len, _ref2, _ref3, _results; if ((_ref2 = obj[0]) === "TOFFEE_ZONE" || _ref2 === "COFFEE_ZONE") { _ref3 = obj[1]; @@ -185,10 +184,10 @@ }; view.prototype.run = function(options, ctx) { - /* returns [err, str] - */ + */ + var fun, line, pair, res, txt, _i, _len, _ref2; ctx = ctx || vm.createContext({}); fun = this._toFun(ctx); @@ -228,10 +227,10 @@ }; view.prototype._toTokenObj = function() { - /* compiles Toffee to token array - */ + */ + if (this.tokenObj == null) { try { this.tokenObj = parser.parse(this.txt); @@ -334,10 +333,10 @@ }; view.prototype._snippetIsSoloToken = function(str) { - /* if the inside is something like #{ foo } not #{ foo.bar } or other complex thing. - */ + */ + if (str.match(/^[$A-Za-z_\x7f-\uffff][$\w\x7f-\uffff]*$/)) { return true; } @@ -432,12 +431,12 @@ }; view.prototype._quoteStr = function(s) { - /* returns a triple-quoted string, dividing into single quoted start and stops, if the string begins with double quotes, since coffee doesn't want to let us escape those. - */ + */ + var follow, lead, res; lead = ""; follow = ""; @@ -471,11 +470,11 @@ }; view.prototype._escapeForStr = function(s) { - /* escapes a string so it can make it into coffeescript triple quotes without losing whitespace, etc. - */ + */ + s = s.replace(/\\/g, '\\\\'); s = s.replace(/\n/g, '\\n'); s = s.replace(/\t/g, '\\t'); @@ -516,13 +515,13 @@ }; view.prototype._getIndentationDelta = function(coffee, baseline) { - /* given an arbitrarily indented set of coffeescript, returns the delta between the first and last lines, in chars. Ignores leading/trailing whitespace lines If passed a baseline, uses that instead of own. - */ + */ + var lines, res, y, y_l; if (baseline == null) { baseline = this._getIndentationBaseline(coffee); diff --git a/package.json b/package.json index 20be5d2..52d24c2 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "toffee", "description": "A NodeJs, Express 3.x, Express 2.x, and browser-side templating language based on CoffeeScript with slicker tokens and syntax.", - "version": "0.1.7", + "version": "0.1.8", "directories": { "lib": "./lib" }, @@ -16,10 +16,12 @@ "highlight.js": "*" }, "devDependencies": { - "jison" : "*", - "zombie": "*", - "assert": "*", - "express": "*" + "jison" : "*", + "zombie": "*", + "assert": "*", + "express": "*", + "tablify": "*", + "iced-coffee-script": "*" }, "repository": { "type": "git", diff --git a/src/engine.coffee b/src/engine.coffee index cabc862..316e889 100644 --- a/src/engine.coffee +++ b/src/engine.coffee @@ -22,6 +22,7 @@ class engine @prettyPrintErrors = if options.prettyPrintErrors? then options.prettyPrintErrors else true @prettyLogErrors = if options.prettyLogErrors? then options.prettyLogErrors else true @autoEscape = if options.autoEscape? then options.autoEscape else true + @cache = if options.cache? then options.cache else true @additionalErrorHandler = options.additionalErrorHandler or null @viewCache = {} # filename -> view @@ -115,7 +116,10 @@ class engine options.__toffee.dir = options.__toffee.dir or process.cwd() realpath = @normalizeFilename options.__toffee.dir, filename - v = (@_viewCacheGet realpath) or (@_loadCacheAndMonitor realpath, options) + if @cache + v = (@_viewCacheGet realpath) or (@_loadCacheAndMonitor realpath, options) + else + v = @_loadWithoutCache realpath, options if v if @fsErrorCache[realpath] @@ -192,6 +196,17 @@ class engine else return txt + _loadWithoutCache: (filename, options) -> + try + txt = fs.readFileSync filename, 'utf8' + catch e + txt = "Error: Could not read #{filename}" + if options.__toffee?.parent? then txt += " first requested in #{options.__toffee.parent}" + + view_options = @_generateViewOptions filename + v = new view txt, view_options + return v + _loadCacheAndMonitor: (filename, options) -> previous_fs_err = @fsErrorCache[filename]? try diff --git a/test/express3/public/javascripts/toffee.js b/test/express3/public/javascripts/toffee.js index 482625c..73ffca5 100644 --- a/test/express3/public/javascripts/toffee.js +++ b/test/express3/public/javascripts/toffee.js @@ -1,7 +1,5 @@ var toffee; - - if (typeof toffee === "undefined" || toffee === null) { toffee = {}; } diff --git a/test/run_cases.coffee b/test/run_cases.coffee deleted file mode 100644 index e67a130..0000000 --- a/test/run_cases.coffee +++ /dev/null @@ -1,102 +0,0 @@ -{engine} = require '../lib/engine' -fs = require 'fs' -path = require 'path' -zombie = require 'zombie' -coffee = require 'coffee-script' - -regular_engine = new engine({ - verbose: false - prettyPrintErrors: false -}) - -minimized_engine = new engine({ - verbose: false - prettyPrintErrors: false - minimize: true -}) - -# --------------------------------------------------------------- - -run_case_dir = (eng, dir, cb) -> - expected = fs.readFileSync "#{dir}/output.toffee", "utf8" - existsSync = if path.existsSync? then path.existsSync else fs.existsSync - if existsSync "#{dir}/vars.coffee" - txt = fs.readFileSync "#{dir}/vars.coffee", "utf8" - vars = coffee.compile(txt, {bare: true}) - vars = eval "#{vars}" - else if existsSync "#{dir}/vars.js" - vars = fs.readFileSync "#{dir}/vars.js", "utf8" - vars = eval "(#{vars})" - else - vars = {} - d = Date.now() - eng.run "#{dir}/input.toffee", vars, (err, res) -> - time_ms = Date.now() - d - if err - cb err, time_ms - else - if res isnt expected - cb "Failure in case #{dir}." + - "\n\nExpected\n=====\n#{expected}\n=====" + - "\nGot\n=====\n#{res}\n=====\n", time_ms - else - cb null, time_ms - -run_all_case_dirs = (eng, cb) -> - time_ms = 0 - case_dirs = fs.readdirSync "#{__dirname}/cases/" - countdown = case_dirs.length - for dir in case_dirs - run_case_dir eng, "#{__dirname}/cases/#{dir}", (err, ms) -> - countdown-- - time_ms += ms - if err - console.log err - process.exit 1 - if countdown is 0 - cb null, time_ms, case_dirs.length - -run_multiple_runs = (eng, num_runs, cb) -> - times = [] - countdown = num_runs - total_time = 0 - total_tests = 0 - for i in [0...num_runs] - run_all_case_dirs regular_engine, (err, time, tests_run) -> - countdown-- - total_time += time - total_tests += tests_run - if countdown is 0 - cb null, total_time, total_tests - - -run_express_test = (cb) -> - require('./express3/app').run -> - zombie.visit 'http://localhost:3033', (e, browser) -> - if e - console.log e - $ = browser.window.$ - successes = $('.success').length - fails = $('.fail').length - if (fails is 0) and (successes > 0) - return cb() - console.log "BROWSER ERROR! Server left running at http://localhost:3033 for your convenience" - -# ---------------------------------------------------------------- -go = -> - run_all_case_dirs regular_engine, (err, time, tests_run) -> - console.log "Regular Engine: SUCCESS for #{tests_run} cold tests in #{time}ms (#{(time/tests_run).toFixed 2}ms/test)" - run_multiple_runs regular_engine, 30, (err, time, tests_run) -> - console.log "Regular Engine: SUCCESS for #{tests_run} hot tests in #{time}ms (#{(time/tests_run).toFixed 2}ms/test)" - run_all_case_dirs minimized_engine, (err, time, tests_run) -> - console.log "Minimized (browser) Engine: SUCCESS for #{tests_run} cold tests in #{time}ms (#{(time/tests_run).toFixed 2}ms/test)" - run_multiple_runs minimized_engine, 30, (err, time, tests_run) -> - console.log "Minimized (browser) Engine: SUCCESS for #{tests_run} hot tests in #{time}ms (#{(time/tests_run).toFixed 2}ms/test)" - run_express_test -> - console.log "Browser: SUCCESS for tests at http://localhost:3033; server terminated successfully" - process.exit 0 - -if not module.parent? - go() - -else exports.test = go diff --git a/test/run_cases.iced b/test/run_cases.iced new file mode 100644 index 0000000..904eb1c --- /dev/null +++ b/test/run_cases.iced @@ -0,0 +1,108 @@ +{engine} = require '../lib/engine' +fs = require 'fs' +path = require 'path' +zombie = require 'zombie' +coffee = require 'coffee-script' +tablify = require 'tablify' + +regular_engine = new engine({ + verbose: false + prettyPrintErrors: false +}) + +minimized_engine = new engine({ + verbose: false + prettyPrintErrors: false + minimize: true +}) + +# --------------------------------------------------------------- + +MULTI_RUNS = 50 + +file_cache = {} + +# --------------------------------------------------------------- + +read_file_sync = (fname) -> + if not file_cache[fname]? + file_cache[fname] = fs.readFileSync fname, "utf8" + return file_cache[fname] + +# --------------------------------------------------------------- + +run_case_dir = (eng, dir, cb) -> + start = Date.now() + expected = read_file_sync "#{dir}/output.toffee" + existsSync = if path.existsSync? then path.existsSync else fs.existsSync + if existsSync "#{dir}/vars.coffee" + txt = read_file_sync "#{dir}/vars.coffee" + vars = coffee.compile(txt, {bare: true}) + vars = eval "#{vars}" + else if existsSync "#{dir}/vars.js" + vars = read_file_sync "#{dir}/vars.js" + vars = eval "(#{vars})" + else + vars = {} + vars["rand_#{Math.random()}"] = ("foo" for i in [0...(~~(20000*Math.random()))]).join "" + await eng.run "#{dir}/input.toffee", vars, defer err, res + time_ms = Date.now() - start + if err + cb err, time_ms + else + if res isnt expected + cb "Failure in case #{dir}." + + "\n\nExpected\n=====\n#{expected}\n=====" + + "\nGot\n=====\n#{res}\n=====\n", time_ms + else + cb null, time_ms + +run_all_case_dirs = (eng, cb) -> + start = Date.now() + case_dirs = fs.readdirSync "#{__dirname}/cases/" + for dir in case_dirs + await run_case_dir eng, "#{__dirname}/cases/#{dir}", defer err, ms + if err + console.log err + process.exit 1 + cb null, (Date.now() - start), case_dirs.length + +run_multiple_runs = (eng, num_runs, cb) -> + total_tests = 0 + start = Date.now() + for i in [0...num_runs] + await setTimeout defer(), 1 + await run_all_case_dirs regular_engine, defer err, time, tests_run + total_tests += tests_run + cb null, (Date.now() - start), total_tests + +run_express_test = (cb) -> + require('./express3/app').run -> + zombie.visit 'http://localhost:3033', (e, browser) -> + if e + console.log e + $ = browser.window.$ + successes = $('.success').length + fails = $('.fail').length + if (fails is 0) and (successes > 0) + console.log "Express SUCCESS: #{successes} succeeded, #{fails} failed" + return cb() + console.log "BROWSER ERROR! Server left running at http://localhost:3033 for your convenience" + +# ---------------------------------------------------------------- +go = -> + await run_all_case_dirs regular_engine, defer err, time, tests_run + console.log "Regular Engine: SUCCESS for #{tests_run} cold tests in #{time}ms (#{(time/tests_run).toFixed 2}ms/test)" + await run_multiple_runs regular_engine, MULTI_RUNS, defer err, time, tests_run + console.log "Regular Engine: SUCCESS for #{tests_run} hot tests in #{time}ms (#{(time/tests_run).toFixed 2}ms/test)" + await run_all_case_dirs minimized_engine, defer err, time, tests_run + console.log "Minimized (browser) Engine: SUCCESS for #{tests_run} cold tests in #{time}ms (#{(time/tests_run).toFixed 2}ms/test)" + await run_multiple_runs minimized_engine, MULTI_RUNS, defer err, time, tests_run + console.log "Minimized (browser) Engine: SUCCESS for #{tests_run} hot tests in #{time}ms (#{(time/tests_run).toFixed 2}ms/test)" + await run_express_test defer() + process.exit 0 + +if not module.parent? + go() + +else exports.test = go diff --git a/toffee.js b/toffee.js index 482625c..73ffca5 100644 --- a/toffee.js +++ b/toffee.js @@ -1,7 +1,5 @@ var toffee; - - if (typeof toffee === "undefined" || toffee === null) { toffee = {}; } From 2b30413adfcd4fa6c23da9aca16442da74b73749 Mon Sep 17 00:00:00 2001 From: Chris Coyne Date: Thu, 22 May 2014 12:05:54 -0400 Subject: [PATCH 107/132] signing toffee... --- SIGNED.md | 242 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 242 insertions(+) create mode 100644 SIGNED.md diff --git a/SIGNED.md b/SIGNED.md new file mode 100644 index 0000000..8202119 --- /dev/null +++ b/SIGNED.md @@ -0,0 +1,242 @@ +##### Signed by https://keybase.io/chris +``` +-----BEGIN PGP SIGNATURE----- +Version: GnuPG/MacGPG2 v2.0.22 (Darwin) +Comment: GPGTools - https://gpgtools.org + +iQIcBAABCgAGBQJTfiBAAAoJENIkQTsc+mSQW1wP/AhGolTn73gJX4wIray/naOg +7BxYeIt7k7RS4YxMcaaT8NtvK6N6oEcUTcWINjT6rMnRTzLE56XiegdzBzp4I+na +HAdMOwvDNmGziDx6Fstcw/eIYdUHOeQkfeUZNW2/RxVwcMcUbIs7cBflGFL1DUKK +xjqGE+Kbck6mkblaNBvqWHbp/ZmjbyZVMSqDTysk/RiqqcjBBNBlcJNgSQeNcxm6 +bUmIMX4jzfd5OTHvWqn2/XdvwmLAXE1kZ1ap1/uU9qKw+Y5pHA+MgfptxifrMk4f +G3ZryRSABuuqQV0VEjyt1s4nhEFCX7iur2qSbWEtweLJRqRU/2sn073oDt87Jsgw +mmrJMFWMEyKyw6i+xWOs0W5vmq/rHbYg5yk0LDD4awtJ2UmnIngZjo86JGWXVywL +zugvzxPSZECJTiYWrYYeQOa72xZKJqdDQzjj3n2U2AdaYCpw/TpnGDaqCxXQliSQ +uEWjGi1Kh8e/kGdEvgbXgvqlGi24sh/OMh0wNOQS3+xpbp+5zpP+lvBEuSMtNfst +Al3DpkCSIKa6+FVAaJi7yzkZElGQcCw8QtOMDIxYY6glnBkzgaWUo9rsRgip5Rpa +C4+RxnYkPrfvFvOXThE+w0kJbNHSbBRmAfySwhWwgP0HsF/HtRYUCmIUnLWBn8xG ++MmYw7Qcwz/n8nciWNkE +=/OyP +-----END PGP SIGNATURE----- + +``` + + + +### Begin signed statement + +#### Expect + +``` +size exec file contents + ./ +24 .gitignore 4419468a0a62e000bee4fab5c85876e287a6313001de5c9305bf849488829314 +1800 Cakefile 2f3b1709f19ace9827bfd464d141382ff01b7f86d45cd1faed6bfee906fdcd9a +1079 LICENSE edb721bca3cfa08423f93741d60300f28350af960238477fe89826e19fc3dfa9 +13715 README.md 44a697135c4145b598a812e7d904781faf772d384e8859c2767fea4be8afffb4 + bin/ +57 toffee 616023d8f8b8dbb5450051ddc21c8887829fba38dc3341feaaa3ffd5afd3ee8c +2099 index.coffee a121e739dd5e8013bc40e217f2a6529a39b2e6424297410565866667bb124603 +1866 index.js f897f1995a661aea7b4a1fdc300de342cb0556b751900dd50269c158dc1122b8 + lib/ +0 README.md e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 + coffee-script/ +2313 browser.js 3a8acdd99e1fd83dd6fea7ef373e5f8255a8dc5f8fa1bcb21e0426598ac9b4b7 +2970 cake.js ded7e20bfe4b8e2112b07a37c2fdc61bd4da21fb2e71deab72975d04c0fe126d +4831 coffee-script.js 27975b854116004d266f10f49ac1072912a94b004d368187f2f4f40926c1d644 +15518 command.js f005bdbfb4d5b35be6e20e283dddb20d96be056415712a6411f8b338528368f5 +18038 grammar.js c65d4fd04403bf823c51567749a5caca1a3e5987f73e3f1abea58462cbbfd0ad +1752 helpers.js 750cf58eba15b5070844a34ac5f5f37dc6fdbfbb4cfcd53c3f63574fb554b73f +196 index.js 6a8b57040e86aeaa2a2f2553454dd89246c6d5d666ae51542f022343d10fbb67 +25558 lexer.js 1ab66ee1ec19c0a6831ffc279a529f80677357dc14d3498b00b227f12e98945d +91732 nodes.js ad6999209ccbd157ba6f67aaaeca6ceca2db3805f2a3fd21cebfa95e2cb47408 +4141 optparse.js 6213d5ca1dc72cb0c98ceea0c7df30bbc0dc146d1304c9c46d22dd1434145573 +104572 x parser.js 8bd20f0ae5104feeb1de543dabb5e130194d4e96db75516d20201f31e6ac7823 +6135 repl.js 759e4ea22666f17c242afa77c2d9b8f1ecacea6fd84ef6baf60bfae22703d38e +13147 rewriter.js 60953a1842db7d19552b4707d7f29d74ef6d43ffc8eae8a2711689034790a154 +3696 scope.js 1cdf8a1b877644a9a23dccedcaaa51561ddf3d352fe178499cba0082daa50c3a +5706 command_line.js 1569632c69e36cbf6f9da16486b20972a7b5e362636a55d278650bca0aeb7c83 +209 consts.js 7973d407737548d3de549250f031d454989597dd9538684dde119099cd361de7 +14171 engine.js edd6e4f7d876a0bcaf62e5d649adf4f59973c86b42f9fb36e6433454a3554590 +12366 errorHandler.js 273739c9ef121e9620eb12757727d956cefe063b00d1c14d0c5d5682df9cf749 +571 pool.js 2f83097467cbde33e9f1d091a6e31b524ea43bf9e97ef05ba35ae641182f3e90 +23739 toffee_lang.js e875ff2e17aa6977a5613409c46e4d775c1551676173b69dced7f53e391501f1 +1733 utils.js b9e0d093afed0c282195365fd5c90e2f4c93d9860ce24807d55d510cdd5ae042 +25118 view.js a3e6239a1fcad055480c5f85f0865b9900db8b311371e1195519747a6164f01e +859 package.json ce699e01cf0550d0032620b6888b61c23ddb3fd0a12419ba0e27fe58ffb3115c + src/ +5155 command_line.coffee 707f1df79cc865f4096ab19ccadfe0c0a627a74093c2e5b56a94011ac8a99bc3 +197 consts.coffee 2f1c1ecef13818b126d49cc7eb0568019a1f5e46cee28164321d496c93568a2e +10749 engine.coffee 7b8d66073adecaa4231df5122f4e41df20a294f02f38ea78b0629c2c0a62d26a +8853 errorHandler.coffee 997fb14e397541edde3d8567008099b54d976bce4ccf6034449e13d66b883828 +270 pool.coffee b493416ba61c6d2f98b713b7f30cc8002142c26205be21653a00f7c11ea1b6c4 +2604 toffee.jison 8d040196ea79ed3676b5874f8d85da3849cc3ad82ecaeba212a4194033bfb72e +1227 utils.coffee efd639a91f7cca74fdc138743aeb572bcaffc2c151d9a8a89bf31e3d3c798873 +18996 view.coffee 6d55d928827a30db1d6ae8abb331e1839628688a70ef17ab98918421431dfcfd + test/ + cases/ + big_file/ +2456 input.toffee 02bcbba28b6754a3cdc72481960efc7a3bd6ede131d426fea62f9f32e26a2259 +2156 output.toffee 80467ff63e3e8233fbeffe8b0da2fbb96e5384045e60a4f8c59809efcb090156 + comments/ +317 input.toffee e20c9441fa793370b167b00b73fbc956d060da7a7162c43c152c03784ec6fdca +24 output.toffee 5d4c2d98524149b07d2986f0475a83a382d73b1cf5840d42c0e4c4c176e18d07 +24 vars.js b33c05dd9eb5542775e403128e8ef18ba4e28f0969b14d7808eb05731f69aa27 + custom_escape/ +206 input.toffee 9e4f25cfdc84dd1a38bace63034d4c56d7a67baac58ae66dc43082a349e170b1 +115 output.toffee 822f9b4a37b1c5a7f61bf354c5f52e7e090eaea13534a3411d94528b2509da89 +53 vars.coffee 265ec2c5e35604fffa79a41d97a626da7a1e69c685b0a2adffd55a5c172bea0c + eco_compare/ +617 input.toffee 456626b2d9c49c4291c5b64df547214acc210ae67335a59e0d2a3e92784baea8 +203 output.toffee bc5e3025cc24a38bc7aec447a9b4a69731c4f07366a44dab13b31779175e9059 + escape/ +1038 input.toffee 0cc9d7afb9aa641f451bc4d55a55b071e0d66be5019c931d705f83864851e6aa +895 output.toffee adaf052e1974dd16a3d203cf0c51a028af102de0929eebe411eb43f2f05ad0e2 + hello_world/ +19 input.toffee 43b2a2d9caf2b2fd07e0c9f6651e1d8dbe693b597ed4c41b41ae6e215730b939 +13 output.toffee f8c3bf62a9aa3e6fc1619c250e48abe7519373d3edf41be62eb5dc45199af2ef +28 temp.toffee 7088f0e7c3207ed5dde1a969035b83241d4ec62a6db679f105dd55d0e5eb1735 +24 vars.js b33c05dd9eb5542775e403128e8ef18ba4e28f0969b14d7808eb05731f69aa27 + include_order/ +20 child.toffee c2ee155aeb89085add713694bdadd2f92a0e6a6d89b054a6b448c75c1bc2cbf8 +79 input.toffee 785d474720d378a28724003b1d94131ff3f724974a63a0f094d95871d9ebd7f8 +14 output.toffee a711de3fcda696d28cab35f732d690ee8c446cc8af8a2049d7d3c41d907a7e22 +24 vars.js b33c05dd9eb5542775e403128e8ef18ba4e28f0969b14d7808eb05731f69aa27 + include_recursion/ +127 input.toffee a8e2eace272f32f2fc6598c39b518177411ff3bf8008693829f765dbc4c137dd +50 output.toffee 2061768abd3870bd58c6002650f4ebae501fc06495c9a89797475393d5510561 +21 vars.js 438a45f3c507117768bb5af1ad27dc604a8a7398e2faf907814630821eed032b + include_techniques/ +274 input.toffee 51a9fc1e20887218aa74a123b3b634f1b96ad03c9dc0bd85bde87c3fec1f5427 +68 message.toffee f866e3afbbc0db4e394d2d6832eb597be91b36d67115bd9042e5f8989965d176 +200 output.toffee dc2bc1b481a6a15f07b66a12c7ba102394bbeda7ef4a4e86f05a21d14d3596d0 +3 vars.js 8eb95bcbc154530931e15fc418c8b1fe991095671409552099ea1aa596999ede + indent_attack/ +1762 input.toffee 59dd9a39b05767cb8c80b11b1113420ce2c753d2fe661f4f32b104693a2555fc +192 output.toffee 0ff715dc431004bf322d551c81dde757f93615a80a9e412d5bf2d68bde5ba65a +3 vars.js 8eb95bcbc154530931e15fc418c8b1fe991095671409552099ea1aa596999ede + junk/ +109 input.toffee 55aa69e33431cf820634507ff2ad2c6afa3a3327e9177f37335f8c4ac4f8bcb0 +54 output.toffee 0714ffef629025cb57726e48e70ebab15d1bac4bbac0f04594e660ffef40bde3 + lambda_fns/ +239 input.toffee 0e4e340bd240dee1b4dafcb9a675181a5b73d898d177306a90b02e167deac5f7 +16 output.toffee 60046c735d209935d8c864d2959fe28ab28f3de0be88f5420393a90d72c584aa + multiline_interpolation/ +9 foo.toffee 5cc9132ad0c9fb8c41737ac2d4effad0d5b8cc984974335fc41524c0c9b48670 +114 input.toffee 9823b223ef8a1a97b56dccf838f644923fbd1a5dfdd58fa0bbff7910973bfb6e +34 output.toffee 4dbeb1b85a92efda6539abba91e9d99a2f10ba08729dca4cc6718b780d7c5020 + passback/ +125 const1.toffee 3ec02d5e9ca6eda8a51cd0dd8f0fc3cfade310c1542cf3b520256129b0ccd844 +123 const2.toffee 200fcd238ff2636694509ede71f39ec17e4bc59d8db3382dcdf2a3463a3211d7 +85 const3.toffee c4f83cf02233af721f1121859d0ed4f18750fab2eed36fabf83e532c3731f115 +112 const4.toffee a5c93df2c2f412f34abbc97a94bde44619a394a6cee74d9345c9f8fb200caf8b +91 const4_sub.toffee d9ef89bbfdae1b61eeb1330a6c279b4170239b05ff8e0c86d13a8e5ff133ea56 +155 const5.toffee 2e5d632e15032f5a961a8c45f3d0ffba7c9ad71049a3082c6221cb64d6f881ed +91 const5_sub.toffee ad76455adf05740f87cb8b3e73d96cfffa47206251e34e8c7c7b1c31a21181d4 +306 input.toffee 1a7703ce985d3d1a01c9ca2435e97404d87ceda441d1508ce3f634434d6216e9 +165 output.toffee d266a8a2089f3f8a2e347d877849d65d741a11b72b407cfcf93d6c4c97b67446 +31 vars.js e76ba466c6bfa9787e11470b905bff9bb66da1c8462e430aa96445d6ba3c8a35 + plaintext/ +9 input.toffee 9e553732ce6857dab01b48ff43f7e36034745dd58097f55fb78478ab1db6c480 +9 output.toffee 9e553732ce6857dab01b48ff43f7e36034745dd58097f55fb78478ab1db6c480 + post_process/ +85 buncha_junk.toffee 3b30ce356aacf38faae0ca2025aeb22f03d4bb425d53954bb275ff4a5a73bffd +248 input.toffee d652f27762cb371ba84fd433c3f6b4bfe69a31b8dc87a0a021a6cd942f260fc6 +62 output.toffee a78e23a6435957626eece7232ce61784abaa0debd42d3d38c9e623020c060833 +21 signature.toffee b93c52abf45bca4a79c77de08ccc0030735dc52dee35c8ccb58046d94961de59 +74 vars.coffee 1b6e71bbd50ef6a4dc7c2c683c46d81dac89c0c06d458730e741b8e31c9494d3 + render_no_args/ +20 input.toffee a1496fb7a9ce860b101a5fece46d6da21e37791efe4aee33c0ae2fe4081af5a4 +20 output.toffee a1496fb7a9ce860b101a5fece46d6da21e37791efe4aee33c0ae2fe4081af5a4 + snippets/ + foo/ + bar/ +51 body.toffee fe64622c0935021bbfd52bfef5192bd285175ae6da19c74a2b2613fdd113eee7 +157 message.toffee 937e58afb29e39f9293d6e537d7640edab19a87f4a68cd9ef19d57d80a126ca1 +169 input.toffee 830382a921281cca5c9080b004c469c65ab72585a91e33438df1fa425c7b0e58 +135 output.toffee 855ce927d562d24287a692902ee93342a5233841ad64cd94ad47840f663de123 +62 vars.js 1558fb36bc1239149afbcf685dc20a4a254f1eaf414e85adb606c3bb20567492 + special_cases/ +345 input.toffee 9f70ec351d068a6557649a43c9d4ceb04b6deaea397c797115051c28b764badc +109 output.toffee e959c173c801867016c650558ff89260c104b1283e8427c370d5cbe6ad8808ec + express3/ +956 app.coffee 66ec99f0dc5cccf78aac27009c91f249dfa6bc54e9756902055b82fb4dd9d1f0 +187 package.json 34dffb3488b7ec1361ecc388a035544b79cca8053ee57c26b0c64cba7ff5d81b + public/ + javascripts/ +93068 jquery-1.9.0.min.js 7fa0d5c3f538c76f878e012ac390597faecaabfe6fb9d459b919258e76c5df8e +65233 test_cases.js 2799bc9ef13d5e3b9269720c9bfdb302c1e0dd6b99d68027c6aad278fdcc2c0b +4876 toffee.js e0a8f645b0bfe86fc2ddb4219b25495f0b0c5e7031f804ebc01d71fc22b052d3 + stylesheets/ +110 style.css 2828f3d789d881ac0a37ccff297b4574f40955c6b8278332166659cf6867b539 + routes/ +275 index.js b3e47f4c9ee9ba482faad605f09f610c224aadf28186ba4c47e8fcc567a0f8b6 + views/ +15548 index.toffee 517ddbe54b3a1558803a26b398e94a7d98044f174b79368d29b0a1617d761421 + subdir1/ +189 hello_world.toffee 34703cc458413e0ade4ebb311b1d355cb3f4f74c75edda0b50c207a464b0d6ff + subdir2/ + foo/ +22 goodbye.toffee edc531db6b50fbce4a7ad1319dfb9924ea09b90898a40e8c640c2ef838b47c8a +288 goodbye_world.toffee 53bd645cae89afc9bf1aa08e87b3f2247c49546cb4ae278de2552187ed0068e9 + express3_error_handling/ +1434 app.coffee 8617874065cd79e799d3d2fdb6f76c6abbdcdb7015b40292a3a45f8b70b6e14a +187 package.json 34dffb3488b7ec1361ecc388a035544b79cca8053ee57c26b0c64cba7ff5d81b + public/ + javascripts/ +93068 jquery-1.9.0.min.js 7fa0d5c3f538c76f878e012ac390597faecaabfe6fb9d459b919258e76c5df8e +65233 test_cases.js 2799bc9ef13d5e3b9269720c9bfdb302c1e0dd6b99d68027c6aad278fdcc2c0b +4878 toffee.js ece8df6211cc9770c5fb50f1a58d0273baa16880bbf14572c7f3a6f5e6fcf998 + stylesheets/ +110 style.css 2828f3d789d881ac0a37ccff297b4574f40955c6b8278332166659cf6867b539 + routes/ +287 index.js e4ce11715d151e9b76d2e8a8a1ceed5aeb9341d4cdd97a6c0933a7a9d21add82 + views/ +737 index.toffee ad9a70f7774bf503eb800a073eb16d75b069b0f355b2c9176f11f2a55cb23b32 +1237 test_bad_coffee_syntax.toffee c051232538906552b73326e5fc23459ff9af157bb9fd7999e121f6558cd3f532 +165 test_bad_runtime.toffee 3cf0b2d298653ee45be8fa17092f7ac64407b5be3e77ff403e8da753a75e412c +52 test_bad_str_interpolate.toffee 46c9f9e1f9e170b71612a0755748feaa5c7777fc15d81e1897d82cecf2e7d385 +56 test_bad_toffee_syntax.toffee cdfaf909adcbb51b293c67ecedc578379c1660774789fcbac8d156a1e35920f5 +3552 generate_express_test.coffee 871c655a5193f891f4658faa90ef56061776e01f69552d1966922cef7fcf894b +3758 run_cases.iced 3338df9b4cd47d189acc61612ded19bff670bed7047b902546991c80fa6b1f56 +4876 toffee.js e0a8f645b0bfe86fc2ddb4219b25495f0b0c5e7031f804ebc01d71fc22b052d3 +``` + +#### Ignore + +``` +/SIGNED.md +``` + +#### Presets + +``` +git # ignore .git and anything as described by .gitignore files +dropbox # ignore .dropbox-cache and other Dropbox-related files +kb # ignore anything as described by .kbignore files +``` + + + +### End signed statement + +
    + +#### Notes + +With keybase you can sign any directory's contents, whether it's a git repo, +source code distribution, or a personal documents folder. It aims to replace the drudgery of: + + 1. comparing a zipped file to a detached statement + 2. downloading a public key + 3. confirming it is in fact the author's by reviewing public statements they've made, using it + +All in one simple command: + +```bash +keybase dir verify +``` + +There are lots of options, including assertions for automating your checks. + +For more info, check out https://keybase.io/docs/command_line/code_signing \ No newline at end of file From 34d2904dd5bf12f0a01774a790b79e9088956c68 Mon Sep 17 00:00:00 2001 From: Chris Coyne Date: Wed, 28 May 2014 10:54:05 -0400 Subject: [PATCH 108/132] version bump with SIGNED.md added --- SIGNED.md | 28 ++++++++++++++-------------- package.json | 2 +- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/SIGNED.md b/SIGNED.md index 8202119..088c66e 100644 --- a/SIGNED.md +++ b/SIGNED.md @@ -4,19 +4,19 @@ Version: GnuPG/MacGPG2 v2.0.22 (Darwin) Comment: GPGTools - https://gpgtools.org -iQIcBAABCgAGBQJTfiBAAAoJENIkQTsc+mSQW1wP/AhGolTn73gJX4wIray/naOg -7BxYeIt7k7RS4YxMcaaT8NtvK6N6oEcUTcWINjT6rMnRTzLE56XiegdzBzp4I+na -HAdMOwvDNmGziDx6Fstcw/eIYdUHOeQkfeUZNW2/RxVwcMcUbIs7cBflGFL1DUKK -xjqGE+Kbck6mkblaNBvqWHbp/ZmjbyZVMSqDTysk/RiqqcjBBNBlcJNgSQeNcxm6 -bUmIMX4jzfd5OTHvWqn2/XdvwmLAXE1kZ1ap1/uU9qKw+Y5pHA+MgfptxifrMk4f -G3ZryRSABuuqQV0VEjyt1s4nhEFCX7iur2qSbWEtweLJRqRU/2sn073oDt87Jsgw -mmrJMFWMEyKyw6i+xWOs0W5vmq/rHbYg5yk0LDD4awtJ2UmnIngZjo86JGWXVywL -zugvzxPSZECJTiYWrYYeQOa72xZKJqdDQzjj3n2U2AdaYCpw/TpnGDaqCxXQliSQ -uEWjGi1Kh8e/kGdEvgbXgvqlGi24sh/OMh0wNOQS3+xpbp+5zpP+lvBEuSMtNfst -Al3DpkCSIKa6+FVAaJi7yzkZElGQcCw8QtOMDIxYY6glnBkzgaWUo9rsRgip5Rpa -C4+RxnYkPrfvFvOXThE+w0kJbNHSbBRmAfySwhWwgP0HsF/HtRYUCmIUnLWBn8xG -+MmYw7Qcwz/n8nciWNkE -=/OyP +iQIcBAABCgAGBQJThfhsAAoJENIkQTsc+mSQpOkQAKukgBMg9jVFFtEZxLsqEx4v +qUC/wvqiNp3iv/YVl/y4mglKCbhCPiuVm2boT48zsITPXsWI9dkPVzO2U6b1rM5X +07UCDE8qQ5esROLbdfXPdREfpQr4ehMQ+/nTEUGapcPXxB+kxyJvZXd2H3L8/C/d +w4AwOHP9FeCXlOxFkaorYvtwIuqpHYOk2qhX/l6dY3tKqKlKLGHa67PJL8zZmv/9 +hvli7KhLJjmlbE9lzdyaxNbe9T7/kHHhy3YybA2fcGCut+zBknx3OwwyNsQEz15h +CWZhR/aYSDKb9jgY8N+5u9ZuJDZkAQYpiswu/zVJBcX24Y7zh3E2HCUegLbvBz+h +DM/y8UULWDD4JlXpOdmlTSOWBLz2TJQ3et3YvQ3a/mootAa4+rGY6yWodwTAX11n +wvJNzoXlZyPE9ForN93Q6gbc85/gL6ChH5QlDggZI4tY71jplh/aT2JJ6PDN/JFU +6ij1R7uTJxtROWFba0aKW7ptlWrJEPMIbfX90evSgrQI3u8rwN4YNhZ7a2Sv33pl +4P9C4EomHS8dHlT63SpncVmQGH6q1Hz1fl2YlxyauwVTKEkRhxtunmULoPj26YHw +sPZtSYeNf7n/ZmOlv9xr/5233Ve28IBheRRYVkULQfxJPylnoypCGcDBSdJ1Zh2K +Hg298+wX+RFuTOE3OvHR +=diAQ -----END PGP SIGNATURE----- ``` @@ -63,7 +63,7 @@ size exec file contents 23739 toffee_lang.js e875ff2e17aa6977a5613409c46e4d775c1551676173b69dced7f53e391501f1 1733 utils.js b9e0d093afed0c282195365fd5c90e2f4c93d9860ce24807d55d510cdd5ae042 25118 view.js a3e6239a1fcad055480c5f85f0865b9900db8b311371e1195519747a6164f01e -859 package.json ce699e01cf0550d0032620b6888b61c23ddb3fd0a12419ba0e27fe58ffb3115c +859 package.json d95051a58b39631db768561a7a90c4f13a5ed16a24d38c4f3f8d24cdcb49ccb9 src/ 5155 command_line.coffee 707f1df79cc865f4096ab19ccadfe0c0a627a74093c2e5b56a94011ac8a99bc3 197 consts.coffee 2f1c1ecef13818b126d49cc7eb0568019a1f5e46cee28164321d496c93568a2e diff --git a/package.json b/package.json index 52d24c2..3ae17cf 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "toffee", "description": "A NodeJs, Express 3.x, Express 2.x, and browser-side templating language based on CoffeeScript with slicker tokens and syntax.", - "version": "0.1.8", + "version": "0.1.9", "directories": { "lib": "./lib" }, From 2980877d329ef0eb256ddd8dd968446c762e2f9b Mon Sep 17 00:00:00 2001 From: Chris Coyne Date: Wed, 28 May 2014 10:56:41 -0400 Subject: [PATCH 109/132] version bump, playing with keybase signing --- .kbignore | 1 + SIGNED.md | 29 +++++++++++++++-------------- package.json | 2 +- 3 files changed, 17 insertions(+), 15 deletions(-) create mode 100644 .kbignore diff --git a/.kbignore b/.kbignore new file mode 100644 index 0000000..40b878d --- /dev/null +++ b/.kbignore @@ -0,0 +1 @@ +node_modules/ \ No newline at end of file diff --git a/SIGNED.md b/SIGNED.md index 088c66e..863d1fa 100644 --- a/SIGNED.md +++ b/SIGNED.md @@ -4,19 +4,19 @@ Version: GnuPG/MacGPG2 v2.0.22 (Darwin) Comment: GPGTools - https://gpgtools.org -iQIcBAABCgAGBQJThfhsAAoJENIkQTsc+mSQpOkQAKukgBMg9jVFFtEZxLsqEx4v -qUC/wvqiNp3iv/YVl/y4mglKCbhCPiuVm2boT48zsITPXsWI9dkPVzO2U6b1rM5X -07UCDE8qQ5esROLbdfXPdREfpQr4ehMQ+/nTEUGapcPXxB+kxyJvZXd2H3L8/C/d -w4AwOHP9FeCXlOxFkaorYvtwIuqpHYOk2qhX/l6dY3tKqKlKLGHa67PJL8zZmv/9 -hvli7KhLJjmlbE9lzdyaxNbe9T7/kHHhy3YybA2fcGCut+zBknx3OwwyNsQEz15h -CWZhR/aYSDKb9jgY8N+5u9ZuJDZkAQYpiswu/zVJBcX24Y7zh3E2HCUegLbvBz+h -DM/y8UULWDD4JlXpOdmlTSOWBLz2TJQ3et3YvQ3a/mootAa4+rGY6yWodwTAX11n -wvJNzoXlZyPE9ForN93Q6gbc85/gL6ChH5QlDggZI4tY71jplh/aT2JJ6PDN/JFU -6ij1R7uTJxtROWFba0aKW7ptlWrJEPMIbfX90evSgrQI3u8rwN4YNhZ7a2Sv33pl -4P9C4EomHS8dHlT63SpncVmQGH6q1Hz1fl2YlxyauwVTKEkRhxtunmULoPj26YHw -sPZtSYeNf7n/ZmOlv9xr/5233Ve28IBheRRYVkULQfxJPylnoypCGcDBSdJ1Zh2K -Hg298+wX+RFuTOE3OvHR -=diAQ +iQIcBAABCgAGBQJThfkZAAoJENIkQTsc+mSQ+fwQAMUUPH3gPofTtMuaBuoagIS7 +AFOe1CjBg2pU5OU/alfwIuLo2C6TUdQQY0tEbFUp5ZXB9lsM0P9WJ/TbMwObSBu4 +ZE4qud8BEupUv6YubiNmUf+UyMttSKnHWZdn/hbW8d19eG4Z0oTR31npExKigXcL +S6VgrIE7aazXqUMpAozd2urf/ivnk4cyTysFSBUtZbW1IgNxttoYlFZwvpiYfNfn +vmCfvOxVZyoNg8v805TAYLwMxvIjctFMvykDC9BYKg3/tFcTXC9uVPDFyjaffPz4 +2VFCYcejM+nBhS1/w/Cafe3RQNOKzIZtQat7n+qm4DscIEztOhMzJ+h+qkbU2Npv +kfL+S8KTk3yijongU/Yyh7AYWn0t7HflQj2SsoYtRzL2Hcgb3XoO6pshx8q0OHm+ +TaXtMBPLfWD6luVqq0R+Trvrc9C7WRBR9Cul4sgvX9q2pDCWFSGqjNPSCim57E+C +cRPBDxy5CUMXUvSt1ld+JypXcxR+Atumk119ODNb2GZ2lgA77uzILOiSc4ipVn4/ +qPWvmeJSaKi8FAcDho7gy11qh1NHBZe7fSeLKcwrvf4vJEEoXefhDmUb1I6lJEq8 +U6ypJ95lzA+ozsoHTArdiuwp6nR7fOGe//A8U2KB6Sr8QBteU8NkIz9WHeeE39Iy +jPkgI5vUz20vJpz9u9Ba +=xBg0 -----END PGP SIGNATURE----- ``` @@ -31,6 +31,7 @@ Hg298+wX+RFuTOE3OvHR size exec file contents ./ 24 .gitignore 4419468a0a62e000bee4fab5c85876e287a6313001de5c9305bf849488829314 +13 .kbignore f1a9a09b226cf8e98a4286200c5d9ebd5c28924707ac3317947f8ecf06ab167b 1800 Cakefile 2f3b1709f19ace9827bfd464d141382ff01b7f86d45cd1faed6bfee906fdcd9a 1079 LICENSE edb721bca3cfa08423f93741d60300f28350af960238477fe89826e19fc3dfa9 13715 README.md 44a697135c4145b598a812e7d904781faf772d384e8859c2767fea4be8afffb4 @@ -63,7 +64,7 @@ size exec file contents 23739 toffee_lang.js e875ff2e17aa6977a5613409c46e4d775c1551676173b69dced7f53e391501f1 1733 utils.js b9e0d093afed0c282195365fd5c90e2f4c93d9860ce24807d55d510cdd5ae042 25118 view.js a3e6239a1fcad055480c5f85f0865b9900db8b311371e1195519747a6164f01e -859 package.json d95051a58b39631db768561a7a90c4f13a5ed16a24d38c4f3f8d24cdcb49ccb9 +860 package.json a3836e58c837bb9476745bbddfcb752f02b18939e48d30a73fe877e8da197c17 src/ 5155 command_line.coffee 707f1df79cc865f4096ab19ccadfe0c0a627a74093c2e5b56a94011ac8a99bc3 197 consts.coffee 2f1c1ecef13818b126d49cc7eb0568019a1f5e46cee28164321d496c93568a2e diff --git a/package.json b/package.json index 3ae17cf..8c17beb 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "toffee", "description": "A NodeJs, Express 3.x, Express 2.x, and browser-side templating language based on CoffeeScript with slicker tokens and syntax.", - "version": "0.1.9", + "version": "0.1.10", "directories": { "lib": "./lib" }, From 84747783ba65148db69f144ed657188b55477a57 Mon Sep 17 00:00:00 2001 From: Chris Coyne Date: Wed, 4 Jun 2014 12:24:41 -0400 Subject: [PATCH 110/132] fixed unnecessary context demand in async building; version bump --- SIGNED.md | 32 ++++++++++++++++---------------- lib/view.js | 1 + package.json | 2 +- src/view.coffee | 1 + 4 files changed, 19 insertions(+), 17 deletions(-) diff --git a/SIGNED.md b/SIGNED.md index 863d1fa..f7ca1b4 100644 --- a/SIGNED.md +++ b/SIGNED.md @@ -4,19 +4,19 @@ Version: GnuPG/MacGPG2 v2.0.22 (Darwin) Comment: GPGTools - https://gpgtools.org -iQIcBAABCgAGBQJThfkZAAoJENIkQTsc+mSQ+fwQAMUUPH3gPofTtMuaBuoagIS7 -AFOe1CjBg2pU5OU/alfwIuLo2C6TUdQQY0tEbFUp5ZXB9lsM0P9WJ/TbMwObSBu4 -ZE4qud8BEupUv6YubiNmUf+UyMttSKnHWZdn/hbW8d19eG4Z0oTR31npExKigXcL -S6VgrIE7aazXqUMpAozd2urf/ivnk4cyTysFSBUtZbW1IgNxttoYlFZwvpiYfNfn -vmCfvOxVZyoNg8v805TAYLwMxvIjctFMvykDC9BYKg3/tFcTXC9uVPDFyjaffPz4 -2VFCYcejM+nBhS1/w/Cafe3RQNOKzIZtQat7n+qm4DscIEztOhMzJ+h+qkbU2Npv -kfL+S8KTk3yijongU/Yyh7AYWn0t7HflQj2SsoYtRzL2Hcgb3XoO6pshx8q0OHm+ -TaXtMBPLfWD6luVqq0R+Trvrc9C7WRBR9Cul4sgvX9q2pDCWFSGqjNPSCim57E+C -cRPBDxy5CUMXUvSt1ld+JypXcxR+Atumk119ODNb2GZ2lgA77uzILOiSc4ipVn4/ -qPWvmeJSaKi8FAcDho7gy11qh1NHBZe7fSeLKcwrvf4vJEEoXefhDmUb1I6lJEq8 -U6ypJ95lzA+ozsoHTArdiuwp6nR7fOGe//A8U2KB6Sr8QBteU8NkIz9WHeeE39Iy -jPkgI5vUz20vJpz9u9Ba -=xBg0 +iQIcBAABCgAGBQJTj0goAAoJENIkQTsc+mSQ/GUP/ipdQKg4bzlCs2KCCQhwsI0b +PoFrdnvqq/a0rjgDRYoZ4XB2e2a2tS4MkXGsxzbsBZynT0/MPrcC8xNZRTMWdT+D +ir2kAk4bfs0scXOzvPUrUeHlWfNDNWtJmbFCzECpJThkGtlZxAnNK/wIDAgMIVn3 +C6X+f076t/eF0E5agcfKueoM9WiUyBbqN6QWb4CamagezG+i+FjKPFexrlnTomZG +IHR79uoxn9Fc4mQiNlcyXespenKgQou1DAYEG8vYmfDZR9jAfJ+efjNotV9KtXjy +6YfWV2AistCz7Ve/oRzDHYVhVemPzBoIPF41xx7afNa0vmP+oo5q9MefMqdF5xPJ +4nR02S2PnKncwqzZF6jNA/2D+O5ETEEo5Zi80CjkHgLhG+rCfztZzJ5Y6/97F6Vb +QYxydvjJkrnIAq4ifSTfqa2kXupNs97G22qtSGWdqFMSrYZeDHGL3cQeNh42ubHc +Drcqv9FQD9j5ZCALVLizRMMqmE0Gc/KBUzeNGCUwsRsIdiONNWtnhalFteZe9aZ6 +WfxQnKXeyPxj0GrkMwYp6egCxo2jsJ1N/+xoSgIYouJ7KvUb/7JI2eDHiOg/5PWe +pVNMa44Zkzq54Cr1QVEnXPzEZobPBVNwhhMq8FDTusI/BI5u0rcCUJ9q/g94D4AP +Qs8fr86Wp31esmOPxSX+ +=pc0T -----END PGP SIGNATURE----- ``` @@ -63,8 +63,8 @@ size exec file contents 571 pool.js 2f83097467cbde33e9f1d091a6e31b524ea43bf9e97ef05ba35ae641182f3e90 23739 toffee_lang.js e875ff2e17aa6977a5613409c46e4d775c1551676173b69dced7f53e391501f1 1733 utils.js b9e0d093afed0c282195365fd5c90e2f4c93d9860ce24807d55d510cdd5ae042 -25118 view.js a3e6239a1fcad055480c5f85f0865b9900db8b311371e1195519747a6164f01e -860 package.json a3836e58c837bb9476745bbddfcb752f02b18939e48d30a73fe877e8da197c17 +25159 view.js a5a79dc59f9ca375c67baacb6b4048595c5867d74a32a3fe87553605f8496f4c +860 package.json e224e7a8db7aa1aff09badf4b19101f3ead5435208df9c28f61f11eac3b43c37 src/ 5155 command_line.coffee 707f1df79cc865f4096ab19ccadfe0c0a627a74093c2e5b56a94011ac8a99bc3 197 consts.coffee 2f1c1ecef13818b126d49cc7eb0568019a1f5e46cee28164321d496c93568a2e @@ -73,7 +73,7 @@ size exec file contents 270 pool.coffee b493416ba61c6d2f98b713b7f30cc8002142c26205be21653a00f7c11ea1b6c4 2604 toffee.jison 8d040196ea79ed3676b5874f8d85da3849cc3ad82ecaeba212a4194033bfb72e 1227 utils.coffee efd639a91f7cca74fdc138743aeb572bcaffc2c151d9a8a89bf31e3d3c798873 -18996 view.coffee 6d55d928827a30db1d6ae8abb331e1839628688a70ef17ab98918421431dfcfd +19034 view.coffee f57989990e08deb868c247af945b67999791d783cf51db68a481ff69971488c0 test/ cases/ big_file/ diff --git a/lib/view.js b/lib/view.js index fbcc0da..3347776 100644 --- a/lib/view.js +++ b/lib/view.js @@ -137,6 +137,7 @@ */ var v; + ctx = ctx || vm.createContext({}); this._log("Prepping " + (this.fileName != null ? this.fileName : 'unknown') + " async."); this._toTokenObj(); v = this; diff --git a/package.json b/package.json index 8c17beb..a653db8 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "toffee", "description": "A NodeJs, Express 3.x, Express 2.x, and browser-side templating language based on CoffeeScript with slicker tokens and syntax.", - "version": "0.1.10", + "version": "0.1.11", "directories": { "lib": "./lib" }, diff --git a/src/view.coffee b/src/view.coffee index 061c97f..0b9c92c 100644 --- a/src/view.coffee +++ b/src/view.coffee @@ -198,6 +198,7 @@ class view Defers via setTimeouts in each stage in the compile process for CPU friendliness. This is a lot prettier with iced-coffee-script. ### + ctx = ctx or vm.createContext({}) @_log "Prepping #{if @fileName? then @fileName else 'unknown'} async." @_toTokenObj() v = @ From 86ed10aa8f47d1238df809066d8c1abc811d0d10 Mon Sep 17 00:00:00 2001 From: Chris Coyne Date: Tue, 17 Jun 2014 10:26:36 -0400 Subject: [PATCH 111/132] configurable string compile for accord support --- index.coffee | 30 ++++++++++++++++++++++++++++++ index.js | 34 ++++++++++++++++++++++++++++++++++ package.json | 2 +- 3 files changed, 65 insertions(+), 1 deletion(-) diff --git a/index.coffee b/index.coffee index c8d2cfe..2393ce6 100644 --- a/index.coffee +++ b/index.coffee @@ -60,3 +60,33 @@ exports.str_render = exports.strRender = (template_str, options, cb) -> # -------------------------------------------- exports.compile = require('./lib/view').expressCompile + +# better support for string compiling +# -------------------------------------------- + +exports.configurable_compile = (source, opts) -> + opts = opts or {} + opts.minimize = if opts.minimize? then opts.minimize else false + opts.bundle_path = opts.bundle_path or null + opts.headers = if opts.headers? then opts.headers else true + opts.filename = opts.filename or null + opts.to_coffee = opts.to_coffee or false + err = null + + # this compiles an individual template that you've read while recursing: + v = new view source, { + filename: opts.filename + bundlePath: opts.filename + browserMode: true + minimize: opts.minimize + } + if opts.to_coffee + output = v.toCoffee() + else + output = v.toJavaScript() + if v.error then throw v.error.e + if opts.headers + header = getCommonHeadersJs true, true, true + if opts.coffee then output = "`#{header}`\n\n#{output}" + else output = "#{header}\n;\n#{output}" + return output diff --git a/index.js b/index.js index 6e72198..175d410 100644 --- a/index.js +++ b/index.js @@ -69,4 +69,38 @@ exports.compile = require('./lib/view').expressCompile; + exports.configurable_compile = function(source, opts) { + var err, header, output, v; + opts = opts || {}; + opts.minimize = opts.minimize != null ? opts.minimize : false; + opts.bundle_path = opts.bundle_path || null; + opts.headers = opts.headers != null ? opts.headers : true; + opts.filename = opts.filename || null; + opts.to_coffee = opts.to_coffee || false; + err = null; + v = new view(source, { + filename: opts.filename, + bundlePath: opts.filename, + browserMode: true, + minimize: opts.minimize + }); + if (opts.to_coffee) { + output = v.toCoffee(); + } else { + output = v.toJavaScript(); + } + if (v.error) { + throw v.error.e; + } + if (opts.headers) { + header = getCommonHeadersJs(true, true, true); + if (opts.coffee) { + output = "`" + header + "`\n\n" + output; + } else { + output = "" + header + "\n;\n" + output; + } + } + return output; + }; + }).call(this); diff --git a/package.json b/package.json index a653db8..4289061 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "toffee", "description": "A NodeJs, Express 3.x, Express 2.x, and browser-side templating language based on CoffeeScript with slicker tokens and syntax.", - "version": "0.1.11", + "version": "0.1.12", "directories": { "lib": "./lib" }, From 2f9120283615a1daa4a6e71511915c271bb8b825 Mon Sep 17 00:00:00 2001 From: Chris Coyne Date: Tue, 17 Jun 2014 10:27:01 -0400 Subject: [PATCH 112/132] new file bump --- SIGNED.md | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/SIGNED.md b/SIGNED.md index f7ca1b4..0814833 100644 --- a/SIGNED.md +++ b/SIGNED.md @@ -4,19 +4,19 @@ Version: GnuPG/MacGPG2 v2.0.22 (Darwin) Comment: GPGTools - https://gpgtools.org -iQIcBAABCgAGBQJTj0goAAoJENIkQTsc+mSQ/GUP/ipdQKg4bzlCs2KCCQhwsI0b -PoFrdnvqq/a0rjgDRYoZ4XB2e2a2tS4MkXGsxzbsBZynT0/MPrcC8xNZRTMWdT+D -ir2kAk4bfs0scXOzvPUrUeHlWfNDNWtJmbFCzECpJThkGtlZxAnNK/wIDAgMIVn3 -C6X+f076t/eF0E5agcfKueoM9WiUyBbqN6QWb4CamagezG+i+FjKPFexrlnTomZG -IHR79uoxn9Fc4mQiNlcyXespenKgQou1DAYEG8vYmfDZR9jAfJ+efjNotV9KtXjy -6YfWV2AistCz7Ve/oRzDHYVhVemPzBoIPF41xx7afNa0vmP+oo5q9MefMqdF5xPJ -4nR02S2PnKncwqzZF6jNA/2D+O5ETEEo5Zi80CjkHgLhG+rCfztZzJ5Y6/97F6Vb -QYxydvjJkrnIAq4ifSTfqa2kXupNs97G22qtSGWdqFMSrYZeDHGL3cQeNh42ubHc -Drcqv9FQD9j5ZCALVLizRMMqmE0Gc/KBUzeNGCUwsRsIdiONNWtnhalFteZe9aZ6 -WfxQnKXeyPxj0GrkMwYp6egCxo2jsJ1N/+xoSgIYouJ7KvUb/7JI2eDHiOg/5PWe -pVNMa44Zkzq54Cr1QVEnXPzEZobPBVNwhhMq8FDTusI/BI5u0rcCUJ9q/g94D4AP -Qs8fr86Wp31esmOPxSX+ -=pc0T +iQIcBAABCgAGBQJToFAjAAoJENIkQTsc+mSQV94P/ix41qMd4pSsBD5f7ZJZLpD8 +Pakq8q49mvdoErz+uzNqZ/eHjCXORc6Caqx3HYuvXh+Y8fiNFK8tV9IjF3C2UKx+ +be/n8mU/nb8HOvS6ZWh6p0us5Pmm3aETaKKquBmUT6klOUg2g0ZO2D0Bj5XD4tSn +SkhcgAAEKglLTtqhXScuoeSAygVOmM5KkiAv4Q+5IcqhkwnOv2af8ta15d6DmKuj +tpFcQd6pTYn6dKAnEWCXQs/+I4uBhwo93+DzIC1HI6m7lI7+piqA5gcb3/KAoagV +qDufapXLEGepfl6Jb0Wq46sfS7DkpGmYebJvOH0swMXjF2uB3SddOT0ZBtf9Zl+6 +6rfbZF9MHDqf+Mela9AAfXd3vrBXXxGHpbDm8uBCSIinp/wH//4nn6pLJlq1XRFU +yDA0p1mYAHsdl4keFd0cvWDHaMwLWR8Rx/aLHkkz5F4GEI2DjixlpnxGw+swbTZu +FxRwUv9E8jVXApbcojQR0HzGyBPDQe7FY0lORKPVhTr+gLIwNM5sQ7PEChL8tOXa +QA+NYgHceG1gAXh6WDhR5Ih3XoeVZGVxdl9TxW7MrMzvRBFI4PJBgG/n9JfDgrxx +PbC9xIrqzM4DH4CCPXhWvJZNLBNfUHbxTSEj0DvGatNnxCXa0ZovMCFq7ETyL6H7 +oCnPRDIz9m1+wV1wnysq +=gehN -----END PGP SIGNATURE----- ``` @@ -37,8 +37,8 @@ size exec file contents 13715 README.md 44a697135c4145b598a812e7d904781faf772d384e8859c2767fea4be8afffb4 bin/ 57 toffee 616023d8f8b8dbb5450051ddc21c8887829fba38dc3341feaaa3ffd5afd3ee8c -2099 index.coffee a121e739dd5e8013bc40e217f2a6529a39b2e6424297410565866667bb124603 -1866 index.js f897f1995a661aea7b4a1fdc300de342cb0556b751900dd50269c158dc1122b8 +3124 index.coffee 3183ed24e04b288ffa009f5e990a3775351bd7551b235849faf5c18f9e1c2120 +2827 index.js 90b42e60179783077f02c7e086247fcaf15b3d391e18904516c9a3eaa5d4ef21 lib/ 0 README.md e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 coffee-script/ @@ -64,7 +64,7 @@ size exec file contents 23739 toffee_lang.js e875ff2e17aa6977a5613409c46e4d775c1551676173b69dced7f53e391501f1 1733 utils.js b9e0d093afed0c282195365fd5c90e2f4c93d9860ce24807d55d510cdd5ae042 25159 view.js a5a79dc59f9ca375c67baacb6b4048595c5867d74a32a3fe87553605f8496f4c -860 package.json e224e7a8db7aa1aff09badf4b19101f3ead5435208df9c28f61f11eac3b43c37 +860 package.json 2cd00d299ada6fd0cdceed5e12dda24de7625e8a63bea84935702e5734ed2160 src/ 5155 command_line.coffee 707f1df79cc865f4096ab19ccadfe0c0a627a74093c2e5b56a94011ac8a99bc3 197 consts.coffee 2f1c1ecef13818b126d49cc7eb0568019a1f5e46cee28164321d496c93568a2e @@ -217,7 +217,7 @@ dropbox # ignore .dropbox-cache and other Dropbox-related files kb # ignore anything as described by .kbignore files ``` - + ### End signed statement From 4209342acf95cfb346dd9d03225b128f898a6dbe Mon Sep 17 00:00:00 2001 From: Chris Coyne Date: Tue, 17 Jun 2014 11:13:52 -0400 Subject: [PATCH 113/132] removed bad option --- index.coffee | 1 - index.js | 1 - 2 files changed, 2 deletions(-) diff --git a/index.coffee b/index.coffee index 2393ce6..700058e 100644 --- a/index.coffee +++ b/index.coffee @@ -67,7 +67,6 @@ exports.compile = require('./lib/view').expressCompile exports.configurable_compile = (source, opts) -> opts = opts or {} opts.minimize = if opts.minimize? then opts.minimize else false - opts.bundle_path = opts.bundle_path or null opts.headers = if opts.headers? then opts.headers else true opts.filename = opts.filename or null opts.to_coffee = opts.to_coffee or false diff --git a/index.js b/index.js index 175d410..b410542 100644 --- a/index.js +++ b/index.js @@ -73,7 +73,6 @@ var err, header, output, v; opts = opts || {}; opts.minimize = opts.minimize != null ? opts.minimize : false; - opts.bundle_path = opts.bundle_path || null; opts.headers = opts.headers != null ? opts.headers : true; opts.filename = opts.filename || null; opts.to_coffee = opts.to_coffee || false; From 4b0dda409cc7576f315e5db66365f54444b0bc72 Mon Sep 17 00:00:00 2001 From: Chris Coyne Date: Tue, 17 Jun 2014 11:14:09 -0400 Subject: [PATCH 114/132] new signing --- SIGNED.md | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/SIGNED.md b/SIGNED.md index 0814833..67ebc2e 100644 --- a/SIGNED.md +++ b/SIGNED.md @@ -4,19 +4,19 @@ Version: GnuPG/MacGPG2 v2.0.22 (Darwin) Comment: GPGTools - https://gpgtools.org -iQIcBAABCgAGBQJToFAjAAoJENIkQTsc+mSQV94P/ix41qMd4pSsBD5f7ZJZLpD8 -Pakq8q49mvdoErz+uzNqZ/eHjCXORc6Caqx3HYuvXh+Y8fiNFK8tV9IjF3C2UKx+ -be/n8mU/nb8HOvS6ZWh6p0us5Pmm3aETaKKquBmUT6klOUg2g0ZO2D0Bj5XD4tSn -SkhcgAAEKglLTtqhXScuoeSAygVOmM5KkiAv4Q+5IcqhkwnOv2af8ta15d6DmKuj -tpFcQd6pTYn6dKAnEWCXQs/+I4uBhwo93+DzIC1HI6m7lI7+piqA5gcb3/KAoagV -qDufapXLEGepfl6Jb0Wq46sfS7DkpGmYebJvOH0swMXjF2uB3SddOT0ZBtf9Zl+6 -6rfbZF9MHDqf+Mela9AAfXd3vrBXXxGHpbDm8uBCSIinp/wH//4nn6pLJlq1XRFU -yDA0p1mYAHsdl4keFd0cvWDHaMwLWR8Rx/aLHkkz5F4GEI2DjixlpnxGw+swbTZu -FxRwUv9E8jVXApbcojQR0HzGyBPDQe7FY0lORKPVhTr+gLIwNM5sQ7PEChL8tOXa -QA+NYgHceG1gAXh6WDhR5Ih3XoeVZGVxdl9TxW7MrMzvRBFI4PJBgG/n9JfDgrxx -PbC9xIrqzM4DH4CCPXhWvJZNLBNfUHbxTSEj0DvGatNnxCXa0ZovMCFq7ETyL6H7 -oCnPRDIz9m1+wV1wnysq -=gehN +iQIcBAABCgAGBQJToFs5AAoJENIkQTsc+mSQTpUP/2JLLdKyFlXRetWbRQd770cL +q2wKmmtu0oxG3kMjRrvnB2lS2Qxjtu0imXcIl8hqObtx2ScI+buk/DbdS0gZ1RmW +DM10MDYzoWQRAZ6sUKLcStQGP4lEpq6wYeAqWxf7N8aX8kKgkJoUsirq8w7NeosB +72EPYAd/Eth3ka0WdMf/KU8w1bpnC77nAxExlCafJ8enCZx3R8236Cy1LbGZ86v/ +Ob1FQkLD1Um+gY4mndd9s3FU4kxPJF9ISchdpHCxIq0kE7qHBGZejozjP4J1xr2U +HEwvOGN4s40k62jIEGmLzvqj87BaCplWLHtl7oV3d5ZTFSUkFoVaXKsvXlSDzAUw +uJGt2j30++C51b8vDZvX9nnegULXzNA/rnTa1zubvk2w2jDE0VT3+/ySWLRTwNHz +2e1aEWr7SL75bvi+nCCHQKYJiWuB7Xc6i+DUM6nlPxUuvFdnLTW8CV1lBtwbd9gW +7XOij+9mF3LsAaeZ+XzvLwoLE+aMpIaqIJpOi1JVoafWBnk1/O7+hHxkWKFjKJXv +3sbnG+4KpMw+YTUN35htLBiT+8V76JmsvArUYjTlkpg1x67Vv58jlhucIxOKQfaq +khnfmNA3HuPCHOTDyMBaa7LEPRU53GbhU3Y0W9PsZKI/KG1LfUP+0iPT8o4AlAT/ +6gmBoAw7Qud8v7mbvpmE +=Dlsg -----END PGP SIGNATURE----- ``` @@ -37,8 +37,8 @@ size exec file contents 13715 README.md 44a697135c4145b598a812e7d904781faf772d384e8859c2767fea4be8afffb4 bin/ 57 toffee 616023d8f8b8dbb5450051ddc21c8887829fba38dc3341feaaa3ffd5afd3ee8c -3124 index.coffee 3183ed24e04b288ffa009f5e990a3775351bd7551b235849faf5c18f9e1c2120 -2827 index.js 90b42e60179783077f02c7e086247fcaf15b3d391e18904516c9a3eaa5d4ef21 +3073 index.coffee 6e43b294bbee4b1f22327ae31d154bda633bc003b6e9345fabf9d8741191f07e +2778 index.js 256cbe97d8d3895f8867e27045811b81b1fe50c2ec09fb8e71bc1f5c90f3c90e lib/ 0 README.md e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 coffee-script/ From bce8ae9ed57dabfef5915218f5f77d9af5ded508 Mon Sep 17 00:00:00 2001 From: Chris Coyne Date: Fri, 20 Jan 2017 10:10:09 -0500 Subject: [PATCH 115/132] addition of 2 problematic characters in JSON mentioned by aseemk --- Cakefile | 2 +- index.js | 12 +- lib/command_line.js | 42 ++-- lib/consts.js | 2 +- lib/engine.js | 199 +++++++++-------- lib/errorHandler.js | 104 ++++----- lib/pool.js | 2 +- lib/toffee_lang.js | 139 ++++++------ lib/utils.js | 12 +- lib/view.js | 203 +++++++++--------- package.json | 70 +++--- src/view.coffee | 4 +- test/cases/escape/input.toffee | 8 +- test/cases/escape/output.toffee | 5 +- .../express3/public/javascripts/test_cases.js | 106 ++++----- test/express3/public/javascripts/toffee.js | 2 +- test/express3/views/index.toffee | 18 +- toffee.js | 2 +- 18 files changed, 486 insertions(+), 446 deletions(-) diff --git a/Cakefile b/Cakefile index 7ec1ff2..780f9e4 100644 --- a/Cakefile +++ b/Cakefile @@ -5,7 +5,7 @@ jison = require 'jison' path = require 'path' express_test = require './test/generate_express_test' -task 'build', 'build the whole jam', (cb) -> +task 'build', 'build the whole jam', (cb) -> console.log "Building" files = fs.readdirSync 'src' files = ('src/' + file for file in files when file.match(/\.coffee$/)) diff --git a/index.js b/index.js index b410542..f29e459 100644 --- a/index.js +++ b/index.js @@ -1,10 +1,10 @@ -// Generated by CoffeeScript 1.6.3 +// Generated by CoffeeScript 1.12.2 (function() { - var cacheless_engine, e, engine, getCommonHeaders, getCommonHeadersJs, to_express, view, __express, _ref; + var __express, cacheless_engine, e, engine, getCommonHeaders, getCommonHeadersJs, ref, to_express, view; engine = require('./lib/engine').engine; - _ref = require('./lib/view'), view = _ref.view, getCommonHeaders = _ref.getCommonHeaders, getCommonHeadersJs = _ref.getCommonHeadersJs; + ref = require('./lib/view'), view = ref.view, getCommonHeaders = ref.getCommonHeaders, getCommonHeadersJs = ref.getCommonHeadersJs; exports.engine = engine; @@ -61,9 +61,9 @@ }; exports.str_render = exports.strRender = function(template_str, options, cb) { - var err, res, v, _ref1; + var err, ref1, res, v; v = new view(template_str, options); - _ref1 = v.run(options), err = _ref1[0], res = _ref1[1]; + ref1 = v.run(options), err = ref1[0], res = ref1[1]; return cb(err, res); }; @@ -96,7 +96,7 @@ if (opts.coffee) { output = "`" + header + "`\n\n" + output; } else { - output = "" + header + "\n;\n" + output; + output = header + "\n;\n" + output; } } return output; diff --git a/lib/command_line.js b/lib/command_line.js index 81fe5ff..d5779ed 100644 --- a/lib/command_line.js +++ b/lib/command_line.js @@ -1,12 +1,12 @@ -// Generated by CoffeeScript 1.6.3 +// Generated by CoffeeScript 1.12.2 (function() { - var compile, fs, getCommonHeadersJs, getVersionNumber, maybeAttachHeaders, mkdirp, path, program, recurseRun, run, view, _ref; + var compile, fs, getCommonHeadersJs, getVersionNumber, maybeAttachHeaders, mkdirp, path, program, recurseRun, ref, run, view; fs = require('fs'); path = require('path'); - _ref = require('../lib/view'), view = _ref.view, getCommonHeadersJs = _ref.getCommonHeadersJs; + ref = require('../lib/view'), view = ref.view, getCommonHeadersJs = ref.getCommonHeadersJs; program = require('commander'); @@ -14,23 +14,23 @@ getVersionNumber = function() { var o, p; - p = fs.readFileSync("" + __dirname + "/../package.json", "utf8"); + p = fs.readFileSync(__dirname + "/../package.json", "utf8"); o = JSON.parse(p); return o.version; }; program.on('--help', function() { - return console.log("\n Examples:\n\n toffee views # recurses through views and builds views.js\n toffee foo.toffee # builds foo.js\n toffee views -o templates # builds templates.js\n toffee -p foo.toffee # outputs JS to stdout\n\n\n Then use in your :\n\n \n \n "); + return console.log("\n Examples: \n \n toffee views # recurses through views and builds views.js \n toffee foo.toffee # builds foo.js \n toffee views -o templates # builds templates.js \n toffee -p foo.toffee # outputs JS to stdout \n \n \n Then use in your : \n \n \n \n"); }); program.version(getVersionNumber()).option('-o, --output [path]', 'file (bundles all output into a single .js)').option('-d, --output_dir [path]', 'compiles templates into parallel .js files').option('-p, --print', 'print to stdout').option('-m, --minimize', 'minimize output (ugly, smaller file(s))').option('-c, --coffee', 'output to CoffeeScript (not JS)').option('-b, --bundle_path [path]', 'bundle_path (instead of "/") for templates').option('-n, --no_headers', 'exclude boilerplate toffee (requires toffee.js included separately)').parse(process.argv); compile = function(start_path, full_path) { + /* e.g., if start_path is /foo/bar and path is /foo/bar/car/thing.toffee - */ - + */ var bundle_path, output, source, v; source = fs.readFileSync(full_path, 'utf8'); bundle_path = full_path.slice(start_path.length); @@ -38,7 +38,7 @@ bundle_path = "/" + path.basename(full_path); } if (program.bundle_path) { - bundle_path = path.normalize("" + program.bundle_path + "/" + bundle_path); + bundle_path = path.normalize(program.bundle_path + "/" + bundle_path); } v = new view(source, { fileName: full_path, @@ -59,13 +59,13 @@ }; recurseRun = function(start_path, curr_path, out_text) { - var comp, file, file_out_path, files, stats, sub_path, sub_stats, _i, _len; + var comp, file, file_out_path, files, i, len, stats, sub_path, sub_stats; stats = fs.statSync(curr_path); if (stats.isDirectory()) { files = fs.readdirSync(curr_path); - for (_i = 0, _len = files.length; _i < _len; _i++) { - file = files[_i]; - sub_path = path.normalize("" + curr_path + "/" + file); + for (i = 0, len = files.length; i < len; i++) { + file = files[i]; + sub_path = path.normalize(curr_path + "/" + file); if (file.match(/\.toffee$/)) { out_text = recurseRun(start_path, sub_path, out_text); } else if (!(file === '.' || file === '..')) { @@ -79,8 +79,8 @@ comp = compile(start_path, curr_path); out_text += "\n;\n" + comp[0]; if (program.output_dir) { - file_out_path = path.normalize("" + program.output_dir + "/" + comp[1]); - file_out_path = "" + (path.dirname(file_out_path)) + "/" + (path.basename(file_out_path, '.toffee')); + file_out_path = path.normalize(program.output_dir + "/" + comp[1]); + file_out_path = (path.dirname(file_out_path)) + "/" + (path.basename(file_out_path, '.toffee')); file_out_path += program.coffee ? '.coffee' : '.js'; if (!program.print) { console.log("Outputting " + file_out_path); @@ -101,7 +101,7 @@ if (program.coffee) { return "`" + header_out + "`\n\n" + pre_output; } else { - return "" + header_out + "\n;\n" + pre_output; + return header_out + "\n;\n" + pre_output; } } }; @@ -115,16 +115,16 @@ } else { try { start_path = fs.realpathSync(program.args[0]); - } catch (_error) { - e = _error; + } catch (error) { + e = error; console.log("Input file/path not found. toffee --help for examples"); process.exit(1); } if (program.output_dir) { try { mkdirp.sync(program.output_dir); - } catch (_error) { - e = _error; + } catch (error) { + e = error; console.log("Couldn't make/use " + program.output_dir + "; " + e); process.exit(1); } @@ -139,8 +139,8 @@ try { console.log("Writing " + program.output); return fs.writeFileSync(program.output, out_text, "utf8"); - } catch (_error) { - e = _error; + } catch (error) { + e = error; console.log(e); return process.exit(1); } diff --git a/lib/consts.js b/lib/consts.js index 9a81c38..05c17db 100644 --- a/lib/consts.js +++ b/lib/consts.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.6.3 +// Generated by CoffeeScript 1.12.2 (function() { exports.states = { TOFFEE: 1, diff --git a/lib/engine.js b/lib/engine.js index c9ac735..8429718 100644 --- a/lib/engine.js +++ b/lib/engine.js @@ -1,11 +1,11 @@ -// Generated by CoffeeScript 1.6.3 +// Generated by CoffeeScript 1.12.2 (function() { - var MAX_CACHED_SANDBOXES, Pool, engine, fs, path, sandboxCons, states, tweakables, util, utils, view, vm, _ref, - __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; + var MAX_CACHED_SANDBOXES, Pool, engine, fs, path, ref, sandboxCons, states, tweakables, util, utils, view, vm, + bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; view = require('./view').view; - _ref = require('./consts'), states = _ref.states, tweakables = _ref.tweakables; + ref = require('./consts'), states = ref.states, tweakables = ref.tweakables; Pool = require('./pool').Pool; @@ -27,12 +27,12 @@ engine = (function() { function engine(options) { - this._fn_partial = __bind(this._fn_partial, this); - this._fn_snippet = __bind(this._fn_snippet, this); - this._fn_load = __bind(this._fn_load, this); - this._inlineInclude = __bind(this._inlineInclude, this); - this.run = __bind(this.run, this); - this.render = __bind(this.render, this); + this._fn_partial = bind(this._fn_partial, this); + this._fn_snippet = bind(this._fn_snippet, this); + this._fn_load = bind(this._fn_load, this); + this._inlineInclude = bind(this._inlineInclude, this); + this.run = bind(this.run, this); + this.render = bind(this.render, this); options = options || {}; this.verbose = options.verbose || false; this.minimize = options.minimize || false; @@ -48,9 +48,9 @@ } engine.prototype._log = function(o) { - var _ref1; + var ref1; if (this.verbose) { - if ((_ref1 = typeof o) === "string" || _ref1 === "number" || _ref1 === "boolean") { + if ((ref1 = typeof o) === "string" || ref1 === "number" || ref1 === "boolean") { return console.log("toffee: " + o); } else { return console.log("toffee: " + (util.inspect(o))); @@ -78,6 +78,7 @@ }; engine.prototype.run = function(filename, options, cb) { + /* "options" contains the pub vars and may contain special items: layout: path to a template expecting a body var (express 2.x style, but for use with express 3.x) @@ -87,9 +88,8 @@ __toffee.noInheritance: if true, don't pass variables through unless explicitly passed __toffee.repress if true, don't output anything; useful with including definition files with passback of vars __toffee.autoEscape: if set as false, don't escape output of #{} vars by default - */ - - var err, k, layout_options, post_process, res, v, _ref1, _ref2, _ref3, _ref4, _ref5; + */ + var err, k, layout_options, post_process, ref1, ref2, ref3, ref4, ref5, res, v; if (options.prettyPrintErrors == null) { options.prettyPrintErrors = this.prettyPrintErrors; } @@ -113,19 +113,19 @@ } } } - _ref1 = this.runSync(filename, options), err = _ref1[0], res = _ref1[1]; + ref1 = this.runSync(filename, options), err = ref1[0], res = ref1[1]; if (err && this.prettyPrintErrors) { - _ref2 = [null, err], err = _ref2[0], res = _ref2[1]; + ref2 = [null, err], err = ref2[0], res = ref2[1]; } if ((!err) && (layout_options != null)) { layout_options.body = res; - _ref3 = this.runSync(options.layout, layout_options), err = _ref3[0], res = _ref3[1]; + ref3 = this.runSync(options.layout, layout_options), err = ref3[0], res = ref3[1]; if (err && this.prettyPrintErrors) { - _ref4 = [null, err], err = _ref4[0], res = _ref4[1]; + ref4 = [null, err], err = ref4[0], res = ref4[1]; } } if ((!err) && (typeof post_process === "function")) { - _ref5 = this.postProcess(post_process, res), err = _ref5[0], res = _ref5[1]; + ref5 = this.postProcess(post_process, res), err = ref5[0], res = ref5[1]; } return cb(err, res); }; @@ -135,20 +135,19 @@ err = null; try { res = fn(res); - } catch (_error) { - e = _error; + } catch (error) { + e = error; err = e; } return [err, res]; }; engine.prototype.runSync = function(filename, options) { + /* "options" the same as run() above - */ - - var ctx, err, realpath, res, start_time, v, _ref1, _ref2, _ref3, - _this = this; + */ + var ctx, err, realpath, ref1, ref2, ref3, res, start_time, v; start_time = Date.now(); options = options || {}; options.__toffee = options.__toffee || {}; @@ -161,34 +160,42 @@ } if (v) { if (this.fsErrorCache[realpath]) { - _ref1 = [new Error("Couldn't load " + realpath), null], err = _ref1[0], res = _ref1[1]; + ref1 = [new Error("Couldn't load " + realpath), null], err = ref1[0], res = ref1[1]; } else { options.__toffee.parent = realpath; - options.partial = options.partial || function(fname, lvars) { - return _this._fn_partial(fname, lvars, realpath, options); - }; - options.snippet = options.snippet || function(fname, lvars) { - return _this._fn_snippet(fname, lvars, realpath, options); - }; - options.load = options.load || function(fname, lvars) { - return _this._fn_load(fname, lvars, realpath, options); - }; - options.print = options.print || function(txt) { - return _this._fn_print(txt, options); - }; + options.partial = options.partial || (function(_this) { + return function(fname, lvars) { + return _this._fn_partial(fname, lvars, realpath, options); + }; + })(this); + options.snippet = options.snippet || (function(_this) { + return function(fname, lvars) { + return _this._fn_snippet(fname, lvars, realpath, options); + }; + })(this); + options.load = options.load || (function(_this) { + return function(fname, lvars) { + return _this._fn_load(fname, lvars, realpath, options); + }; + })(this); + options.print = options.print || (function(_this) { + return function(txt) { + return _this._fn_print(txt, options); + }; + })(this); if (options.console == null) { options.console = { log: console.log }; } ctx = this.pool.get(); - _ref2 = v.run(options, ctx), err = _ref2[0], res = _ref2[1]; + ref2 = v.run(options, ctx), err = ref2[0], res = ref2[1]; this.pool.release(ctx); } } else { - _ref3 = [new Error("Couldn't load " + realpath), null], err = _ref3[0], res = _ref3[1]; + ref3 = [new Error("Couldn't load " + realpath), null], err = ref3[0], res = ref3[1]; } - this._log("" + realpath + " run in " + (Date.now() - start_time) + "ms"); + this._log(realpath + " run in " + (Date.now() - start_time) + "ms"); return [err, res]; }; @@ -205,7 +212,7 @@ }; engine.prototype._inlineInclude = function(filename, local_vars, parent_realpath, parent_options) { - var err, k, noInheritance, options, repress, res, reserved, v, _i, _len, _ref1, _ref2, _ref3; + var err, i, k, len, noInheritance, options, ref1, ref2, ref3, repress, res, reserved, v; options = local_vars || {}; options.passback = {}; options.__toffee = options.__toffee || {}; @@ -214,9 +221,9 @@ noInheritance = options.__toffee.noInheritance; repress = options.__toffee.repress; reserved = {}; - _ref1 = ["passback", "load", "print", "partial", "snippet", "layout", "__toffee", "postProcess"]; - for (_i = 0, _len = _ref1.length; _i < _len; _i++) { - k = _ref1[_i]; + ref1 = ["passback", "load", "print", "partial", "snippet", "layout", "__toffee", "postProcess"]; + for (i = 0, len = ref1.length; i < len; i++) { + k = ref1[i]; reserved[k] = true; } if (!noInheritance) { @@ -229,10 +236,10 @@ } } } - _ref2 = this.runSync(filename, options), err = _ref2[0], res = _ref2[1]; - _ref3 = options.passback; - for (k in _ref3) { - v = _ref3[k]; + ref2 = this.runSync(filename, options), err = ref2[0], res = ref2[1]; + ref3 = options.passback; + for (k in ref3) { + v = ref3[k]; parent_options[k] = v; } return err || res; @@ -266,13 +273,13 @@ }; engine.prototype._loadWithoutCache = function(filename, options) { - var e, txt, v, view_options, _ref1; + var e, ref1, txt, v, view_options; try { txt = fs.readFileSync(filename, 'utf8'); - } catch (_error) { - e = _error; + } catch (error) { + e = error; txt = "Error: Could not read " + filename; - if (((_ref1 = options.__toffee) != null ? _ref1.parent : void 0) != null) { + if (((ref1 = options.__toffee) != null ? ref1.parent : void 0) != null) { txt += " first requested in " + options.__toffee.parent; } } @@ -282,17 +289,17 @@ }; engine.prototype._loadCacheAndMonitor = function(filename, options) { - var e, previous_fs_err, txt, v, view_options, _ref1; + var e, previous_fs_err, ref1, txt, v, view_options; previous_fs_err = this.fsErrorCache[filename] != null; try { txt = fs.readFileSync(filename, 'utf8'); if (this.fsErrorCache[filename] != null) { delete this.fsErrorCache[filename]; } - } catch (_error) { - e = _error; + } catch (error) { + e = error; txt = "Error: Could not read " + filename; - if (((_ref1 = options.__toffee) != null ? _ref1.parent : void 0) != null) { + if (((ref1 = options.__toffee) != null ? ref1.parent : void 0) != null) { txt += " first requested in " + options.__toffee.parent; } this.fsErrorCache[filename] = Date.now(); @@ -309,33 +316,34 @@ }; engine.prototype._reloadFileInBkg = function(filename, options) { - var _this = this; - return fs.readFile(filename, 'utf8', function(err, txt) { - var ctx, v, view_options, _ref1; - if (err || (txt !== _this.viewCache[filename].txt)) { - if (err) { - _this.fsErrorCache[filename] = Date.now(); - txt = "Error: Could not read " + filename; - if (((_ref1 = options.__toffee) != null ? _ref1.parent : void 0) != null) { - txt += " requested in " + options.__toffee.parent; - } - } - if (!(err && _this.viewCache[filename].fsError)) { - view_options = _this._generateViewOptions(filename); - ctx = _this.pool.get(); - view_options.ctx = ctx; - view_options.cb = function(v) { - _this._log("" + filename + " updated and ready"); - _this.viewCache[filename] = v; - return _this.pool.release(ctx); - }; + return fs.readFile(filename, 'utf8', (function(_this) { + return function(err, txt) { + var ctx, ref1, v, view_options; + if (err || (txt !== _this.viewCache[filename].txt)) { if (err) { - view_options.fsError = true; + _this.fsErrorCache[filename] = Date.now(); + txt = "Error: Could not read " + filename; + if (((ref1 = options.__toffee) != null ? ref1.parent : void 0) != null) { + txt += " requested in " + options.__toffee.parent; + } + } + if (!(err && _this.viewCache[filename].fsError)) { + view_options = _this._generateViewOptions(filename); + ctx = _this.pool.get(); + view_options.ctx = ctx; + view_options.cb = function(v) { + _this._log(filename + " updated and ready"); + _this.viewCache[filename] = v; + return _this.pool.release(ctx); + }; + if (err) { + view_options.fsError = true; + } + return v = new view(txt, view_options); } - return v = new view(txt, view_options); } - } - }); + }; + })(this)); }; engine.prototype._generateViewOptions = function(filename) { @@ -351,30 +359,31 @@ }; engine.prototype._monitorForChanges = function(filename, options) { + /* we must continuously unwatch/rewatch because some editors/systems invoke a "rename" event and we'll end up following the wrong, old 'file' as a new one is dropped in its place. Files that are missing are ignored here because they get picked up by new calls to _loadCacheAndMonitor - */ - - var e, fsw, - _this = this; + */ + var e, fsw; if (this.fsErrorCache[filename] == null) { fsw = null; try { - this._log("" + filename + " starting fs.watch()"); + this._log(filename + " starting fs.watch()"); return fsw = fs.watch(filename, { persistent: true - }, function(change) { - _this._log("" + filename + " closing fs.watch()"); - fsw.close(); - _this._monitorForChanges(filename, options); - return _this._reloadFileInBkg(filename, options); - }); - } catch (_error) { - e = _error; + }, (function(_this) { + return function(change) { + _this._log(filename + " closing fs.watch()"); + fsw.close(); + _this._monitorForChanges(filename, options); + return _this._reloadFileInBkg(filename, options); + }; + })(this)); + } catch (error) { + e = error; this._log("fs.watch() failed for " + filename + "; settings fsErrorCache = true"); return this.fsErrorCache[filename] = Date.now(); } diff --git a/lib/errorHandler.js b/lib/errorHandler.js index fece7e0..0e968e4 100644 --- a/lib/errorHandler.js +++ b/lib/errorHandler.js @@ -1,8 +1,8 @@ -// Generated by CoffeeScript 1.6.3 +// Generated by CoffeeScript 1.12.2 (function() { - var errorTypes, path, toffeeError, util, _ppEscape, - __hasProp = {}.hasOwnProperty, - __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; + var _ppEscape, errorTypes, path, toffeeError, util, + extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, + hasProp = {}.hasOwnProperty; path = require("path"); @@ -15,8 +15,8 @@ RUNTIME: 3 }; - toffeeError = (function(_super) { - __extends(toffeeError, _super); + toffeeError = (function(superClass) { + extend(toffeeError, superClass); function toffeeError(view, err_type, e) { this.errType = err_type; @@ -41,6 +41,7 @@ } toffeeError.prototype.getConvertedError = function() { + /* -------------------------------------- returns a JS style error, but with some extras { @@ -51,9 +52,8 @@ ...etc... } ------------------------------------------ - */ - - var line, res, _ref, _ref1, _ref2; + */ + var line, ref, ref1, ref2, res; res = { stack: [], message: "", @@ -63,10 +63,10 @@ file: path.basename(this.view.fileName), line_range: null }; - if (((_ref = this.e) != null ? _ref.message : void 0) != null) { + if (((ref = this.e) != null ? ref.message : void 0) != null) { res.message = this.e.message; } - if (((_ref1 = this.e) != null ? (_ref2 = _ref1.location) != null ? _ref2.first_line : void 0 : void 0) != null) { + if (((ref1 = this.e) != null ? (ref2 = ref1.location) != null ? ref2.first_line : void 0 : void 0) != null) { res.line_range = this._convertJsErrorRangeToToffeeRange(this.e.location); } switch (this.errType) { @@ -105,16 +105,16 @@ }; toffeeError.prototype._convertRuntimeStackLines = function(converted_err) { + /* a little more complicated, so extracted. Returns an array of dictionaries where there's extra info on each line in the stack. - */ - - var at_pub_call, hit_pub_yet, i, in_src_file, line, lineno, lrange, m, rxx_inline, rxx_pub, stack, _i, _len, _results; + */ + var at_pub_call, hit_pub_yet, i, in_src_file, k, len, line, lineno, lrange, m, results, rxx_inline, rxx_pub, stack; hit_pub_yet = false; stack = converted_err.stack; - _results = []; - for (i = _i = 0, _len = stack.length; _i < _len; i = ++_i) { + results = []; + for (i = k = 0, len = stack.length; k < len; i = ++k) { line = stack[i]; rxx_pub = /Object[\.].*?pub[\s]\(undefined\:([0-9]+)\:[0-9]+|tmpl[\.]render[\.]tmpl[\.]pub.*\(.*\:([0-9]+)\:[0-9]+/; m = line.match(rxx_pub); @@ -147,33 +147,33 @@ line_range: lrange }; if (stack[i].line_range[0] && !converted_err.line_range[0]) { - _results.push(converted_err.line_range = stack[i].line_range); + results.push(converted_err.line_range = stack[i].line_range); } else { - _results.push(void 0); + results.push(void 0); } } - return _results; + return results; }; toffeeError.prototype.getPrettyPrintText = function() { + /* returns a TEXT only blob explaining the error - */ - - var cerr, count, header, i, item, res, _i, _len, _ref, _ref1; + */ + var cerr, count, header, i, item, k, len, ref, ref1, res; cerr = this.getConvertedError(); - header = "" + cerr.dir_name + "/" + cerr.file + ": " + cerr.message; + header = cerr.dir_name + "/" + cerr.file + ": " + cerr.message; res = "ERROR\n=====\n" + header; - if ((_ref = cerr.stack) != null ? _ref.length : void 0) { + if ((ref = cerr.stack) != null ? ref.length : void 0) { res += "\n\nSTACK\n=====\n"; count = 0; - _ref1 = cerr.stack; - for (i = _i = 0, _len = _ref1.length; _i < _len; i = ++_i) { - item = _ref1[i]; + ref1 = cerr.stack; + for (i = k = 0, len = ref1.length; k < len; i = ++k) { + item = ref1[i]; if (i === 0) { - res += "" + (count++) + " " + item.line; + res += (count++) + " " + item.line; } else if (item.in_src_file && (item.above_pub_call || item.at_pub_call)) { - res += "" + (count++) + " [" + (this._lineRangeToPhrase(item.line_range)) + "] " + cerr.dir_name + "/" + cerr.file; + res += (count++) + " [" + (this._lineRangeToPhrase(item.line_range)) + "] " + cerr.dir_name + "/" + cerr.file; } else if (item.in_src_file) { continue; } else { @@ -189,22 +189,22 @@ }; toffeeError.prototype.getPrettyPrint = function() { + /* returns an HTML blob explaining the error with lines highlighted - */ - - var cerr, count, extra, header, i, item, j, line, padding, padding_len, res, _i, _j, _len, _ref, _ref1, _ref2, _ref3, _ref4; + */ + var cerr, count, extra, header, i, item, j, k, l, len, line, padding, padding_len, ref, ref1, ref2, ref3, ref4, res; cerr = this.getConvertedError(); res = ""; - header = "" + cerr.dir_name + "/" + cerr.file + ": " + (_ppEscape(cerr.message)) + ""; + header = cerr.dir_name + "/" + cerr.file + ": " + (_ppEscape(cerr.message)) + ""; res += "
    \n \n
    " + header + "
    \n \n
    \n \n
    "; - if ((_ref = cerr.stack) != null ? _ref.length : void 0) { + if ((ref = cerr.stack) != null ? ref.length : void 0) { res += "
    "; count = 0; - _ref1 = cerr.stack; - for (i = _i = 0, _len = _ref1.length; _i < _len; i = ++_i) { - item = _ref1[i]; + ref1 = cerr.stack; + for (i = k = 0, len = ref1.length; k < len; i = ++k) { + item = ref1[i]; if (i === 0) { res += "
    " + (count++) + " " + item.line + "
    "; } else if (item.in_src_file && (item.above_pub_call || item.at_pub_call)) { @@ -217,26 +217,26 @@ } res += "
    "; } - for (i = _j = _ref2 = cerr.line_range[0] - 3, _ref3 = cerr.line_range[1] + 1; _ref2 <= _ref3 ? _j < _ref3 : _j > _ref3; i = _ref2 <= _ref3 ? ++_j : --_j) { + for (i = l = ref2 = cerr.line_range[0] - 3, ref3 = cerr.line_range[1] + 1; ref2 <= ref3 ? l < ref3 : l > ref3; i = ref2 <= ref3 ? ++l : --l) { if ((i < 0) || i > this.toffeeSrcLines.length - 1) { continue; } line = _ppEscape(this.toffeeSrcLines[i]); padding_len = 5 - ("" + (i + 1)).length; padding = ((function() { - var _k, _results; - _results = []; - for (j = _k = 0; 0 <= padding_len ? _k < padding_len : _k > padding_len; j = 0 <= padding_len ? ++_k : --_k) { - _results.push(" "); + var n, ref4, results; + results = []; + for (j = n = 0, ref4 = padding_len; 0 <= ref4 ? n < ref4 : n > ref4; j = 0 <= ref4 ? ++n : --n) { + results.push(" "); } - return _results; + return results; })()).join(""); - if (((cerr.line_range[0] - 1) <= (_ref4 = i) && _ref4 < cerr.line_range[1])) { + if (((cerr.line_range[0] - 1) <= (ref4 = i) && ref4 < cerr.line_range[1])) { extra = ""; } else { extra = ""; } - res += "" + extra + "\n" + (i + 1) + ": " + padding + " " + line + "
    "; + res += extra + "\n" + (i + 1) + ": " + padding + " " + line + "

    "; } res += " \n
    \n\n
    "; return res; @@ -270,12 +270,12 @@ }; toffeeError.prototype._convertOffensiveLineToToffeeRange = function(lineno) { + /* Given the error line in a converted file, hunts for surrounding __toffee.lineno calls and returns a pair array with the error position range in the original toffee file. - */ - + */ var next, next_matches, ol, prev, prev_matches, res, tl; ol = this.offensiveSrcLines; tl = this.toffeeSrcLines; @@ -307,12 +307,12 @@ txt = txt.replace(/&/g, '&').replace(/ _ref; i = 0 <= _ref ? ++_i : --_i) { - _results.push(" "); + var k, ref, results; + results = []; + for (i = k = 0, ref = m[0].length; 0 <= ref ? k < ref : k > ref; i = 0 <= ref ? ++k : --k) { + results.push(" "); } - return _results; + return results; })()).join("")); return txt; }; diff --git a/lib/pool.js b/lib/pool.js index 34e4fd7..4a4db6d 100644 --- a/lib/pool.js +++ b/lib/pool.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.6.3 +// Generated by CoffeeScript 1.12.2 (function() { var Pool; diff --git a/lib/toffee_lang.js b/lib/toffee_lang.js index bae32aa..ce0d0bf 100644 --- a/lib/toffee_lang.js +++ b/lib/toffee_lang.js @@ -1,4 +1,4 @@ -/* parser generated by jison 0.4.13 */ +/* parser generated by jison 0.4.17 */ /* Returns a Parser object of the following structure: @@ -72,6 +72,7 @@ } */ var toffee_lang = (function(){ +var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[2,7],$V1=[1,8],$V2=[1,7],$V3=[1,9],$V4=[5,15],$V5=[1,15],$V6=[2,19],$V7=[1,20],$V8=[11,12,13,14,15,16],$V9=[5,9,12,13,14,15,16],$Va=[5,9,12,15,16]; var parser = {trace: function trace() { }, yy: {}, symbols_: {"error":2,"starter":3,"toffee_zone":4,"EOF":5,"toffee_code":6,"flip_to_coffee":7,"flip_to_toffee_comment":8,"START_TOFFEE_COMMENT":9,"toffee_commented_region":10,"END_TOFFEE_COMMENT":11,"START_COFFEE":12,"END_COFFEE":13,"START_TOFFEE":14,"END_TOFFEE":15,"CODE":16,"coffee_zone":17,"coffee_code":18,"flip_to_toffee":19,"code":20,"$accept":0,"$end":1}, @@ -82,71 +83,88 @@ performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* actio var $0 = $$.length - 1; switch (yystate) { -case 1: this.$ = ["TOFFEE_ZONE", $$[$0-1]]; return this.$; +case 1: + this.$ = ["TOFFEE_ZONE", $$[$0-1]]; return this.$; break; -case 2: this.$ = [$$[$0]]; +case 2: case 16: + this.$ = [$$[$0]]; break; -case 3: this.$ = $$[$0]; $$[$0].splice(0,0,$$[$0-2],$$[$0-1]); +case 3: case 17: + this.$ = $$[$0]; $$[$0].splice(0,0,$$[$0-2],$$[$0-1]); break; -case 4: this.$ = $$[$0]; $$[$0].splice(0,0,$$[$0-1]); +case 4: case 18: + this.$ = $$[$0]; $$[$0].splice(0,0,$$[$0-1]); break; -case 5: this.$ = $$[$0]; $$[$0].splice(0,0,$$[$0-2]); +case 5: + this.$ = $$[$0]; $$[$0].splice(0,0,$$[$0-2]); break; -case 6: this.$ = $$[$0]; +case 6: + this.$ = $$[$0]; break; -case 7: this.$ = []; +case 7: case 19: + this.$ = []; break; -case 15: this.$ = ["COFFEE_ZONE", $$[$0-1]]; +case 15: + this.$ = ["COFFEE_ZONE", $$[$0-1]]; break; -case 16: this.$ = [$$[$0]]; +case 20: + this.$ = ["TOFFEE_ZONE", $$[$0-1]]; break; -case 17: this.$ = $$[$0]; $$[$0].splice(0,0,$$[$0-2],$$[$0-1]); +case 21: + this.$ = ["TOFFEE", $$[$0][0], $$[$0][1] ]; break; -case 18: this.$ = $$[$0]; $$[$0].splice(0,0,$$[$0-1]); +case 22: + this.$ = ["COFFEE", $$[$0][0], $$[$0][1] ]; break; -case 19: this.$ = []; -break; -case 20: this.$ = ["TOFFEE_ZONE", $$[$0-1]]; -break; -case 21: this.$ = ["TOFFEE", $$[$0][0], $$[$0][1] ]; -break; -case 22: this.$ = ["COFFEE", $$[$0][0], $$[$0][1] ]; -break; -case 23: var ln = yylineno + 1 - $$[$0].split("\n").length + 1; +case 23: + var ln = yylineno + 1 - $$[$0].split("\n").length + 1; this.$ = [$$[$0], ln]; break; -case 24: var c = $$[$0-1][0] + $$[$0]; +case 24: + var c = $$[$0-1][0] + $$[$0]; var ln = yylineno + 1 - c.split("\n").length + 1; this.$ = [c, ln]; break; } }, -table: [{3:1,4:2,5:[2,7],6:3,7:4,8:5,9:[1,8],12:[1,7],16:[1,9],20:6},{1:[3]},{5:[1,10]},{5:[2,2],7:11,8:12,9:[1,8],12:[1,7],15:[2,2]},{4:13,5:[2,7],6:3,7:4,8:5,9:[1,8],12:[1,7],15:[2,7],16:[1,9],20:6},{4:14,5:[2,7],6:3,7:4,8:5,9:[1,8],12:[1,7],15:[2,7],16:[1,9],20:6},{5:[2,21],9:[2,21],12:[2,21],15:[2,21],16:[1,15]},{13:[2,19],14:[1,20],16:[1,9],17:16,18:17,19:18,20:19},{10:21,11:[2,14],12:[2,14],13:[2,14],14:[2,14],15:[2,14],16:[2,14]},{5:[2,23],9:[2,23],12:[2,23],13:[2,23],14:[2,23],15:[2,23],16:[2,23]},{1:[2,1]},{4:22,5:[2,7],6:3,7:4,8:5,9:[1,8],12:[1,7],15:[2,7],16:[1,9],20:6},{4:23,5:[2,7],6:3,7:4,8:5,9:[1,8],12:[1,7],15:[2,7],16:[1,9],20:6},{5:[2,4],15:[2,4]},{5:[2,6],15:[2,6]},{5:[2,24],9:[2,24],12:[2,24],13:[2,24],14:[2,24],15:[2,24],16:[2,24]},{13:[1,24]},{13:[2,16],14:[1,20],19:25},{13:[2,19],14:[1,20],16:[1,9],17:26,18:17,19:18,20:19},{13:[2,22],14:[2,22],16:[1,15]},{4:27,6:3,7:4,8:5,9:[1,8],12:[1,7],15:[2,7],16:[1,9],20:6},{11:[1,28],12:[1,29],13:[1,30],14:[1,31],15:[1,32],16:[1,33]},{5:[2,3],15:[2,3]},{5:[2,5],15:[2,5]},{5:[2,15],9:[2,15],12:[2,15],15:[2,15],16:[2,15]},{13:[2,19],14:[1,20],16:[1,9],17:34,18:17,19:18,20:19},{13:[2,18]},{15:[1,35]},{5:[2,8],9:[2,8],12:[2,8],15:[2,8],16:[2,8]},{11:[2,9],12:[2,9],13:[2,9],14:[2,9],15:[2,9],16:[2,9]},{11:[2,10],12:[2,10],13:[2,10],14:[2,10],15:[2,10],16:[2,10]},{11:[2,11],12:[2,11],13:[2,11],14:[2,11],15:[2,11],16:[2,11]},{11:[2,12],12:[2,12],13:[2,12],14:[2,12],15:[2,12],16:[2,12]},{11:[2,13],12:[2,13],13:[2,13],14:[2,13],15:[2,13],16:[2,13]},{13:[2,17]},{13:[2,20],14:[2,20],16:[2,20]}], +table: [{3:1,4:2,5:$V0,6:3,7:4,8:5,9:$V1,12:$V2,16:$V3,20:6},{1:[3]},{5:[1,10]},o($V4,[2,2],{7:11,8:12,9:$V1,12:$V2}),o($V4,$V0,{6:3,7:4,8:5,20:6,4:13,9:$V1,12:$V2,16:$V3}),o($V4,$V0,{6:3,7:4,8:5,20:6,4:14,9:$V1,12:$V2,16:$V3}),o([5,9,12,15],[2,21],{16:$V5}),{13:$V6,14:$V7,16:$V3,17:16,18:17,19:18,20:19},o($V8,[2,14],{10:21}),o($V9,[2,23]),{1:[2,1]},o($V4,$V0,{6:3,7:4,8:5,20:6,4:22,9:$V1,12:$V2,16:$V3}),o($V4,$V0,{6:3,7:4,8:5,20:6,4:23,9:$V1,12:$V2,16:$V3}),o($V4,[2,4]),o($V4,[2,6]),o($V9,[2,24]),{13:[1,24]},{13:[2,16],14:$V7,19:25},{13:$V6,14:$V7,16:$V3,17:26,18:17,19:18,20:19},o([13,14],[2,22],{16:$V5}),{4:27,6:3,7:4,8:5,9:$V1,12:$V2,15:$V0,16:$V3,20:6},{11:[1,28],12:[1,29],13:[1,30],14:[1,31],15:[1,32],16:[1,33]},o($V4,[2,3]),o($V4,[2,5]),o($Va,[2,15]),{13:$V6,14:$V7,16:$V3,17:34,18:17,19:18,20:19},{13:[2,18]},{15:[1,35]},o($Va,[2,8]),o($V8,[2,9]),o($V8,[2,10]),o($V8,[2,11]),o($V8,[2,12]),o($V8,[2,13]),{13:[2,17]},o([13,14,16],[2,20])], defaultActions: {10:[2,1],26:[2,18],34:[2,17]}, parseError: function parseError(str, hash) { if (hash.recoverable) { this.trace(str); } else { - throw new Error(str); + function _parseError (msg, hash) { + this.message = msg; + this.hash = hash; + } + _parseError.prototype = Error; + + throw new _parseError(str, hash); } }, parse: function parse(input) { - var self = this, stack = [0], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1; + var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1; var args = lstack.slice.call(arguments, 1); - this.lexer.setInput(input); - this.lexer.yy = this.yy; - this.yy.lexer = this.lexer; - this.yy.parser = this; - if (typeof this.lexer.yylloc == 'undefined') { - this.lexer.yylloc = {}; + var lexer = Object.create(this.lexer); + var sharedState = { yy: {} }; + for (var k in this.yy) { + if (Object.prototype.hasOwnProperty.call(this.yy, k)) { + sharedState.yy[k] = this.yy[k]; + } + } + lexer.setInput(input, sharedState.yy); + sharedState.yy.lexer = lexer; + sharedState.yy.parser = this; + if (typeof lexer.yylloc == 'undefined') { + lexer.yylloc = {}; } - var yyloc = this.lexer.yylloc; + var yyloc = lexer.yylloc; lstack.push(yyloc); - var ranges = this.lexer.options && this.lexer.options.ranges; - if (typeof this.yy.parseError === 'function') { - this.parseError = this.yy.parseError; + var ranges = lexer.options && lexer.options.ranges; + if (typeof sharedState.yy.parseError === 'function') { + this.parseError = sharedState.yy.parseError; } else { this.parseError = Object.getPrototypeOf(this).parseError; } @@ -155,14 +173,15 @@ parse: function parse(input) { vstack.length = vstack.length - n; lstack.length = lstack.length - n; } - function lex() { - var token; - token = self.lexer.lex() || EOF; - if (typeof token !== 'number') { - token = self.symbols_[token] || token; - } - return token; - } + _token_stack: + var lex = function () { + var token; + token = lexer.lex() || EOF; + if (typeof token !== 'number') { + token = self.symbols_[token] || token; + } + return token; + }; var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected; while (true) { state = stack[stack.length - 1]; @@ -182,15 +201,15 @@ parse: function parse(input) { expected.push('\'' + this.terminals_[p] + '\''); } } - if (this.lexer.showPosition) { - errStr = 'Parse error on line ' + (yylineno + 1) + ':\n' + this.lexer.showPosition() + '\nExpecting ' + expected.join(', ') + ', got \'' + (this.terminals_[symbol] || symbol) + '\''; + if (lexer.showPosition) { + errStr = 'Parse error on line ' + (yylineno + 1) + ':\n' + lexer.showPosition() + '\nExpecting ' + expected.join(', ') + ', got \'' + (this.terminals_[symbol] || symbol) + '\''; } else { errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\'' + (this.terminals_[symbol] || symbol) + '\''); } this.parseError(errStr, { - text: this.lexer.match, + text: lexer.match, token: this.terminals_[symbol] || symbol, - line: this.lexer.yylineno, + line: lexer.yylineno, loc: yyloc, expected: expected }); @@ -201,15 +220,15 @@ parse: function parse(input) { switch (action[0]) { case 1: stack.push(symbol); - vstack.push(this.lexer.yytext); - lstack.push(this.lexer.yylloc); + vstack.push(lexer.yytext); + lstack.push(lexer.yylloc); stack.push(action[1]); symbol = null; if (!preErrorSymbol) { - yyleng = this.lexer.yyleng; - yytext = this.lexer.yytext; - yylineno = this.lexer.yylineno; - yyloc = this.lexer.yylloc; + yyleng = lexer.yyleng; + yytext = lexer.yytext; + yylineno = lexer.yylineno; + yyloc = lexer.yylloc; if (recovering > 0) { recovering--; } @@ -237,7 +256,7 @@ parse: function parse(input) { yytext, yyleng, yylineno, - this.yy, + sharedState.yy, action[1], vstack, lstack @@ -262,9 +281,9 @@ parse: function parse(input) { } return true; }}; -/* generated by jison-lex 0.2.1 */ +/* generated by jison-lex 0.3.4 */ var lexer = (function(){ -var lexer = { +var lexer = ({ EOF:1, @@ -277,7 +296,8 @@ parseError:function parseError(str, hash) { }, // resets the lexer, sets new input -setInput:function (input) { +setInput:function (input, yy) { + this.yy = yy || this.yy || {}; this._input = input; this._more = this._backtrack = this.done = false; this.yylineno = this.yyleng = 0; @@ -325,7 +345,7 @@ unput:function (ch) { var lines = ch.split(/(?:\r\n?|\n)/g); this._input = ch + this._input; - this.yytext = this.yytext.substr(0, this.yytext.length - len - 1); + this.yytext = this.yytext.substr(0, this.yytext.length - len); //this.yyleng -= len; this.offset -= len; var oldLines = this.match.split(/(?:\r\n?|\n)/g); @@ -587,7 +607,6 @@ stateStackSize:function stateStackSize() { }, options: {}, performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) { - var YYSTATE=YY_START; switch($avoiding_name_collisions) { case 0:return 9; @@ -610,7 +629,7 @@ break; }, rules: [/^(?:\{##)/,/^(?:##\})/,/^(?::\})/,/^(?:\{:)/,/^(?:\{#)/,/^(?:#\})/,/^(?:[^{}#\\:\-]+|[\\{}#:\-])/,/^(?:$)/], conditions: {"INITIAL":{"rules":[0,1,2,3,4,5,6,7],"inclusive":true}} -}; +}); return lexer; })(); parser.lexer = lexer; diff --git a/lib/utils.js b/lib/utils.js index 45f1cfa..8838331 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.6.3 +// Generated by CoffeeScript 1.12.2 (function() { var lex, lexer; @@ -7,13 +7,13 @@ lex = new lexer.Lexer(); exports.interpolateString = function(str) { + /* Similar to the interpolateString function in CoffeeScript, except that it doesn't actually work on anything inside an outer #{}; we're just looking to recognize them. - */ - - var expr, i, inner, interpolated, letter, pi, res, tag, tokens, value, _i, _len, _ref; + */ + var expr, i, inner, interpolated, j, len, letter, pi, ref, res, tag, tokens, value; tokens = []; res = []; pi = 0; @@ -48,8 +48,8 @@ if (interpolated = tokens.length > 1) { res.push('(', '('); } - for (i = _i = 0, _len = tokens.length; _i < _len; i = ++_i) { - _ref = tokens[i], tag = _ref[0], value = _ref[1]; + for (i = j = 0, len = tokens.length; j < len; i = ++j) { + ref = tokens[i], tag = ref[0], value = ref[1]; if (i) { res.push('+', '+'); } diff --git a/lib/view.js b/lib/view.js index 3347776..e93e9a6 100644 --- a/lib/view.js +++ b/lib/view.js @@ -1,12 +1,12 @@ -// Generated by CoffeeScript 1.6.3 +// Generated by CoffeeScript 1.12.2 (function() { - var TAB_SPACES, coffee, e, errorHandler, errorTypes, getBundleHeaders, getCommonHeaders, getCommonHeadersJs, minimizeJs, parser, spaces, states, tabs, toffeeError, util, utils, view, vm, _ref, _ref1; + var TAB_SPACES, coffee, e, errorHandler, errorTypes, getBundleHeaders, getCommonHeaders, getCommonHeadersJs, minimizeJs, parser, ref, ref1, spaces, states, tabs, toffeeError, util, utils, view, vm; parser = require('./toffee_lang').parser; - _ref = require('./errorHandler'), errorHandler = _ref.errorHandler, toffeeError = _ref.toffeeError, errorTypes = _ref.errorTypes; + ref = require('./errorHandler'), errorHandler = ref.errorHandler, toffeeError = ref.toffeeError, errorTypes = ref.errorTypes; - _ref1 = require('./consts'), states = _ref1.states, TAB_SPACES = _ref1.TAB_SPACES; + ref1 = require('./consts'), states = ref1.states, TAB_SPACES = ref1.TAB_SPACES; utils = require('./utils'); @@ -16,32 +16,32 @@ try { coffee = require("iced-coffee-script"); - } catch (_error) { - e = _error; + } catch (error) { + e = error; coffee = require("coffee-script"); } spaces = function(n) { var i; return ((function() { - var _i, _results; - _results = []; - for (i = _i = 0; 0 <= n ? _i < n : _i > n; i = 0 <= n ? ++_i : --_i) { - _results.push(" "); + var j, ref2, results; + results = []; + for (i = j = 0, ref2 = n; 0 <= ref2 ? j < ref2 : j > ref2; i = 0 <= ref2 ? ++j : --j) { + results.push(" "); } - return _results; + return results; })()).join(""); }; tabs = function(n) { var i; return ((function() { - var _i, _results; - _results = []; - for (i = _i = 0; 0 <= n ? _i < n : _i > n; i = 0 <= n ? ++_i : --_i) { - _results.push(spaces(TAB_SPACES)); + var j, ref2, results; + results = []; + for (i = j = 0, ref2 = n; 0 <= ref2 ? j < ref2 : j > ref2; i = 0 <= ref2 ? ++j : --j) { + results.push(spaces(TAB_SPACES)); } - return _results; + return results; })()).join(""); }; @@ -52,8 +52,8 @@ js = uglify.minify(js, { fromString: true }).code; - } catch (_error) { - e = _error; + } catch (error) { + e = error; console.log(js); console.log(e); process.exit(1); @@ -62,24 +62,24 @@ }; getCommonHeaders = function(tab_level, include_bundle_headers, auto_escape) { + /* each view will use this, or if they're bundled together, it'll only be used once. include_bundle_headers: includes some functions needed for browser use - */ - + */ var __; __ = tabs(tab_level); - return "\n\n" + __ + "if not toffee? then toffee = {}\n" + __ + "if not toffee.templates then toffee.templates = {}\n\n" + __ + "toffee.states = " + (JSON.stringify(states)) + "\n\n" + __ + "toffee.__json = (locals, o) ->\n" + __ + " if not o? then return \"null\"\n" + __ + " else return \"\" + JSON.stringify(o).replace(//g,'\\\\u003E').replace(/&/g,'\\\\u0026')\n\n" + __ + "toffee.__raw = (locals, o) -> o\n\n" + __ + "toffee.__html = (locals, o) ->\n" + __ + " (\"\"+o).replace(/&/g, '&').replace(//g, '>').replace(/\"/g, '"')\n\n" + __ + "toffee.__escape = (locals, o) ->\n" + __ + " if locals.__toffee.autoEscape? then ae = locals.__toffee.autoEscape\n" + __ + " else if " + (auto_escape != null) + " then ae = " + auto_escape + "\n" + __ + " else ae = true\n" + __ + " if ae\n" + __ + " if o is undefined then return ''\n" + __ + " if o? and (typeof o) is \"object\" then return locals.json o\n" + __ + " return locals.html o\n" + __ + " return o\n\n" + __ + "toffee.__augmentLocals = (locals, bundle_path) ->\n" + __ + " _l = locals\n" + __ + " _t = _l.__toffee = {out: []}\n" + __ + " if not _l.print? then _l.print = (o) -> toffee.__print _l, o\n" + __ + " if not _l.json? then _l.json = (o) -> toffee.__json _l, o\n" + __ + " if not _l.raw? then _l.raw = (o) -> toffee.__raw _l, o\n" + __ + " if not _l.html? then _l.html = (o) -> toffee.__html _l, o\n" + __ + " if not _l.escape? then _l.escape = (o) -> toffee.__escape _l, o\n" + __ + " if not _l.partial? then _l.partial = (path, vars) -> toffee.__partial toffee.templates[\"\#{bundle_path}\"], _l, path, vars\n" + __ + " if not _l.snippet? then _l.snippet = (path, vars) -> toffee.__snippet toffee.templates[\"\#{bundle_path}\"], _l, path, vars\n" + __ + " if not _l.load? then _l.load = (path, vars) -> toffee.__load toffee.templates[\"\#{bundle_path}\"], _l, path, vars\n" + __ + " _t.print = _l.print\n" + __ + " _t.json = _l.json\n" + __ + " _t.raw = _l.raw\n" + __ + " _t.html = _l.html\n" + __ + " _t.escape = _l.escape\n" + __ + " _t.partial = _l.partial\n" + __ + " _t.snippet = _l.snippet\n" + __ + " _t.load = _l.load\n\n" + (include_bundle_headers ? getBundleHeaders(tab_level) : ""); + return "\n\n" + __ + "if not toffee? then toffee = {}\n" + __ + "if not toffee.templates then toffee.templates = {}\n\n" + __ + "toffee.states = " + (JSON.stringify(states)) + "\n\n" + __ + "toffee.__json = (locals, o) ->\n" + __ + " if not o? then return \"null\"\n" + __ + " else return \"\" + JSON.stringify(o).replace(//g,'\\\\u003E').replace(/&/g,'\\\\u0026').replace(/\\u2028/g, '\\\\u2028').replace(/\\u2029/g, '\\\\u2029')\n\n" + __ + "toffee.__raw = (locals, o) -> o\n\n" + __ + "toffee.__html = (locals, o) ->\n" + __ + " (\"\"+o).replace(/&/g, '&').replace(//g, '>').replace(/\"/g, '"')\n\n" + __ + "toffee.__escape = (locals, o) ->\n" + __ + " if locals.__toffee.autoEscape? then ae = locals.__toffee.autoEscape\n" + __ + " else if " + (auto_escape != null) + " then ae = " + auto_escape + "\n" + __ + " else ae = true\n" + __ + " if ae\n" + __ + " if o is undefined then return ''\n" + __ + " if o? and (typeof o) is \"object\" then return locals.json o\n" + __ + " return locals.html o\n" + __ + " return o\n\n" + __ + "toffee.__augmentLocals = (locals, bundle_path) ->\n" + __ + " _l = locals\n" + __ + " _t = _l.__toffee = {out: []}\n" + __ + " if not _l.print? then _l.print = (o) -> toffee.__print _l, o\n" + __ + " if not _l.json? then _l.json = (o) -> toffee.__json _l, o\n" + __ + " if not _l.raw? then _l.raw = (o) -> toffee.__raw _l, o\n" + __ + " if not _l.html? then _l.html = (o) -> toffee.__html _l, o\n" + __ + " if not _l.escape? then _l.escape = (o) -> toffee.__escape _l, o\n" + __ + " if not _l.partial? then _l.partial = (path, vars) -> toffee.__partial toffee.templates[\"\#{bundle_path}\"], _l, path, vars\n" + __ + " if not _l.snippet? then _l.snippet = (path, vars) -> toffee.__snippet toffee.templates[\"\#{bundle_path}\"], _l, path, vars\n" + __ + " if not _l.load? then _l.load = (path, vars) -> toffee.__load toffee.templates[\"\#{bundle_path}\"], _l, path, vars\n" + __ + " _t.print = _l.print\n" + __ + " _t.json = _l.json\n" + __ + " _t.raw = _l.raw\n" + __ + " _t.html = _l.html\n" + __ + " _t.escape = _l.escape\n" + __ + " _t.partial = _l.partial\n" + __ + " _t.snippet = _l.snippet\n" + __ + " _t.load = _l.load\n\n" + (include_bundle_headers ? getBundleHeaders(tab_level) : ""); }; getBundleHeaders = function(tab_level) { + /* header stuff only needed when compiling to a JS file - */ - + */ var __; __ = tabs(tab_level); return "\n\n" + __ + "toffee.__print = (locals, o) ->\n" + __ + " if locals.__toffee.state is toffee.states.COFFEE\n" + __ + " locals.__toffee.out.push o\n" + __ + " return ''\n" + __ + " else\n" + __ + " return \"\#{o}\"\n\n" + __ + "toffee.__normalize = (path) ->\n" + __ + " if (not path?) or path is \"/\"\n" + __ + " return path\n" + __ + " else\n" + __ + " parts = path.split \"/\"\n" + __ + " np = []\n" + __ + " # make sure path always starts with '/'\n" + __ + " if parts[0]\n" + __ + " np.push ''\n" + __ + " for part in parts\n" + __ + " if part is \"..\"\n" + __ + " if np.length > 1\n" + __ + " np.pop()\n" + __ + " else\n" + __ + " np.push part\n" + __ + " else\n" + __ + " if part isnt \".\"\n" + __ + " np.push part\n" + __ + " path = np.join \"/\"\n" + __ + " if not path then path = \"/\"\n" + __ + " return path\n\n" + __ + "toffee.__partial = (parent_tmpl, parent_locals, path, vars) ->\n" + __ + " path = toffee.__normalize parent_tmpl.bundlePath + \"/../\" + path\n" + __ + " return toffee.__inlineInclude path, vars, parent_locals\n\n" + __ + "toffee.__snippet = (parent_tmpl, parent_locals, path, vars) ->\n" + __ + " path = toffee.__normalize parent_tmpl.bundlePath + \"/../\" + path\n" + __ + " vars = if vars? then vars else {}\n" + __ + " vars.__toffee = vars.__toffee or {}\n" + __ + " vars.__toffee.noInheritance = true\n" + __ + " return toffee.__inlineInclude path, vars, parent_locals\n\n" + __ + "toffee.__load = (parent_tmpl, parent_locals, path, vars) ->\n" + __ + " path = toffee.__normalize parent_tmpl.bundlePath + \"/../\" + path\n" + __ + " vars = if vars? then vars else {}\n" + __ + " vars.__toffee = vars.__toffee or {}\n" + __ + " vars.__toffee.repress = true\n" + __ + " return toffee.__inlineInclude path, vars, parent_locals\n\n" + __ + "toffee.__inlineInclude = (path, locals, parent_locals) ->\n" + __ + " options = locals or {}\n" + __ + " options.passback = {}\n" + __ + " options.__toffee = options.__toffee or {}\n" + __ + "\n" + __ + " # we need to make a shallow copy of parent variables\n" + __ + " reserved = {}\n" + __ + " reserved[k] = true for k in [\"passback\", \"load\", \"print\", \"partial\", \"snippet\", \"layout\", \"__toffee\", \"postProcess\"]\n" + __ + " if not options.__toffee.noInheritance\n" + __ + " for k,v of parent_locals when not locals?[k]?\n" + __ + " if not reserved[k]?\n" + __ + " options[k] = v\n" + __ + "\n" + __ + " if not toffee.templates[path]\n" + __ + " return \"Inline toffee include: Could not find \#{path}\"\n" + __ + " else\n" + __ + " res = toffee.templates[path].pub options\n" + __ + " for k,v of options.passback\n" + __ + " parent_locals[k] = v\n" + __ + " return res"; @@ -99,12 +99,11 @@ view = (function() { function view(txt, options) { + /* important options: cb: if this is set, compilation will happen async and cb will be executed when it's ready - */ - - var _this = this; + */ options = options || {}; this.fileName = options.fileName || options.filename || null; this.bundlePath = options.bundlePath || "/"; @@ -123,19 +122,21 @@ this.fun = null; this.error = null; if (options.cb) { - this._prepAsync(txt, options.ctx, (function() { - return options.cb(_this); - })); + this._prepAsync(txt, options.ctx, ((function(_this) { + return function() { + return options.cb(_this); + }; + })(this))); } } view.prototype._prepAsync = function(txt, ctx, cb) { + /* Only once it's fully compiled does it callback. Defers via setTimeouts in each stage in the compile process for CPU friendliness. This is a lot prettier with iced-coffee-script. - */ - + */ var v; ctx = ctx || vm.createContext({}); this._log("Prepping " + (this.fileName != null ? this.fileName : 'unknown') + " async."); @@ -155,9 +156,9 @@ }; view.prototype._log = function(o) { - var _ref2; + var ref2; if (this.verbose) { - if ((_ref2 = typeof o) === "string" || _ref2 === "number" || _ref2 === "boolean") { + if ((ref2 = typeof o) === "string" || ref2 === "number" || ref2 === "boolean") { return console.log("toffee: " + o); } else { return console.log("toffee: " + (util.inspect(o))); @@ -166,47 +167,47 @@ }; view.prototype._cleanTabs = function(obj) { + /* replaces tabs with spaces in their coffee regions - */ - - var item, _i, _len, _ref2, _ref3, _results; - if ((_ref2 = obj[0]) === "TOFFEE_ZONE" || _ref2 === "COFFEE_ZONE") { - _ref3 = obj[1]; - _results = []; - for (_i = 0, _len = _ref3.length; _i < _len; _i++) { - item = _ref3[_i]; - _results.push(this._cleanTabs(item)); + */ + var item, j, len, ref2, ref3, results; + if ((ref2 = obj[0]) === "TOFFEE_ZONE" || ref2 === "COFFEE_ZONE") { + ref3 = obj[1]; + results = []; + for (j = 0, len = ref3.length; j < len; j++) { + item = ref3[j]; + results.push(this._cleanTabs(item)); } - return _results; + return results; } else if (obj[0] === "COFFEE") { return obj[1] = obj[1].replace(/\t/g, tabs(1)); } }; view.prototype.run = function(options, ctx) { + /* returns [err, str] - */ - - var fun, line, pair, res, txt, _i, _len, _ref2; + */ + var fun, j, len, line, pair, ref2, res, txt; ctx = ctx || vm.createContext({}); fun = this._toFun(ctx); res = null; if (!this.error) { try { res = fun(options); - } catch (_error) { - e = _error; + } catch (error) { + e = error; this.error = new toffeeError(this, errorTypes.RUNTIME, e); } } if (this.error) { if (this.prettyLogErrors) { txt = this.error.getPrettyPrintText(); - _ref2 = txt.split("\n"); - for (_i = 0, _len = _ref2.length; _i < _len; _i++) { - line = _ref2[_i]; + ref2 = txt.split("\n"); + for (j = 0, len = ref2.length; j < len; j++) { + line = ref2[j]; console.log("toffee err: " + line); } } @@ -228,15 +229,15 @@ }; view.prototype._toTokenObj = function() { + /* compiles Toffee to token array - */ - + */ if (this.tokenObj == null) { try { this.tokenObj = parser.parse(this.txt); - } catch (_error) { - e = _error; + } catch (error) { + e = error; this.error = new toffeeError(this, errorTypes.PARSER, e); } if (this.error == null) { @@ -254,7 +255,7 @@ d = Date.now(); vm.runInContext(txt, ctx); this.fun = ctx['_TMPL_']; - this._log("" + this.fileName + " compiled to scriptObj in " + (Date.now() - d) + "ms"); + this._log(this.fileName + " compiled to scriptObj in " + (Date.now() - d) + "ms"); } } return this.fun; @@ -274,15 +275,15 @@ opts.bare = false; } this.javaScript = coffee.compile(c, opts); - } catch (_error) { - e = _error; + } catch (error) { + e = error; this.error = new toffeeError(this, errorTypes.COFFEE_COMPILE, e); } if (this.minimize && !this.error) { d2 = Date.now(); this.javaScript = minimizeJs(this.javaScript); } - this._log("" + this.fileName + " compiled to JavaScript in " + (Date.now() - d) + "ms"); + this._log(this.fileName + " compiled to JavaScript in " + (Date.now() - d) + "ms"); } } return this.javaScript; @@ -299,12 +300,12 @@ res += this._toCoffeeRecurse(tobj, TAB_SPACES * (1 + this._globalTabLevel()), 0, {})[0]; res += this._coffeeFooters(); this.coffeeScript = res; - } catch (_error) { - e = _error; + } catch (error) { + e = error; console.log(e); this.error; } - this._log("" + this.fileName + " compiled to CoffeeScript in " + (Date.now() - d) + "ms"); + this._log(this.fileName + " compiled to CoffeeScript in " + (Date.now() - d) + "ms"); } } return this.coffeeScript; @@ -320,12 +321,12 @@ }; view.prototype._snippetHasEscapeOverride = function(str) { - var token, _i, _len, _ref2, _ref3; - _ref2 = ['print', ' snippet', 'load', 'partial', 'raw', 'html', 'json', '__toffee.raw', '__toffee.html', '__toffee.json', 'JSON.stringify']; - for (_i = 0, _len = _ref2.length; _i < _len; _i++) { - token = _ref2[_i]; + var j, len, ref2, ref3, token; + ref2 = ['print', ' snippet', 'load', 'partial', 'raw', 'html', 'json', '__toffee.raw', '__toffee.html', '__toffee.json', 'JSON.stringify']; + for (j = 0, len = ref2.length; j < len; j++) { + token = ref2[j]; if (str.slice(0, token.length) === token) { - if ((str.length > token.length) && ((_ref3 = str[token.length]) === ' ' || _ref3 === '\t' || _ref3 === '\n' || _ref3 === '(')) { + if ((str.length > token.length) && ((ref3 = str[token.length]) === ' ' || ref3 === '\t' || ref3 === '\n' || ref3 === '(')) { return true; } } @@ -334,10 +335,10 @@ }; view.prototype._snippetIsSoloToken = function(str) { + /* if the inside is something like #{ foo } not #{ foo.bar } or other complex thing. - */ - + */ if (str.match(/^[$A-Za-z_\x7f-\uffff][$\w\x7f-\uffff]*$/)) { return true; } @@ -345,7 +346,7 @@ }; view.prototype._toCoffeeRecurse = function(obj, indent_level, indent_baseline, state_carry) { - var c, chunk, delta, i, i_delta, ind, interp, item, lbreak, line, lineno, lines, part, res, s, t_int, temp_indent_level, zone_baseline, _i, _j, _k, _l, _len, _len1, _len2, _len3, _ref2, _ref3, _ref4, _ref5; + var c, chunk, delta, i, i_delta, ind, interp, item, j, k, l, lbreak, len, len1, len2, len3, line, lineno, lines, m, part, ref2, ref3, ref4, ref5, res, s, t_int, temp_indent_level, zone_baseline; res = ""; i_delta = 0; switch (obj[0]) { @@ -354,10 +355,10 @@ indent_level += TAB_SPACES; } res += "\n" + (spaces(indent_level)) + "_ts " + states.TOFFEE; - _ref2 = obj[1]; - for (_i = 0, _len = _ref2.length; _i < _len; _i++) { - item = _ref2[_i]; - _ref3 = this._toCoffeeRecurse(item, indent_level, indent_baseline, state_carry), s = _ref3[0], delta = _ref3[1]; + ref2 = obj[1]; + for (j = 0, len = ref2.length; j < len; j++) { + item = ref2[j]; + ref3 = this._toCoffeeRecurse(item, indent_level, indent_baseline, state_carry), s = ref3[0], delta = ref3[1]; res += s; } break; @@ -365,10 +366,10 @@ res += "\n" + (spaces(indent_level)) + "_ts " + states.COFFEE; zone_baseline = this._getZoneBaseline(obj[1]); temp_indent_level = indent_level; - _ref4 = obj[1]; - for (_j = 0, _len1 = _ref4.length; _j < _len1; _j++) { - item = _ref4[_j]; - _ref5 = this._toCoffeeRecurse(item, temp_indent_level, zone_baseline, state_carry), s = _ref5[0], delta = _ref5[1]; + ref4 = obj[1]; + for (k = 0, len1 = ref4.length; k < len1; k++) { + item = ref4[k]; + ref5 = this._toCoffeeRecurse(item, temp_indent_level, zone_baseline, state_carry), s = ref5[0], delta = ref5[1]; res += s; temp_indent_level = indent_level + delta; } @@ -379,14 +380,14 @@ lineno = obj[2]; try { t_int = utils.interpolateString(obj[1]); - } catch (_error) { - e = _error; + } catch (error) { + e = error; e.relayed_line_range = [lineno, lineno + obj[1].split("\n").length]; this.error = new toffeeError(this, errorTypes.STR_INTERPOLATE, e); throw e; } - for (_k = 0, _len2 = t_int.length; _k < _len2; _k++) { - part = t_int[_k]; + for (l = 0, len2 = t_int.length; l < len2; l++) { + part = t_int[l]; if (part[0] === "TOKENS") { res += this._printLineNo(lineno, ind); interp = part[1].replace(/(^[\n \t]+)|([\n \t]+)$/g, ''); @@ -401,7 +402,7 @@ lineno += part[1].split("\n").length - 1; } else { lines = part[1].split("\n"); - for (i = _l = 0, _len3 = lines.length; _l < _len3; i = ++_l) { + for (i = m = 0, len3 = lines.length; m < len3; i = ++m) { line = lines[i]; res += this._printLineNo(lineno, ind); lbreak = i !== lines.length - 1 ? "\n" : ""; @@ -432,12 +433,12 @@ }; view.prototype._quoteStr = function(s) { + /* returns a triple-quoted string, dividing into single quoted start and stops, if the string begins with double quotes, since coffee doesn't want to let us escape those. - */ - + */ var follow, lead, res; lead = ""; follow = ""; @@ -471,11 +472,11 @@ }; view.prototype._escapeForStr = function(s) { + /* escapes a string so it can make it into coffeescript triple quotes without losing whitespace, etc. - */ - + */ s = s.replace(/\\/g, '\\\\'); s = s.replace(/\n/g, '\\n'); s = s.replace(/\t/g, '\\t'); @@ -483,9 +484,9 @@ }; view.prototype._getZoneBaseline = function(obj_arr) { - var ib, obj, _i, _len; - for (_i = 0, _len = obj_arr.length; _i < _len; _i++) { - obj = obj_arr[_i]; + var ib, j, len, obj; + for (j = 0, len = obj_arr.length; j < len; j++) { + obj = obj_arr[j]; if (obj[0] === "COFFEE") { ib = this._getIndentationBaseline(obj[1]); if (ib != null) { @@ -497,11 +498,11 @@ }; view.prototype._getIndentationBaseline = function(coffee) { - var i, line, lines, res, _i, _len; + var i, j, len, line, lines, res; res = null; lines = coffee.split("\n"); if (lines.length) { - for (i = _i = 0, _len = lines.length; _i < _len; i = ++_i) { + for (i = j = 0, len = lines.length; j < len; i = ++j) { line = lines[i]; if ((!line.match(/^[ ]*$/)) || i === (lines.length - 1)) { res = line.match(/[ ]*/)[0].length; @@ -516,13 +517,13 @@ }; view.prototype._getIndentationDelta = function(coffee, baseline) { + /* given an arbitrarily indented set of coffeescript, returns the delta between the first and last lines, in chars. Ignores leading/trailing whitespace lines If passed a baseline, uses that instead of own. - */ - + */ var lines, res, y, y_l; if (baseline == null) { baseline = this._getIndentationBaseline(coffee); @@ -555,13 +556,13 @@ strip = indent_baseline; indent = spaces(indent_level); res = ((function() { - var _i, _len, _results; - _results = []; - for (_i = 0, _len = lines.length; _i < _len; _i++) { - line = lines[_i]; - _results.push("" + indent + line.slice(strip)); + var j, len, results; + results = []; + for (j = 0, len = lines.length; j < len; j++) { + line = lines[j]; + results.push("" + indent + line.slice(strip)); } - return _results; + return results; })()).join("\n"); return res; }; @@ -582,7 +583,7 @@ var __, ___; __ = this._globalTabs(); ___ = tabs(1); - return "" + (this.browserMode ? '' : '_TMPL_ = (__toffee_run_input) ->' + (getCommonHeaders(1, false, this.autoEscape))) + "\n" + __ + "# browser mode = " + this.browserMode + "\n" + __ + "tmpl = toffee.templates[\"" + this.bundlePath + "\"] =\n" + __ + " bundlePath: \"" + this.bundlePath + "\"\n" + __ + "tmpl.render = tmpl.pub = (__locals) ->\n" + __ + ___ + "__locals = __locals or {}\n" + __ + ___ + "__repress = __locals.__toffee?.repress\n" + __ + ___ + "_to = (x) -> __locals.__toffee.out.push x\n" + __ + ___ + "_ln = (x) -> __locals.__toffee.lineno = x\n" + __ + ___ + "_ts = (x) -> __locals.__toffee.state = x\n" + __ + ___ + "toffee.__augmentLocals __locals, \"" + this.bundlePath + "\"\n\n" + __ + ___ + "`with (__locals) {`\n" + __ + ___ + "__toffee.out = []"; + return (this.browserMode ? '' : '_TMPL_ = (__toffee_run_input) ->' + (getCommonHeaders(1, false, this.autoEscape))) + "\n" + __ + "# browser mode = " + this.browserMode + "\n" + __ + "tmpl = toffee.templates[\"" + this.bundlePath + "\"] =\n" + __ + " bundlePath: \"" + this.bundlePath + "\"\n" + __ + "tmpl.render = tmpl.pub = (__locals) ->\n" + __ + ___ + "__locals = __locals or {}\n" + __ + ___ + "__repress = __locals.__toffee?.repress\n" + __ + ___ + "_to = (x) -> __locals.__toffee.out.push x\n" + __ + ___ + "_ln = (x) -> __locals.__toffee.lineno = x\n" + __ + ___ + "_ts = (x) -> __locals.__toffee.state = x\n" + __ + ___ + "toffee.__augmentLocals __locals, \"" + this.bundlePath + "\"\n\n" + __ + ___ + "`with (__locals) {`\n" + __ + ___ + "__toffee.out = []"; }; view.prototype._coffeeFooters = function() { diff --git a/package.json b/package.json index 4289061..c919c2b 100644 --- a/package.json +++ b/package.json @@ -1,36 +1,36 @@ { - "name": "toffee", - "description": "A NodeJs, Express 3.x, Express 2.x, and browser-side templating language based on CoffeeScript with slicker tokens and syntax.", - "version": "0.1.12", - "directories": { - "lib": "./lib" - }, - "main": "index.js", - "author": "Chris Coyne ", - "bin": "./bin/toffee", - "dependencies": { - "coffee-script": "*", - "commander": "*", - "uglify-js": "*", - "mkdirp": "*", - "highlight.js": "*" - }, - "devDependencies": { - "jison" : "*", - "zombie": "*", - "assert": "*", - "express": "*", - "tablify": "*", - "iced-coffee-script": "*" - }, - "repository": { - "type": "git", - "url": "http://github.com/malgorithms/toffee" - }, - "licenses": [ - { - "type": "MIT", - "url": "http://github.com/malgorithms/toffee/raw/master/LICENSE" - } - ] -} \ No newline at end of file + "name": "toffee", + "description": "A NodeJs and browser-side templating language based on CoffeeScript with slicker tokens and syntax.", + "version": "0.1.13", + "directories": { + "lib": "./lib" + }, + "main": "index.js", + "author": "Chris Coyne ", + "bin": "./bin/toffee", + "dependencies": { + "coffee-script": "*", + "commander": "*", + "uglify-js": "*", + "mkdirp": "*", + "highlight.js": "*" + }, + "devDependencies": { + "assert": "*", + "express": "^3.21.2", + "iced-coffee-script": "*", + "jison": "*", + "tablify": "*", + "zombie": "*" + }, + "repository": { + "type": "git", + "url": "http://github.com/malgorithms/toffee" + }, + "licenses": [ + { + "type": "MIT", + "url": "http://github.com/malgorithms/toffee/raw/master/LICENSE" + } + ] +} diff --git a/src/view.coffee b/src/view.coffee index 0b9c92c..826b914 100644 --- a/src/view.coffee +++ b/src/view.coffee @@ -41,7 +41,7 @@ getCommonHeaders = (tab_level, include_bundle_headers, auto_escape) -> #{__}toffee.__json = (locals, o) -> #{__} if not o? then return "null" -#{__} else return "" + JSON.stringify(o).replace(//g,'\\\\u003E').replace(/&/g,'\\\\u0026') +#{__} else return "" + JSON.stringify(o).replace(//g,'\\\\u003E').replace(/&/g,'\\\\u0026').replace(/\\u2028/g, '\\\\u2028').replace(/\\u2029/g, '\\\\u2029') #{__}toffee.__raw = (locals, o) -> o @@ -233,7 +233,7 @@ class view run: (options, ctx) -> ### returns [err, str] - ### + ### ctx = ctx or vm.createContext({}) fun = @_toFun(ctx) res = null diff --git a/test/cases/escape/input.toffee b/test/cases/escape/input.toffee index 9d77017..87a018f 100644 --- a/test/cases/escape/input.toffee +++ b/test/cases/escape/input.toffee @@ -3,6 +3,7 @@ y = '
    ' z = 'click&clack' w = [1, 2, {"place": "The Dreadfort"}] + v = ["\u2028", "\u2029"] #}

    default x = #{x} default y = #{y} @@ -10,6 +11,7 @@ default w = #{w} default r = #{r} default w.foo = #{w.foo} + default v = #{v}

    raw x = #{raw x} @@ -22,6 +24,7 @@ y = #{json y} z = #{json z} w = #{json w} + v = #{json v}

    {# @@ -36,7 +39,8 @@ print " json printed x = #{ raw raw raw raw json x }\n" print " json printed y = #{ raw raw raw raw json y }\n" print " json printed z = #{ raw raw raw raw json z }\n" - print " json printed w = #{ raw raw raw raw json w }" + print " json printed w = #{ raw raw raw raw json w }\n" + print " json printed v = #{ raw raw raw raw json v }" #}

    @@ -46,4 +50,4 @@ print " html printed longhand z = #{ __toffee.html z }\n" print " html printed longhand w = #{ __toffee.html w }" #} -

    \ No newline at end of file +

    diff --git a/test/cases/escape/output.toffee b/test/cases/escape/output.toffee index 6fdefe5..0be58e9 100644 --- a/test/cases/escape/output.toffee +++ b/test/cases/escape/output.toffee @@ -5,6 +5,7 @@ default w = [1,2,{"place":"The Dreadfort"}] default r = default w.foo = + default v = ["\u2028","\u2029"]

    raw x = "Hello world" @@ -17,6 +18,7 @@ y = "\u003Chr /\u003E" z = "click\u0026clack" w = [1,2,{"place":"The Dreadfort"}] + v = ["\u2028","\u2029"]

    raw printed x = "Hello world" @@ -29,10 +31,11 @@ json printed y = "\u003Chr /\u003E" json printed z = "click\u0026clack" json printed w = [1,2,{"place":"The Dreadfort"}] + json printed v = ["\u2028","\u2029"]

    html printed longhand x = "Hello world" html printed longhand y = <hr /> html printed longhand z = click&clack html printed longhand w = 1,2,[object Object] -

    \ No newline at end of file +

    diff --git a/test/express3/public/javascripts/test_cases.js b/test/express3/public/javascripts/test_cases.js index 09387c0..62ef2c9 100644 --- a/test/express3/public/javascripts/test_cases.js +++ b/test/express3/public/javascripts/test_cases.js @@ -1,107 +1,107 @@ ; -(function(){var tmpl;return tmpl=toffee.templates["/big_file/input.toffee"]={bundlePath:"/big_file/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var count,i,__repress,_i,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(t){return __locals.__toffee.out.push(t)},_ln=function(t){return __locals.__toffee.lineno=t},_ts=function(t){return __locals.__toffee.state=t},toffee.__augmentLocals(__locals,"/big_file/input.toffee"),__locals){for(__toffee.out=[],_ts(1),_ts(2),count=0,i=_i=0;2>_i;i=++_i)_ts(1),_ts(1),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("..."),_ts(2),_ts(2),count+=1,print(" "+count+"..."),_ts(1),_to(" "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("..."),_ts(2),_ts(2),count+=1,print(" "+count+"...");return __toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res}},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/big_file/input.toffee"]={bundlePath:"/big_file/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var count,i,__repress,_i,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(t){return __locals.__toffee.out.push(t)},_ln=function(t){return __locals.__toffee.lineno=t},_ts=function(t){return __locals.__toffee.state=t},toffee.__augmentLocals(__locals,"/big_file/input.toffee"),__locals){for(__toffee.out=[],_ts(1),_ts(2),count=0,i=_i=0;_i<2;i=++_i){_ts(1),_ts(1),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("..."),_ts(2),_ts(2),count+=1,print(" "+count+"..."),_ts(1),_to(" "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... ");_to(""+escape(count++));_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("..."),_ts(2),_ts(2),count+=1,print(" "+count+"...")}return __toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res}},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); ; -(function(){var tmpl;return tmpl=toffee.templates["/big_file/output.toffee"]={bundlePath:"/big_file/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/big_file/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("0... 1... 2... 3... 4... 5... 6... 7... 8... 9... 10... 11... 12... 13... 14... 15... 16... 17... 18... 19... 20... 21... 22... 23... 24... 25... 26... 27... 28... 29... 30... 31... 32... 33... 34... 35... 36... 37... 38... 39... 40... 41... 42... 43... 44... 45... 46... 47... 48... 49... 50... 51... 52... 53... 54... 55... 56... 57... 58... 59... 60... 61... 62... 63... 64... 65... 66... 67... 68... 70... 70... 71... 72... 73... 74... 75... 76... 77... 78... 79... 80... 81... 82... 83... 84... 85... 86... 87... 88... 89... 90... 91... 92... 93... 94... 95... 96... 97... 98... 99... 100... 101... 102... 103... 104... 105... 106... 107... 108... 109... 110... 111... 112... 113... 114... 115... 116... 117... 118... 119... 120... 121... 122... 123... 124... 125... 126... 127... 128... 129... 130... 131... 132... 133... 134... 135... 136... 137... 138... 139... 140... 141... 142... 143... 144... 145... 146... 147... 148... 149... 150... 151... 152... 153... 154... 155... 156... 157... 158... 159... 160... 162...162... 163... 164... 165... 166... 167... 168... 169... 170... 171... 172... 173... 174... 175... 176... 177... 178... 179... 180... 181... 182... 183... 184... 185... 186... 187... 188... 189... 190... 191... 192... 193... 194... 195... 196... 197... 198... 199... 200... 201... 202... 203... 204... 205... 206... 207... 208... 209... 210... 211... 212... 213... 214... 215... 216... 217... 218... 219... 220... 221... 222... 223... 224... 225... 226... 227... 228... 229... 230... 232... 232... 233... 234... 235... 236... 237... 238... 239... 240... 241... 242... 243... 244... 245... 246... 247... 248... 249... 250... 251... 252... 253... 254... 255... 256... 257... 258... 259... 260... 261... 262... 263... 264... 265... 266... 267... 268... 269... 270... 271... 272... 273... 274... 275... 276... 277... 278... 279... 280... 281... 282... 283... 284... 285... 286... 287... 288... 289... 290... 291... 292... 293... 294... 295... 296... 297... 298... 299... 300... 301... 302... 303... 304... 305... 306... 307... 308... 309... 310... 311... 312... 313... 314... 315... 316... 317... 318... 319... 320... 321... 322... 324..."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/big_file/output.toffee"]={bundlePath:"/big_file/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/big_file/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("0... 1... 2... 3... 4... 5... 6... 7... 8... 9... 10... 11... 12... 13... 14... 15... 16... 17... 18... 19... 20... 21... 22... 23... 24... 25... 26... 27... 28... 29... 30... 31... 32... 33... 34... 35... 36... 37... 38... 39... 40... 41... 42... 43... 44... 45... 46... 47... 48... 49... 50... 51... 52... 53... 54... 55... 56... 57... 58... 59... 60... 61... 62... 63... 64... 65... 66... 67... 68... 70... 70... 71... 72... 73... 74... 75... 76... 77... 78... 79... 80... 81... 82... 83... 84... 85... 86... 87... 88... 89... 90... 91... 92... 93... 94... 95... 96... 97... 98... 99... 100... 101... 102... 103... 104... 105... 106... 107... 108... 109... 110... 111... 112... 113... 114... 115... 116... 117... 118... 119... 120... 121... 122... 123... 124... 125... 126... 127... 128... 129... 130... 131... 132... 133... 134... 135... 136... 137... 138... 139... 140... 141... 142... 143... 144... 145... 146... 147... 148... 149... 150... 151... 152... 153... 154... 155... 156... 157... 158... 159... 160... 162...162... 163... 164... 165... 166... 167... 168... 169... 170... 171... 172... 173... 174... 175... 176... 177... 178... 179... 180... 181... 182... 183... 184... 185... 186... 187... 188... 189... 190... 191... 192... 193... 194... 195... 196... 197... 198... 199... 200... 201... 202... 203... 204... 205... 206... 207... 208... 209... 210... 211... 212... 213... 214... 215... 216... 217... 218... 219... 220... 221... 222... 223... 224... 225... 226... 227... 228... 229... 230... 232... 232... 233... 234... 235... 236... 237... 238... 239... 240... 241... 242... 243... 244... 245... 246... 247... 248... 249... 250... 251... 252... 253... 254... 255... 256... 257... 258... 259... 260... 261... 262... 263... 264... 265... 266... 267... 268... 269... 270... 271... 272... 273... 274... 275... 276... 277... 278... 279... 280... 281... 282... 283... 284... 285... 286... 287... 288... 289... 290... 291... 292... 293... 294... 295... 296... 297... 298... 299... 300... 301... 302... 303... 304... 305... 306... 307... 308... 309... 310... 311... 312... 313... 314... 315... 316... 317... 318... 319... 320... 321... 322... 324..."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); ; -(function(){var tmpl;return tmpl=toffee.templates["/comments/input.toffee"]={bundlePath:"/comments/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(_){return __locals.__toffee.out.push(_)},_ln=function(_){return __locals.__toffee.lineno=_},_ts=function(_){return __locals.__toffee.state=_},toffee.__augmentLocals(__locals,"/comments/input.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("\n"),_to("Pass 1\n"),_ts(2),_ts(1),_to("\n"),_to("Pass 2\n"),_ts(2),_ts(2),_ts(1),_to("\n"),_to("Pass 3"),_ts(2),_ts(1),_to("\n"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/comments/input.toffee"]={bundlePath:"/comments/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(_){return __locals.__toffee.out.push(_)},_ln=function(_){return __locals.__toffee.lineno=_},_ts=function(_){return __locals.__toffee.state=_},toffee.__augmentLocals(__locals,"/comments/input.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("\n"),_to("Pass 1\n"),_ts(2),_ts(1),_to("\n"),_to("Pass 2\n"),_ts(2),_ts(2),_ts(1),_to("\n"),_to("Pass 3"),_ts(2),_ts(1),_to("\n"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); ; -(function(){var tmpl;return tmpl=toffee.templates["/comments/output.toffee"]={bundlePath:"/comments/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/comments/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("\n"),_to("Pass 1\n"),_to("\n"),_to("Pass 2\n"),_to("\n"),_to("Pass 3\n"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/comments/output.toffee"]={bundlePath:"/comments/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/comments/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("\n"),_to("Pass 1\n"),_to("\n"),_to("Pass 2\n"),_to("\n"),_to("Pass 3\n"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); ; -(function(){var tmpl;return tmpl=toffee.templates["/custom_escape/input.toffee"]={bundlePath:"/custom_escape/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var w,x,y,z,__repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/custom_escape/input.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(2),x='"Hello world"',y="",z="click&clack",w=[1,2,{place:"The Dreadfort"}],_ts(1),_to("

    \n"),_to(" custom x = "),_to(""+(null!=x?escape(x):"")),_to("\n"),_to(" custom y = "),_to(""+(null!=y?escape(y):"")),_to("\n"),_to(" custom z = "),_to(""+(null!=z?escape(z):"")),_to("\n"),_to(" custom w = "),_to(""+(null!=w?escape(w):"")),_to("\n"),_to("

    "),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/custom_escape/input.toffee"]={bundlePath:"/custom_escape/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var w,x,y,z,__repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/custom_escape/input.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(2),x='"Hello world"',y="",z="click&clack",w=[1,2,{place:"The Dreadfort"}],_ts(1),_to("

    \n"),_to(" custom x = "),_to(""+(null!=x?escape(x):"")),_to("\n"),_to(" custom y = "),_to(""+(null!=y?escape(y):"")),_to("\n"),_to(" custom z = "),_to(""+(null!=z?escape(z):"")),_to("\n"),_to(" custom w = "),_to(""+(null!=w?escape(w):"")),_to("\n"),_to("

    "),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); ; -(function(){var tmpl;return tmpl=toffee.templates["/custom_escape/output.toffee"]={bundlePath:"/custom_escape/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(t){return __locals.__toffee.out.push(t)},_ln=function(t){return __locals.__toffee.lineno=t},_ts=function(t){return __locals.__toffee.state=t},toffee.__augmentLocals(__locals,"/custom_escape/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("

    \n"),_to(" custom x = Helloworldscriptvarx100script\n"),_to(" custom y = td\n"),_to(" custom z = clickclack\n"),_to(" custom w = 12objectObject\n"),_to("

    "),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/custom_escape/output.toffee"]={bundlePath:"/custom_escape/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(t){return __locals.__toffee.out.push(t)},_ln=function(t){return __locals.__toffee.lineno=t},_ts=function(t){return __locals.__toffee.state=t},toffee.__augmentLocals(__locals,"/custom_escape/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("

    \n"),_to(" custom x = Helloworldscriptvarx100script\n"),_to(" custom y = td\n"),_to(" custom z = clickclack\n"),_to(" custom w = 12objectObject\n"),_to("

    "),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); ; -(function(){var tmpl;return tmpl=toffee.templates["/eco_compare/input.toffee"]={bundlePath:"/eco_compare/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var f,friends,project,__repress,_i,_len,_ln,_ref,_ref1,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/eco_compare/input.toffee"),__locals){if(__toffee.out=[],_ts(1),_ts(2),this.projects=[{url:"http://localhost:3000",name:"okcupid",description:"A site for singles"},{url:"http://localhost:3001",name:"tallygram",description:"A site for anyone"}],this.projects.length)for(_ref1=this.projects,_i=0,_len=_ref1.length;_len>_i;_i++)project=_ref1[_i],_ts(1),_ts(1),_to("\n"),_to(' '),_to(""+escape(project.name)),_to("\n"),_to("

    "),_to(""+escape(project.description)),_to("

    \n"),_to(" "),_ts(2);else _ts(1),_ts(1),_to(" No projects "),_ts(2);return friends=[{gender:"f",name:"Jennie"},{gender:"f",name:"Rachel"},{gender:"m",name:"Petar"},{gender:"f",name:"Marissa"}],_ts(1),_to("\n"),_to("\n"),_to("You have "),_to(""+escape(function(){var e,t,_;for(_=[],e=0,t=friends.length;t>e;e++)f=friends[e],"f"===f.gender&&_.push(f);return _}().length)),_to(" female friends."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res}},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/eco_compare/input.toffee"]={bundlePath:"/eco_compare/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var f,friends,project,__repress,_i,_len,_ln,_ref,_ref1,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/eco_compare/input.toffee"),__locals){if(__toffee.out=[],_ts(1),_ts(2),this.projects=[{url:"http://localhost:3000",name:"okcupid",description:"A site for singles"},{url:"http://localhost:3001",name:"tallygram",description:"A site for anyone"}],this.projects.length)for(_ref1=this.projects,_i=0,_len=_ref1.length;_i<_len;_i++)project=_ref1[_i],_ts(1),_ts(1),_to("\n"),_to(" "),_to(""+escape(project.name)),_to("\n"),_to("

    "),_to(""+escape(project.description)),_to("

    \n"),_to(" "),_ts(2);else _ts(1),_ts(1),_to(" No projects "),_ts(2);return friends=[{gender:"f",name:"Jennie"},{gender:"f",name:"Rachel"},{gender:"m",name:"Petar"},{gender:"f",name:"Marissa"}],_ts(1),_to("\n"),_to("\n"),_to("You have "),_to(""+escape(function(){var e,t,_;for(_=[],e=0,t=friends.length;eokcupid\n'),_to("

    A site for singles

    \n"),_to(" \n"),_to(' tallygram\n'),_to("

    A site for anyone

    \n"),_to(" \n"),_to("\n"),_to("You have 3 female friends."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/eco_compare/output.toffee"]={bundlePath:"/eco_compare/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/eco_compare/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("\n"),_to(' okcupid\n'),_to("

    A site for singles

    \n"),_to(" \n"),_to(' tallygram\n'),_to("

    A site for anyone

    \n"),_to(" \n"),_to("\n"),_to("You have 3 female friends."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); ; -(function(){var tmpl;return tmpl=toffee.templates["/escape/input.toffee"]={bundlePath:"/escape/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var w,x,y,z,__repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(t){return __locals.__toffee.out.push(t)},_ln=function(t){return __locals.__toffee.lineno=t},_ts=function(t){return __locals.__toffee.state=t},toffee.__augmentLocals(__locals,"/escape/input.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(2),x='"Hello world"',y="
    ",z="click&clack",w=[1,2,{place:"The Dreadfort"}],_ts(1),_to("

    \n"),_to(" default x = "),_to(""+(null!=x?escape(x):"")),_to("\n"),_to(" default y = "),_to(""+(null!=y?escape(y):"")),_to("\n"),_to(" default z = "),_to(""+(null!=z?escape(z):"")),_to("\n"),_to(" default w = "),_to(""+(null!=w?escape(w):"")),_to("\n"),_to(" default r = "),_to(""+("undefined"!=typeof r&&null!==r?escape(r):"")),_to("\n"),_to(" default w.foo = "),_to(""+escape(w.foo)),_to("\n"),_to("

    \n"),_to("

    \n"),_to(" raw x = "),_to(""+raw(x)),_to("\n"),_to(" raw y = "),_to(""+raw(y)),_to("\n"),_to(" raw z = "),_to(""+raw(z)),_to("\n"),_to(" raw w = "),_to(""+raw(w)),_to("\n"),_to("

    \n"),_to("\n"),_to("

    \n"),_ts(2),_ts(2),print(" raw printed x = "+x+"\n"),print(" raw printed y = "+y+"\n"),print(" raw printed z = "+z+"\n"),print(" raw printed w = "+w),_ts(1),_to("\n"),_to("

    \n"),_to("

    \n"),_ts(2),_ts(2),print(" json printed x = "+raw(raw(raw(raw(json(x)))))+"\n"),print(" json printed y = "+raw(raw(raw(raw(json(y)))))+"\n"),print(" json printed z = "+raw(raw(raw(raw(json(z)))))+"\n"),print(" json printed w = "+raw(raw(raw(raw(json(w)))))),_ts(1),_to("\n"),_to("

    \n"),_to("

    \n"),_ts(2),_ts(2),print(" html printed longhand x = "+__toffee.html(x)+"\n"),print(" html printed longhand y = "+__toffee.html(y)+"\n"),print(" html printed longhand z = "+__toffee.html(z)+"\n"),print(" html printed longhand w = "+__toffee.html(w)),_ts(1),_to("\n"),_to("

    "),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/escape/input.toffee"]={bundlePath:"/escape/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var v,w,x,y,z,__repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(t){return __locals.__toffee.out.push(t)},_ln=function(t){return __locals.__toffee.lineno=t},_ts=function(t){return __locals.__toffee.state=t},toffee.__augmentLocals(__locals,"/escape/input.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(2),x='"Hello world"',y="
    ",z="click&clack",w=[1,2,{place:"The Dreadfort"}],v=["\u2028","\u2029"],_ts(1),_to("

    \n"),_to(" default x = "),_to(""+(null!=x?escape(x):"")),_to("\n"),_to(" default y = "),_to(""+(null!=y?escape(y):"")),_to("\n"),_to(" default z = "),_to(""+(null!=z?escape(z):"")),_to("\n"),_to(" default w = "),_to(""+(null!=w?escape(w):"")),_to("\n"),_to(" default r = "),_to(""+("undefined"!=typeof r&&null!==r?escape(r):"")),_to("\n"),_to(" default w.foo = "),_to(""+escape(w.foo)),_to("\n"),_to(" default v = "),_to(""+(null!=v?escape(v):"")),_to("\n"),_to("

    \n"),_to("

    \n"),_to(" raw x = "),_to(""+raw(x)),_to("\n"),_to(" raw y = "),_to(""+raw(y)),_to("\n"),_to(" raw z = "),_to(""+raw(z)),_to("\n"),_to(" raw w = "),_to(""+raw(w)),_to("\n"),_to("

    \n"),_to("\n"),_to("

    \n"),_ts(2),_ts(2),print(" raw printed x = "+x+"\n"),print(" raw printed y = "+y+"\n"),print(" raw printed z = "+z+"\n"),print(" raw printed w = "+w),_ts(1),_to("\n"),_to("

    \n"),_to("

    \n"),_ts(2),_ts(2),print(" json printed x = "+raw(raw(raw(raw(json(x)))))+"\n"),print(" json printed y = "+raw(raw(raw(raw(json(y)))))+"\n"),print(" json printed z = "+raw(raw(raw(raw(json(z)))))+"\n"),print(" json printed w = "+raw(raw(raw(raw(json(w)))))+"\n"),print(" json printed v = "+raw(raw(raw(raw(json(v)))))),_ts(1),_to("\n"),_to("

    \n"),_to("

    \n"),_ts(2),_ts(2),print(" html printed longhand x = "+__toffee.html(x)+"\n"),print(" html printed longhand y = "+__toffee.html(y)+"\n"),print(" html printed longhand z = "+__toffee.html(z)+"\n"),print(" html printed longhand w = "+__toffee.html(w)),_ts(1),_to("\n"),_to("

    \n"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); ; -(function(){var tmpl;return tmpl=toffee.templates["/escape/output.toffee"]={bundlePath:"/escape/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(t){return __locals.__toffee.out.push(t)},_ln=function(t){return __locals.__toffee.lineno=t},_ts=function(t){return __locals.__toffee.state=t},toffee.__augmentLocals(__locals,"/escape/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("

    \n"),_to(" default x = "Hello world"\n"),_to(" default y = <hr />\n"),_to(" default z = click&clack\n"),_to(' default w = [1,2,{"place":"The Dreadfort"}]\n'),_to(" default r = \n"),_to(" default w.foo = \n"),_to("

    \n"),_to("

    \n"),_to(' raw x = "Hello world"\n'),_to(" raw y =


    \n"),_to(" raw z = click&clack\n"),_to(" raw w = 1,2,[object Object]\n"),_to("

    \n"),_to("\n"),_to("

    \n"),_to(' raw printed x = "Hello world"\n'),_to(" raw printed y =


    \n"),_to(" raw printed z = click&clack\n"),_to(" raw printed w = 1,2,[object Object]\n"),_to("

    \n"),_to("

    \n"),_to(' json printed x = "\\"Hello world\\""\n'),_to(' json printed y = "\\u003Chr /\\u003E"\n'),_to(' json printed z = "click\\u0026clack"\n'),_to(' json printed w = [1,2,{"place":"The Dreadfort"}]\n'),_to("

    \n"),_to("

    \n"),_to(" html printed longhand x = "Hello world"\n"),_to(" html printed longhand y = <hr />\n"),_to(" html printed longhand z = click&clack\n"),_to(" html printed longhand w = 1,2,[object Object]\n"),_to("

    "),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/escape/output.toffee"]={bundlePath:"/escape/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(t){return __locals.__toffee.out.push(t)},_ln=function(t){return __locals.__toffee.lineno=t},_ts=function(t){return __locals.__toffee.state=t},toffee.__augmentLocals(__locals,"/escape/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("

    \n"),_to(" default x = "Hello world"\n"),_to(" default y = <hr />\n"),_to(" default z = click&clack\n"),_to(' default w = [1,2,{"place":"The Dreadfort"}]\n'),_to(" default r = \n"),_to(" default w.foo = \n"),_to(' default v = ["\\u2028","\\u2029"]\n'),_to("

    \n"),_to("

    \n"),_to(' raw x = "Hello world"\n'),_to(" raw y =


    \n"),_to(" raw z = click&clack\n"),_to(" raw w = 1,2,[object Object]\n"),_to("

    \n"),_to("\n"),_to("

    \n"),_to(' raw printed x = "Hello world"\n'),_to(" raw printed y =


    \n"),_to(" raw printed z = click&clack\n"),_to(" raw printed w = 1,2,[object Object]\n"),_to("

    \n"),_to("

    \n"),_to(' json printed x = "\\"Hello world\\""\n'),_to(' json printed y = "\\u003Chr /\\u003E"\n'),_to(' json printed z = "click\\u0026clack"\n'),_to(' json printed w = [1,2,{"place":"The Dreadfort"}]\n'),_to(' json printed v = ["\\u2028","\\u2029"]\n'),_to("

    \n"),_to("

    \n"),_to(" html printed longhand x = "Hello world"\n"),_to(" html printed longhand y = <hr />\n"),_to(" html printed longhand z = click&clack\n"),_to(" html printed longhand w = 1,2,[object Object]\n"),_to("

    \n"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); ; -(function(){var tmpl;return tmpl=toffee.templates["/hello_world/input.toffee"]={bundlePath:"/hello_world/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/hello_world/input.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to(""+("undefined"!=typeof greeting&&null!==greeting?escape(greeting):"")),_to(", world."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/hello_world/input.toffee"]={bundlePath:"/hello_world/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/hello_world/input.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to(""+("undefined"!=typeof greeting&&null!==greeting?escape(greeting):"")),_to(", world."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); ; -(function(){var tmpl;return tmpl=toffee.templates["/hello_world/output.toffee"]={bundlePath:"/hello_world/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/hello_world/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("Hello, world."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/hello_world/output.toffee"]={bundlePath:"/hello_world/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/hello_world/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("Hello, world."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); ; -(function(){var tmpl;return tmpl=toffee.templates["/hello_world/temp.toffee"]={bundlePath:"/hello_world/temp.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/hello_world/temp.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("a\n"),_to("b\n"),_to("c\n"),_to(""+escape(passed_fn(100))),_to("\n"),_to("d\n"),_to("e\n"),_to("f"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/hello_world/temp.toffee"]={bundlePath:"/hello_world/temp.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/hello_world/temp.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("a\n"),_to("b\n"),_to("c\n"),_to(""+escape(passed_fn(100))),_to("\n"),_to("d\n"),_to("e\n"),_to("f"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); ; -(function(){var tmpl;return tmpl=toffee.templates["/include_order/child.toffee"]={bundlePath:"/include_order/child.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(_){return __locals.__toffee.out.push(_)},_ln=function(_){return __locals.__toffee.lineno=_},_ts=function(_){return __locals.__toffee.state=_},toffee.__augmentLocals(__locals,"/include_order/child.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("a\n"),_ts(2),_ts(2),say_hi(),_ts(1),_to("\n"),_to("b"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/include_order/child.toffee"]={bundlePath:"/include_order/child.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(_){return __locals.__toffee.out.push(_)},_ln=function(_){return __locals.__toffee.lineno=_},_ts=function(_){return __locals.__toffee.state=_},toffee.__augmentLocals(__locals,"/include_order/child.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("a\n"),_ts(2),_ts(2),say_hi(),_ts(1),_to("\n"),_to("b"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); ; -(function(){var tmpl;return tmpl=toffee.templates["/include_order/input.toffee"]={bundlePath:"/include_order/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var say_hi,__repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(_){return __locals.__toffee.out.push(_)},_ln=function(_){return __locals.__toffee.lineno=_},_ts=function(_){return __locals.__toffee.state=_},toffee.__augmentLocals(__locals,"/include_order/input.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(2),say_hi=function(){return _ts(1),_ts(1),_to("hi"),_ts(2)},_ts(1),_to("1\n"),_to("2\n"),_to(""+partial("child.toffee",{say_hi:say_hi})),_to("\n"),_to("3\n"),_to("4"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/include_order/input.toffee"]={bundlePath:"/include_order/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var say_hi,__repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(_){return __locals.__toffee.out.push(_)},_ln=function(_){return __locals.__toffee.lineno=_},_ts=function(_){return __locals.__toffee.state=_},toffee.__augmentLocals(__locals,"/include_order/input.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(2),say_hi=function(){return _ts(1),_ts(1),_to("hi"),_ts(2)},_ts(1),_to("1\n"),_to("2\n"),_to(""+partial("child.toffee",{say_hi:say_hi})),_to("\n"),_to("3\n"),_to("4"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); ; -(function(){var tmpl;return tmpl=toffee.templates["/include_order/output.toffee"]={bundlePath:"/include_order/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(_){return __locals.__toffee.out.push(_)},_ln=function(_){return __locals.__toffee.lineno=_},_ts=function(_){return __locals.__toffee.state=_},toffee.__augmentLocals(__locals,"/include_order/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("1\n"),_to("2\n"),_to("hia\n"),_to("\n"),_to("b\n"),_to("3\n"),_to("4"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/include_order/output.toffee"]={bundlePath:"/include_order/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(_){return __locals.__toffee.out.push(_)},_ln=function(_){return __locals.__toffee.lineno=_},_ts=function(_){return __locals.__toffee.state=_},toffee.__augmentLocals(__locals,"/include_order/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("1\n"),_to("2\n"),_to("hia\n"),_to("\n"),_to("b\n"),_to("3\n"),_to("4"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); ; -(function(){var tmpl;return tmpl=toffee.templates["/include_recursion/input.toffee"]={bundlePath:"/include_recursion/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/include_recursion/input.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(2),0===countdown?(_ts(1),_ts(1),_to("blastoff!"),_ts(2)):print(""+countdown+"..."+partial("input.toffee",{countdown:countdown-1})),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/include_recursion/input.toffee"]={bundlePath:"/include_recursion/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/include_recursion/input.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(2),0===countdown?(_ts(1),_ts(1),_to("blastoff!"),_ts(2)):print(""+countdown+"..."+partial("input.toffee",{countdown:countdown-1})),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); ; -(function(){var tmpl;return tmpl=toffee.templates["/include_recursion/output.toffee"]={bundlePath:"/include_recursion/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/include_recursion/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("10...9...8...7...6...5...4...3...2...1...blastoff!"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/include_recursion/output.toffee"]={bundlePath:"/include_recursion/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/include_recursion/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("10...9...8...7...6...5...4...3...2...1...blastoff!"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); ; -(function(){var tmpl;return tmpl=toffee.templates["/include_techniques/input.toffee"]={bundlePath:"/include_techniques/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/include_techniques/input.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to(""+partial("message.toffee",{from:"Chris "})),_to("\n"),_to(""+partial("message.toffee",{from:"Max & Sam"})),_to("\n"),_ts(2),_ts(2),print(partial("message.toffee",{from:"Christian"})),_ts(1),_ts(1),_to(""+partial("message.toffee",{from:"Jennie"})),_ts(2),print(partial("message.toffee",{sender:"The enemy"})),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/include_techniques/input.toffee"]={bundlePath:"/include_techniques/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/include_techniques/input.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to(""+partial("message.toffee",{from:"Chris "})),_to("\n"),_to(""+partial("message.toffee",{from:"Max & Sam"})),_to("\n"),_ts(2),_ts(2),print(partial("message.toffee",{from:"Christian"})),_ts(1),_ts(1),_to(""+partial("message.toffee",{from:"Jennie"})),_ts(2),print(partial("message.toffee",{sender:"The enemy"})),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); ; -(function(){var tmpl;return tmpl=toffee.templates["/include_techniques/message.toffee"]={bundlePath:"/include_techniques/message.toffee"},tmpl.render=tmpl.pub=function(__locals){var from,__repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/include_techniques/message.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(2),from=from||"Unknown",_ts(1),_to("From: "),_to(""+(null!=from?escape(from):"")),_to(" \n"),_to("Msg: Hello, world\n"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/include_techniques/message.toffee"]={bundlePath:"/include_techniques/message.toffee"},tmpl.render=tmpl.pub=function(__locals){var from,__repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/include_techniques/message.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(2),from=from||"Unknown",_ts(1),_to("From: "),_to(""+(null!=from?escape(from):"")),_to(" \n"),_to("Msg: Hello, world\n"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); ; -(function(){var tmpl;return tmpl=toffee.templates["/include_techniques/output.toffee"]={bundlePath:"/include_techniques/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/include_techniques/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("From: Chris <ccoyne77@gmail> \n"),_to("Msg: Hello, world\n"),_to("\n"),_to("From: Max & Sam \n"),_to("Msg: Hello, world\n"),_to("\n"),_to("From: Christian \n"),_to("Msg: Hello, world\n"),_to("From: Jennie \n"),_to("Msg: Hello, world\n"),_to("From: Unknown \n"),_to("Msg: Hello, world\n"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/include_techniques/output.toffee"]={bundlePath:"/include_techniques/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/include_techniques/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("From: Chris <ccoyne77@gmail> \n"),_to("Msg: Hello, world\n"),_to("\n"),_to("From: Max & Sam \n"),_to("Msg: Hello, world\n"),_to("\n"),_to("From: Christian \n"),_to("Msg: Hello, world\n"),_to("From: Jennie \n"),_to("Msg: Hello, world\n"),_to("From: Unknown \n"),_to("Msg: Hello, world\n"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); ; -(function(){var tmpl;return tmpl=toffee.templates["/indent_attack/input.toffee"]={bundlePath:"/indent_attack/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var i,square,x,__repress,_i,_j,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(_){return __locals.__toffee.out.push(_)},_ln=function(_){return __locals.__toffee.lineno=_},_ts=function(_){return __locals.__toffee.state=_},toffee.__augmentLocals(__locals,"/indent_attack/input.toffee"),__locals){if(__toffee.out=[],_ts(1),_ts(1),_to("
    \n"),_to(" "),_ts(2),_ts(2),_ts(1),_ts(1),_to("Pass1"),_ts(2),_ts(1),_ts(1),_to("Pass2"),_ts(2),_ts(1),_to("\n"),_to("
    \n"),_to("\n"),_ts(2),_ts(2),_ts(1),_ts(1),_to("Pass3"),_ts(2),_ts(1),_ts(1),_to("Pass4"),_ts(2),_ts(1),_to("\n"),_to("
    \n"),_to("\n"),_ts(2),_ts(2),_ts(1),_ts(1),_to("Pass5"),_ts(2),_ts(1),_ts(1),_to("Pass6"),_ts(2),_ts(1),_to("\n"),_to("\n"),_ts(2),_ts(2),print("Pass7"),_ts(1),_ts(1),_to("Pass8"),_ts(2),_ts(1),_to("\n"),_to("\n"),_ts(2),_ts(2),_ts(1),_ts(1),_to("...passed with flying colors."),_ts(2),_ts(1),_to("\n"),_to("

    \n"),_to(" "),_ts(2),_ts(2),x=20,x>1)for(i=_i=12;x>=12?x>_i:_i>x;i=x>=12?++_i:--_i)square=16,_ts(1),_ts(1),_to("Pass"),_to(""+(null!=i?escape(i):"")),_ts(2),_ts(2),i===square&&(_ts(1),_ts(1),_to("(a perfect square)"),_ts(2));if(_ts(1),_to("\n"),_to(" "),_ts(2),_ts(2),x=20,x>1){for(i=_j=12;x>=12?x>_j:_j>x;i=x>=12?++_j:--_j)square=16;_ts(1),_ts(1),_to("Pass"),_to(""+(null!=i?escape(i):"")),_ts(2),_ts(2),i===square&&(_ts(1),_ts(1),_to("(a perfect square)"),_ts(2))}return _ts(1),_to("\n"),_to("

    "),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res}},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/indent_attack/input.toffee"]={bundlePath:"/indent_attack/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var i,square,x,__repress,_i,_j,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(_){return __locals.__toffee.out.push(_)},_ln=function(_){return __locals.__toffee.lineno=_},_ts=function(_){return __locals.__toffee.state=_},toffee.__augmentLocals(__locals,"/indent_attack/input.toffee"),__locals){if(__toffee.out=[],_ts(1),_ts(1),_to("
    \n"),_to(" "),_ts(2),_ts(2),_ts(1),_ts(1),_to("Pass1"),_ts(2),_ts(1),_ts(1),_to("Pass2"),_ts(2),_ts(1),_to("\n"),_to("
    \n"),_to("\n"),_ts(2),_ts(2),_ts(1),_ts(1),_to("Pass3"),_ts(2),_ts(1),_ts(1),_to("Pass4"),_ts(2),_ts(1),_to("\n"),_to("
    \n"),_to("\n"),_ts(2),_ts(2),_ts(1),_ts(1),_to("Pass5"),_ts(2),_ts(1),_ts(1),_to("Pass6"),_ts(2),_ts(1),_to("\n"),_to("\n"),_ts(2),_ts(2),print("Pass7"),_ts(1),_ts(1),_to("Pass8"),_ts(2),_ts(1),_to("\n"),_to("\n"),_ts(2),_ts(2),_ts(1),_ts(1),_to("...passed with flying colors."),_ts(2),_ts(1),_to("\n"),_to("

    \n"),_to(" "),_ts(2),_ts(2),x=20,x>1)for(i=_i=12;12<=x?_ix;i=12<=x?++_i:--_i)square=16,_ts(1),_ts(1),_to("Pass"),_to(""+(null!=i?escape(i):"")),_ts(2),_ts(2),i===square&&(_ts(1),_ts(1),_to("(a perfect square)"),_ts(2));if(_ts(1),_to("\n"),_to(" "),_ts(2),_ts(2),x=20,x>1){for(i=_j=12;12<=x?_jx;i=12<=x?++_j:--_j)square=16;_ts(1),_ts(1),_to("Pass"),_to(""+(null!=i?escape(i):"")),_ts(2),_ts(2),i===square&&(_ts(1),_ts(1),_to("(a perfect square)"),_ts(2))}return _ts(1),_to("\n"),_to("

    "),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res}},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); ; -(function(){var tmpl;return tmpl=toffee.templates["/indent_attack/output.toffee"]={bundlePath:"/indent_attack/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(t){return __locals.__toffee.out.push(t)},_ln=function(t){return __locals.__toffee.lineno=t},_ts=function(t){return __locals.__toffee.state=t},toffee.__augmentLocals(__locals,"/indent_attack/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("
    \n"),_to(" Pass1Pass2\n"),_to("
    \n"),_to("\n"),_to("Pass3Pass4\n"),_to("
    \n"),_to("\n"),_to("Pass5Pass6\n"),_to("\n"),_to("Pass7Pass8\n"),_to("\n"),_to("...passed with flying colors.\n"),_to("

    \n"),_to(" Pass12Pass13Pass14Pass15Pass16(a perfect square)Pass17Pass18Pass19\n"),_to(" Pass20\n"),_to("

    "),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/indent_attack/output.toffee"]={bundlePath:"/indent_attack/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(t){return __locals.__toffee.out.push(t)},_ln=function(t){return __locals.__toffee.lineno=t},_ts=function(t){return __locals.__toffee.state=t},toffee.__augmentLocals(__locals,"/indent_attack/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("
    \n"),_to(" Pass1Pass2\n"),_to("
    \n"),_to("\n"),_to("Pass3Pass4\n"),_to("
    \n"),_to("\n"),_to("Pass5Pass6\n"),_to("\n"),_to("Pass7Pass8\n"),_to("\n"),_to("...passed with flying colors.\n"),_to("

    \n"),_to(" Pass12Pass13Pass14Pass15Pass16(a perfect square)Pass17Pass18Pass19\n"),_to(" Pass20\n"),_to("

    "),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); ; -(function(){var tmpl;return tmpl=toffee.templates["/junk/input.toffee"]={bundlePath:"/junk/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var supplies,supply,__repress,_i,_len,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(_){return __locals.__toffee.out.push(_)},_ln=function(_){return __locals.__toffee.lineno=_},_ts=function(_){return __locals.__toffee.state=_},toffee.__augmentLocals(__locals,"/junk/input.toffee"),__locals){for(__toffee.out=[],_ts(1),_ts(2),supplies=["broom","mop","vacuum"],_ts(1),_to("
      \n"),_to(" "),_ts(2),_ts(2),_i=0,_len=supplies.length;_len>_i;_i++)supply=supplies[_i],_ts(1),_ts(1),_to("
    • "),_to(""+(null!=supply?escape(supply):"")),_to("
    • "),_ts(2);return _ts(1),_to("\n"),_to("
    "),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res}},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/junk/input.toffee"]={bundlePath:"/junk/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var supplies,supply,__repress,_i,_len,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(_){return __locals.__toffee.out.push(_)},_ln=function(_){return __locals.__toffee.lineno=_},_ts=function(_){return __locals.__toffee.state=_},toffee.__augmentLocals(__locals,"/junk/input.toffee"),__locals){for(__toffee.out=[],_ts(1),_ts(2),supplies=["broom","mop","vacuum"],_ts(1),_to("
      \n"),_to(" "),_ts(2),_ts(2),_i=0,_len=supplies.length;_i<_len;_i++)supply=supplies[_i],_ts(1),_ts(1),_to("
    • "),_to(""+(null!=supply?escape(supply):"")),_to("
    • "),_ts(2);return _ts(1),_to("\n"),_to("
    "),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res}},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); ; -(function(){var tmpl;return tmpl=toffee.templates["/junk/output.toffee"]={bundlePath:"/junk/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/junk/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("
      \n"),_to("
    • broom
    • mop
    • vacuum
    • \n"),_to("
    "),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/junk/output.toffee"]={bundlePath:"/junk/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/junk/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("
      \n"),_to("
    • broom
    • mop
    • vacuum
    • \n"),_to("
    "),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); ; -(function(){var tmpl;return tmpl=toffee.templates["/lambda_fns/input.toffee"]={bundlePath:"/lambda_fns/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var echo_it,print_it,print_it_twice,__repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(t){return __locals.__toffee.out.push(t)},_ln=function(t){return __locals.__toffee.lineno=t},_ts=function(t){return __locals.__toffee.state=t},toffee.__augmentLocals(__locals,"/lambda_fns/input.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(2),print_it=function(t){return _ts(1),_ts(1),_to(""+(null!=t?escape(t):"")),_ts(2)},print_it_twice=function(t){var _;return _ts(1),_ts(1),_to(""+(null!=t?escape(t):"")),_ts(2),_=t,_ts(1),_ts(1),_to(""+(null!=_?escape(_):"")),_ts(2)},echo_it=function(t){var _;return _=t},print_it("Pass"),print_it_twice("Pass"),print(echo_it("Pass")),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/lambda_fns/input.toffee"]={bundlePath:"/lambda_fns/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var echo_it,print_it,print_it_twice,__repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(t){return __locals.__toffee.out.push(t)},_ln=function(t){return __locals.__toffee.lineno=t},_ts=function(t){return __locals.__toffee.state=t},toffee.__augmentLocals(__locals,"/lambda_fns/input.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(2),print_it=function(t){return _ts(1),_ts(1),_to(""+(null!=t?escape(t):"")),_ts(2)},print_it_twice=function(t){var _;return _ts(1),_ts(1),_to(""+(null!=t?escape(t):"")),_ts(2),_=t,_ts(1),_ts(1),_to(""+(null!=_?escape(_):"")),_ts(2)},echo_it=function(t){var _;return _=t},print_it("Pass"),print_it_twice("Pass"),print(echo_it("Pass")),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); ; -(function(){var tmpl;return tmpl=toffee.templates["/lambda_fns/output.toffee"]={bundlePath:"/lambda_fns/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(_){return __locals.__toffee.out.push(_)},_ln=function(_){return __locals.__toffee.lineno=_},_ts=function(_){return __locals.__toffee.state=_},toffee.__augmentLocals(__locals,"/lambda_fns/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("PassPassPassPass"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/lambda_fns/output.toffee"]={bundlePath:"/lambda_fns/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(_){return __locals.__toffee.out.push(_)},_ln=function(_){return __locals.__toffee.lineno=_},_ts=function(_){return __locals.__toffee.state=_},toffee.__augmentLocals(__locals,"/lambda_fns/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("PassPassPassPass"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); ; -(function(){var tmpl;return tmpl=toffee.templates["/multiline_interpolation/foo.toffee"]={bundlePath:"/multiline_interpolation/foo.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/multiline_interpolation/foo.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to(""+("undefined"!=typeof a&&null!==a?escape(a):"")),_to(" "),_to(""+("undefined"!=typeof b&&null!==b?escape(b):"")),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/multiline_interpolation/foo.toffee"]={bundlePath:"/multiline_interpolation/foo.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/multiline_interpolation/foo.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to(""+("undefined"!=typeof a&&null!==a?escape(a):"")),_to(" "),_to(""+("undefined"!=typeof b&&null!==b?escape(b):"")),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); ; -(function(){var tmpl;return tmpl=toffee.templates["/multiline_interpolation/input.toffee"]={bundlePath:"/multiline_interpolation/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/multiline_interpolation/input.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to(""+escape("Hello, world")),_to("\n"),_to("
    \n"),_to(""+partial("foo.toffee",{a:"Goodbye,",b:"world"})),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/multiline_interpolation/input.toffee"]={bundlePath:"/multiline_interpolation/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/multiline_interpolation/input.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to(""+escape("Hello, "+"world")),_to("\n"),_to("
    \n"),_to(""+partial("foo.toffee",{a:"Goodbye"+",",b:"world"})),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); ; -(function(){var tmpl;return tmpl=toffee.templates["/multiline_interpolation/output.toffee"]={bundlePath:"/multiline_interpolation/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/multiline_interpolation/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("Hello, world\n"),_to("
    \n"),_to("Goodbye, world"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/multiline_interpolation/output.toffee"]={bundlePath:"/multiline_interpolation/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/multiline_interpolation/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("Hello, world\n"),_to("
    \n"),_to("Goodbye, world"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); ; -(function(){var tmpl;return tmpl=toffee.templates["/passback/const1.toffee"]={bundlePath:"/passback/const1.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/passback/const1.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(2),passback.vx="vx1",passback.vy="vy1",passback.x="oh shit",passback.y="oh noze",_ts(1),_to("\n"),_to("This should output (1)."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/passback/const1.toffee"]={bundlePath:"/passback/const1.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/passback/const1.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(2),passback.vx="vx1",passback.vy="vy1",passback.x="oh shit",passback.y="oh noze",_ts(1),_to("\n"),_to("This should output (1)."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); ; -(function(){var tmpl;return tmpl=toffee.templates["/passback/const2.toffee"]={bundlePath:"/passback/const2.toffee"},tmpl.render=tmpl.pub=function(__locals){var vx,vy,__repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/passback/const2.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(2),passback.vz="vz2",vx="Should not set.",vy="Should not set.",_ts(1),_to("\n"),_to("This should not output (2)."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/passback/const2.toffee"]={bundlePath:"/passback/const2.toffee"},tmpl.render=tmpl.pub=function(__locals){var vx,vy,__repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/passback/const2.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(2),passback.vz="vz2",vx="Should not set.",vy="Should not set.",_ts(1),_to("\n"),_to("This should not output (2)."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); ; -(function(){var tmpl;return tmpl=toffee.templates["/passback/const3.toffee"]={bundlePath:"/passback/const3.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/passback/const3.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(2),passback.vx="vx3",passback.vy="vy3",_ts(1),_to("\n"),_to("This should not output (3)."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/passback/const3.toffee"]={bundlePath:"/passback/const3.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/passback/const3.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(2),passback.vx="vx3",passback.vy="vy3",_ts(1),_to("\n"),_to("This should not output (3)."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); ; -(function(){var tmpl;return tmpl=toffee.templates["/passback/const4.toffee"]={bundlePath:"/passback/const4.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/passback/const4.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(2),passback.vx="vx4",passback.vy="vy4",partial("./const4_sub.toffee"),_ts(1),_to("\n"),_to("This should not output (4)."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/passback/const4.toffee"]={bundlePath:"/passback/const4.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/passback/const4.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(2),passback.vx="vx4",passback.vy="vy4",partial("./const4_sub.toffee"),_ts(1),_to("\n"),_to("This should not output (4)."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); ; -(function(){var tmpl;return tmpl=toffee.templates["/passback/const4_sub.toffee"]={bundlePath:"/passback/const4_sub.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(_){return __locals.__toffee.out.push(_)},_ln=function(_){return __locals.__toffee.lineno=_},_ts=function(_){return __locals.__toffee.state=_},toffee.__augmentLocals(__locals,"/passback/const4_sub.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(2),passback.vx="vx4_sub",passback.vy="vy4_sub",_ts(1),_to("\n"),_to("This should not output (4_sub)."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/passback/const4_sub.toffee"]={bundlePath:"/passback/const4_sub.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(_){return __locals.__toffee.out.push(_)},_ln=function(_){return __locals.__toffee.lineno=_},_ts=function(_){return __locals.__toffee.state=_},toffee.__augmentLocals(__locals,"/passback/const4_sub.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(2),passback.vx="vx4_sub",passback.vy="vy4_sub",_ts(1),_to("\n"),_to("This should not output (4_sub)."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); ; -(function(){var tmpl;return tmpl=toffee.templates["/passback/const5.toffee"]={bundlePath:"/passback/const5.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/passback/const5.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(2),passback.vx="vx5",passback.vy="vy5",print(load("./const5_sub.toffee")),passback.vx=vx,passback.vy=vy,_ts(1),_to("\n"),_to("This should not output (5)."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/passback/const5.toffee"]={bundlePath:"/passback/const5.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/passback/const5.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(2),passback.vx="vx5",passback.vy="vy5",print(load("./const5_sub.toffee")),passback.vx=vx,passback.vy=vy,_ts(1),_to("\n"),_to("This should not output (5)."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); ; -(function(){var tmpl;return tmpl=toffee.templates["/passback/const5_sub.toffee"]={bundlePath:"/passback/const5_sub.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(_){return __locals.__toffee.out.push(_)},_ln=function(_){return __locals.__toffee.lineno=_},_ts=function(_){return __locals.__toffee.state=_},toffee.__augmentLocals(__locals,"/passback/const5_sub.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(2),passback.vx="vx5_sub",passback.vy="vy5_sub",_ts(1),_to("\n"),_to("This should not output (5_sub)."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/passback/const5_sub.toffee"]={bundlePath:"/passback/const5_sub.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(_){return __locals.__toffee.out.push(_)},_ln=function(_){return __locals.__toffee.lineno=_},_ts=function(_){return __locals.__toffee.state=_},toffee.__augmentLocals(__locals,"/passback/const5_sub.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(2),passback.vx="vx5_sub",passback.vy="vy5_sub",_ts(1),_to("\n"),_to("This should not output (5_sub)."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); ; -(function(){var tmpl;return tmpl=toffee.templates["/passback/input.toffee"]={bundlePath:"/passback/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/passback/input.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("vx,vy,vz = "),_to(""+("undefined"!=typeof vx&&null!==vx?escape(vx):"")),_to(","),_to(""+("undefined"!=typeof vy&&null!==vy?escape(vy):"")),_to(","),_to(""+("undefined"!=typeof vz&&null!==vz?escape(vz):"")),_to("\n"),_to(""+partial("./const1.toffee")),_to("\n"),_to("vx,vy,vz = "),_to(""+("undefined"!=typeof vx&&null!==vx?escape(vx):"")),_to(","),_to(""+("undefined"!=typeof vy&&null!==vy?escape(vy):"")),_to(","),_to(""+("undefined"!=typeof vz&&null!==vz?escape(vz):"")),_to("\n"),_to(""+load("./const2.toffee")),_to("\n"),_to("vx,vy,vz = "),_to(""+("undefined"!=typeof vx&&null!==vx?escape(vx):"")),_to(","),_to(""+("undefined"!=typeof vy&&null!==vy?escape(vy):"")),_to(","),_to(""+("undefined"!=typeof vz&&null!==vz?escape(vz):"")),_to("\n"),_to(""+load("./const3.toffee")),_to("\n"),_to("vx,vy,vz = "),_to(""+("undefined"!=typeof vx&&null!==vx?escape(vx):"")),_to(","),_to(""+("undefined"!=typeof vy&&null!==vy?escape(vy):"")),_to(","),_to(""+("undefined"!=typeof vz&&null!==vz?escape(vz):"")),_to("\n"),_to(""+load("./const4.toffee")),_to("\n"),_to("vx,vy,vz = "),_to(""+("undefined"!=typeof vx&&null!==vx?escape(vx):"")),_to(","),_to(""+("undefined"!=typeof vy&&null!==vy?escape(vy):"")),_to(","),_to(""+("undefined"!=typeof vz&&null!==vz?escape(vz):"")),_to("\n"),_to(""+load("./const5.toffee")),_to("\n"),_to("vx,vy,vz = "),_to(""+("undefined"!=typeof vx&&null!==vx?escape(vx):"")),_to(","),_to(""+("undefined"!=typeof vy&&null!==vy?escape(vy):"")),_to(","),_to(""+("undefined"!=typeof vz&&null!==vz?escape(vz):"")),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/passback/input.toffee"]={bundlePath:"/passback/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/passback/input.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("vx,vy,vz = "),_to(""+("undefined"!=typeof vx&&null!==vx?escape(vx):"")),_to(","),_to(""+("undefined"!=typeof vy&&null!==vy?escape(vy):"")),_to(","),_to(""+("undefined"!=typeof vz&&null!==vz?escape(vz):"")),_to("\n"),_to(""+partial("./const1.toffee")),_to("\n"),_to("vx,vy,vz = "),_to(""+("undefined"!=typeof vx&&null!==vx?escape(vx):"")),_to(","),_to(""+("undefined"!=typeof vy&&null!==vy?escape(vy):"")),_to(","),_to(""+("undefined"!=typeof vz&&null!==vz?escape(vz):"")),_to("\n"),_to(""+load("./const2.toffee")),_to("\n"),_to("vx,vy,vz = "),_to(""+("undefined"!=typeof vx&&null!==vx?escape(vx):"")),_to(","),_to(""+("undefined"!=typeof vy&&null!==vy?escape(vy):"")),_to(","),_to(""+("undefined"!=typeof vz&&null!==vz?escape(vz):"")),_to("\n"),_to(""+load("./const3.toffee")),_to("\n"),_to("vx,vy,vz = "),_to(""+("undefined"!=typeof vx&&null!==vx?escape(vx):"")),_to(","),_to(""+("undefined"!=typeof vy&&null!==vy?escape(vy):"")),_to(","),_to(""+("undefined"!=typeof vz&&null!==vz?escape(vz):"")),_to("\n"),_to(""+load("./const4.toffee")),_to("\n"),_to("vx,vy,vz = "),_to(""+("undefined"!=typeof vx&&null!==vx?escape(vx):"")),_to(","),_to(""+("undefined"!=typeof vy&&null!==vy?escape(vy):"")),_to(","),_to(""+("undefined"!=typeof vz&&null!==vz?escape(vz):"")),_to("\n"),_to(""+load("./const5.toffee")),_to("\n"),_to("vx,vy,vz = "),_to(""+("undefined"!=typeof vx&&null!==vx?escape(vx):"")),_to(","),_to(""+("undefined"!=typeof vy&&null!==vy?escape(vy):"")),_to(","),_to(""+("undefined"!=typeof vz&&null!==vz?escape(vz):"")),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); ; -(function(){var tmpl;return tmpl=toffee.templates["/passback/output.toffee"]={bundlePath:"/passback/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(_){return __locals.__toffee.out.push(_)},_ln=function(_){return __locals.__toffee.lineno=_},_ts=function(_){return __locals.__toffee.state=_},toffee.__augmentLocals(__locals,"/passback/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("vx,vy,vz = vx0,,\n"),_to("\n"),_to("This should output (1).\n"),_to("vx,vy,vz = vx1,vy1,\n"),_to("\n"),_to("vx,vy,vz = vx1,vy1,vz2\n"),_to("\n"),_to("vx,vy,vz = vx3,vy3,vz2\n"),_to("\n"),_to("vx,vy,vz = vx4,vy4,vz2\n"),_to("\n"),_to("vx,vy,vz = vx5_sub,vy5_sub,vz2"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/passback/output.toffee"]={bundlePath:"/passback/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(_){return __locals.__toffee.out.push(_)},_ln=function(_){return __locals.__toffee.lineno=_},_ts=function(_){return __locals.__toffee.state=_},toffee.__augmentLocals(__locals,"/passback/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("vx,vy,vz = vx0,,\n"),_to("\n"),_to("This should output (1).\n"),_to("vx,vy,vz = vx1,vy1,\n"),_to("\n"),_to("vx,vy,vz = vx1,vy1,vz2\n"),_to("\n"),_to("vx,vy,vz = vx3,vy3,vz2\n"),_to("\n"),_to("vx,vy,vz = vx4,vy4,vz2\n"),_to("\n"),_to("vx,vy,vz = vx5_sub,vy5_sub,vz2"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); ; -(function(){var tmpl;return tmpl=toffee.templates["/plaintext/input.toffee"]={bundlePath:"/plaintext/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/plaintext/input.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("Hi there."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/plaintext/input.toffee"]={bundlePath:"/plaintext/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/plaintext/input.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("Hi there."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); ; -(function(){var tmpl;return tmpl=toffee.templates["/plaintext/output.toffee"]={bundlePath:"/plaintext/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/plaintext/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("Hi there."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/plaintext/output.toffee"]={bundlePath:"/plaintext/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/plaintext/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("Hi there."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); ; -(function(){var tmpl;return tmpl=toffee.templates["/post_process/buncha_junk.toffee"]={bundlePath:"/post_process/buncha_junk.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/post_process/buncha_junk.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("T3246h354is345-i3245s345-534a534-h534i543d534d534e534n543-m534e543s543s543ag5e534.543"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/post_process/buncha_junk.toffee"]={bundlePath:"/post_process/buncha_junk.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/post_process/buncha_junk.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("T3246h354is345-i3245s345-534a534-h534i543d534d534e534n543-m534e543s543s543ag5e534.543"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); ; -(function(){var tmpl;return tmpl=toffee.templates["/post_process/input.toffee"]={bundlePath:"/post_process/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var clean,reverse,__repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/post_process/input.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to(""+("undefined"!=typeof greeting&&null!==greeting?escape(greeting):"")),_to(", world. \n"),_to(""+partial("./signature.toffee")),_to("\n"),_ts(2),_ts(2),reverse=function(e){var t;return function(){var _,o;for(o=[],_=e.length-1;_>=0;_+=-1)t=e[_],o.push(t);return o}().join("")},clean=function(e){var t;return function(){var _,o,n;for(n=[],_=0,o=e.length;o>_;_++)t=e[_],t.match(/[a-z\-]/gi)&&n.push(t);return n}().join("")},_ts(1),_to("\n"),_to(""+partial("./buncha_junk.toffee",{postProcess:function(e){return reverse(clean(e))}})),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/post_process/input.toffee"]={bundlePath:"/post_process/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var clean,reverse,__repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/post_process/input.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to(""+("undefined"!=typeof greeting&&null!==greeting?escape(greeting):"")),_to(", world. \n"),_to(""+partial("./signature.toffee")),_to("\n"),_ts(2),_ts(2),reverse=function(e){var t;return function(){var _,o;for(o=[],_=e.length-1;_>=0;_+=-1)t=e[_],o.push(t);return o}().join("")},clean=function(e){var t;return function(){var _,o,n;for(n=[],_=0,o=e.length;_\n"),_to(" "),_to(""+print("click & clack")),_to("\n"),_to("

    \n"),_ts(2),_ts(1),_to("\n"),_to("A backslash is a \\\n"),_to(""),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); +(function(){var tmpl;if(tmpl=toffee.templates["/special_cases/input.toffee"]={bundlePath:"/special_cases/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(_){return __locals.__toffee.out.push(_)},_ln=function(_){return __locals.__toffee.lineno=_},_ts=function(_){return __locals.__toffee.state=_},toffee.__augmentLocals(__locals,"/special_cases/input.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("\n"),_ts(2),_ts(2),_ts(1),_ts(1),_to('"'+'PASSED"'),_ts(2),_ts(1),_to("\n"),_ts(2),_ts(1),_to("\n"),_to("

    \n"),_to(" "),_to(""+print(""+"click & clack")),_to("\n"),_to("

    \n"),_ts(2),_ts(1),_to("\n"),_to("A backslash is a \\\n"),_to(""),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); ; -(function(){var tmpl;return tmpl=toffee.templates["/special_cases/output.toffee"]={bundlePath:"/special_cases/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(_){return __locals.__toffee.out.push(_)},_ln=function(_){return __locals.__toffee.lineno=_},_ts=function(_){return __locals.__toffee.state=_},toffee.__augmentLocals(__locals,"/special_cases/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("\n"),_to('"PASSED"\n'),_to("\n"),_to("

    \n"),_to(" click & clack\n"),_to("

    \n"),_to("\n"),_to("A backslash is a \\\n"),_to(""),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input?tmpl.pub(__toffee_run_input):void 0}).call(this); \ No newline at end of file +(function(){var tmpl;if(tmpl=toffee.templates["/special_cases/output.toffee"]={bundlePath:"/special_cases/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(_){return __locals.__toffee.out.push(_)},_ln=function(_){return __locals.__toffee.lineno=_},_ts=function(_){return __locals.__toffee.state=_},toffee.__augmentLocals(__locals,"/special_cases/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("\n"),_to('"'+'PASSED"\n'),_to("\n"),_to("

    \n"),_to(" click & clack\n"),_to("

    \n"),_to("\n"),_to("A backslash is a \\\n"),_to(""),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); \ No newline at end of file diff --git a/test/express3/public/javascripts/toffee.js b/test/express3/public/javascripts/toffee.js index 73ffca5..964dbde 100644 --- a/test/express3/public/javascripts/toffee.js +++ b/test/express3/public/javascripts/toffee.js @@ -17,7 +17,7 @@ toffee.__json = function(locals, o) { if (o == null) { return "null"; } else { - return "" + JSON.stringify(o).replace(//g, '\\u003E').replace(/&/g, '\\u0026'); + return "" + JSON.stringify(o).replace(//g, '\\u003E').replace(/&/g, '\\u0026').replace(/\u2028/g, '\\u2028').replace(/\u2029/g, '\\u2029'); } }; diff --git a/test/express3/views/index.toffee b/test/express3/views/index.toffee index 03b71ba..07fa3e8 100644 --- a/test/express3/views/index.toffee +++ b/test/express3/views/index.toffee @@ -135,6 +135,7 @@ You have 3 female friends. default w = [1,2,{"place":"The Dreadfort"}] default r = default w.foo = + default v = ["\u2028","\u2029"]

    raw x = "Hello world" @@ -147,6 +148,7 @@ You have 3 female friends. y = "\u003Chr /\u003E" z = "click\u0026clack" w = [1,2,{"place":"The Dreadfort"}] + v = ["\u2028","\u2029"]

    raw printed x = "Hello world" @@ -159,13 +161,15 @@ You have 3 female friends. json printed y = "\u003Chr /\u003E" json printed z = "click\u0026clack" json printed w = [1,2,{"place":"The Dreadfort"}] + json printed v = ["\u2028","\u2029"]

    html printed longhand x = "Hello world" html printed longhand y = <hr /> html printed longhand z = click&clack html printed longhand w = 1,2,[object Object] -

    +

    + #{partial '../../cases/escape/input.toffee', {}} @@ -438,13 +442,13 @@ vx,vy,vz = vx5_sub,vy5_sub,vz2 postProcess: function(s) { var c; return ((function() { - var _i, _results; - _results = []; - for (_i = s.length - 1; _i >= 0; _i += -1) { - c = s[_i]; - _results.push(c); + var i, results; + results = []; + for (i = s.length - 1; i >= 0; i += -1) { + c = s[i]; + results.push(c); } - return _results; + return results; })()).join(''); } })); diff --git a/toffee.js b/toffee.js index 73ffca5..964dbde 100644 --- a/toffee.js +++ b/toffee.js @@ -17,7 +17,7 @@ toffee.__json = function(locals, o) { if (o == null) { return "null"; } else { - return "" + JSON.stringify(o).replace(//g, '\\u003E').replace(/&/g, '\\u0026'); + return "" + JSON.stringify(o).replace(//g, '\\u003E').replace(/&/g, '\\u0026').replace(/\u2028/g, '\\u2028').replace(/\u2029/g, '\\u2029'); } }; From 2d1f080ca3893967eeba31b5bc73a0170720e2a3 Mon Sep 17 00:00:00 2001 From: Chris Coyne Date: Fri, 9 Jun 2017 10:59:34 -0400 Subject: [PATCH 116/132] remove minification/uglify; default escape strips RTL unicode and related --- bin/toffee | 0 index.coffee | 2 - index.js | 4 +- lib/command_line.js | 5 +- lib/engine.js | 4 +- lib/errorHandler.js | 4 +- lib/view.js | 34 +- package.json | 3 +- src/command_line.coffee | 6 +- src/engine.coffee | 6 +- src/errorHandler.coffee | 16 +- src/view.coffee | 58 +- test/cases/escape/input.toffee | 7 +- test/cases/escape/output.toffee | 6 +- .../express3/public/javascripts/test_cases.js | 3977 ++++++++++++++++- test/express3/public/javascripts/toffee.js | 4 +- test/express3/views/index.toffee | 6 +- test/generate_express_test.coffee | 4 +- test/run_cases.iced | 10 - toffee.js | 4 +- 20 files changed, 4005 insertions(+), 155 deletions(-) mode change 100644 => 100755 bin/toffee diff --git a/bin/toffee b/bin/toffee old mode 100644 new mode 100755 diff --git a/index.coffee b/index.coffee index 700058e..84605af 100644 --- a/index.coffee +++ b/index.coffee @@ -66,7 +66,6 @@ exports.compile = require('./lib/view').expressCompile exports.configurable_compile = (source, opts) -> opts = opts or {} - opts.minimize = if opts.minimize? then opts.minimize else false opts.headers = if opts.headers? then opts.headers else true opts.filename = opts.filename or null opts.to_coffee = opts.to_coffee or false @@ -77,7 +76,6 @@ exports.configurable_compile = (source, opts) -> filename: opts.filename bundlePath: opts.filename browserMode: true - minimize: opts.minimize } if opts.to_coffee output = v.toCoffee() diff --git a/index.js b/index.js index f29e459..275c688 100644 --- a/index.js +++ b/index.js @@ -72,7 +72,6 @@ exports.configurable_compile = function(source, opts) { var err, header, output, v; opts = opts || {}; - opts.minimize = opts.minimize != null ? opts.minimize : false; opts.headers = opts.headers != null ? opts.headers : true; opts.filename = opts.filename || null; opts.to_coffee = opts.to_coffee || false; @@ -80,8 +79,7 @@ v = new view(source, { filename: opts.filename, bundlePath: opts.filename, - browserMode: true, - minimize: opts.minimize + browserMode: true }); if (opts.to_coffee) { output = v.toCoffee(); diff --git a/lib/command_line.js b/lib/command_line.js index d5779ed..dff3ade 100644 --- a/lib/command_line.js +++ b/lib/command_line.js @@ -23,7 +23,7 @@ return console.log("\n Examples: \n \n toffee views # recurses through views and builds views.js \n toffee foo.toffee # builds foo.js \n toffee views -o templates # builds templates.js \n toffee -p foo.toffee # outputs JS to stdout \n \n \n Then use in your : \n \n \n \n"); }); - program.version(getVersionNumber()).option('-o, --output [path]', 'file (bundles all output into a single .js)').option('-d, --output_dir [path]', 'compiles templates into parallel .js files').option('-p, --print', 'print to stdout').option('-m, --minimize', 'minimize output (ugly, smaller file(s))').option('-c, --coffee', 'output to CoffeeScript (not JS)').option('-b, --bundle_path [path]', 'bundle_path (instead of "/") for templates').option('-n, --no_headers', 'exclude boilerplate toffee (requires toffee.js included separately)').parse(process.argv); + program.version(getVersionNumber()).option('-o, --output [path]', 'file (bundles all output into a single .js)').option('-d, --output_dir [path]', 'compiles templates into parallel .js files').option('-p, --print', 'print to stdout').option('-c, --coffee', 'output to CoffeeScript (not JS)').option('-b, --bundle_path [path]', 'bundle_path (instead of "/") for templates').option('-n, --no_headers', 'exclude boilerplate toffee (requires toffee.js included separately)').parse(process.argv); compile = function(start_path, full_path) { @@ -43,8 +43,7 @@ v = new view(source, { fileName: full_path, bundlePath: bundle_path, - browserMode: true, - minimize: (program.minimize != null) && program.minimize + browserMode: true }); if (program.coffee) { output = v.toCoffee(); diff --git a/lib/engine.js b/lib/engine.js index 8429718..8f01f8b 100644 --- a/lib/engine.js +++ b/lib/engine.js @@ -35,7 +35,6 @@ this.render = bind(this.render, this); options = options || {}; this.verbose = options.verbose || false; - this.minimize = options.minimize || false; this.pool = new Pool(sandboxCons, options.poolSize || MAX_CACHED_SANDBOXES); this.prettyPrintErrors = options.prettyPrintErrors != null ? options.prettyPrintErrors : true; this.prettyLogErrors = options.prettyLogErrors != null ? options.prettyLogErrors : true; @@ -353,8 +352,7 @@ prettyPrintErrors: this.prettyPrintErrors, prettyLogErrors: this.prettyLogErrors, autoEscape: this.autoEscape, - additionalErrorHandler: this.additionalErrorHandler, - minimize: this.minimize + additionalErrorHandler: this.additionalErrorHandler }; }; diff --git a/lib/errorHandler.js b/lib/errorHandler.js index 0e968e4..58933ac 100644 --- a/lib/errorHandler.js +++ b/lib/errorHandler.js @@ -191,14 +191,14 @@ toffeeError.prototype.getPrettyPrint = function() { /* - returns an HTML blob explaining the error + returns an HTML blob explaining the error with lines highlighted */ var cerr, count, extra, header, i, item, j, k, l, len, line, padding, padding_len, ref, ref1, ref2, ref3, ref4, res; cerr = this.getConvertedError(); res = ""; header = cerr.dir_name + "/" + cerr.file + ": " + (_ppEscape(cerr.message)) + ""; - res += "
    \n \n
    " + header + "
    \n \n
    \n \n
    "; + res += "
    \n \n
    " + header + "
    \n \n
    \n \n
    "; if ((ref = cerr.stack) != null ? ref.length : void 0) { res += "
    "; count = 0; diff --git a/lib/view.js b/lib/view.js index e93e9a6..16ca902 100644 --- a/lib/view.js +++ b/lib/view.js @@ -1,6 +1,6 @@ // Generated by CoffeeScript 1.12.2 (function() { - var TAB_SPACES, coffee, e, errorHandler, errorTypes, getBundleHeaders, getCommonHeaders, getCommonHeadersJs, minimizeJs, parser, ref, ref1, spaces, states, tabs, toffeeError, util, utils, view, vm; + var TAB_SPACES, coffee, e, errorHandler, errorTypes, getBundleHeaders, getCommonHeaders, getCommonHeadersJs, parser, ref, ref1, spaces, states, tabs, toffeeError, util, utils, view, vm; parser = require('./toffee_lang').parser; @@ -45,22 +45,6 @@ })()).join(""); }; - minimizeJs = function(js) { - var uglify; - try { - uglify = require('uglify-js'); - js = uglify.minify(js, { - fromString: true - }).code; - } catch (error) { - e = error; - console.log(js); - console.log(e); - process.exit(1); - } - return js; - }; - getCommonHeaders = function(tab_level, include_bundle_headers, auto_escape) { /* @@ -71,7 +55,7 @@ */ var __; __ = tabs(tab_level); - return "\n\n" + __ + "if not toffee? then toffee = {}\n" + __ + "if not toffee.templates then toffee.templates = {}\n\n" + __ + "toffee.states = " + (JSON.stringify(states)) + "\n\n" + __ + "toffee.__json = (locals, o) ->\n" + __ + " if not o? then return \"null\"\n" + __ + " else return \"\" + JSON.stringify(o).replace(//g,'\\\\u003E').replace(/&/g,'\\\\u0026').replace(/\\u2028/g, '\\\\u2028').replace(/\\u2029/g, '\\\\u2029')\n\n" + __ + "toffee.__raw = (locals, o) -> o\n\n" + __ + "toffee.__html = (locals, o) ->\n" + __ + " (\"\"+o).replace(/&/g, '&').replace(//g, '>').replace(/\"/g, '"')\n\n" + __ + "toffee.__escape = (locals, o) ->\n" + __ + " if locals.__toffee.autoEscape? then ae = locals.__toffee.autoEscape\n" + __ + " else if " + (auto_escape != null) + " then ae = " + auto_escape + "\n" + __ + " else ae = true\n" + __ + " if ae\n" + __ + " if o is undefined then return ''\n" + __ + " if o? and (typeof o) is \"object\" then return locals.json o\n" + __ + " return locals.html o\n" + __ + " return o\n\n" + __ + "toffee.__augmentLocals = (locals, bundle_path) ->\n" + __ + " _l = locals\n" + __ + " _t = _l.__toffee = {out: []}\n" + __ + " if not _l.print? then _l.print = (o) -> toffee.__print _l, o\n" + __ + " if not _l.json? then _l.json = (o) -> toffee.__json _l, o\n" + __ + " if not _l.raw? then _l.raw = (o) -> toffee.__raw _l, o\n" + __ + " if not _l.html? then _l.html = (o) -> toffee.__html _l, o\n" + __ + " if not _l.escape? then _l.escape = (o) -> toffee.__escape _l, o\n" + __ + " if not _l.partial? then _l.partial = (path, vars) -> toffee.__partial toffee.templates[\"\#{bundle_path}\"], _l, path, vars\n" + __ + " if not _l.snippet? then _l.snippet = (path, vars) -> toffee.__snippet toffee.templates[\"\#{bundle_path}\"], _l, path, vars\n" + __ + " if not _l.load? then _l.load = (path, vars) -> toffee.__load toffee.templates[\"\#{bundle_path}\"], _l, path, vars\n" + __ + " _t.print = _l.print\n" + __ + " _t.json = _l.json\n" + __ + " _t.raw = _l.raw\n" + __ + " _t.html = _l.html\n" + __ + " _t.escape = _l.escape\n" + __ + " _t.partial = _l.partial\n" + __ + " _t.snippet = _l.snippet\n" + __ + " _t.load = _l.load\n\n" + (include_bundle_headers ? getBundleHeaders(tab_level) : ""); + return "\n\n" + __ + "if not toffee? then toffee = {}\n" + __ + "if not toffee.templates then toffee.templates = {}\n\n" + __ + "toffee.states = " + (JSON.stringify(states)) + "\n\n" + __ + "toffee.__json = (locals, o) ->\n" + __ + " if not o?\n" + __ + " return \"null\"\n" + __ + " else\n" + __ + " return \"\" + JSON.stringify(o)\n" + __ + " .replace(//g,'\\\\u003E')\n" + __ + " .replace(/&/g,'\\\\u0026').replace(/\\u2028/g, '\\\\u2028')\n" + __ + " .replace(/\\u2029/g, '\\\\u2029')\n" + __ + " .replace(/\\u200e/g, '\\\\u200e') # LEFT-TO-RIGHT MARK\n" + __ + " .replace(/\\u200f/g, '\\\\u200f') # RIGHT-TO-LEFT MARK\n" + __ + " .replace(/\\u202a/g, '\\\\u202a') # LEFT-TO-RIGHT EMBEDDING\n" + __ + " .replace(/\\u202b/g, '\\\\u202b') # RIGHT-TO-LEFT EMBEDDING\n" + __ + " .replace(/\\u202c/g, '\\\\u202c') # POP DIRECTIONAL FORMATTING\n" + __ + " .replace(/\\u202d/g, '\\\\u202d') # LEFT-TO-RIGHT OVERRIDE\n" + __ + " .replace(/\\u202e/g, '\\\\u202e') # RIGHT-TO-LEFT OVERRIDE\n" + __ + " .replace(/\\u206a/g, '\\\\u206a') # INHIBIT SYMMETRIC SWAPPING\n" + __ + " .replace(/\\u206b/g, '\\\\u206b') # ACTIVATE SYMMETRIC SWAPPING\n" + __ + " .replace(/\\u206c/g, '\\\\u206c') # INHIBIT ARABIC FORM SHAPING\n" + __ + " .replace(/\\u206d/g, '\\\\u206d') # ACTIVATE ARABIC FORM SHAPING\n" + __ + " .replace(/\\u206e/g, '\\\\u206e') # NATIONAL DIGIT SHAPES\n" + __ + " .replace(/\\u206f/g, '\\\\u206f') # NOMINAL DIGIT SHAPES\n\n" + __ + "toffee.__raw = (locals, o) -> o\n\n" + __ + "toffee.__html = (locals, o) ->\n" + __ + " (\"\"+o).replace(/&/g, '&')\n" + __ + " .replace(//g, '>')\n" + __ + " .replace(/\"/g, '"')\n" + __ + " .replace(/\\u200e/g, '') # LEFT-TO-RIGHT MARK\n" + __ + " .replace(/\\u200f/g, '') # RIGHT-TO-LEFT MARK\n" + __ + " .replace(/\\u202a/g, '') # LEFT-TO-RIGHT EMBEDDING\n" + __ + " .replace(/\\u202b/g, '') # RIGHT-TO-LEFT EMBEDDING\n" + __ + " .replace(/\\u202c/g, '') # POP DIRECTIONAL FORMATTING\n" + __ + " .replace(/\\u202d/g, '') # LEFT-TO-RIGHT OVERRIDE\n" + __ + " .replace(/\\u202e/g, '') # RIGHT-TO-LEFT OVERRIDE\n" + __ + " .replace(/\\u206a/g, '') # INHIBIT SYMMETRIC SWAPPING\n" + __ + " .replace(/\\u206b/g, '') # ACTIVATE SYMMETRIC SWAPPING\n" + __ + " .replace(/\\u206c/g, '') # INHIBIT ARABIC FORM SHAPING\n" + __ + " .replace(/\\u206d/g, '') # ACTIVATE ARABIC FORM SHAPING\n" + __ + " .replace(/\\u206e/g, '') # NATIONAL DIGIT SHAPES\n" + __ + " .replace(/\\u206f/g, '') # NOMINAL DIGIT SHAPES\n\n" + __ + "toffee.__escape = (locals, o) ->\n" + __ + " if locals.__toffee.autoEscape? then ae = locals.__toffee.autoEscape\n" + __ + " else if " + (auto_escape != null) + " then ae = " + auto_escape + "\n" + __ + " else ae = true\n" + __ + " if ae\n" + __ + " if o is undefined then return ''\n" + __ + " if o? and (typeof o) is \"object\" then return locals.json o\n" + __ + " return locals.html o\n" + __ + " return o\n\n" + __ + "toffee.__augmentLocals = (locals, bundle_path) ->\n" + __ + " _l = locals\n" + __ + " _t = _l.__toffee = {out: []}\n" + __ + " if not _l.print? then _l.print = (o) -> toffee.__print _l, o\n" + __ + " if not _l.json? then _l.json = (o) -> toffee.__json _l, o\n" + __ + " if not _l.raw? then _l.raw = (o) -> toffee.__raw _l, o\n" + __ + " if not _l.html? then _l.html = (o) -> toffee.__html _l, o\n" + __ + " if not _l.escape? then _l.escape = (o) -> toffee.__escape _l, o\n" + __ + " if not _l.partial? then _l.partial = (path, vars) -> toffee.__partial toffee.templates[\"\#{bundle_path}\"], _l, path, vars\n" + __ + " if not _l.snippet? then _l.snippet = (path, vars) -> toffee.__snippet toffee.templates[\"\#{bundle_path}\"], _l, path, vars\n" + __ + " if not _l.load? then _l.load = (path, vars) -> toffee.__load toffee.templates[\"\#{bundle_path}\"], _l, path, vars\n" + __ + " _t.print = _l.print\n" + __ + " _t.json = _l.json\n" + __ + " _t.raw = _l.raw\n" + __ + " _t.html = _l.html\n" + __ + " _t.escape = _l.escape\n" + __ + " _t.partial = _l.partial\n" + __ + " _t.snippet = _l.snippet\n" + __ + " _t.load = _l.load\n\n" + (include_bundle_headers ? getBundleHeaders(tab_level) : ""); }; getBundleHeaders = function(tab_level) { @@ -85,15 +69,12 @@ return "\n\n" + __ + "toffee.__print = (locals, o) ->\n" + __ + " if locals.__toffee.state is toffee.states.COFFEE\n" + __ + " locals.__toffee.out.push o\n" + __ + " return ''\n" + __ + " else\n" + __ + " return \"\#{o}\"\n\n" + __ + "toffee.__normalize = (path) ->\n" + __ + " if (not path?) or path is \"/\"\n" + __ + " return path\n" + __ + " else\n" + __ + " parts = path.split \"/\"\n" + __ + " np = []\n" + __ + " # make sure path always starts with '/'\n" + __ + " if parts[0]\n" + __ + " np.push ''\n" + __ + " for part in parts\n" + __ + " if part is \"..\"\n" + __ + " if np.length > 1\n" + __ + " np.pop()\n" + __ + " else\n" + __ + " np.push part\n" + __ + " else\n" + __ + " if part isnt \".\"\n" + __ + " np.push part\n" + __ + " path = np.join \"/\"\n" + __ + " if not path then path = \"/\"\n" + __ + " return path\n\n" + __ + "toffee.__partial = (parent_tmpl, parent_locals, path, vars) ->\n" + __ + " path = toffee.__normalize parent_tmpl.bundlePath + \"/../\" + path\n" + __ + " return toffee.__inlineInclude path, vars, parent_locals\n\n" + __ + "toffee.__snippet = (parent_tmpl, parent_locals, path, vars) ->\n" + __ + " path = toffee.__normalize parent_tmpl.bundlePath + \"/../\" + path\n" + __ + " vars = if vars? then vars else {}\n" + __ + " vars.__toffee = vars.__toffee or {}\n" + __ + " vars.__toffee.noInheritance = true\n" + __ + " return toffee.__inlineInclude path, vars, parent_locals\n\n" + __ + "toffee.__load = (parent_tmpl, parent_locals, path, vars) ->\n" + __ + " path = toffee.__normalize parent_tmpl.bundlePath + \"/../\" + path\n" + __ + " vars = if vars? then vars else {}\n" + __ + " vars.__toffee = vars.__toffee or {}\n" + __ + " vars.__toffee.repress = true\n" + __ + " return toffee.__inlineInclude path, vars, parent_locals\n\n" + __ + "toffee.__inlineInclude = (path, locals, parent_locals) ->\n" + __ + " options = locals or {}\n" + __ + " options.passback = {}\n" + __ + " options.__toffee = options.__toffee or {}\n" + __ + "\n" + __ + " # we need to make a shallow copy of parent variables\n" + __ + " reserved = {}\n" + __ + " reserved[k] = true for k in [\"passback\", \"load\", \"print\", \"partial\", \"snippet\", \"layout\", \"__toffee\", \"postProcess\"]\n" + __ + " if not options.__toffee.noInheritance\n" + __ + " for k,v of parent_locals when not locals?[k]?\n" + __ + " if not reserved[k]?\n" + __ + " options[k] = v\n" + __ + "\n" + __ + " if not toffee.templates[path]\n" + __ + " return \"Inline toffee include: Could not find \#{path}\"\n" + __ + " else\n" + __ + " res = toffee.templates[path].pub options\n" + __ + " for k,v of options.passback\n" + __ + " parent_locals[k] = v\n" + __ + " return res"; }; - getCommonHeadersJs = function(include_bundle_headers, auto_escape, minimize) { + getCommonHeadersJs = function(include_bundle_headers, auto_escape) { var ch, js; ch = getCommonHeaders(0, include_bundle_headers, auto_escape); js = coffee.compile(ch, { bare: true }); - if (minimize) { - js = minimizeJs(js); - } return js; }; @@ -108,7 +89,6 @@ this.fileName = options.fileName || options.filename || null; this.bundlePath = options.bundlePath || "/"; this.browserMode = options.browserMode || false; - this.minimize = options.minimize || false; this.verbose = options.verbose || false; this.fsError = options.fsError || false; this.prettyPrintErrors = options.prettyPrintErrors != null ? options.prettyPrintErrors : true; @@ -262,7 +242,7 @@ }; view.prototype.toJavaScript = function() { - var c, d, d2, opts; + var c, d, opts; if (this.javaScript == null) { c = this.toCoffee(); if (!this.error) { @@ -279,10 +259,6 @@ e = error; this.error = new toffeeError(this, errorTypes.COFFEE_COMPILE, e); } - if (this.minimize && !this.error) { - d2 = Date.now(); - this.javaScript = minimizeJs(this.javaScript); - } this._log(this.fileName + " compiled to JavaScript in " + (Date.now() - d) + "ms"); } } @@ -312,7 +288,7 @@ }; view.prototype._printLineNo = function(n, ind) { - if (this.minimize || ((this.lastLineNo != null) && (n === this.lastLineNo))) { + if ((this.lastLineNo != null) && (n === this.lastLineNo)) { return ""; } else { this.lastLineNo = n; diff --git a/package.json b/package.json index c919c2b..e81bf58 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "toffee", "description": "A NodeJs and browser-side templating language based on CoffeeScript with slicker tokens and syntax.", - "version": "0.1.13", + "version": "0.2.0", "directories": { "lib": "./lib" }, @@ -11,7 +11,6 @@ "dependencies": { "coffee-script": "*", "commander": "*", - "uglify-js": "*", "mkdirp": "*", "highlight.js": "*" }, diff --git a/src/command_line.coffee b/src/command_line.coffee index d7418ab..da54047 100644 --- a/src/command_line.coffee +++ b/src/command_line.coffee @@ -30,14 +30,13 @@ program.on '--help', -> \n var pubvars = { name: \"Hans Gruber\", criminal: true }; \n var some_html = toffee.render (\"views/layout.toffee\", pubvars); \n -\n +\n " program.version(getVersionNumber()) .option('-o, --output [path]', 'file (bundles all output into a single .js)') .option('-d, --output_dir [path]', 'compiles templates into parallel .js files') .option('-p, --print', 'print to stdout') - .option('-m, --minimize', 'minimize output (ugly, smaller file(s))') .option('-c, --coffee', 'output to CoffeeScript (not JS)') .option('-b, --bundle_path [path]', 'bundle_path (instead of "/") for templates') .option('-n, --no_headers', 'exclude boilerplate toffee (requires toffee.js included separately)') @@ -63,7 +62,6 @@ compile = (start_path, full_path) -> fileName: full_path bundlePath: bundle_path browserMode: true - minimize: program.minimize? and program.minimize if program.coffee output = v.toCoffee() else @@ -133,7 +131,7 @@ run = exports.run = -> try mkdirp.sync program.output_dir catch e - console.log "Couldn't make/use #{program.output_dir}; #{e}" + console.log "Couldn't make/use #{program.output_dir}; #{e}" process.exit 1 start_path = path.normalize start_path diff --git a/src/engine.coffee b/src/engine.coffee index 316e889..db5495b 100644 --- a/src/engine.coffee +++ b/src/engine.coffee @@ -17,7 +17,6 @@ class engine constructor: (options) -> options = options or {} @verbose = options.verbose or false - @minimize = options.minimize or false @pool = new Pool(sandboxCons, options.poolSize or MAX_CACHED_SANDBOXES) @prettyPrintErrors = if options.prettyPrintErrors? then options.prettyPrintErrors else true @prettyLogErrors = if options.prettyLogErrors? then options.prettyLogErrors else true @@ -98,7 +97,7 @@ class engine postProcess: (fn, res) -> err = null - try + try res = fn res catch e err = e @@ -254,7 +253,6 @@ class engine prettyLogErrors: @prettyLogErrors autoEscape: @autoEscape additionalErrorHandler: @additionalErrorHandler - minimize: @minimize } _monitorForChanges: (filename, options) -> @@ -278,4 +276,4 @@ class engine @_log "fs.watch() failed for #{filename}; settings fsErrorCache = true" @fsErrorCache[filename] = Date.now() -exports.engine = engine \ No newline at end of file +exports.engine = engine diff --git a/src/errorHandler.coffee b/src/errorHandler.coffee index e32f059..c56e277 100644 --- a/src/errorHandler.coffee +++ b/src/errorHandler.coffee @@ -72,7 +72,7 @@ class toffeeError extends Error res.message = res.message.replace /on line [0-9]+/, @_lineRangeToPhrase res.line_range else res.message += " " + @_lineRangeToPhrase res.line_range - + when errorTypes.RUNTIME if not res.line_range? @@ -91,10 +91,10 @@ class toffeeError extends Error stack = converted_err.stack for line, i in stack - rxx_pub = /// - Object[\.].*?pub[\s]\(undefined\:([0-9]+)\:[0-9]+ + rxx_pub = /// + Object[\.].*?pub[\s]\(undefined\:([0-9]+)\:[0-9]+ | - tmpl[\.]render[\.]tmpl[\.]pub.*\(.*\:([0-9]+)\:[0-9]+ + tmpl[\.]render[\.]tmpl[\.]pub.*\(.*\:([0-9]+)\:[0-9]+ /// m = line.match rxx_pub in_src_file = false @@ -161,7 +161,7 @@ class toffeeError extends Error getPrettyPrint: -> ### - returns an HTML blob explaining the error + returns an HTML blob explaining the error with lines highlighted ### cerr = @getConvertedError() @@ -171,7 +171,7 @@ class toffeeError extends Error
    \n
    #{header}
    \n
    - \n
    + \n
    """ if cerr.stack?.length res += "
    " @@ -190,7 +190,7 @@ class toffeeError extends Error for i in [(cerr.line_range[0]-3)...(cerr.line_range[1]+1)] if (i < 0) or i > @toffeeSrcLines.length - 1 continue - line = _ppEscape @toffeeSrcLines[i] + line = _ppEscape @toffeeSrcLines[i] padding_len = 5 - ("#{i+1}").length padding = (" " for j in [0...padding_len]).join "" if (cerr.line_range[0] - 1) <= (i) < cerr.line_range[1] @@ -254,4 +254,4 @@ _ppEscape = (txt) -> # retain leading spaces m = txt.match /^[\t ]*/ txt = txt.replace m[0], (" " for i in [0...(m[0].length)]).join "" - txt \ No newline at end of file + txt diff --git a/src/view.coffee b/src/view.coffee index 826b914..8642342 100644 --- a/src/view.coffee +++ b/src/view.coffee @@ -13,16 +13,6 @@ catch e spaces = (n) -> (" " for i in [0...n]).join "" tabs = (n) -> (spaces(TAB_SPACES) for i in [0...n]).join "" -minimizeJs = (js) -> - try - uglify = require 'uglify-js' - js = uglify.minify(js, { fromString: true }).code - catch e - console.log js - console.log e - process.exit 1 - js - getCommonHeaders = (tab_level, include_bundle_headers, auto_escape) -> ### each view will use this, or if they're bundled together, @@ -40,13 +30,46 @@ getCommonHeaders = (tab_level, include_bundle_headers, auto_escape) -> #{__}toffee.states = #{JSON.stringify states} #{__}toffee.__json = (locals, o) -> -#{__} if not o? then return "null" -#{__} else return "" + JSON.stringify(o).replace(//g,'\\\\u003E').replace(/&/g,'\\\\u0026').replace(/\\u2028/g, '\\\\u2028').replace(/\\u2029/g, '\\\\u2029') +#{__} if not o? +#{__} return "null" +#{__} else +#{__} return "" + JSON.stringify(o) +#{__} .replace(//g,'\\\\u003E') +#{__} .replace(/&/g,'\\\\u0026').replace(/\\u2028/g, '\\\\u2028') +#{__} .replace(/\\u2029/g, '\\\\u2029') +#{__} .replace(/\\u200e/g, '\\\\u200e') # LEFT-TO-RIGHT MARK +#{__} .replace(/\\u200f/g, '\\\\u200f') # RIGHT-TO-LEFT MARK +#{__} .replace(/\\u202a/g, '\\\\u202a') # LEFT-TO-RIGHT EMBEDDING +#{__} .replace(/\\u202b/g, '\\\\u202b') # RIGHT-TO-LEFT EMBEDDING +#{__} .replace(/\\u202c/g, '\\\\u202c') # POP DIRECTIONAL FORMATTING +#{__} .replace(/\\u202d/g, '\\\\u202d') # LEFT-TO-RIGHT OVERRIDE +#{__} .replace(/\\u202e/g, '\\\\u202e') # RIGHT-TO-LEFT OVERRIDE +#{__} .replace(/\\u206a/g, '\\\\u206a') # INHIBIT SYMMETRIC SWAPPING +#{__} .replace(/\\u206b/g, '\\\\u206b') # ACTIVATE SYMMETRIC SWAPPING +#{__} .replace(/\\u206c/g, '\\\\u206c') # INHIBIT ARABIC FORM SHAPING +#{__} .replace(/\\u206d/g, '\\\\u206d') # ACTIVATE ARABIC FORM SHAPING +#{__} .replace(/\\u206e/g, '\\\\u206e') # NATIONAL DIGIT SHAPES +#{__} .replace(/\\u206f/g, '\\\\u206f') # NOMINAL DIGIT SHAPES #{__}toffee.__raw = (locals, o) -> o #{__}toffee.__html = (locals, o) -> -#{__} (""+o).replace(/&/g, '&').replace(//g, '>').replace(/\"/g, '"') +#{__} (""+o).replace(/&/g, '&') +#{__} .replace(//g, '>') +#{__} .replace(/\"/g, '"') +#{__} .replace(/\\u200e/g, '') # LEFT-TO-RIGHT MARK +#{__} .replace(/\\u200f/g, '') # RIGHT-TO-LEFT MARK +#{__} .replace(/\\u202a/g, '') # LEFT-TO-RIGHT EMBEDDING +#{__} .replace(/\\u202b/g, '') # RIGHT-TO-LEFT EMBEDDING +#{__} .replace(/\\u202c/g, '') # POP DIRECTIONAL FORMATTING +#{__} .replace(/\\u202d/g, '') # LEFT-TO-RIGHT OVERRIDE +#{__} .replace(/\\u202e/g, '') # RIGHT-TO-LEFT OVERRIDE +#{__} .replace(/\\u206a/g, '') # INHIBIT SYMMETRIC SWAPPING +#{__} .replace(/\\u206b/g, '') # ACTIVATE SYMMETRIC SWAPPING +#{__} .replace(/\\u206c/g, '') # INHIBIT ARABIC FORM SHAPING +#{__} .replace(/\\u206d/g, '') # ACTIVATE ARABIC FORM SHAPING +#{__} .replace(/\\u206e/g, '') # NATIONAL DIGIT SHAPES +#{__} .replace(/\\u206f/g, '') # NOMINAL DIGIT SHAPES #{__}toffee.__escape = (locals, o) -> #{__} if locals.__toffee.autoEscape? then ae = locals.__toffee.autoEscape @@ -158,10 +181,9 @@ getBundleHeaders = (tab_level) -> #{__} return res """ -getCommonHeadersJs = (include_bundle_headers, auto_escape, minimize)-> +getCommonHeadersJs = (include_bundle_headers, auto_escape)-> ch = getCommonHeaders 0, include_bundle_headers, auto_escape js = coffee.compile ch, {bare: true} - if minimize then js = minimizeJs js js class view @@ -175,7 +197,6 @@ class view @fileName = options.fileName or options.filename or null @bundlePath = options.bundlePath or "/" # if to be included inside a bundle, this is the path inside it. @browserMode = options.browserMode or false - @minimize = options.minimize or false # excludes line numbers from coffee ; uses uglify.JS @verbose = options.verbose or false @fsError = options.fsError or false # pass true if you could not load the view template and passed in error text @prettyPrintErrors = if options.prettyPrintErrors? then options.prettyPrintErrors else true @@ -299,9 +320,6 @@ class view @javaScript = coffee.compile c, opts catch e @error = new toffeeError @, errorTypes.COFFEE_COMPILE, e - if @minimize and not @error - d2 = Date.now() - @javaScript = minimizeJs @javaScript @_log "#{@fileName} compiled to JavaScript in #{Date.now()-d}ms" @javaScript @@ -322,7 +340,7 @@ class view @coffeeScript _printLineNo: (n, ind) -> - if @minimize or (@lastLineNo? and (n is @lastLineNo)) + if (@lastLineNo? and (n is @lastLineNo)) return "" else @lastLineNo = n diff --git a/test/cases/escape/input.toffee b/test/cases/escape/input.toffee index 87a018f..ad29469 100644 --- a/test/cases/escape/input.toffee +++ b/test/cases/escape/input.toffee @@ -4,14 +4,17 @@ z = 'click&clack' w = [1, 2, {"place": "The Dreadfort"}] v = ["\u2028", "\u2029"] + dir = ["hi\u{202e}there"] # ltr type things #}

    default x = #{x} default y = #{y} default z = #{z} default w = #{w} - default r = #{r} - default w.foo = #{w.foo} + default r = #{r}eol + default w.foo = #{w.foo}eol default v = #{v} + default dir = #{dir} + default dir0 = #{dir[0]}

    raw x = #{raw x} diff --git a/test/cases/escape/output.toffee b/test/cases/escape/output.toffee index 0be58e9..27ed781 100644 --- a/test/cases/escape/output.toffee +++ b/test/cases/escape/output.toffee @@ -3,9 +3,11 @@ default y = <hr /> default z = click&clack default w = [1,2,{"place":"The Dreadfort"}] - default r = - default w.foo = + default r = eol + default w.foo = eol default v = ["\u2028","\u2029"] + default dir = ["hi\u202ethere"] + default dir0 = hithere

    raw x = "Hello world" diff --git a/test/express3/public/javascripts/test_cases.js b/test/express3/public/javascripts/test_cases.js index 62ef2c9..dbad2b9 100644 --- a/test/express3/public/javascripts/test_cases.js +++ b/test/express3/public/javascripts/test_cases.js @@ -1,107 +1,3978 @@ ; -(function(){var tmpl;if(tmpl=toffee.templates["/big_file/input.toffee"]={bundlePath:"/big_file/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var count,i,__repress,_i,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(t){return __locals.__toffee.out.push(t)},_ln=function(t){return __locals.__toffee.lineno=t},_ts=function(t){return __locals.__toffee.state=t},toffee.__augmentLocals(__locals,"/big_file/input.toffee"),__locals){for(__toffee.out=[],_ts(1),_ts(2),count=0,i=_i=0;_i<2;i=++_i){_ts(1),_ts(1),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("..."),_ts(2),_ts(2),count+=1,print(" "+count+"..."),_ts(1),_to(" "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... ");_to(""+escape(count++));_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("... "),_to(""+escape(count++)),_to("..."),_ts(2),_ts(2),count+=1,print(" "+count+"...")}return __toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res}},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/big_file/input.toffee"] = { + bundlePath: "/big_file/input.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var count, i, __repress, _i, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/big_file/input.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(2); + count = 0; + for (i = _i = 0; _i < 2; i = ++_i) { + _ts(1); + _ts(1); + _ln(3); + _to("" + (escape(count++))); + _ln(4); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _ln(5); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _ln(6); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _ln(7); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _ln(8); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _ln(9); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _ln(10); + _to("..."); + _ts(2); + _ts(2); + count += 1; + print(" " + count + "..."); + _ts(1); + _ln(13); + _to(" "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _ln(14); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _ln(15); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _ln(16); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _ln(17); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _ln(18); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _ln(19); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _to("... "); + _to("" + (escape(count++))); + _ln(20); + _to("..."); + _ts(2); + _ts(2); + count += 1; + print(" " + count + "..."); + } + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/big_file/output.toffee"]={bundlePath:"/big_file/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/big_file/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("0... 1... 2... 3... 4... 5... 6... 7... 8... 9... 10... 11... 12... 13... 14... 15... 16... 17... 18... 19... 20... 21... 22... 23... 24... 25... 26... 27... 28... 29... 30... 31... 32... 33... 34... 35... 36... 37... 38... 39... 40... 41... 42... 43... 44... 45... 46... 47... 48... 49... 50... 51... 52... 53... 54... 55... 56... 57... 58... 59... 60... 61... 62... 63... 64... 65... 66... 67... 68... 70... 70... 71... 72... 73... 74... 75... 76... 77... 78... 79... 80... 81... 82... 83... 84... 85... 86... 87... 88... 89... 90... 91... 92... 93... 94... 95... 96... 97... 98... 99... 100... 101... 102... 103... 104... 105... 106... 107... 108... 109... 110... 111... 112... 113... 114... 115... 116... 117... 118... 119... 120... 121... 122... 123... 124... 125... 126... 127... 128... 129... 130... 131... 132... 133... 134... 135... 136... 137... 138... 139... 140... 141... 142... 143... 144... 145... 146... 147... 148... 149... 150... 151... 152... 153... 154... 155... 156... 157... 158... 159... 160... 162...162... 163... 164... 165... 166... 167... 168... 169... 170... 171... 172... 173... 174... 175... 176... 177... 178... 179... 180... 181... 182... 183... 184... 185... 186... 187... 188... 189... 190... 191... 192... 193... 194... 195... 196... 197... 198... 199... 200... 201... 202... 203... 204... 205... 206... 207... 208... 209... 210... 211... 212... 213... 214... 215... 216... 217... 218... 219... 220... 221... 222... 223... 224... 225... 226... 227... 228... 229... 230... 232... 232... 233... 234... 235... 236... 237... 238... 239... 240... 241... 242... 243... 244... 245... 246... 247... 248... 249... 250... 251... 252... 253... 254... 255... 256... 257... 258... 259... 260... 261... 262... 263... 264... 265... 266... 267... 268... 269... 270... 271... 272... 273... 274... 275... 276... 277... 278... 279... 280... 281... 282... 283... 284... 285... 286... 287... 288... 289... 290... 291... 292... 293... 294... 295... 296... 297... 298... 299... 300... 301... 302... 303... 304... 305... 306... 307... 308... 309... 310... 311... 312... 313... 314... 315... 316... 317... 318... 319... 320... 321... 322... 324..."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/big_file/output.toffee"] = { + bundlePath: "/big_file/output.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/big_file/output.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(1); + _ln(1); + _to("0... 1... 2... 3... 4... 5... 6... 7... 8... 9... 10... 11... 12... 13... 14... 15... 16... 17... 18... 19... 20... 21... 22... 23... 24... 25... 26... 27... 28... 29... 30... 31... 32... 33... 34... 35... 36... 37... 38... 39... 40... 41... 42... 43... 44... 45... 46... 47... 48... 49... 50... 51... 52... 53... 54... 55... 56... 57... 58... 59... 60... 61... 62... 63... 64... 65... 66... 67... 68... 70... 70... 71... 72... 73... 74... 75... 76... 77... 78... 79... 80... 81... 82... 83... 84... 85... 86... 87... 88... 89... 90... 91... 92... 93... 94... 95... 96... 97... 98... 99... 100... 101... 102... 103... 104... 105... 106... 107... 108... 109... 110... 111... 112... 113... 114... 115... 116... 117... 118... 119... 120... 121... 122... 123... 124... 125... 126... 127... 128... 129... 130... 131... 132... 133... 134... 135... 136... 137... 138... 139... 140... 141... 142... 143... 144... 145... 146... 147... 148... 149... 150... 151... 152... 153... 154... 155... 156... 157... 158... 159... 160... 162...162... 163... 164... 165... 166... 167... 168... 169... 170... 171... 172... 173... 174... 175... 176... 177... 178... 179... 180... 181... 182... 183... 184... 185... 186... 187... 188... 189... 190... 191... 192... 193... 194... 195... 196... 197... 198... 199... 200... 201... 202... 203... 204... 205... 206... 207... 208... 209... 210... 211... 212... 213... 214... 215... 216... 217... 218... 219... 220... 221... 222... 223... 224... 225... 226... 227... 228... 229... 230... 232... 232... 233... 234... 235... 236... 237... 238... 239... 240... 241... 242... 243... 244... 245... 246... 247... 248... 249... 250... 251... 252... 253... 254... 255... 256... 257... 258... 259... 260... 261... 262... 263... 264... 265... 266... 267... 268... 269... 270... 271... 272... 273... 274... 275... 276... 277... 278... 279... 280... 281... 282... 283... 284... 285... 286... 287... 288... 289... 290... 291... 292... 293... 294... 295... 296... 297... 298... 299... 300... 301... 302... 303... 304... 305... 306... 307... 308... 309... 310... 311... 312... 313... 314... 315... 316... 317... 318... 319... 320... 321... 322... 324..."); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/comments/input.toffee"]={bundlePath:"/comments/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(_){return __locals.__toffee.out.push(_)},_ln=function(_){return __locals.__toffee.lineno=_},_ts=function(_){return __locals.__toffee.state=_},toffee.__augmentLocals(__locals,"/comments/input.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("\n"),_to("Pass 1\n"),_ts(2),_ts(1),_to("\n"),_to("Pass 2\n"),_ts(2),_ts(2),_ts(1),_to("\n"),_to("Pass 3"),_ts(2),_ts(1),_to("\n"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/comments/input.toffee"] = { + bundlePath: "/comments/input.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/comments/input.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(1); + _ln(1); + _to("\n"); + _ln(2); + _to("Pass 1\n"); + _ln(3); + _ts(2); + _ts(1); + _ln(8); + _to("\n"); + _ln(9); + _to("Pass 2\n"); + _ln(10); + _ts(2); + _ts(2); + + /* + print "FAIL FAIL FAIL" + #{ foo } + */ + _ts(1); + _ln(19); + _to("\n"); + _ln(20); + _to("Pass 3"); + _ts(2); + _ts(1); + _to("\n"); + _ln(21); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/comments/output.toffee"]={bundlePath:"/comments/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/comments/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("\n"),_to("Pass 1\n"),_to("\n"),_to("Pass 2\n"),_to("\n"),_to("Pass 3\n"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/comments/output.toffee"] = { + bundlePath: "/comments/output.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/comments/output.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(1); + _ln(1); + _to("\n"); + _ln(2); + _to("Pass 1\n"); + _ln(3); + _to("\n"); + _ln(4); + _to("Pass 2\n"); + _ln(5); + _to("\n"); + _ln(6); + _to("Pass 3\n"); + _ln(7); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/custom_escape/input.toffee"]={bundlePath:"/custom_escape/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var w,x,y,z,__repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/custom_escape/input.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(2),x='"Hello world"',y="",z="click&clack",w=[1,2,{place:"The Dreadfort"}],_ts(1),_to("

    \n"),_to(" custom x = "),_to(""+(null!=x?escape(x):"")),_to("\n"),_to(" custom y = "),_to(""+(null!=y?escape(y):"")),_to("\n"),_to(" custom z = "),_to(""+(null!=z?escape(z):"")),_to("\n"),_to(" custom w = "),_to(""+(null!=w?escape(w):"")),_to("\n"),_to("

    "),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/custom_escape/input.toffee"] = { + bundlePath: "/custom_escape/input.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var w, x, y, z, __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/custom_escape/input.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(2); + x = '"Hello world"'; + y = ''; + z = 'click&clack'; + w = [ + 1, 2, { + "place": "The Dreadfort" + } + ]; + _ts(1); + _ln(6); + _to("

    \n"); + _ln(7); + _to(" custom x = "); + _to("" + (x != null ? escape(x) : '')); + _to("\n"); + _ln(8); + _to(" custom y = "); + _to("" + (y != null ? escape(y) : '')); + _to("\n"); + _ln(9); + _to(" custom z = "); + _to("" + (z != null ? escape(z) : '')); + _to("\n"); + _ln(10); + _to(" custom w = "); + _to("" + (w != null ? escape(w) : '')); + _to("\n"); + _ln(11); + _to("

    "); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/custom_escape/output.toffee"]={bundlePath:"/custom_escape/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(t){return __locals.__toffee.out.push(t)},_ln=function(t){return __locals.__toffee.lineno=t},_ts=function(t){return __locals.__toffee.state=t},toffee.__augmentLocals(__locals,"/custom_escape/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("

    \n"),_to(" custom x = Helloworldscriptvarx100script\n"),_to(" custom y = td\n"),_to(" custom z = clickclack\n"),_to(" custom w = 12objectObject\n"),_to("

    "),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/custom_escape/output.toffee"] = { + bundlePath: "/custom_escape/output.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/custom_escape/output.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(1); + _ln(1); + _to("

    \n"); + _ln(2); + _to(" custom x = Helloworldscriptvarx100script\n"); + _ln(3); + _to(" custom y = td\n"); + _ln(4); + _to(" custom z = clickclack\n"); + _ln(5); + _to(" custom w = 12objectObject\n"); + _ln(6); + _to("

    "); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/eco_compare/input.toffee"]={bundlePath:"/eco_compare/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var f,friends,project,__repress,_i,_len,_ln,_ref,_ref1,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/eco_compare/input.toffee"),__locals){if(__toffee.out=[],_ts(1),_ts(2),this.projects=[{url:"http://localhost:3000",name:"okcupid",description:"A site for singles"},{url:"http://localhost:3001",name:"tallygram",description:"A site for anyone"}],this.projects.length)for(_ref1=this.projects,_i=0,_len=_ref1.length;_i<_len;_i++)project=_ref1[_i],_ts(1),_ts(1),_to("\n"),_to(" "),_to(""+escape(project.name)),_to("\n"),_to("

    "),_to(""+escape(project.description)),_to("

    \n"),_to(" "),_ts(2);else _ts(1),_ts(1),_to(" No projects "),_ts(2);return friends=[{gender:"f",name:"Jennie"},{gender:"f",name:"Rachel"},{gender:"m",name:"Petar"},{gender:"f",name:"Marissa"}],_ts(1),_to("\n"),_to("\n"),_to("You have "),_to(""+escape(function(){var e,t,_;for(_=[],e=0,t=friends.length;e"); + _to("" + (escape(project.name))); + _to("\n"); + _ln(10); + _to("

    "); + _to("" + (escape(project.description))); + _to("

    \n"); + _ln(11); + _to(" "); + _ts(2); + } + } else { + _ts(1); + _ts(1); + _ln(12); + _to(" No projects "); + _ts(2); + } + friends = [ + { + gender: "f", + name: "Jennie" + }, { + gender: "f", + name: "Rachel" + }, { + gender: "m", + name: "Petar" + }, { + gender: "f", + name: "Marissa" + } + ]; + _ts(1); + _ln(20); + _to("\n"); + _ln(21); + _to("\n"); + _ln(22); + _to("You have "); + _to("" + (escape(((function() { + var _j, _len1, _results; + _results = []; + for (_j = 0, _len1 = friends.length; _j < _len1; _j++) { + f = friends[_j]; + if (f.gender === "f") { + _results.push(f); + } + } + return _results; + })()).length))); + _to(" female friends."); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/eco_compare/output.toffee"]={bundlePath:"/eco_compare/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/eco_compare/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("\n"),_to(' okcupid\n'),_to("

    A site for singles

    \n"),_to(" \n"),_to(' tallygram\n'),_to("

    A site for anyone

    \n"),_to(" \n"),_to("\n"),_to("You have 3 female friends."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/eco_compare/output.toffee"] = { + bundlePath: "/eco_compare/output.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/eco_compare/output.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(1); + _ln(1); + _to("\n"); + _ln(2); + _to(" okcupid\n"); + _ln(3); + _to("

    A site for singles

    \n"); + _ln(4); + _to(" \n"); + _ln(5); + _to(" tallygram\n"); + _ln(6); + _to("

    A site for anyone

    \n"); + _ln(7); + _to(" \n"); + _ln(8); + _to("\n"); + _ln(9); + _to("You have 3 female friends."); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/escape/input.toffee"]={bundlePath:"/escape/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var v,w,x,y,z,__repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(t){return __locals.__toffee.out.push(t)},_ln=function(t){return __locals.__toffee.lineno=t},_ts=function(t){return __locals.__toffee.state=t},toffee.__augmentLocals(__locals,"/escape/input.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(2),x='"Hello world"',y="
    ",z="click&clack",w=[1,2,{place:"The Dreadfort"}],v=["\u2028","\u2029"],_ts(1),_to("

    \n"),_to(" default x = "),_to(""+(null!=x?escape(x):"")),_to("\n"),_to(" default y = "),_to(""+(null!=y?escape(y):"")),_to("\n"),_to(" default z = "),_to(""+(null!=z?escape(z):"")),_to("\n"),_to(" default w = "),_to(""+(null!=w?escape(w):"")),_to("\n"),_to(" default r = "),_to(""+("undefined"!=typeof r&&null!==r?escape(r):"")),_to("\n"),_to(" default w.foo = "),_to(""+escape(w.foo)),_to("\n"),_to(" default v = "),_to(""+(null!=v?escape(v):"")),_to("\n"),_to("

    \n"),_to("

    \n"),_to(" raw x = "),_to(""+raw(x)),_to("\n"),_to(" raw y = "),_to(""+raw(y)),_to("\n"),_to(" raw z = "),_to(""+raw(z)),_to("\n"),_to(" raw w = "),_to(""+raw(w)),_to("\n"),_to("

    \n"),_to("\n"),_to("

    \n"),_ts(2),_ts(2),print(" raw printed x = "+x+"\n"),print(" raw printed y = "+y+"\n"),print(" raw printed z = "+z+"\n"),print(" raw printed w = "+w),_ts(1),_to("\n"),_to("

    \n"),_to("

    \n"),_ts(2),_ts(2),print(" json printed x = "+raw(raw(raw(raw(json(x)))))+"\n"),print(" json printed y = "+raw(raw(raw(raw(json(y)))))+"\n"),print(" json printed z = "+raw(raw(raw(raw(json(z)))))+"\n"),print(" json printed w = "+raw(raw(raw(raw(json(w)))))+"\n"),print(" json printed v = "+raw(raw(raw(raw(json(v)))))),_ts(1),_to("\n"),_to("

    \n"),_to("

    \n"),_ts(2),_ts(2),print(" html printed longhand x = "+__toffee.html(x)+"\n"),print(" html printed longhand y = "+__toffee.html(y)+"\n"),print(" html printed longhand z = "+__toffee.html(z)+"\n"),print(" html printed longhand w = "+__toffee.html(w)),_ts(1),_to("\n"),_to("

    \n"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/escape/input.toffee"] = { + bundlePath: "/escape/input.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var dir, v, w, x, y, z, __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/escape/input.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(2); + x = '"Hello world"'; + y = '
    '; + z = 'click&clack'; + w = [ + 1, 2, { + "place": "The Dreadfort" + } + ]; + v = ["\u2028", "\u2029"]; + dir = ["hi\u{202e}there"]; + _ts(1); + _ln(8); + _to("

    \n"); + _ln(9); + _to(" default x = "); + _to("" + (x != null ? escape(x) : '')); + _to("\n"); + _ln(10); + _to(" default y = "); + _to("" + (y != null ? escape(y) : '')); + _to("\n"); + _ln(11); + _to(" default z = "); + _to("" + (z != null ? escape(z) : '')); + _to("\n"); + _ln(12); + _to(" default w = "); + _to("" + (w != null ? escape(w) : '')); + _to("\n"); + _ln(13); + _to(" default r = "); + _to("" + (typeof r !== "undefined" && r !== null ? escape(r) : '')); + _to("eol\n"); + _ln(14); + _to(" default w.foo = "); + _to("" + (escape(w.foo))); + _to("eol\n"); + _ln(15); + _to(" default v = "); + _to("" + (v != null ? escape(v) : '')); + _to("\n"); + _ln(16); + _to(" default dir = "); + _to("" + (dir != null ? escape(dir) : '')); + _to("\n"); + _ln(17); + _to(" default dir0 = "); + _to("" + (escape(dir[0]))); + _to("\n"); + _ln(18); + _to("

    \n"); + _ln(19); + _to("

    \n"); + _ln(20); + _to(" raw x = "); + _to("" + (raw(x))); + _to("\n"); + _ln(21); + _to(" raw y = "); + _to("" + (raw(y))); + _to("\n"); + _ln(22); + _to(" raw z = "); + _to("" + (raw(z))); + _to("\n"); + _ln(23); + _to(" raw w = "); + _to("" + (raw(w))); + _to("\n"); + _ln(24); + _to("

    \n"); + _ln(25); + _to("\n"); + _ln(32); + _to("

    \n"); + _ln(33); + _ts(2); + _ts(2); + print(" raw printed x = " + x + "\n"); + print(" raw printed y = " + y + "\n"); + print(" raw printed z = " + z + "\n"); + print(" raw printed w = " + w); + _ts(1); + _ln(38); + _to("\n"); + _ln(39); + _to("

    \n"); + _ln(40); + _to("

    \n"); + _ln(41); + _ts(2); + _ts(2); + print(" json printed x = " + (raw(raw(raw(raw(json(x)))))) + "\n"); + print(" json printed y = " + (raw(raw(raw(raw(json(y)))))) + "\n"); + print(" json printed z = " + (raw(raw(raw(raw(json(z)))))) + "\n"); + print(" json printed w = " + (raw(raw(raw(raw(json(w)))))) + "\n"); + print(" json printed v = " + (raw(raw(raw(raw(json(v))))))); + _ts(1); + _ln(47); + _to("\n"); + _ln(48); + _to("

    \n"); + _ln(49); + _to("

    \n"); + _ln(50); + _ts(2); + _ts(2); + print(" html printed longhand x = " + (__toffee.html(x)) + "\n"); + print(" html printed longhand y = " + (__toffee.html(y)) + "\n"); + print(" html printed longhand z = " + (__toffee.html(z)) + "\n"); + print(" html printed longhand w = " + (__toffee.html(w))); + _ts(1); + _ln(55); + _to("\n"); + _ln(56); + _to("

    \n"); + _ln(57); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/escape/output.toffee"]={bundlePath:"/escape/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(t){return __locals.__toffee.out.push(t)},_ln=function(t){return __locals.__toffee.lineno=t},_ts=function(t){return __locals.__toffee.state=t},toffee.__augmentLocals(__locals,"/escape/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("

    \n"),_to(" default x = "Hello world"\n"),_to(" default y = <hr />\n"),_to(" default z = click&clack\n"),_to(' default w = [1,2,{"place":"The Dreadfort"}]\n'),_to(" default r = \n"),_to(" default w.foo = \n"),_to(' default v = ["\\u2028","\\u2029"]\n'),_to("

    \n"),_to("

    \n"),_to(' raw x = "Hello world"\n'),_to(" raw y =


    \n"),_to(" raw z = click&clack\n"),_to(" raw w = 1,2,[object Object]\n"),_to("

    \n"),_to("\n"),_to("

    \n"),_to(' raw printed x = "Hello world"\n'),_to(" raw printed y =


    \n"),_to(" raw printed z = click&clack\n"),_to(" raw printed w = 1,2,[object Object]\n"),_to("

    \n"),_to("

    \n"),_to(' json printed x = "\\"Hello world\\""\n'),_to(' json printed y = "\\u003Chr /\\u003E"\n'),_to(' json printed z = "click\\u0026clack"\n'),_to(' json printed w = [1,2,{"place":"The Dreadfort"}]\n'),_to(' json printed v = ["\\u2028","\\u2029"]\n'),_to("

    \n"),_to("

    \n"),_to(" html printed longhand x = "Hello world"\n"),_to(" html printed longhand y = <hr />\n"),_to(" html printed longhand z = click&clack\n"),_to(" html printed longhand w = 1,2,[object Object]\n"),_to("

    \n"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/escape/output.toffee"] = { + bundlePath: "/escape/output.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/escape/output.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(1); + _ln(1); + _to("

    \n"); + _ln(2); + _to(" default x = "Hello world"\n"); + _ln(3); + _to(" default y = <hr />\n"); + _ln(4); + _to(" default z = click&clack\n"); + _ln(5); + _to(" default w = [1,2,{\"place\":\"The Dreadfort\"}]\n"); + _ln(6); + _to(" default r = eol\n"); + _ln(7); + _to(" default w.foo = eol\n"); + _ln(8); + _to(" default v = [\"\\u2028\",\"\\u2029\"]\n"); + _ln(9); + _to(" default dir = [\"hi\\u202ethere\"]\n"); + _ln(10); + _to(" default dir0 = hithere\n"); + _ln(11); + _to("

    \n"); + _ln(12); + _to("

    \n"); + _ln(13); + _to(" raw x = \"Hello world\"\n"); + _ln(14); + _to(" raw y =


    \n"); + _ln(15); + _to(" raw z = click&clack\n"); + _ln(16); + _to(" raw w = 1,2,[object Object]\n"); + _ln(17); + _to("

    \n"); + _ln(18); + _to("\n"); + _ln(25); + _to("

    \n"); + _ln(26); + _to(" raw printed x = \"Hello world\"\n"); + _ln(27); + _to(" raw printed y =


    \n"); + _ln(28); + _to(" raw printed z = click&clack\n"); + _ln(29); + _to(" raw printed w = 1,2,[object Object]\n"); + _ln(30); + _to("

    \n"); + _ln(31); + _to("

    \n"); + _ln(32); + _to(" json printed x = \"\\\"Hello world\\\"\"\n"); + _ln(33); + _to(" json printed y = \"\\u003Chr /\\u003E\"\n"); + _ln(34); + _to(" json printed z = \"click\\u0026clack\"\n"); + _ln(35); + _to(" json printed w = [1,2,{\"place\":\"The Dreadfort\"}]\n"); + _ln(36); + _to(" json printed v = [\"\\u2028\",\"\\u2029\"]\n"); + _ln(37); + _to("

    \n"); + _ln(38); + _to("

    \n"); + _ln(39); + _to(" html printed longhand x = "Hello world"\n"); + _ln(40); + _to(" html printed longhand y = <hr />\n"); + _ln(41); + _to(" html printed longhand z = click&clack\n"); + _ln(42); + _to(" html printed longhand w = 1,2,[object Object]\n"); + _ln(43); + _to("

    \n"); + _ln(44); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/hello_world/input.toffee"]={bundlePath:"/hello_world/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/hello_world/input.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to(""+("undefined"!=typeof greeting&&null!==greeting?escape(greeting):"")),_to(", world."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/hello_world/input.toffee"] = { + bundlePath: "/hello_world/input.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/hello_world/input.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(1); + _ln(1); + _to("" + (typeof greeting !== "undefined" && greeting !== null ? escape(greeting) : '')); + _to(", world."); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/hello_world/output.toffee"]={bundlePath:"/hello_world/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/hello_world/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("Hello, world."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/hello_world/output.toffee"] = { + bundlePath: "/hello_world/output.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/hello_world/output.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(1); + _ln(1); + _to("Hello, world."); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/hello_world/temp.toffee"]={bundlePath:"/hello_world/temp.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/hello_world/temp.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("a\n"),_to("b\n"),_to("c\n"),_to(""+escape(passed_fn(100))),_to("\n"),_to("d\n"),_to("e\n"),_to("f"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/hello_world/temp.toffee"] = { + bundlePath: "/hello_world/temp.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/hello_world/temp.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(1); + _ln(1); + _to("a\n"); + _ln(2); + _to("b\n"); + _ln(3); + _to("c\n"); + _ln(4); + _to("" + (escape(passed_fn(100)))); + _to("\n"); + _ln(5); + _to("d\n"); + _ln(6); + _to("e\n"); + _ln(7); + _to("f"); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/include_order/child.toffee"]={bundlePath:"/include_order/child.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(_){return __locals.__toffee.out.push(_)},_ln=function(_){return __locals.__toffee.lineno=_},_ts=function(_){return __locals.__toffee.state=_},toffee.__augmentLocals(__locals,"/include_order/child.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("a\n"),_ts(2),_ts(2),say_hi(),_ts(1),_to("\n"),_to("b"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/include_order/child.toffee"] = { + bundlePath: "/include_order/child.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/include_order/child.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(1); + _ln(1); + _to("a\n"); + _ln(2); + _ts(2); + _ts(2); + say_hi(); + _ts(1); + _ln(4); + _to("\n"); + _ln(5); + _to("b"); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/include_order/input.toffee"]={bundlePath:"/include_order/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var say_hi,__repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(_){return __locals.__toffee.out.push(_)},_ln=function(_){return __locals.__toffee.lineno=_},_ts=function(_){return __locals.__toffee.state=_},toffee.__augmentLocals(__locals,"/include_order/input.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(2),say_hi=function(){return _ts(1),_ts(1),_to("hi"),_ts(2)},_ts(1),_to("1\n"),_to("2\n"),_to(""+partial("child.toffee",{say_hi:say_hi})),_to("\n"),_to("3\n"),_to("4"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/include_order/input.toffee"] = { + bundlePath: "/include_order/input.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var say_hi, __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/include_order/input.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(2); + say_hi = function() { + _ts(1); + _ts(1); + _ln(3); + _to("hi"); + return _ts(2); + }; + _ts(1); + _ln(4); + _to("1\n"); + _ln(5); + _to("2\n"); + _ln(6); + _to("" + (partial("child.toffee", { + say_hi: say_hi + }))); + _to("\n"); + _ln(7); + _to("3\n"); + _ln(8); + _to("4"); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/include_order/output.toffee"]={bundlePath:"/include_order/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(_){return __locals.__toffee.out.push(_)},_ln=function(_){return __locals.__toffee.lineno=_},_ts=function(_){return __locals.__toffee.state=_},toffee.__augmentLocals(__locals,"/include_order/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("1\n"),_to("2\n"),_to("hia\n"),_to("\n"),_to("b\n"),_to("3\n"),_to("4"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/include_order/output.toffee"] = { + bundlePath: "/include_order/output.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/include_order/output.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(1); + _ln(1); + _to("1\n"); + _ln(2); + _to("2\n"); + _ln(3); + _to("hia\n"); + _ln(4); + _to("\n"); + _ln(5); + _to("b\n"); + _ln(6); + _to("3\n"); + _ln(7); + _to("4"); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/include_recursion/input.toffee"]={bundlePath:"/include_recursion/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/include_recursion/input.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(2),0===countdown?(_ts(1),_ts(1),_to("blastoff!"),_ts(2)):print(""+countdown+"..."+partial("input.toffee",{countdown:countdown-1})),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/include_recursion/input.toffee"] = { + bundlePath: "/include_recursion/input.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/include_recursion/input.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(2); + if (countdown === 0) { + _ts(1); + _ts(1); + _ln(2); + _to("blastoff!"); + _ts(2); + } else { + print("" + countdown + "..." + (partial('input.toffee', { + countdown: countdown - 1 + }))); + } + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/include_recursion/output.toffee"]={bundlePath:"/include_recursion/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/include_recursion/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("10...9...8...7...6...5...4...3...2...1...blastoff!"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/include_recursion/output.toffee"] = { + bundlePath: "/include_recursion/output.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/include_recursion/output.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(1); + _ln(1); + _to("10...9...8...7...6...5...4...3...2...1...blastoff!"); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/include_techniques/input.toffee"]={bundlePath:"/include_techniques/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/include_techniques/input.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to(""+partial("message.toffee",{from:"Chris "})),_to("\n"),_to(""+partial("message.toffee",{from:"Max & Sam"})),_to("\n"),_ts(2),_ts(2),print(partial("message.toffee",{from:"Christian"})),_ts(1),_ts(1),_to(""+partial("message.toffee",{from:"Jennie"})),_ts(2),print(partial("message.toffee",{sender:"The enemy"})),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/include_techniques/input.toffee"] = { + bundlePath: "/include_techniques/input.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/include_techniques/input.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(1); + _ln(1); + _to("" + (partial("message.toffee", { + from: "Chris " + }))); + _to("\n"); + _ln(2); + _to("" + (partial("message.toffee", { + from: "Max & Sam" + }))); + _to("\n"); + _ln(3); + _ts(2); + _ts(2); + print(partial("message.toffee", { + from: "Christian" + })); + _ts(1); + _ts(1); + _ln(5); + _to("" + (partial("message.toffee", { + from: "Jennie" + }))); + _ts(2); + print(partial("message.toffee", { + sender: "The enemy" + })); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/include_techniques/message.toffee"]={bundlePath:"/include_techniques/message.toffee"},tmpl.render=tmpl.pub=function(__locals){var from,__repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/include_techniques/message.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(2),from=from||"Unknown",_ts(1),_to("From: "),_to(""+(null!=from?escape(from):"")),_to(" \n"),_to("Msg: Hello, world\n"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/include_techniques/message.toffee"] = { + bundlePath: "/include_techniques/message.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var from, __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/include_techniques/message.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(2); + from = from || "Unknown"; + _ts(1); + _ln(3); + _to("From: "); + _to("" + (from != null ? escape(from) : '')); + _to(" \n"); + _ln(4); + _to("Msg: Hello, world\n"); + _ln(5); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/include_techniques/output.toffee"]={bundlePath:"/include_techniques/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/include_techniques/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("From: Chris <ccoyne77@gmail> \n"),_to("Msg: Hello, world\n"),_to("\n"),_to("From: Max & Sam \n"),_to("Msg: Hello, world\n"),_to("\n"),_to("From: Christian \n"),_to("Msg: Hello, world\n"),_to("From: Jennie \n"),_to("Msg: Hello, world\n"),_to("From: Unknown \n"),_to("Msg: Hello, world\n"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/include_techniques/output.toffee"] = { + bundlePath: "/include_techniques/output.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/include_techniques/output.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(1); + _ln(1); + _to("From: Chris <ccoyne77@gmail> \n"); + _ln(2); + _to("Msg: Hello, world\n"); + _ln(3); + _to("\n"); + _ln(4); + _to("From: Max & Sam \n"); + _ln(5); + _to("Msg: Hello, world\n"); + _ln(6); + _to("\n"); + _ln(7); + _to("From: Christian \n"); + _ln(8); + _to("Msg: Hello, world\n"); + _ln(9); + _to("From: Jennie \n"); + _ln(10); + _to("Msg: Hello, world\n"); + _ln(11); + _to("From: Unknown \n"); + _ln(12); + _to("Msg: Hello, world\n"); + _ln(13); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/indent_attack/input.toffee"]={bundlePath:"/indent_attack/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var i,square,x,__repress,_i,_j,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(_){return __locals.__toffee.out.push(_)},_ln=function(_){return __locals.__toffee.lineno=_},_ts=function(_){return __locals.__toffee.state=_},toffee.__augmentLocals(__locals,"/indent_attack/input.toffee"),__locals){if(__toffee.out=[],_ts(1),_ts(1),_to("
    \n"),_to(" "),_ts(2),_ts(2),_ts(1),_ts(1),_to("Pass1"),_ts(2),_ts(1),_ts(1),_to("Pass2"),_ts(2),_ts(1),_to("\n"),_to("
    \n"),_to("\n"),_ts(2),_ts(2),_ts(1),_ts(1),_to("Pass3"),_ts(2),_ts(1),_ts(1),_to("Pass4"),_ts(2),_ts(1),_to("\n"),_to("
    \n"),_to("\n"),_ts(2),_ts(2),_ts(1),_ts(1),_to("Pass5"),_ts(2),_ts(1),_ts(1),_to("Pass6"),_ts(2),_ts(1),_to("\n"),_to("\n"),_ts(2),_ts(2),print("Pass7"),_ts(1),_ts(1),_to("Pass8"),_ts(2),_ts(1),_to("\n"),_to("\n"),_ts(2),_ts(2),_ts(1),_ts(1),_to("...passed with flying colors."),_ts(2),_ts(1),_to("\n"),_to("

    \n"),_to(" "),_ts(2),_ts(2),x=20,x>1)for(i=_i=12;12<=x?_ix;i=12<=x?++_i:--_i)square=16,_ts(1),_ts(1),_to("Pass"),_to(""+(null!=i?escape(i):"")),_ts(2),_ts(2),i===square&&(_ts(1),_ts(1),_to("(a perfect square)"),_ts(2));if(_ts(1),_to("\n"),_to(" "),_ts(2),_ts(2),x=20,x>1){for(i=_j=12;12<=x?_jx;i=12<=x?++_j:--_j)square=16;_ts(1),_ts(1),_to("Pass"),_to(""+(null!=i?escape(i):"")),_ts(2),_ts(2),i===square&&(_ts(1),_ts(1),_to("(a perfect square)"),_ts(2))}return _ts(1),_to("\n"),_to("

    "),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res}},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/indent_attack/input.toffee"] = { + bundlePath: "/indent_attack/input.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var i, square, x, __repress, _i, _j, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/indent_attack/input.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(1); + _ln(1); + _to("
    \n"); + _ln(2); + _to(" "); + _ts(2); + _ts(2); + if (1 === 1) { + if (2 === 2) { + if (3 === 3) { + _ts(1); + _ts(1); + _ln(5); + _to("Pass1"); + _ts(2); + } + } + } + if (1 === 1) { + if (2 === 3) { + if (3 === 3) { + _ts(1); + _ts(1); + _ln(9); + _to("Fail"); + _ts(2); + } else { + _ts(1); + _ts(1); + _ln(11); + _to("Fail"); + _ts(2); + } + } else { + if (2 === 2) { + if (3 === 3) { + _ts(1); + _ts(1); + _ln(14); + _to("Pass2"); + _ts(2); + } + } + } + } + _ts(1); + _ln(15); + _to("\n"); + _ln(16); + _to("
    \n"); + _ln(17); + _to("\n"); + _ln(18); + _ts(2); + _ts(2); + if (1 === 1) { + if (2 === 2) { + if (3 === 3) { + _ts(1); + _ts(1); + _ln(21); + _to("Pass3"); + _ts(2); + } + } + } + if (1 === 1) { + if (2 === 3) { + if (3 === 3) { + _ts(1); + _ts(1); + _ln(25); + _to("Fail"); + _ts(2); + } else { + _ts(1); + _ts(1); + _ln(27); + _to("Fail"); + _ts(2); + } + } else { + if (2 === 2) { + if (3 === 3) { + _ts(1); + _ts(1); + _ln(30); + _to("Pass4"); + _ts(2); + } + } + } + } + _ts(1); + _ln(31); + _to("\n"); + _ln(32); + _to("
    \n"); + _ln(33); + _to("\n"); + _ln(34); + _ts(2); + _ts(2); + if (10 === 10) { + if (20 === 20) { + if (30 === 30) { + _ts(1); + _ts(1); + _ln(37); + _to("Pass5"); + _ts(2); + } + } + } + if (10 === 10) { + if (20 === 30) { + if (30 === 30) { + _ts(1); + _ts(1); + _ln(41); + _to("Fail"); + _ts(2); + } else { + _ts(1); + _ts(1); + _ln(43); + _to("Fail"); + _ts(2); + } + } else { + if (20 === 20) { + if (30 === 30) { + _ts(1); + _ts(1); + _ln(46); + _to("Pass6"); + _ts(2); + } + } + } + } + _ts(1); + _ln(47); + _to("\n"); + _ln(48); + _to("\n"); + _ln(49); + _ts(2); + _ts(2); + if (99 === 99) { + print('Pass7'); + } else { + print('Fail'); + _ts(1); + _ts(1); + _ln(54); + _to("Fail8"); + _ts(2); + } + _ts(1); + _ts(1); + _ln(55); + _to("Pass8"); + _ts(2); + _ts(1); + _ln(56); + _to("\n"); + _ln(57); + _to("\n"); + _ln(58); + _ts(2); + _ts(2); + _ts(1); + _ts(1); + _ln(60); + _to("...passed with flying colors."); + _ts(2); + _ts(1); + _ln(82); + _to("\n"); + _ln(83); + _to("

    \n"); + _ln(84); + _to(" "); + _ts(2); + _ts(2); + x = 20; + if (x > 1) { + for (i = _i = 12; 12 <= x ? _i < x : _i > x; i = 12 <= x ? ++_i : --_i) { + square = 16; + _ts(1); + _ts(1); + _ln(89); + _to("Pass"); + _to("" + (i != null ? escape(i) : '')); + _ts(2); + _ts(2); + if (i === square) { + _ts(1); + _ts(1); + _ln(90); + _to("(a perfect square)"); + _ts(2); + } + } + } + _ts(1); + _ln(92); + _to("\n"); + _ln(93); + _to(" "); + _ts(2); + _ts(2); + x = 20; + if (x > 1) { + for (i = _j = 12; 12 <= x ? _j < x : _j > x; i = 12 <= x ? ++_j : --_j) { + square = 16; + } + _ts(1); + _ts(1); + _ln(98); + _to("Pass"); + _to("" + (i != null ? escape(i) : '')); + _ts(2); + _ts(2); + if (i === square) { + _ts(1); + _ts(1); + _ln(99); + _to("(a perfect square)"); + _ts(2); + } + } + _ts(1); + _ln(101); + _to("\n"); + _ln(102); + _to("

    "); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/indent_attack/output.toffee"]={bundlePath:"/indent_attack/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(t){return __locals.__toffee.out.push(t)},_ln=function(t){return __locals.__toffee.lineno=t},_ts=function(t){return __locals.__toffee.state=t},toffee.__augmentLocals(__locals,"/indent_attack/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("
    \n"),_to(" Pass1Pass2\n"),_to("
    \n"),_to("\n"),_to("Pass3Pass4\n"),_to("
    \n"),_to("\n"),_to("Pass5Pass6\n"),_to("\n"),_to("Pass7Pass8\n"),_to("\n"),_to("...passed with flying colors.\n"),_to("

    \n"),_to(" Pass12Pass13Pass14Pass15Pass16(a perfect square)Pass17Pass18Pass19\n"),_to(" Pass20\n"),_to("

    "),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/indent_attack/output.toffee"] = { + bundlePath: "/indent_attack/output.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/indent_attack/output.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(1); + _ln(1); + _to("
    \n"); + _ln(2); + _to(" Pass1Pass2\n"); + _ln(3); + _to("
    \n"); + _ln(4); + _to("\n"); + _ln(5); + _to("Pass3Pass4\n"); + _ln(6); + _to("
    \n"); + _ln(7); + _to("\n"); + _ln(8); + _to("Pass5Pass6\n"); + _ln(9); + _to("\n"); + _ln(10); + _to("Pass7Pass8\n"); + _ln(11); + _to("\n"); + _ln(12); + _to("...passed with flying colors.\n"); + _ln(13); + _to("

    \n"); + _ln(14); + _to(" Pass12Pass13Pass14Pass15Pass16(a perfect square)Pass17Pass18Pass19\n"); + _ln(15); + _to(" Pass20\n"); + _ln(16); + _to("

    "); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/junk/input.toffee"]={bundlePath:"/junk/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var supplies,supply,__repress,_i,_len,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(_){return __locals.__toffee.out.push(_)},_ln=function(_){return __locals.__toffee.lineno=_},_ts=function(_){return __locals.__toffee.state=_},toffee.__augmentLocals(__locals,"/junk/input.toffee"),__locals){for(__toffee.out=[],_ts(1),_ts(2),supplies=["broom","mop","vacuum"],_ts(1),_to("
      \n"),_to(" "),_ts(2),_ts(2),_i=0,_len=supplies.length;_i<_len;_i++)supply=supplies[_i],_ts(1),_ts(1),_to("
    • "),_to(""+(null!=supply?escape(supply):"")),_to("
    • "),_ts(2);return _ts(1),_to("\n"),_to("
    "),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res}},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/junk/input.toffee"] = { + bundlePath: "/junk/input.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var supplies, supply, __repress, _i, _len, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/junk/input.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(2); + supplies = ["broom", "mop", "vacuum"]; + _ts(1); + _ln(3); + _to("
      \n"); + _ln(4); + _to(" "); + _ts(2); + _ts(2); + for (_i = 0, _len = supplies.length; _i < _len; _i++) { + supply = supplies[_i]; + _ts(1); + _ts(1); + _to("
    • "); + _to("" + (supply != null ? escape(supply) : '')); + _to("
    • "); + _ts(2); + } + _ts(1); + _to("\n"); + _ln(5); + _to("
    "); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/junk/output.toffee"]={bundlePath:"/junk/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/junk/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("
      \n"),_to("
    • broom
    • mop
    • vacuum
    • \n"),_to("
    "),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/junk/output.toffee"] = { + bundlePath: "/junk/output.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/junk/output.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(1); + _ln(1); + _to("
      \n"); + _ln(2); + _to("
    • broom
    • mop
    • vacuum
    • \n"); + _ln(3); + _to("
    "); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/lambda_fns/input.toffee"]={bundlePath:"/lambda_fns/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var echo_it,print_it,print_it_twice,__repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(t){return __locals.__toffee.out.push(t)},_ln=function(t){return __locals.__toffee.lineno=t},_ts=function(t){return __locals.__toffee.state=t},toffee.__augmentLocals(__locals,"/lambda_fns/input.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(2),print_it=function(t){return _ts(1),_ts(1),_to(""+(null!=t?escape(t):"")),_ts(2)},print_it_twice=function(t){var _;return _ts(1),_ts(1),_to(""+(null!=t?escape(t):"")),_ts(2),_=t,_ts(1),_ts(1),_to(""+(null!=_?escape(_):"")),_ts(2)},echo_it=function(t){var _;return _=t},print_it("Pass"),print_it_twice("Pass"),print(echo_it("Pass")),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/lambda_fns/input.toffee"] = { + bundlePath: "/lambda_fns/input.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var echo_it, print_it, print_it_twice, __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/lambda_fns/input.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(2); + print_it = function(msg) { + _ts(1); + _ts(1); + _ln(2); + _to("" + (msg != null ? escape(msg) : '')); + return _ts(2); + }; + print_it_twice = function(msg) { + var m; + _ts(1); + _ts(1); + _ln(5); + _to("" + (msg != null ? escape(msg) : '')); + _ts(2); + m = msg; + _ts(1); + _ts(1); + _ln(7); + _to("" + (m != null ? escape(m) : '')); + return _ts(2); + }; + echo_it = function(msg) { + var v; + v = msg; + return v; + }; + print_it("Pass"); + print_it_twice("Pass"); + print(echo_it("Pass")); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/lambda_fns/output.toffee"]={bundlePath:"/lambda_fns/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(_){return __locals.__toffee.out.push(_)},_ln=function(_){return __locals.__toffee.lineno=_},_ts=function(_){return __locals.__toffee.state=_},toffee.__augmentLocals(__locals,"/lambda_fns/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("PassPassPassPass"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/lambda_fns/output.toffee"] = { + bundlePath: "/lambda_fns/output.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/lambda_fns/output.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(1); + _ln(1); + _to("PassPassPassPass"); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/multiline_interpolation/foo.toffee"]={bundlePath:"/multiline_interpolation/foo.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/multiline_interpolation/foo.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to(""+("undefined"!=typeof a&&null!==a?escape(a):"")),_to(" "),_to(""+("undefined"!=typeof b&&null!==b?escape(b):"")),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/multiline_interpolation/foo.toffee"] = { + bundlePath: "/multiline_interpolation/foo.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/multiline_interpolation/foo.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(1); + _ln(1); + _to("" + (typeof a !== "undefined" && a !== null ? escape(a) : '')); + _to(" "); + _to("" + (typeof b !== "undefined" && b !== null ? escape(b) : '')); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/multiline_interpolation/input.toffee"]={bundlePath:"/multiline_interpolation/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/multiline_interpolation/input.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to(""+escape("Hello, "+"world")),_to("\n"),_to("
    \n"),_to(""+partial("foo.toffee",{a:"Goodbye"+",",b:"world"})),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/multiline_interpolation/input.toffee"] = { + bundlePath: "/multiline_interpolation/input.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/multiline_interpolation/input.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(1); + _ln(1); + _to("" + (escape("Hello, " + "world"))); + _ln(4); + _to("\n"); + _ln(5); + _to("
    \n"); + _ln(6); + _to("" + (partial("foo.toffee", { + a: "Goodbye" + ',', + b: "world" + }))); + _ln(10); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/multiline_interpolation/output.toffee"]={bundlePath:"/multiline_interpolation/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/multiline_interpolation/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("Hello, world\n"),_to("
    \n"),_to("Goodbye, world"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/multiline_interpolation/output.toffee"] = { + bundlePath: "/multiline_interpolation/output.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/multiline_interpolation/output.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(1); + _ln(1); + _to("Hello, world\n"); + _ln(2); + _to("
    \n"); + _ln(3); + _to("Goodbye, world"); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/passback/const1.toffee"]={bundlePath:"/passback/const1.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/passback/const1.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(2),passback.vx="vx1",passback.vy="vy1",passback.x="oh shit",passback.y="oh noze",_ts(1),_to("\n"),_to("This should output (1)."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/passback/const1.toffee"] = { + bundlePath: "/passback/const1.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/passback/const1.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(2); + passback.vx = "vx1"; + passback.vy = "vy1"; + passback.x = "oh shit"; + passback.y = "oh noze"; + _ts(1); + _ln(6); + _to("\n"); + _ln(7); + _to("This should output (1)."); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/passback/const2.toffee"]={bundlePath:"/passback/const2.toffee"},tmpl.render=tmpl.pub=function(__locals){var vx,vy,__repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/passback/const2.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(2),passback.vz="vz2",vx="Should not set.",vy="Should not set.",_ts(1),_to("\n"),_to("This should not output (2)."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/passback/const2.toffee"] = { + bundlePath: "/passback/const2.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var vx, vy, __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/passback/const2.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(2); + passback.vz = "vz2"; + vx = "Should not set."; + vy = "Should not set."; + _ts(1); + _ln(5); + _to("\n"); + _ln(6); + _to("This should not output (2)."); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/passback/const3.toffee"]={bundlePath:"/passback/const3.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/passback/const3.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(2),passback.vx="vx3",passback.vy="vy3",_ts(1),_to("\n"),_to("This should not output (3)."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/passback/const3.toffee"] = { + bundlePath: "/passback/const3.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/passback/const3.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(2); + passback["vx"] = "vx3"; + passback["vy"] = "vy3"; + _ts(1); + _ln(4); + _to("\n"); + _ln(5); + _to("This should not output (3)."); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/passback/const4.toffee"]={bundlePath:"/passback/const4.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/passback/const4.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(2),passback.vx="vx4",passback.vy="vy4",partial("./const4_sub.toffee"),_ts(1),_to("\n"),_to("This should not output (4)."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/passback/const4.toffee"] = { + bundlePath: "/passback/const4.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/passback/const4.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(2); + passback.vx = "vx4"; + passback.vy = "vy4"; + partial("./const4_sub.toffee"); + _ts(1); + _ln(5); + _to("\n"); + _ln(6); + _to("This should not output (4)."); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/passback/const4_sub.toffee"]={bundlePath:"/passback/const4_sub.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(_){return __locals.__toffee.out.push(_)},_ln=function(_){return __locals.__toffee.lineno=_},_ts=function(_){return __locals.__toffee.state=_},toffee.__augmentLocals(__locals,"/passback/const4_sub.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(2),passback.vx="vx4_sub",passback.vy="vy4_sub",_ts(1),_to("\n"),_to("This should not output (4_sub)."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/passback/const4_sub.toffee"] = { + bundlePath: "/passback/const4_sub.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/passback/const4_sub.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(2); + passback.vx = "vx4_sub"; + passback.vy = "vy4_sub"; + _ts(1); + _ln(4); + _to("\n"); + _ln(5); + _to("This should not output (4_sub)."); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/passback/const5.toffee"]={bundlePath:"/passback/const5.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/passback/const5.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(2),passback.vx="vx5",passback.vy="vy5",print(load("./const5_sub.toffee")),passback.vx=vx,passback.vy=vy,_ts(1),_to("\n"),_to("This should not output (5)."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/passback/const5.toffee"] = { + bundlePath: "/passback/const5.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/passback/const5.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(2); + passback.vx = "vx5"; + passback.vy = "vy5"; + print(load("./const5_sub.toffee")); + passback.vx = vx; + passback.vy = vy; + _ts(1); + _ln(7); + _to("\n"); + _ln(8); + _to("This should not output (5)."); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/passback/const5_sub.toffee"]={bundlePath:"/passback/const5_sub.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(_){return __locals.__toffee.out.push(_)},_ln=function(_){return __locals.__toffee.lineno=_},_ts=function(_){return __locals.__toffee.state=_},toffee.__augmentLocals(__locals,"/passback/const5_sub.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(2),passback.vx="vx5_sub",passback.vy="vy5_sub",_ts(1),_to("\n"),_to("This should not output (5_sub)."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/passback/const5_sub.toffee"] = { + bundlePath: "/passback/const5_sub.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/passback/const5_sub.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(2); + passback.vx = "vx5_sub"; + passback.vy = "vy5_sub"; + _ts(1); + _ln(4); + _to("\n"); + _ln(5); + _to("This should not output (5_sub)."); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/passback/input.toffee"]={bundlePath:"/passback/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/passback/input.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("vx,vy,vz = "),_to(""+("undefined"!=typeof vx&&null!==vx?escape(vx):"")),_to(","),_to(""+("undefined"!=typeof vy&&null!==vy?escape(vy):"")),_to(","),_to(""+("undefined"!=typeof vz&&null!==vz?escape(vz):"")),_to("\n"),_to(""+partial("./const1.toffee")),_to("\n"),_to("vx,vy,vz = "),_to(""+("undefined"!=typeof vx&&null!==vx?escape(vx):"")),_to(","),_to(""+("undefined"!=typeof vy&&null!==vy?escape(vy):"")),_to(","),_to(""+("undefined"!=typeof vz&&null!==vz?escape(vz):"")),_to("\n"),_to(""+load("./const2.toffee")),_to("\n"),_to("vx,vy,vz = "),_to(""+("undefined"!=typeof vx&&null!==vx?escape(vx):"")),_to(","),_to(""+("undefined"!=typeof vy&&null!==vy?escape(vy):"")),_to(","),_to(""+("undefined"!=typeof vz&&null!==vz?escape(vz):"")),_to("\n"),_to(""+load("./const3.toffee")),_to("\n"),_to("vx,vy,vz = "),_to(""+("undefined"!=typeof vx&&null!==vx?escape(vx):"")),_to(","),_to(""+("undefined"!=typeof vy&&null!==vy?escape(vy):"")),_to(","),_to(""+("undefined"!=typeof vz&&null!==vz?escape(vz):"")),_to("\n"),_to(""+load("./const4.toffee")),_to("\n"),_to("vx,vy,vz = "),_to(""+("undefined"!=typeof vx&&null!==vx?escape(vx):"")),_to(","),_to(""+("undefined"!=typeof vy&&null!==vy?escape(vy):"")),_to(","),_to(""+("undefined"!=typeof vz&&null!==vz?escape(vz):"")),_to("\n"),_to(""+load("./const5.toffee")),_to("\n"),_to("vx,vy,vz = "),_to(""+("undefined"!=typeof vx&&null!==vx?escape(vx):"")),_to(","),_to(""+("undefined"!=typeof vy&&null!==vy?escape(vy):"")),_to(","),_to(""+("undefined"!=typeof vz&&null!==vz?escape(vz):"")),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/passback/input.toffee"] = { + bundlePath: "/passback/input.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/passback/input.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(1); + _ln(1); + _to("vx,vy,vz = "); + _to("" + (typeof vx !== "undefined" && vx !== null ? escape(vx) : '')); + _to(","); + _to("" + (typeof vy !== "undefined" && vy !== null ? escape(vy) : '')); + _to(","); + _to("" + (typeof vz !== "undefined" && vz !== null ? escape(vz) : '')); + _to("\n"); + _ln(2); + _to("" + (partial("./const1.toffee"))); + _to("\n"); + _ln(3); + _to("vx,vy,vz = "); + _to("" + (typeof vx !== "undefined" && vx !== null ? escape(vx) : '')); + _to(","); + _to("" + (typeof vy !== "undefined" && vy !== null ? escape(vy) : '')); + _to(","); + _to("" + (typeof vz !== "undefined" && vz !== null ? escape(vz) : '')); + _to("\n"); + _ln(4); + _to("" + (load("./const2.toffee"))); + _to("\n"); + _ln(5); + _to("vx,vy,vz = "); + _to("" + (typeof vx !== "undefined" && vx !== null ? escape(vx) : '')); + _to(","); + _to("" + (typeof vy !== "undefined" && vy !== null ? escape(vy) : '')); + _to(","); + _to("" + (typeof vz !== "undefined" && vz !== null ? escape(vz) : '')); + _to("\n"); + _ln(6); + _to("" + (load("./const3.toffee"))); + _to("\n"); + _ln(7); + _to("vx,vy,vz = "); + _to("" + (typeof vx !== "undefined" && vx !== null ? escape(vx) : '')); + _to(","); + _to("" + (typeof vy !== "undefined" && vy !== null ? escape(vy) : '')); + _to(","); + _to("" + (typeof vz !== "undefined" && vz !== null ? escape(vz) : '')); + _to("\n"); + _ln(8); + _to("" + (load("./const4.toffee"))); + _to("\n"); + _ln(9); + _to("vx,vy,vz = "); + _to("" + (typeof vx !== "undefined" && vx !== null ? escape(vx) : '')); + _to(","); + _to("" + (typeof vy !== "undefined" && vy !== null ? escape(vy) : '')); + _to(","); + _to("" + (typeof vz !== "undefined" && vz !== null ? escape(vz) : '')); + _to("\n"); + _ln(10); + _to("" + (load("./const5.toffee"))); + _to("\n"); + _ln(11); + _to("vx,vy,vz = "); + _to("" + (typeof vx !== "undefined" && vx !== null ? escape(vx) : '')); + _to(","); + _to("" + (typeof vy !== "undefined" && vy !== null ? escape(vy) : '')); + _to(","); + _to("" + (typeof vz !== "undefined" && vz !== null ? escape(vz) : '')); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/passback/output.toffee"]={bundlePath:"/passback/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(_){return __locals.__toffee.out.push(_)},_ln=function(_){return __locals.__toffee.lineno=_},_ts=function(_){return __locals.__toffee.state=_},toffee.__augmentLocals(__locals,"/passback/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("vx,vy,vz = vx0,,\n"),_to("\n"),_to("This should output (1).\n"),_to("vx,vy,vz = vx1,vy1,\n"),_to("\n"),_to("vx,vy,vz = vx1,vy1,vz2\n"),_to("\n"),_to("vx,vy,vz = vx3,vy3,vz2\n"),_to("\n"),_to("vx,vy,vz = vx4,vy4,vz2\n"),_to("\n"),_to("vx,vy,vz = vx5_sub,vy5_sub,vz2"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/passback/output.toffee"] = { + bundlePath: "/passback/output.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/passback/output.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(1); + _ln(1); + _to("vx,vy,vz = vx0,,\n"); + _ln(2); + _to("\n"); + _ln(3); + _to("This should output (1).\n"); + _ln(4); + _to("vx,vy,vz = vx1,vy1,\n"); + _ln(5); + _to("\n"); + _ln(6); + _to("vx,vy,vz = vx1,vy1,vz2\n"); + _ln(7); + _to("\n"); + _ln(8); + _to("vx,vy,vz = vx3,vy3,vz2\n"); + _ln(9); + _to("\n"); + _ln(10); + _to("vx,vy,vz = vx4,vy4,vz2\n"); + _ln(11); + _to("\n"); + _ln(12); + _to("vx,vy,vz = vx5_sub,vy5_sub,vz2"); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/plaintext/input.toffee"]={bundlePath:"/plaintext/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/plaintext/input.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("Hi there."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/plaintext/input.toffee"] = { + bundlePath: "/plaintext/input.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/plaintext/input.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(1); + _ln(1); + _to("Hi there."); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/plaintext/output.toffee"]={bundlePath:"/plaintext/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/plaintext/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("Hi there."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/plaintext/output.toffee"] = { + bundlePath: "/plaintext/output.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/plaintext/output.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(1); + _ln(1); + _to("Hi there."); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/post_process/buncha_junk.toffee"]={bundlePath:"/post_process/buncha_junk.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/post_process/buncha_junk.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("T3246h354is345-i3245s345-534a534-h534i543d534d534e534n543-m534e543s543s543ag5e534.543"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/post_process/buncha_junk.toffee"] = { + bundlePath: "/post_process/buncha_junk.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/post_process/buncha_junk.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(1); + _ln(1); + _to("T3246h354is345-i3245s345-534a534-h534i543d534d534e534n543-m534e543s543s543ag5e534.543"); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/post_process/input.toffee"]={bundlePath:"/post_process/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var clean,reverse,__repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/post_process/input.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to(""+("undefined"!=typeof greeting&&null!==greeting?escape(greeting):"")),_to(", world. \n"),_to(""+partial("./signature.toffee")),_to("\n"),_ts(2),_ts(2),reverse=function(e){var t;return function(){var _,o;for(o=[],_=e.length-1;_>=0;_+=-1)t=e[_],o.push(t);return o}().join("")},clean=function(e){var t;return function(){var _,o,n;for(n=[],_=0,o=e.length;_= 0; _i += -1) { + c = s[_i]; + _results.push(c); + } + return _results; + })()).join(""); + }; + clean = function(s) { + var c; + return ((function() { + var _i, _len, _results; + _results = []; + for (_i = 0, _len = s.length; _i < _len; _i++) { + c = s[_i]; + if (c.match(/[a-z\-]/gi)) { + _results.push(c); + } + } + return _results; + })()).join(""); + }; + _ts(1); + _ln(6); + _to("\n"); + _ln(7); + _to("" + (partial('./buncha_junk.toffee', { + postProcess: function(s) { + return reverse(clean(s)); + } + }))); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/post_process/output.toffee"]={bundlePath:"/post_process/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/post_process/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("This-is-a-hidden-message\n"),_to("\n"),_to(".dlrow leurc ,eybdooG\n"),_to(" .dlrow ,olleH"),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/post_process/output.toffee"] = { + bundlePath: "/post_process/output.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/post_process/output.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(1); + _ln(1); + _to("This-is-a-hidden-message\n"); + _ln(2); + _to("\n"); + _ln(3); + _to(".dlrow leurc ,eybdooG\n"); + _ln(4); + _to(" .dlrow ,olleH"); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/post_process/signature.toffee"]={bundlePath:"/post_process/signature.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/post_process/signature.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("Goodbye, cruel world."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/post_process/signature.toffee"] = { + bundlePath: "/post_process/signature.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/post_process/signature.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(1); + _ln(1); + _to("Goodbye, cruel world."); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/render_no_args/input.toffee"]={bundlePath:"/render_no_args/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/render_no_args/input.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("No arguments passed."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/render_no_args/input.toffee"] = { + bundlePath: "/render_no_args/input.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/render_no_args/input.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(1); + _ln(1); + _to("No arguments passed."); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/render_no_args/output.toffee"]={bundlePath:"/render_no_args/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/render_no_args/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("No arguments passed."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/render_no_args/output.toffee"] = { + bundlePath: "/render_no_args/output.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/render_no_args/output.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(1); + _ln(1); + _to("No arguments passed."); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/snippets/foo/bar/body.toffee"]={bundlePath:"/snippets/foo/bar/body.toffee"},tmpl.render=tmpl.pub=function(__locals){var msg,__repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/snippets/foo/bar/body.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(2),msg=msg||"Unknown message",print(msg),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/snippets/foo/bar/body.toffee"] = { + bundlePath: "/snippets/foo/bar/body.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var msg, __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/snippets/foo/bar/body.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(2); + msg = msg || "Unknown message"; + print(msg); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/snippets/foo/message.toffee"]={bundlePath:"/snippets/foo/message.toffee"},tmpl.render=tmpl.pub=function(__locals){var from,msg,__repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/snippets/foo/message.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(2),from=from||"Unknown sender",msg=msg||"Unknown message.",print("From: "+from+"\n"+snippet("./bar/body.toffee",{msg:msg})),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/snippets/foo/message.toffee"] = { + bundlePath: "/snippets/foo/message.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var from, msg, __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/snippets/foo/message.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(2); + from = from || "Unknown sender"; + msg = msg || "Unknown message."; + print("From: " + from + "\n" + (snippet('./bar/body.toffee', { + msg: msg + }))); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/snippets/input.toffee"]={bundlePath:"/snippets/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/snippets/input.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to(""+partial("./foo/message.toffee")),_to("\n"),_to(""+escape(snippet("./foo/message.toffee"))),_to("\n"),_to(""+partial("./foo/message.toffee",{from:"Sam"})),_to("\n"),_to(""+escape(snippet("./foo/message.toffee",{from:"Max"}))),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/snippets/input.toffee"] = { + bundlePath: "/snippets/input.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/snippets/input.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(1); + _ln(1); + _to("" + (partial("./foo/message.toffee"))); + _to("\n"); + _ln(2); + _to("" + (escape(snippet("./foo/message.toffee")))); + _to("\n"); + _ln(3); + _to("" + (partial("./foo/message.toffee", { + from: "Sam" + }))); + _to("\n"); + _ln(4); + _to("" + (escape(snippet("./foo/message.toffee", { + from: "Max" + })))); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/snippets/output.toffee"]={bundlePath:"/snippets/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(e){return __locals.__toffee.out.push(e)},_ln=function(e){return __locals.__toffee.lineno=e},_ts=function(e){return __locals.__toffee.state=e},toffee.__augmentLocals(__locals,"/snippets/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("From: Preloaded sender\n"),_to("Preloaded message.\n"),_to("From: Unknown sender\n"),_to("Unknown message.\n"),_to("From: Sam\n"),_to("Preloaded message.\n"),_to("From: Max\n"),_to("Unknown message."),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/snippets/output.toffee"] = { + bundlePath: "/snippets/output.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/snippets/output.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(1); + _ln(1); + _to("From: Preloaded sender\n"); + _ln(2); + _to("Preloaded message.\n"); + _ln(3); + _to("From: Unknown sender\n"); + _ln(4); + _to("Unknown message.\n"); + _ln(5); + _to("From: Sam\n"); + _ln(6); + _to("Preloaded message.\n"); + _ln(7); + _to("From: Max\n"); + _ln(8); + _to("Unknown message."); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/special_cases/input.toffee"]={bundlePath:"/special_cases/input.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(_){return __locals.__toffee.out.push(_)},_ln=function(_){return __locals.__toffee.lineno=_},_ts=function(_){return __locals.__toffee.state=_},toffee.__augmentLocals(__locals,"/special_cases/input.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("\n"),_ts(2),_ts(2),_ts(1),_ts(1),_to('"'+'PASSED"'),_ts(2),_ts(1),_to("\n"),_ts(2),_ts(1),_to("\n"),_to("

    \n"),_to(" "),_to(""+print(""+"click & clack")),_to("\n"),_to("

    \n"),_ts(2),_ts(1),_to("\n"),_to("A backslash is a \\\n"),_to(""),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); +(function() { + var tmpl; + + tmpl = toffee.templates["/special_cases/input.toffee"] = { + bundlePath: "/special_cases/input.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/special_cases/input.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(1); + _ln(5); + _to("\n"); + _ln(6); + _ts(2); + _ts(2); + _ts(1); + _ts(1); + _ln(7); + _to('"' + "PASSED" + '"'); + _ts(2); + _ts(1); + _ln(8); + _to("\n"); + _ln(9); + _ts(2); + _ts(1); + _ln(13); + _to("\n"); + _ln(14); + _to("

    \n"); + _ln(15); + _to(" "); + _to("" + (print("" + 'click & clack' + ""))); + _to("\n"); + _ln(16); + _to("

    \n"); + _ln(17); + _ts(2); + _ts(1); + _ln(21); + _to("\n"); + _ln(22); + _to("A backslash is a \\\n"); + _ln(23); + _to(""); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; -(function(){var tmpl;if(tmpl=toffee.templates["/special_cases/output.toffee"]={bundlePath:"/special_cases/output.toffee"},tmpl.render=tmpl.pub=function(__locals){var __repress,_ln,_ref,_to,_ts;with(__locals=__locals||{},__repress=null!=(_ref=__locals.__toffee)?_ref.repress:void 0,_to=function(_){return __locals.__toffee.out.push(_)},_ln=function(_){return __locals.__toffee.lineno=_},_ts=function(_){return __locals.__toffee.state=_},toffee.__augmentLocals(__locals,"/special_cases/output.toffee"),__locals)return __toffee.out=[],_ts(1),_ts(1),_to("\n"),_to('"'+'PASSED"\n'),_to("\n"),_to("

    \n"),_to(" click & clack\n"),_to("

    \n"),_to("\n"),_to("A backslash is a \\\n"),_to(""),_ts(2),__toffee.res=__toffee.out.join(""),"undefined"!=typeof postProcess&&null!==postProcess&&(__toffee.res=postProcess(__toffee.res)),__repress?"":__toffee.res},"undefined"!=typeof __toffee_run_input&&null!==__toffee_run_input)return tmpl.pub(__toffee_run_input)}).call(this); \ No newline at end of file +(function() { + var tmpl; + + tmpl = toffee.templates["/special_cases/output.toffee"] = { + bundlePath: "/special_cases/output.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/special_cases/output.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(1); + _ln(1); + _to("\n"); + _ln(2); + _to('"' + "PASSED\"\n"); + _ln(3); + _to("\n"); + _ln(4); + _to("

    \n"); + _ln(5); + _to(" click & clack\n"); + _ln(6); + _to("

    \n"); + _ln(7); + _to("\n"); + _ln(8); + _to("A backslash is a \\\n"); + _ln(9); + _to(""); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); diff --git a/test/express3/public/javascripts/toffee.js b/test/express3/public/javascripts/toffee.js index 964dbde..d9213c1 100644 --- a/test/express3/public/javascripts/toffee.js +++ b/test/express3/public/javascripts/toffee.js @@ -17,7 +17,7 @@ toffee.__json = function(locals, o) { if (o == null) { return "null"; } else { - return "" + JSON.stringify(o).replace(//g, '\\u003E').replace(/&/g, '\\u0026').replace(/\u2028/g, '\\u2028').replace(/\u2029/g, '\\u2029'); + return "" + JSON.stringify(o).replace(//g, '\\u003E').replace(/&/g, '\\u0026').replace(/\u2028/g, '\\u2028').replace(/\u2029/g, '\\u2029').replace(/\u200e/g, '\\u200e').replace(/\u200f/g, '\\u200f').replace(/\u202a/g, '\\u202a').replace(/\u202b/g, '\\u202b').replace(/\u202c/g, '\\u202c').replace(/\u202d/g, '\\u202d').replace(/\u202e/g, '\\u202e').replace(/\u206a/g, '\\u206a').replace(/\u206b/g, '\\u206b').replace(/\u206c/g, '\\u206c').replace(/\u206d/g, '\\u206d').replace(/\u206e/g, '\\u206e').replace(/\u206f/g, '\\u206f'); } }; @@ -26,7 +26,7 @@ toffee.__raw = function(locals, o) { }; toffee.__html = function(locals, o) { - return ("" + o).replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"'); + return ("" + o).replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"').replace(/\u200e/g, '').replace(/\u200f/g, '').replace(/\u202a/g, '').replace(/\u202b/g, '').replace(/\u202c/g, '').replace(/\u202d/g, '').replace(/\u202e/g, '').replace(/\u206a/g, '').replace(/\u206b/g, '').replace(/\u206c/g, '').replace(/\u206d/g, '').replace(/\u206e/g, '').replace(/\u206f/g, ''); }; toffee.__escape = function(locals, o) { diff --git a/test/express3/views/index.toffee b/test/express3/views/index.toffee index 07fa3e8..0f9cdc5 100644 --- a/test/express3/views/index.toffee +++ b/test/express3/views/index.toffee @@ -133,9 +133,11 @@ You have 3 female friends. default y = <hr /> default z = click&clack default w = [1,2,{"place":"The Dreadfort"}] - default r = - default w.foo = + default r = eol + default w.foo = eol default v = ["\u2028","\u2029"] + default dir = ["hi\u202ethere"] + default dir0 = hithere

    raw x = "Hello world" diff --git a/test/generate_express_test.coffee b/test/generate_express_test.coffee index d87540e..2c5839f 100644 --- a/test/generate_express_test.coffee +++ b/test/generate_express_test.coffee @@ -6,7 +6,7 @@ coffee = require 'coffee-script' generateExpressTest = (cb) -> - proc = spawn 'coffee', ['./src/command_line.coffee', '-n', '-m', './test/cases', '-o', './test/express3/public/javascripts/test_cases.js'] + proc = spawn 'coffee', ['./src/command_line.coffee', '-n', './test/cases', '-o', './test/express3/public/javascripts/test_cases.js'] proc.stderr.on 'data', (buffer) -> console.log buffer.toString() proc.stdout.on 'data', (buffer) -> console.log buffer.toString() proc.on 'exit', (status) -> @@ -83,7 +83,7 @@ generateExpressTest = (cb) -> $("#browser_#{rid}").html(script_res); \n\n\n - """ + """ test_page += """ diff --git a/test/run_cases.iced b/test/run_cases.iced index 904eb1c..f575362 100644 --- a/test/run_cases.iced +++ b/test/run_cases.iced @@ -10,12 +10,6 @@ regular_engine = new engine({ prettyPrintErrors: false }) -minimized_engine = new engine({ - verbose: false - prettyPrintErrors: false - minimize: true -}) - # --------------------------------------------------------------- MULTI_RUNS = 50 @@ -95,10 +89,6 @@ go = -> console.log "Regular Engine: SUCCESS for #{tests_run} cold tests in #{time}ms (#{(time/tests_run).toFixed 2}ms/test)" await run_multiple_runs regular_engine, MULTI_RUNS, defer err, time, tests_run console.log "Regular Engine: SUCCESS for #{tests_run} hot tests in #{time}ms (#{(time/tests_run).toFixed 2}ms/test)" - await run_all_case_dirs minimized_engine, defer err, time, tests_run - console.log "Minimized (browser) Engine: SUCCESS for #{tests_run} cold tests in #{time}ms (#{(time/tests_run).toFixed 2}ms/test)" - await run_multiple_runs minimized_engine, MULTI_RUNS, defer err, time, tests_run - console.log "Minimized (browser) Engine: SUCCESS for #{tests_run} hot tests in #{time}ms (#{(time/tests_run).toFixed 2}ms/test)" await run_express_test defer() process.exit 0 diff --git a/toffee.js b/toffee.js index 964dbde..d9213c1 100644 --- a/toffee.js +++ b/toffee.js @@ -17,7 +17,7 @@ toffee.__json = function(locals, o) { if (o == null) { return "null"; } else { - return "" + JSON.stringify(o).replace(//g, '\\u003E').replace(/&/g, '\\u0026').replace(/\u2028/g, '\\u2028').replace(/\u2029/g, '\\u2029'); + return "" + JSON.stringify(o).replace(//g, '\\u003E').replace(/&/g, '\\u0026').replace(/\u2028/g, '\\u2028').replace(/\u2029/g, '\\u2029').replace(/\u200e/g, '\\u200e').replace(/\u200f/g, '\\u200f').replace(/\u202a/g, '\\u202a').replace(/\u202b/g, '\\u202b').replace(/\u202c/g, '\\u202c').replace(/\u202d/g, '\\u202d').replace(/\u202e/g, '\\u202e').replace(/\u206a/g, '\\u206a').replace(/\u206b/g, '\\u206b').replace(/\u206c/g, '\\u206c').replace(/\u206d/g, '\\u206d').replace(/\u206e/g, '\\u206e').replace(/\u206f/g, '\\u206f'); } }; @@ -26,7 +26,7 @@ toffee.__raw = function(locals, o) { }; toffee.__html = function(locals, o) { - return ("" + o).replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"'); + return ("" + o).replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"').replace(/\u200e/g, '').replace(/\u200f/g, '').replace(/\u202a/g, '').replace(/\u202b/g, '').replace(/\u202c/g, '').replace(/\u202d/g, '').replace(/\u202e/g, '').replace(/\u206a/g, '').replace(/\u206b/g, '').replace(/\u206c/g, '').replace(/\u206d/g, '').replace(/\u206e/g, '').replace(/\u206f/g, ''); }; toffee.__escape = function(locals, o) { From 5fd1722a1dbbdf3c42ed18b505c186888bfef390 Mon Sep 17 00:00:00 2001 From: Chris Coyne Date: Fri, 9 Jun 2017 11:10:36 -0400 Subject: [PATCH 117/132] added a few more control chars. removed deprecated SIGNED.md. version bump. --- SIGNED.md | 243 --------------------- lib/view.js | 2 +- package.json | 2 +- src/view.coffee | 10 + test/express3/public/javascripts/toffee.js | 4 +- toffee.js | 4 +- 6 files changed, 16 insertions(+), 249 deletions(-) delete mode 100644 SIGNED.md diff --git a/SIGNED.md b/SIGNED.md deleted file mode 100644 index 67ebc2e..0000000 --- a/SIGNED.md +++ /dev/null @@ -1,243 +0,0 @@ -##### Signed by https://keybase.io/chris -``` ------BEGIN PGP SIGNATURE----- -Version: GnuPG/MacGPG2 v2.0.22 (Darwin) -Comment: GPGTools - https://gpgtools.org - -iQIcBAABCgAGBQJToFs5AAoJENIkQTsc+mSQTpUP/2JLLdKyFlXRetWbRQd770cL -q2wKmmtu0oxG3kMjRrvnB2lS2Qxjtu0imXcIl8hqObtx2ScI+buk/DbdS0gZ1RmW -DM10MDYzoWQRAZ6sUKLcStQGP4lEpq6wYeAqWxf7N8aX8kKgkJoUsirq8w7NeosB -72EPYAd/Eth3ka0WdMf/KU8w1bpnC77nAxExlCafJ8enCZx3R8236Cy1LbGZ86v/ -Ob1FQkLD1Um+gY4mndd9s3FU4kxPJF9ISchdpHCxIq0kE7qHBGZejozjP4J1xr2U -HEwvOGN4s40k62jIEGmLzvqj87BaCplWLHtl7oV3d5ZTFSUkFoVaXKsvXlSDzAUw -uJGt2j30++C51b8vDZvX9nnegULXzNA/rnTa1zubvk2w2jDE0VT3+/ySWLRTwNHz -2e1aEWr7SL75bvi+nCCHQKYJiWuB7Xc6i+DUM6nlPxUuvFdnLTW8CV1lBtwbd9gW -7XOij+9mF3LsAaeZ+XzvLwoLE+aMpIaqIJpOi1JVoafWBnk1/O7+hHxkWKFjKJXv -3sbnG+4KpMw+YTUN35htLBiT+8V76JmsvArUYjTlkpg1x67Vv58jlhucIxOKQfaq -khnfmNA3HuPCHOTDyMBaa7LEPRU53GbhU3Y0W9PsZKI/KG1LfUP+0iPT8o4AlAT/ -6gmBoAw7Qud8v7mbvpmE -=Dlsg ------END PGP SIGNATURE----- - -``` - - - -### Begin signed statement - -#### Expect - -``` -size exec file contents - ./ -24 .gitignore 4419468a0a62e000bee4fab5c85876e287a6313001de5c9305bf849488829314 -13 .kbignore f1a9a09b226cf8e98a4286200c5d9ebd5c28924707ac3317947f8ecf06ab167b -1800 Cakefile 2f3b1709f19ace9827bfd464d141382ff01b7f86d45cd1faed6bfee906fdcd9a -1079 LICENSE edb721bca3cfa08423f93741d60300f28350af960238477fe89826e19fc3dfa9 -13715 README.md 44a697135c4145b598a812e7d904781faf772d384e8859c2767fea4be8afffb4 - bin/ -57 toffee 616023d8f8b8dbb5450051ddc21c8887829fba38dc3341feaaa3ffd5afd3ee8c -3073 index.coffee 6e43b294bbee4b1f22327ae31d154bda633bc003b6e9345fabf9d8741191f07e -2778 index.js 256cbe97d8d3895f8867e27045811b81b1fe50c2ec09fb8e71bc1f5c90f3c90e - lib/ -0 README.md e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 - coffee-script/ -2313 browser.js 3a8acdd99e1fd83dd6fea7ef373e5f8255a8dc5f8fa1bcb21e0426598ac9b4b7 -2970 cake.js ded7e20bfe4b8e2112b07a37c2fdc61bd4da21fb2e71deab72975d04c0fe126d -4831 coffee-script.js 27975b854116004d266f10f49ac1072912a94b004d368187f2f4f40926c1d644 -15518 command.js f005bdbfb4d5b35be6e20e283dddb20d96be056415712a6411f8b338528368f5 -18038 grammar.js c65d4fd04403bf823c51567749a5caca1a3e5987f73e3f1abea58462cbbfd0ad -1752 helpers.js 750cf58eba15b5070844a34ac5f5f37dc6fdbfbb4cfcd53c3f63574fb554b73f -196 index.js 6a8b57040e86aeaa2a2f2553454dd89246c6d5d666ae51542f022343d10fbb67 -25558 lexer.js 1ab66ee1ec19c0a6831ffc279a529f80677357dc14d3498b00b227f12e98945d -91732 nodes.js ad6999209ccbd157ba6f67aaaeca6ceca2db3805f2a3fd21cebfa95e2cb47408 -4141 optparse.js 6213d5ca1dc72cb0c98ceea0c7df30bbc0dc146d1304c9c46d22dd1434145573 -104572 x parser.js 8bd20f0ae5104feeb1de543dabb5e130194d4e96db75516d20201f31e6ac7823 -6135 repl.js 759e4ea22666f17c242afa77c2d9b8f1ecacea6fd84ef6baf60bfae22703d38e -13147 rewriter.js 60953a1842db7d19552b4707d7f29d74ef6d43ffc8eae8a2711689034790a154 -3696 scope.js 1cdf8a1b877644a9a23dccedcaaa51561ddf3d352fe178499cba0082daa50c3a -5706 command_line.js 1569632c69e36cbf6f9da16486b20972a7b5e362636a55d278650bca0aeb7c83 -209 consts.js 7973d407737548d3de549250f031d454989597dd9538684dde119099cd361de7 -14171 engine.js edd6e4f7d876a0bcaf62e5d649adf4f59973c86b42f9fb36e6433454a3554590 -12366 errorHandler.js 273739c9ef121e9620eb12757727d956cefe063b00d1c14d0c5d5682df9cf749 -571 pool.js 2f83097467cbde33e9f1d091a6e31b524ea43bf9e97ef05ba35ae641182f3e90 -23739 toffee_lang.js e875ff2e17aa6977a5613409c46e4d775c1551676173b69dced7f53e391501f1 -1733 utils.js b9e0d093afed0c282195365fd5c90e2f4c93d9860ce24807d55d510cdd5ae042 -25159 view.js a5a79dc59f9ca375c67baacb6b4048595c5867d74a32a3fe87553605f8496f4c -860 package.json 2cd00d299ada6fd0cdceed5e12dda24de7625e8a63bea84935702e5734ed2160 - src/ -5155 command_line.coffee 707f1df79cc865f4096ab19ccadfe0c0a627a74093c2e5b56a94011ac8a99bc3 -197 consts.coffee 2f1c1ecef13818b126d49cc7eb0568019a1f5e46cee28164321d496c93568a2e -10749 engine.coffee 7b8d66073adecaa4231df5122f4e41df20a294f02f38ea78b0629c2c0a62d26a -8853 errorHandler.coffee 997fb14e397541edde3d8567008099b54d976bce4ccf6034449e13d66b883828 -270 pool.coffee b493416ba61c6d2f98b713b7f30cc8002142c26205be21653a00f7c11ea1b6c4 -2604 toffee.jison 8d040196ea79ed3676b5874f8d85da3849cc3ad82ecaeba212a4194033bfb72e -1227 utils.coffee efd639a91f7cca74fdc138743aeb572bcaffc2c151d9a8a89bf31e3d3c798873 -19034 view.coffee f57989990e08deb868c247af945b67999791d783cf51db68a481ff69971488c0 - test/ - cases/ - big_file/ -2456 input.toffee 02bcbba28b6754a3cdc72481960efc7a3bd6ede131d426fea62f9f32e26a2259 -2156 output.toffee 80467ff63e3e8233fbeffe8b0da2fbb96e5384045e60a4f8c59809efcb090156 - comments/ -317 input.toffee e20c9441fa793370b167b00b73fbc956d060da7a7162c43c152c03784ec6fdca -24 output.toffee 5d4c2d98524149b07d2986f0475a83a382d73b1cf5840d42c0e4c4c176e18d07 -24 vars.js b33c05dd9eb5542775e403128e8ef18ba4e28f0969b14d7808eb05731f69aa27 - custom_escape/ -206 input.toffee 9e4f25cfdc84dd1a38bace63034d4c56d7a67baac58ae66dc43082a349e170b1 -115 output.toffee 822f9b4a37b1c5a7f61bf354c5f52e7e090eaea13534a3411d94528b2509da89 -53 vars.coffee 265ec2c5e35604fffa79a41d97a626da7a1e69c685b0a2adffd55a5c172bea0c - eco_compare/ -617 input.toffee 456626b2d9c49c4291c5b64df547214acc210ae67335a59e0d2a3e92784baea8 -203 output.toffee bc5e3025cc24a38bc7aec447a9b4a69731c4f07366a44dab13b31779175e9059 - escape/ -1038 input.toffee 0cc9d7afb9aa641f451bc4d55a55b071e0d66be5019c931d705f83864851e6aa -895 output.toffee adaf052e1974dd16a3d203cf0c51a028af102de0929eebe411eb43f2f05ad0e2 - hello_world/ -19 input.toffee 43b2a2d9caf2b2fd07e0c9f6651e1d8dbe693b597ed4c41b41ae6e215730b939 -13 output.toffee f8c3bf62a9aa3e6fc1619c250e48abe7519373d3edf41be62eb5dc45199af2ef -28 temp.toffee 7088f0e7c3207ed5dde1a969035b83241d4ec62a6db679f105dd55d0e5eb1735 -24 vars.js b33c05dd9eb5542775e403128e8ef18ba4e28f0969b14d7808eb05731f69aa27 - include_order/ -20 child.toffee c2ee155aeb89085add713694bdadd2f92a0e6a6d89b054a6b448c75c1bc2cbf8 -79 input.toffee 785d474720d378a28724003b1d94131ff3f724974a63a0f094d95871d9ebd7f8 -14 output.toffee a711de3fcda696d28cab35f732d690ee8c446cc8af8a2049d7d3c41d907a7e22 -24 vars.js b33c05dd9eb5542775e403128e8ef18ba4e28f0969b14d7808eb05731f69aa27 - include_recursion/ -127 input.toffee a8e2eace272f32f2fc6598c39b518177411ff3bf8008693829f765dbc4c137dd -50 output.toffee 2061768abd3870bd58c6002650f4ebae501fc06495c9a89797475393d5510561 -21 vars.js 438a45f3c507117768bb5af1ad27dc604a8a7398e2faf907814630821eed032b - include_techniques/ -274 input.toffee 51a9fc1e20887218aa74a123b3b634f1b96ad03c9dc0bd85bde87c3fec1f5427 -68 message.toffee f866e3afbbc0db4e394d2d6832eb597be91b36d67115bd9042e5f8989965d176 -200 output.toffee dc2bc1b481a6a15f07b66a12c7ba102394bbeda7ef4a4e86f05a21d14d3596d0 -3 vars.js 8eb95bcbc154530931e15fc418c8b1fe991095671409552099ea1aa596999ede - indent_attack/ -1762 input.toffee 59dd9a39b05767cb8c80b11b1113420ce2c753d2fe661f4f32b104693a2555fc -192 output.toffee 0ff715dc431004bf322d551c81dde757f93615a80a9e412d5bf2d68bde5ba65a -3 vars.js 8eb95bcbc154530931e15fc418c8b1fe991095671409552099ea1aa596999ede - junk/ -109 input.toffee 55aa69e33431cf820634507ff2ad2c6afa3a3327e9177f37335f8c4ac4f8bcb0 -54 output.toffee 0714ffef629025cb57726e48e70ebab15d1bac4bbac0f04594e660ffef40bde3 - lambda_fns/ -239 input.toffee 0e4e340bd240dee1b4dafcb9a675181a5b73d898d177306a90b02e167deac5f7 -16 output.toffee 60046c735d209935d8c864d2959fe28ab28f3de0be88f5420393a90d72c584aa - multiline_interpolation/ -9 foo.toffee 5cc9132ad0c9fb8c41737ac2d4effad0d5b8cc984974335fc41524c0c9b48670 -114 input.toffee 9823b223ef8a1a97b56dccf838f644923fbd1a5dfdd58fa0bbff7910973bfb6e -34 output.toffee 4dbeb1b85a92efda6539abba91e9d99a2f10ba08729dca4cc6718b780d7c5020 - passback/ -125 const1.toffee 3ec02d5e9ca6eda8a51cd0dd8f0fc3cfade310c1542cf3b520256129b0ccd844 -123 const2.toffee 200fcd238ff2636694509ede71f39ec17e4bc59d8db3382dcdf2a3463a3211d7 -85 const3.toffee c4f83cf02233af721f1121859d0ed4f18750fab2eed36fabf83e532c3731f115 -112 const4.toffee a5c93df2c2f412f34abbc97a94bde44619a394a6cee74d9345c9f8fb200caf8b -91 const4_sub.toffee d9ef89bbfdae1b61eeb1330a6c279b4170239b05ff8e0c86d13a8e5ff133ea56 -155 const5.toffee 2e5d632e15032f5a961a8c45f3d0ffba7c9ad71049a3082c6221cb64d6f881ed -91 const5_sub.toffee ad76455adf05740f87cb8b3e73d96cfffa47206251e34e8c7c7b1c31a21181d4 -306 input.toffee 1a7703ce985d3d1a01c9ca2435e97404d87ceda441d1508ce3f634434d6216e9 -165 output.toffee d266a8a2089f3f8a2e347d877849d65d741a11b72b407cfcf93d6c4c97b67446 -31 vars.js e76ba466c6bfa9787e11470b905bff9bb66da1c8462e430aa96445d6ba3c8a35 - plaintext/ -9 input.toffee 9e553732ce6857dab01b48ff43f7e36034745dd58097f55fb78478ab1db6c480 -9 output.toffee 9e553732ce6857dab01b48ff43f7e36034745dd58097f55fb78478ab1db6c480 - post_process/ -85 buncha_junk.toffee 3b30ce356aacf38faae0ca2025aeb22f03d4bb425d53954bb275ff4a5a73bffd -248 input.toffee d652f27762cb371ba84fd433c3f6b4bfe69a31b8dc87a0a021a6cd942f260fc6 -62 output.toffee a78e23a6435957626eece7232ce61784abaa0debd42d3d38c9e623020c060833 -21 signature.toffee b93c52abf45bca4a79c77de08ccc0030735dc52dee35c8ccb58046d94961de59 -74 vars.coffee 1b6e71bbd50ef6a4dc7c2c683c46d81dac89c0c06d458730e741b8e31c9494d3 - render_no_args/ -20 input.toffee a1496fb7a9ce860b101a5fece46d6da21e37791efe4aee33c0ae2fe4081af5a4 -20 output.toffee a1496fb7a9ce860b101a5fece46d6da21e37791efe4aee33c0ae2fe4081af5a4 - snippets/ - foo/ - bar/ -51 body.toffee fe64622c0935021bbfd52bfef5192bd285175ae6da19c74a2b2613fdd113eee7 -157 message.toffee 937e58afb29e39f9293d6e537d7640edab19a87f4a68cd9ef19d57d80a126ca1 -169 input.toffee 830382a921281cca5c9080b004c469c65ab72585a91e33438df1fa425c7b0e58 -135 output.toffee 855ce927d562d24287a692902ee93342a5233841ad64cd94ad47840f663de123 -62 vars.js 1558fb36bc1239149afbcf685dc20a4a254f1eaf414e85adb606c3bb20567492 - special_cases/ -345 input.toffee 9f70ec351d068a6557649a43c9d4ceb04b6deaea397c797115051c28b764badc -109 output.toffee e959c173c801867016c650558ff89260c104b1283e8427c370d5cbe6ad8808ec - express3/ -956 app.coffee 66ec99f0dc5cccf78aac27009c91f249dfa6bc54e9756902055b82fb4dd9d1f0 -187 package.json 34dffb3488b7ec1361ecc388a035544b79cca8053ee57c26b0c64cba7ff5d81b - public/ - javascripts/ -93068 jquery-1.9.0.min.js 7fa0d5c3f538c76f878e012ac390597faecaabfe6fb9d459b919258e76c5df8e -65233 test_cases.js 2799bc9ef13d5e3b9269720c9bfdb302c1e0dd6b99d68027c6aad278fdcc2c0b -4876 toffee.js e0a8f645b0bfe86fc2ddb4219b25495f0b0c5e7031f804ebc01d71fc22b052d3 - stylesheets/ -110 style.css 2828f3d789d881ac0a37ccff297b4574f40955c6b8278332166659cf6867b539 - routes/ -275 index.js b3e47f4c9ee9ba482faad605f09f610c224aadf28186ba4c47e8fcc567a0f8b6 - views/ -15548 index.toffee 517ddbe54b3a1558803a26b398e94a7d98044f174b79368d29b0a1617d761421 - subdir1/ -189 hello_world.toffee 34703cc458413e0ade4ebb311b1d355cb3f4f74c75edda0b50c207a464b0d6ff - subdir2/ - foo/ -22 goodbye.toffee edc531db6b50fbce4a7ad1319dfb9924ea09b90898a40e8c640c2ef838b47c8a -288 goodbye_world.toffee 53bd645cae89afc9bf1aa08e87b3f2247c49546cb4ae278de2552187ed0068e9 - express3_error_handling/ -1434 app.coffee 8617874065cd79e799d3d2fdb6f76c6abbdcdb7015b40292a3a45f8b70b6e14a -187 package.json 34dffb3488b7ec1361ecc388a035544b79cca8053ee57c26b0c64cba7ff5d81b - public/ - javascripts/ -93068 jquery-1.9.0.min.js 7fa0d5c3f538c76f878e012ac390597faecaabfe6fb9d459b919258e76c5df8e -65233 test_cases.js 2799bc9ef13d5e3b9269720c9bfdb302c1e0dd6b99d68027c6aad278fdcc2c0b -4878 toffee.js ece8df6211cc9770c5fb50f1a58d0273baa16880bbf14572c7f3a6f5e6fcf998 - stylesheets/ -110 style.css 2828f3d789d881ac0a37ccff297b4574f40955c6b8278332166659cf6867b539 - routes/ -287 index.js e4ce11715d151e9b76d2e8a8a1ceed5aeb9341d4cdd97a6c0933a7a9d21add82 - views/ -737 index.toffee ad9a70f7774bf503eb800a073eb16d75b069b0f355b2c9176f11f2a55cb23b32 -1237 test_bad_coffee_syntax.toffee c051232538906552b73326e5fc23459ff9af157bb9fd7999e121f6558cd3f532 -165 test_bad_runtime.toffee 3cf0b2d298653ee45be8fa17092f7ac64407b5be3e77ff403e8da753a75e412c -52 test_bad_str_interpolate.toffee 46c9f9e1f9e170b71612a0755748feaa5c7777fc15d81e1897d82cecf2e7d385 -56 test_bad_toffee_syntax.toffee cdfaf909adcbb51b293c67ecedc578379c1660774789fcbac8d156a1e35920f5 -3552 generate_express_test.coffee 871c655a5193f891f4658faa90ef56061776e01f69552d1966922cef7fcf894b -3758 run_cases.iced 3338df9b4cd47d189acc61612ded19bff670bed7047b902546991c80fa6b1f56 -4876 toffee.js e0a8f645b0bfe86fc2ddb4219b25495f0b0c5e7031f804ebc01d71fc22b052d3 -``` - -#### Ignore - -``` -/SIGNED.md -``` - -#### Presets - -``` -git # ignore .git and anything as described by .gitignore files -dropbox # ignore .dropbox-cache and other Dropbox-related files -kb # ignore anything as described by .kbignore files -``` - - - -### End signed statement - -


    - -#### Notes - -With keybase you can sign any directory's contents, whether it's a git repo, -source code distribution, or a personal documents folder. It aims to replace the drudgery of: - - 1. comparing a zipped file to a detached statement - 2. downloading a public key - 3. confirming it is in fact the author's by reviewing public statements they've made, using it - -All in one simple command: - -```bash -keybase dir verify -``` - -There are lots of options, including assertions for automating your checks. - -For more info, check out https://keybase.io/docs/command_line/code_signing \ No newline at end of file diff --git a/lib/view.js b/lib/view.js index 16ca902..c589679 100644 --- a/lib/view.js +++ b/lib/view.js @@ -55,7 +55,7 @@ */ var __; __ = tabs(tab_level); - return "\n\n" + __ + "if not toffee? then toffee = {}\n" + __ + "if not toffee.templates then toffee.templates = {}\n\n" + __ + "toffee.states = " + (JSON.stringify(states)) + "\n\n" + __ + "toffee.__json = (locals, o) ->\n" + __ + " if not o?\n" + __ + " return \"null\"\n" + __ + " else\n" + __ + " return \"\" + JSON.stringify(o)\n" + __ + " .replace(//g,'\\\\u003E')\n" + __ + " .replace(/&/g,'\\\\u0026').replace(/\\u2028/g, '\\\\u2028')\n" + __ + " .replace(/\\u2029/g, '\\\\u2029')\n" + __ + " .replace(/\\u200e/g, '\\\\u200e') # LEFT-TO-RIGHT MARK\n" + __ + " .replace(/\\u200f/g, '\\\\u200f') # RIGHT-TO-LEFT MARK\n" + __ + " .replace(/\\u202a/g, '\\\\u202a') # LEFT-TO-RIGHT EMBEDDING\n" + __ + " .replace(/\\u202b/g, '\\\\u202b') # RIGHT-TO-LEFT EMBEDDING\n" + __ + " .replace(/\\u202c/g, '\\\\u202c') # POP DIRECTIONAL FORMATTING\n" + __ + " .replace(/\\u202d/g, '\\\\u202d') # LEFT-TO-RIGHT OVERRIDE\n" + __ + " .replace(/\\u202e/g, '\\\\u202e') # RIGHT-TO-LEFT OVERRIDE\n" + __ + " .replace(/\\u206a/g, '\\\\u206a') # INHIBIT SYMMETRIC SWAPPING\n" + __ + " .replace(/\\u206b/g, '\\\\u206b') # ACTIVATE SYMMETRIC SWAPPING\n" + __ + " .replace(/\\u206c/g, '\\\\u206c') # INHIBIT ARABIC FORM SHAPING\n" + __ + " .replace(/\\u206d/g, '\\\\u206d') # ACTIVATE ARABIC FORM SHAPING\n" + __ + " .replace(/\\u206e/g, '\\\\u206e') # NATIONAL DIGIT SHAPES\n" + __ + " .replace(/\\u206f/g, '\\\\u206f') # NOMINAL DIGIT SHAPES\n\n" + __ + "toffee.__raw = (locals, o) -> o\n\n" + __ + "toffee.__html = (locals, o) ->\n" + __ + " (\"\"+o).replace(/&/g, '&')\n" + __ + " .replace(//g, '>')\n" + __ + " .replace(/\"/g, '"')\n" + __ + " .replace(/\\u200e/g, '') # LEFT-TO-RIGHT MARK\n" + __ + " .replace(/\\u200f/g, '') # RIGHT-TO-LEFT MARK\n" + __ + " .replace(/\\u202a/g, '') # LEFT-TO-RIGHT EMBEDDING\n" + __ + " .replace(/\\u202b/g, '') # RIGHT-TO-LEFT EMBEDDING\n" + __ + " .replace(/\\u202c/g, '') # POP DIRECTIONAL FORMATTING\n" + __ + " .replace(/\\u202d/g, '') # LEFT-TO-RIGHT OVERRIDE\n" + __ + " .replace(/\\u202e/g, '') # RIGHT-TO-LEFT OVERRIDE\n" + __ + " .replace(/\\u206a/g, '') # INHIBIT SYMMETRIC SWAPPING\n" + __ + " .replace(/\\u206b/g, '') # ACTIVATE SYMMETRIC SWAPPING\n" + __ + " .replace(/\\u206c/g, '') # INHIBIT ARABIC FORM SHAPING\n" + __ + " .replace(/\\u206d/g, '') # ACTIVATE ARABIC FORM SHAPING\n" + __ + " .replace(/\\u206e/g, '') # NATIONAL DIGIT SHAPES\n" + __ + " .replace(/\\u206f/g, '') # NOMINAL DIGIT SHAPES\n\n" + __ + "toffee.__escape = (locals, o) ->\n" + __ + " if locals.__toffee.autoEscape? then ae = locals.__toffee.autoEscape\n" + __ + " else if " + (auto_escape != null) + " then ae = " + auto_escape + "\n" + __ + " else ae = true\n" + __ + " if ae\n" + __ + " if o is undefined then return ''\n" + __ + " if o? and (typeof o) is \"object\" then return locals.json o\n" + __ + " return locals.html o\n" + __ + " return o\n\n" + __ + "toffee.__augmentLocals = (locals, bundle_path) ->\n" + __ + " _l = locals\n" + __ + " _t = _l.__toffee = {out: []}\n" + __ + " if not _l.print? then _l.print = (o) -> toffee.__print _l, o\n" + __ + " if not _l.json? then _l.json = (o) -> toffee.__json _l, o\n" + __ + " if not _l.raw? then _l.raw = (o) -> toffee.__raw _l, o\n" + __ + " if not _l.html? then _l.html = (o) -> toffee.__html _l, o\n" + __ + " if not _l.escape? then _l.escape = (o) -> toffee.__escape _l, o\n" + __ + " if not _l.partial? then _l.partial = (path, vars) -> toffee.__partial toffee.templates[\"\#{bundle_path}\"], _l, path, vars\n" + __ + " if not _l.snippet? then _l.snippet = (path, vars) -> toffee.__snippet toffee.templates[\"\#{bundle_path}\"], _l, path, vars\n" + __ + " if not _l.load? then _l.load = (path, vars) -> toffee.__load toffee.templates[\"\#{bundle_path}\"], _l, path, vars\n" + __ + " _t.print = _l.print\n" + __ + " _t.json = _l.json\n" + __ + " _t.raw = _l.raw\n" + __ + " _t.html = _l.html\n" + __ + " _t.escape = _l.escape\n" + __ + " _t.partial = _l.partial\n" + __ + " _t.snippet = _l.snippet\n" + __ + " _t.load = _l.load\n\n" + (include_bundle_headers ? getBundleHeaders(tab_level) : ""); + return "\n\n" + __ + "if not toffee? then toffee = {}\n" + __ + "if not toffee.templates then toffee.templates = {}\n\n" + __ + "toffee.states = " + (JSON.stringify(states)) + "\n\n" + __ + "toffee.__json = (locals, o) ->\n" + __ + " if not o?\n" + __ + " return \"null\"\n" + __ + " else\n" + __ + " return \"\" + JSON.stringify(o)\n" + __ + " .replace(//g,'\\\\u003E')\n" + __ + " .replace(/&/g,'\\\\u0026').replace(/\\u2028/g, '\\\\u2028')\n" + __ + " .replace(/\\u2029/g, '\\\\u2029')\n" + __ + " .replace(/\\u200e/g, '\\\\u200e') # LEFT-TO-RIGHT MARK\n" + __ + " .replace(/\\u200f/g, '\\\\u200f') # RIGHT-TO-LEFT MARK\n" + __ + " .replace(/\\u202a/g, '\\\\u202a') # LEFT-TO-RIGHT EMBEDDING\n" + __ + " .replace(/\\u202b/g, '\\\\u202b') # RIGHT-TO-LEFT EMBEDDING\n" + __ + " .replace(/\\u202c/g, '\\\\u202c') # POP DIRECTIONAL FORMATTING\n" + __ + " .replace(/\\u202d/g, '\\\\u202d') # LEFT-TO-RIGHT OVERRIDE\n" + __ + " .replace(/\\u202e/g, '\\\\u202e') # RIGHT-TO-LEFT OVERRIDE\n" + __ + " .replace(/\\u206a/g, '\\\\u206a') # INHIBIT SYMMETRIC SWAPPING\n" + __ + " .replace(/\\u206b/g, '\\\\u206b') # ACTIVATE SYMMETRIC SWAPPING\n" + __ + " .replace(/\\u206c/g, '\\\\u206c') # INHIBIT ARABIC FORM SHAPING\n" + __ + " .replace(/\\u206d/g, '\\\\u206d') # ACTIVATE ARABIC FORM SHAPING\n" + __ + " .replace(/\\u206e/g, '\\\\u206e') # NATIONAL DIGIT SHAPES\n" + __ + " .replace(/\\u206f/g, '\\\\u206f') # NOMINAL DIGIT SHAPES\n" + __ + " .replace(/\\u2066/g, '\\\\u2066') # LEFT-TO-RIGHT ISOLATE (LRI)\n" + __ + " .replace(/\\u2067/g, '\\\\u2067') # RIGHT-TO-LEFT ISOLATE (RLI)\n" + __ + " .replace(/\\u2068/g, '\\\\u2068') # FIRST STRONG ISOLATE (FSI)\n" + __ + " .replace(/\\u2069/g, '\\\\u2069') # POP DIRECTIONAL ISOLATE (PDI)\n\n\n" + __ + "toffee.__raw = (locals, o) -> o\n\n" + __ + "toffee.__html = (locals, o) ->\n" + __ + " (\"\"+o).replace(/&/g, '&')\n" + __ + " .replace(//g, '>')\n" + __ + " .replace(/\"/g, '"')\n" + __ + " .replace(/\\u200e/g, '') # LEFT-TO-RIGHT MARK\n" + __ + " .replace(/\\u200f/g, '') # RIGHT-TO-LEFT MARK\n" + __ + " .replace(/\\u202a/g, '') # LEFT-TO-RIGHT EMBEDDING\n" + __ + " .replace(/\\u202b/g, '') # RIGHT-TO-LEFT EMBEDDING\n" + __ + " .replace(/\\u202c/g, '') # POP DIRECTIONAL FORMATTING\n" + __ + " .replace(/\\u202d/g, '') # LEFT-TO-RIGHT OVERRIDE\n" + __ + " .replace(/\\u202e/g, '') # RIGHT-TO-LEFT OVERRIDE\n" + __ + " .replace(/\\u206a/g, '') # INHIBIT SYMMETRIC SWAPPING\n" + __ + " .replace(/\\u206b/g, '') # ACTIVATE SYMMETRIC SWAPPING\n" + __ + " .replace(/\\u206c/g, '') # INHIBIT ARABIC FORM SHAPING\n" + __ + " .replace(/\\u206d/g, '') # ACTIVATE ARABIC FORM SHAPING\n" + __ + " .replace(/\\u206e/g, '') # NATIONAL DIGIT SHAPES\n" + __ + " .replace(/\\u206f/g, '') # NOMINAL DIGIT SHAPES\n" + __ + " .replace(/\\u2066/g, '') # LEFT-TO-RIGHT ISOLATE (LRI)\n" + __ + " .replace(/\\u2067/g, '') # RIGHT-TO-LEFT ISOLATE (RLI)\n" + __ + " .replace(/\\u2068/g, '') # FIRST STRONG ISOLATE (FSI)\n" + __ + " .replace(/\\u2069/g, '') # POP DIRECTIONAL ISOLATE (PDI)\n\n\n" + __ + "toffee.__escape = (locals, o) ->\n" + __ + " if locals.__toffee.autoEscape? then ae = locals.__toffee.autoEscape\n" + __ + " else if " + (auto_escape != null) + " then ae = " + auto_escape + "\n" + __ + " else ae = true\n" + __ + " if ae\n" + __ + " if o is undefined then return ''\n" + __ + " if o? and (typeof o) is \"object\" then return locals.json o\n" + __ + " return locals.html o\n" + __ + " return o\n\n" + __ + "toffee.__augmentLocals = (locals, bundle_path) ->\n" + __ + " _l = locals\n" + __ + " _t = _l.__toffee = {out: []}\n" + __ + " if not _l.print? then _l.print = (o) -> toffee.__print _l, o\n" + __ + " if not _l.json? then _l.json = (o) -> toffee.__json _l, o\n" + __ + " if not _l.raw? then _l.raw = (o) -> toffee.__raw _l, o\n" + __ + " if not _l.html? then _l.html = (o) -> toffee.__html _l, o\n" + __ + " if not _l.escape? then _l.escape = (o) -> toffee.__escape _l, o\n" + __ + " if not _l.partial? then _l.partial = (path, vars) -> toffee.__partial toffee.templates[\"\#{bundle_path}\"], _l, path, vars\n" + __ + " if not _l.snippet? then _l.snippet = (path, vars) -> toffee.__snippet toffee.templates[\"\#{bundle_path}\"], _l, path, vars\n" + __ + " if not _l.load? then _l.load = (path, vars) -> toffee.__load toffee.templates[\"\#{bundle_path}\"], _l, path, vars\n" + __ + " _t.print = _l.print\n" + __ + " _t.json = _l.json\n" + __ + " _t.raw = _l.raw\n" + __ + " _t.html = _l.html\n" + __ + " _t.escape = _l.escape\n" + __ + " _t.partial = _l.partial\n" + __ + " _t.snippet = _l.snippet\n" + __ + " _t.load = _l.load\n\n" + (include_bundle_headers ? getBundleHeaders(tab_level) : ""); }; getBundleHeaders = function(tab_level) { diff --git a/package.json b/package.json index e81bf58..420c76d 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "toffee", "description": "A NodeJs and browser-side templating language based on CoffeeScript with slicker tokens and syntax.", - "version": "0.2.0", + "version": "0.2.1", "directories": { "lib": "./lib" }, diff --git a/src/view.coffee b/src/view.coffee index 8642342..b25a39b 100644 --- a/src/view.coffee +++ b/src/view.coffee @@ -50,6 +50,11 @@ getCommonHeaders = (tab_level, include_bundle_headers, auto_escape) -> #{__} .replace(/\\u206d/g, '\\\\u206d') # ACTIVATE ARABIC FORM SHAPING #{__} .replace(/\\u206e/g, '\\\\u206e') # NATIONAL DIGIT SHAPES #{__} .replace(/\\u206f/g, '\\\\u206f') # NOMINAL DIGIT SHAPES +#{__} .replace(/\\u2066/g, '\\\\u2066') # LEFT-TO-RIGHT ISOLATE (LRI) +#{__} .replace(/\\u2067/g, '\\\\u2067') # RIGHT-TO-LEFT ISOLATE (RLI) +#{__} .replace(/\\u2068/g, '\\\\u2068') # FIRST STRONG ISOLATE (FSI) +#{__} .replace(/\\u2069/g, '\\\\u2069') # POP DIRECTIONAL ISOLATE (PDI) + #{__}toffee.__raw = (locals, o) -> o @@ -70,6 +75,11 @@ getCommonHeaders = (tab_level, include_bundle_headers, auto_escape) -> #{__} .replace(/\\u206d/g, '') # ACTIVATE ARABIC FORM SHAPING #{__} .replace(/\\u206e/g, '') # NATIONAL DIGIT SHAPES #{__} .replace(/\\u206f/g, '') # NOMINAL DIGIT SHAPES +#{__} .replace(/\\u2066/g, '') # LEFT-TO-RIGHT ISOLATE (LRI) +#{__} .replace(/\\u2067/g, '') # RIGHT-TO-LEFT ISOLATE (RLI) +#{__} .replace(/\\u2068/g, '') # FIRST STRONG ISOLATE (FSI) +#{__} .replace(/\\u2069/g, '') # POP DIRECTIONAL ISOLATE (PDI) + #{__}toffee.__escape = (locals, o) -> #{__} if locals.__toffee.autoEscape? then ae = locals.__toffee.autoEscape diff --git a/test/express3/public/javascripts/toffee.js b/test/express3/public/javascripts/toffee.js index d9213c1..d7e6c96 100644 --- a/test/express3/public/javascripts/toffee.js +++ b/test/express3/public/javascripts/toffee.js @@ -17,7 +17,7 @@ toffee.__json = function(locals, o) { if (o == null) { return "null"; } else { - return "" + JSON.stringify(o).replace(//g, '\\u003E').replace(/&/g, '\\u0026').replace(/\u2028/g, '\\u2028').replace(/\u2029/g, '\\u2029').replace(/\u200e/g, '\\u200e').replace(/\u200f/g, '\\u200f').replace(/\u202a/g, '\\u202a').replace(/\u202b/g, '\\u202b').replace(/\u202c/g, '\\u202c').replace(/\u202d/g, '\\u202d').replace(/\u202e/g, '\\u202e').replace(/\u206a/g, '\\u206a').replace(/\u206b/g, '\\u206b').replace(/\u206c/g, '\\u206c').replace(/\u206d/g, '\\u206d').replace(/\u206e/g, '\\u206e').replace(/\u206f/g, '\\u206f'); + return "" + JSON.stringify(o).replace(//g, '\\u003E').replace(/&/g, '\\u0026').replace(/\u2028/g, '\\u2028').replace(/\u2029/g, '\\u2029').replace(/\u200e/g, '\\u200e').replace(/\u200f/g, '\\u200f').replace(/\u202a/g, '\\u202a').replace(/\u202b/g, '\\u202b').replace(/\u202c/g, '\\u202c').replace(/\u202d/g, '\\u202d').replace(/\u202e/g, '\\u202e').replace(/\u206a/g, '\\u206a').replace(/\u206b/g, '\\u206b').replace(/\u206c/g, '\\u206c').replace(/\u206d/g, '\\u206d').replace(/\u206e/g, '\\u206e').replace(/\u206f/g, '\\u206f').replace(/\u2066/g, '\\u2066').replace(/\u2067/g, '\\u2067').replace(/\u2068/g, '\\u2068').replace(/\u2069/g, '\\u2069'); } }; @@ -26,7 +26,7 @@ toffee.__raw = function(locals, o) { }; toffee.__html = function(locals, o) { - return ("" + o).replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"').replace(/\u200e/g, '').replace(/\u200f/g, '').replace(/\u202a/g, '').replace(/\u202b/g, '').replace(/\u202c/g, '').replace(/\u202d/g, '').replace(/\u202e/g, '').replace(/\u206a/g, '').replace(/\u206b/g, '').replace(/\u206c/g, '').replace(/\u206d/g, '').replace(/\u206e/g, '').replace(/\u206f/g, ''); + return ("" + o).replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"').replace(/\u200e/g, '').replace(/\u200f/g, '').replace(/\u202a/g, '').replace(/\u202b/g, '').replace(/\u202c/g, '').replace(/\u202d/g, '').replace(/\u202e/g, '').replace(/\u206a/g, '').replace(/\u206b/g, '').replace(/\u206c/g, '').replace(/\u206d/g, '').replace(/\u206e/g, '').replace(/\u206f/g, '').replace(/\u2066/g, '').replace(/\u2067/g, '').replace(/\u2068/g, '').replace(/\u2069/g, ''); }; toffee.__escape = function(locals, o) { diff --git a/toffee.js b/toffee.js index d9213c1..d7e6c96 100644 --- a/toffee.js +++ b/toffee.js @@ -17,7 +17,7 @@ toffee.__json = function(locals, o) { if (o == null) { return "null"; } else { - return "" + JSON.stringify(o).replace(//g, '\\u003E').replace(/&/g, '\\u0026').replace(/\u2028/g, '\\u2028').replace(/\u2029/g, '\\u2029').replace(/\u200e/g, '\\u200e').replace(/\u200f/g, '\\u200f').replace(/\u202a/g, '\\u202a').replace(/\u202b/g, '\\u202b').replace(/\u202c/g, '\\u202c').replace(/\u202d/g, '\\u202d').replace(/\u202e/g, '\\u202e').replace(/\u206a/g, '\\u206a').replace(/\u206b/g, '\\u206b').replace(/\u206c/g, '\\u206c').replace(/\u206d/g, '\\u206d').replace(/\u206e/g, '\\u206e').replace(/\u206f/g, '\\u206f'); + return "" + JSON.stringify(o).replace(//g, '\\u003E').replace(/&/g, '\\u0026').replace(/\u2028/g, '\\u2028').replace(/\u2029/g, '\\u2029').replace(/\u200e/g, '\\u200e').replace(/\u200f/g, '\\u200f').replace(/\u202a/g, '\\u202a').replace(/\u202b/g, '\\u202b').replace(/\u202c/g, '\\u202c').replace(/\u202d/g, '\\u202d').replace(/\u202e/g, '\\u202e').replace(/\u206a/g, '\\u206a').replace(/\u206b/g, '\\u206b').replace(/\u206c/g, '\\u206c').replace(/\u206d/g, '\\u206d').replace(/\u206e/g, '\\u206e').replace(/\u206f/g, '\\u206f').replace(/\u2066/g, '\\u2066').replace(/\u2067/g, '\\u2067').replace(/\u2068/g, '\\u2068').replace(/\u2069/g, '\\u2069'); } }; @@ -26,7 +26,7 @@ toffee.__raw = function(locals, o) { }; toffee.__html = function(locals, o) { - return ("" + o).replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"').replace(/\u200e/g, '').replace(/\u200f/g, '').replace(/\u202a/g, '').replace(/\u202b/g, '').replace(/\u202c/g, '').replace(/\u202d/g, '').replace(/\u202e/g, '').replace(/\u206a/g, '').replace(/\u206b/g, '').replace(/\u206c/g, '').replace(/\u206d/g, '').replace(/\u206e/g, '').replace(/\u206f/g, ''); + return ("" + o).replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"').replace(/\u200e/g, '').replace(/\u200f/g, '').replace(/\u202a/g, '').replace(/\u202b/g, '').replace(/\u202c/g, '').replace(/\u202d/g, '').replace(/\u202e/g, '').replace(/\u206a/g, '').replace(/\u206b/g, '').replace(/\u206c/g, '').replace(/\u206d/g, '').replace(/\u206e/g, '').replace(/\u206f/g, '').replace(/\u2066/g, '').replace(/\u2067/g, '').replace(/\u2068/g, '').replace(/\u2069/g, ''); }; toffee.__escape = function(locals, o) { From f51bad7f7a6d1e58488b85e7feecafd63bb7161f Mon Sep 17 00:00:00 2001 From: Chris Coyne Date: Thu, 13 Jul 2017 08:38:29 -0400 Subject: [PATCH 118/132] cleanup of test; removal of JSON.stringify override --- Cakefile | 3 +- index.js | 2 +- lib/command_line.js | 2 +- lib/consts.js | 2 +- lib/engine.js | 2 +- lib/errorHandler.js | 2 +- lib/pool.js | 2 +- lib/utils.js | 2 +- lib/view.js | 4 +- package.json | 4 +- src/view.coffee | 2 +- test/cases/escape/input.toffee | 6 +- test/cases/escape/output.toffee | 10 +- .../express3/public/javascripts/test_cases.js | 115 +++++++++++------- test/express3/views/index.toffee | 10 +- test/generate_express_test.coffee | 2 +- test/run_cases.iced | 11 +- 17 files changed, 111 insertions(+), 70 deletions(-) diff --git a/Cakefile b/Cakefile index 780f9e4..867e95f 100644 --- a/Cakefile +++ b/Cakefile @@ -24,8 +24,7 @@ task 'test', 'test server and browser support', (cb) -> console.log "Done." runCoffee = (args, cb) -> - console.log args - proc = spawn 'coffee', args + proc = spawn './node_modules/.bin/coffee', args proc.stderr.on 'data', (buffer) -> console.log buffer.toString() proc.on 'exit', (status) -> process.exit(1) if status isnt 0 diff --git a/index.js b/index.js index 275c688..e8b445a 100644 --- a/index.js +++ b/index.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.12.2 +// Generated by CoffeeScript 1.12.6 (function() { var __express, cacheless_engine, e, engine, getCommonHeaders, getCommonHeadersJs, ref, to_express, view; diff --git a/lib/command_line.js b/lib/command_line.js index dff3ade..06ea69d 100644 --- a/lib/command_line.js +++ b/lib/command_line.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.12.2 +// Generated by CoffeeScript 1.12.6 (function() { var compile, fs, getCommonHeadersJs, getVersionNumber, maybeAttachHeaders, mkdirp, path, program, recurseRun, ref, run, view; diff --git a/lib/consts.js b/lib/consts.js index 05c17db..89ae18c 100644 --- a/lib/consts.js +++ b/lib/consts.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.12.2 +// Generated by CoffeeScript 1.12.6 (function() { exports.states = { TOFFEE: 1, diff --git a/lib/engine.js b/lib/engine.js index 8f01f8b..90863d1 100644 --- a/lib/engine.js +++ b/lib/engine.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.12.2 +// Generated by CoffeeScript 1.12.6 (function() { var MAX_CACHED_SANDBOXES, Pool, engine, fs, path, ref, sandboxCons, states, tweakables, util, utils, view, vm, bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; diff --git a/lib/errorHandler.js b/lib/errorHandler.js index 58933ac..77787e9 100644 --- a/lib/errorHandler.js +++ b/lib/errorHandler.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.12.2 +// Generated by CoffeeScript 1.12.6 (function() { var _ppEscape, errorTypes, path, toffeeError, util, extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, diff --git a/lib/pool.js b/lib/pool.js index 4a4db6d..eab9224 100644 --- a/lib/pool.js +++ b/lib/pool.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.12.2 +// Generated by CoffeeScript 1.12.6 (function() { var Pool; diff --git a/lib/utils.js b/lib/utils.js index 8838331..432037c 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.12.2 +// Generated by CoffeeScript 1.12.6 (function() { var lex, lexer; diff --git a/lib/view.js b/lib/view.js index c589679..b210643 100644 --- a/lib/view.js +++ b/lib/view.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.12.2 +// Generated by CoffeeScript 1.12.6 (function() { var TAB_SPACES, coffee, e, errorHandler, errorTypes, getBundleHeaders, getCommonHeaders, getCommonHeadersJs, parser, ref, ref1, spaces, states, tabs, toffeeError, util, utils, view, vm; @@ -298,7 +298,7 @@ view.prototype._snippetHasEscapeOverride = function(str) { var j, len, ref2, ref3, token; - ref2 = ['print', ' snippet', 'load', 'partial', 'raw', 'html', 'json', '__toffee.raw', '__toffee.html', '__toffee.json', 'JSON.stringify']; + ref2 = ['print', ' snippet', 'load', 'partial', 'raw', 'html', 'json', '__toffee.raw', '__toffee.html', '__toffee.json']; for (j = 0, len = ref2.length; j < len; j++) { token = ref2[j]; if (str.slice(0, token.length) === token) { diff --git a/package.json b/package.json index 420c76d..8056f9a 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "toffee", "description": "A NodeJs and browser-side templating language based on CoffeeScript with slicker tokens and syntax.", - "version": "0.2.1", + "version": "0.3.0", "directories": { "lib": "./lib" }, @@ -16,6 +16,8 @@ }, "devDependencies": { "assert": "*", + "colors": "^1.1.2", + "diff": "^3.3.0", "express": "^3.21.2", "iced-coffee-script": "*", "jison": "*", diff --git a/src/view.coffee b/src/view.coffee index b25a39b..82a3c87 100644 --- a/src/view.coffee +++ b/src/view.coffee @@ -357,7 +357,7 @@ class view return "\n#{spaces ind}_ln #{n}" _snippetHasEscapeOverride: (str) -> - for token in ['print',' snippet', 'load', 'partial', 'raw', 'html', 'json', '__toffee.raw', '__toffee.html', '__toffee.json', 'JSON.stringify'] + for token in ['print',' snippet', 'load', 'partial', 'raw', 'html', 'json', '__toffee.raw', '__toffee.html', '__toffee.json'] if str[0...token.length] is token if (str.length > token.length) and (str[token.length] in [' ','\t','\n','(']) return true diff --git a/test/cases/escape/input.toffee b/test/cases/escape/input.toffee index ad29469..07b8e21 100644 --- a/test/cases/escape/input.toffee +++ b/test/cases/escape/input.toffee @@ -2,7 +2,7 @@ x = '"Hello world"' y = '
    ' z = 'click&clack' - w = [1, 2, {"place": "The Dreadfort"}] + w = [1, 2, {"place": "The Dreadfort", "evil code": "italic"}] v = ["\u2028", "\u2029"] dir = ["hi\u{202e}there"] # ltr type things #}

    @@ -22,6 +22,10 @@ raw z = #{raw z} raw w = #{raw w}

    +
    +  w_as_json_stringify=#{JSON.stringify w}
    +  w_as_json_stringify_raw=#{raw JSON.stringify w}
    +

    @@ -32,7 +36,7 @@ json printed x = "\"Hello world\"" json printed y = "\u003Chr /\u003E" json printed z = "click\u0026clack" - json printed w = [1,2,{"place":"The Dreadfort"}] + json printed w = [1,2,{"place":"The Dreadfort","evil \u003Cb\u003Ecode\u003C/b\u003E":"\u003Ci\u003Eitalic\u003C/i\u003E"}] json printed v = ["\u2028","\u2029"]

    diff --git a/test/express3/public/javascripts/test_cases.js b/test/express3/public/javascripts/test_cases.js index dbad2b9..6c6e776 100644 --- a/test/express3/public/javascripts/test_cases.js +++ b/test/express3/public/javascripts/test_cases.js @@ -924,7 +924,8 @@ z = 'click&clack'; w = [ 1, 2, { - "place": "The Dreadfort" + "place": "The Dreadfort", + "evil code": "italic" } ]; v = ["\u2028", "\u2029"]; @@ -991,32 +992,44 @@ _ln(24); _to("

    \n"); _ln(25); - _to("\n"); - _ln(32); + _ln(36); _to("

    \n"); - _ln(33); + _ln(37); _ts(2); _ts(2); print(" raw printed x = " + x + "\n"); @@ -1024,13 +1037,13 @@ print(" raw printed z = " + z + "\n"); print(" raw printed w = " + w); _ts(1); - _ln(38); + _ln(42); _to("\n"); - _ln(39); + _ln(43); _to("

    \n"); - _ln(40); + _ln(44); _to("

    \n"); - _ln(41); + _ln(45); _ts(2); _ts(2); print(" json printed x = " + (raw(raw(raw(raw(json(x)))))) + "\n"); @@ -1039,13 +1052,13 @@ print(" json printed w = " + (raw(raw(raw(raw(json(w)))))) + "\n"); print(" json printed v = " + (raw(raw(raw(raw(json(v))))))); _ts(1); - _ln(47); + _ln(51); _to("\n"); - _ln(48); + _ln(52); _to("

    \n"); - _ln(49); + _ln(53); _to("

    \n"); - _ln(50); + _ln(54); _ts(2); _ts(2); print(" html printed longhand x = " + (__toffee.html(x)) + "\n"); @@ -1053,11 +1066,11 @@ print(" html printed longhand z = " + (__toffee.html(z)) + "\n"); print(" html printed longhand w = " + (__toffee.html(w))); _ts(1); - _ln(55); + _ln(59); _to("\n"); - _ln(56); + _ln(60); _to("

    \n"); - _ln(57); + _ln(61); _ts(2); __toffee.res = __toffee.out.join(""); if (typeof postProcess !== "undefined" && postProcess !== null) { @@ -1113,7 +1126,7 @@ _ln(4); _to(" default z = click&clack\n"); _ln(5); - _to(" default w = [1,2,{\"place\":\"The Dreadfort\"}]\n"); + _to(" default w = [1,2,{\"place\":\"The Dreadfort\",\"evil \\u003Cb\\u003Ecode\\u003C/b\\u003E\":\"\\u003Ci\\u003Eitalic\\u003C/i\\u003E\"}]\n"); _ln(6); _to(" default r = eol\n"); _ln(7); @@ -1139,58 +1152,66 @@ _ln(17); _to("

    \n"); _ln(18); - _to("\n"); + _to(" y = \"\\u003Chr /\\u003E\"\n"); _ln(25); - _to("

    \n"); + _to(" z = \"click\\u0026clack\"\n"); _ln(26); - _to(" raw printed x = \"Hello world\"\n"); + _to(" w = [1,2,{\"place\":\"The Dreadfort\",\"evil \\u003Cb\\u003Ecode\\u003C/b\\u003E\":\"\\u003Ci\\u003Eitalic\\u003C/i\\u003E\"}]\n"); _ln(27); - _to(" raw printed y =


    \n"); + _to(" v = [\"\\u2028\",\"\\u2029\"]\n"); _ln(28); - _to(" raw printed z = click&clack\n"); + _to("\n"); _ln(29); - _to(" raw printed w = 1,2,[object Object]\n"); + _to("

    \n"); _ln(30); - _to("

    \n"); + _to(" raw printed x = \"Hello world\"\n"); _ln(31); - _to("

    \n"); + _to(" raw printed y =


    \n"); _ln(32); - _to(" json printed x = \"\\\"Hello world\\\"\"\n"); + _to(" raw printed z = click&clack\n"); _ln(33); - _to(" json printed y = \"\\u003Chr /\\u003E\"\n"); + _to(" raw printed w = 1,2,[object Object]\n"); _ln(34); - _to(" json printed z = \"click\\u0026clack\"\n"); + _to("

    \n"); _ln(35); - _to(" json printed w = [1,2,{\"place\":\"The Dreadfort\"}]\n"); + _to("

    \n"); _ln(36); - _to(" json printed v = [\"\\u2028\",\"\\u2029\"]\n"); + _to(" json printed x = \"\\\"Hello world\\\"\"\n"); _ln(37); - _to("

    \n"); + _to(" json printed y = \"\\u003Chr /\\u003E\"\n"); _ln(38); - _to("

    \n"); + _to(" json printed z = \"click\\u0026clack\"\n"); _ln(39); - _to(" html printed longhand x = "Hello world"\n"); + _to(" json printed w = [1,2,{\"place\":\"The Dreadfort\",\"evil \\u003Cb\\u003Ecode\\u003C/b\\u003E\":\"\\u003Ci\\u003Eitalic\\u003C/i\\u003E\"}]\n"); _ln(40); - _to(" html printed longhand y = <hr />\n"); + _to(" json printed v = [\"\\u2028\",\"\\u2029\"]\n"); _ln(41); - _to(" html printed longhand z = click&clack\n"); + _to("

    \n"); _ln(42); - _to(" html printed longhand w = 1,2,[object Object]\n"); + _to("

    \n"); _ln(43); - _to("

    \n"); + _to(" html printed longhand x = "Hello world"\n"); _ln(44); + _to(" html printed longhand y = <hr />\n"); + _ln(45); + _to(" html printed longhand z = click&clack\n"); + _ln(46); + _to(" html printed longhand w = 1,2,[object Object]\n"); + _ln(47); + _to("

    \n"); + _ln(48); _ts(2); __toffee.res = __toffee.out.join(""); if (typeof postProcess !== "undefined" && postProcess !== null) { diff --git a/test/express3/views/index.toffee b/test/express3/views/index.toffee index 0f9cdc5..19cde6d 100644 --- a/test/express3/views/index.toffee +++ b/test/express3/views/index.toffee @@ -132,7 +132,7 @@ You have 3 female friends. default x = "Hello world" default y = <hr /> default z = click&clack - default w = [1,2,{"place":"The Dreadfort"}] + default w = [1,2,{"place":"The Dreadfort","evil \u003Cb\u003Ecode\u003C/b\u003E":"\u003Ci\u003Eitalic\u003C/i\u003E"}] default r = eol default w.foo = eol default v = ["\u2028","\u2029"] @@ -145,11 +145,15 @@ You have 3 female friends. raw z = click&clack raw w = 1,2,[object Object]

    +
    +  w_as_json_stringify=[1,2,{"place":"The Dreadfort","evil <b>code</b>":"<i>italic</i>"}]
    +  w_as_json_stringify_raw=[1,2,{"place":"The Dreadfort","evil code":"italic"}]
    +

    @@ -162,7 +166,7 @@ You have 3 female friends. json printed x = "\"Hello world\"" json printed y = "\u003Chr /\u003E" json printed z = "click\u0026clack" - json printed w = [1,2,{"place":"The Dreadfort"}] + json printed w = [1,2,{"place":"The Dreadfort","evil \u003Cb\u003Ecode\u003C/b\u003E":"\u003Ci\u003Eitalic\u003C/i\u003E"}] json printed v = ["\u2028","\u2029"]

    diff --git a/test/generate_express_test.coffee b/test/generate_express_test.coffee index 2c5839f..133013a 100644 --- a/test/generate_express_test.coffee +++ b/test/generate_express_test.coffee @@ -6,7 +6,7 @@ coffee = require 'coffee-script' generateExpressTest = (cb) -> - proc = spawn 'coffee', ['./src/command_line.coffee', '-n', './test/cases', '-o', './test/express3/public/javascripts/test_cases.js'] + proc = spawn path.join(__dirname,"../node_modules/.bin/coffee"), ['./src/command_line.coffee', '-n', './test/cases', '-o', './test/express3/public/javascripts/test_cases.js'] proc.stderr.on 'data', (buffer) -> console.log buffer.toString() proc.stdout.on 'data', (buffer) -> console.log buffer.toString() proc.on 'exit', (status) -> diff --git a/test/run_cases.iced b/test/run_cases.iced index f575362..bfbf17a 100644 --- a/test/run_cases.iced +++ b/test/run_cases.iced @@ -4,6 +4,8 @@ path = require 'path' zombie = require 'zombie' coffee = require 'coffee-script' tablify = require 'tablify' +colors = require 'colors' +jsdiff = require 'diff' regular_engine = new engine({ verbose: false @@ -45,9 +47,14 @@ run_case_dir = (eng, dir, cb) -> cb err, time_ms else if res isnt expected + diff = jsdiff.diffLines res, expected + delta = "" + diff.forEach (part) -> + c = if part.added then 'green' else if part.removed then 'red' else 'grey' + v = part.value + delta += v[c] cb "Failure in case #{dir}." + - "\n\nExpected\n=====\n#{expected}\n=====" + - "\nGot\n=====\n#{res}\n=====\n", time_ms + "#{delta}", time_ms else cb null, time_ms From 451f80e1c8823d44f5a560a88eccd5b78358d862 Mon Sep 17 00:00:00 2001 From: Chris Coyne Date: Thu, 13 Jul 2017 09:10:41 -0400 Subject: [PATCH 119/132] json formatting; better tests --- lib/view.js | 2 +- package.json | 2 +- src/view.coffee | 8 +- test/cases/escape/input.toffee | 2 +- test/cases/escape/output.toffee | 10 +- test/cases/json_formatting/input.toffee | 12 + test/cases/json_formatting/output.toffee | 70 +++++ .../express3/public/javascripts/test_cases.js | 283 +++++++++++++++++- test/express3/public/javascripts/toffee.js | 10 +- test/express3/views/index.toffee | 169 ++++++++--- toffee.js | 10 +- 11 files changed, 512 insertions(+), 66 deletions(-) create mode 100644 test/cases/json_formatting/input.toffee create mode 100644 test/cases/json_formatting/output.toffee diff --git a/lib/view.js b/lib/view.js index b210643..fbba03f 100644 --- a/lib/view.js +++ b/lib/view.js @@ -55,7 +55,7 @@ */ var __; __ = tabs(tab_level); - return "\n\n" + __ + "if not toffee? then toffee = {}\n" + __ + "if not toffee.templates then toffee.templates = {}\n\n" + __ + "toffee.states = " + (JSON.stringify(states)) + "\n\n" + __ + "toffee.__json = (locals, o) ->\n" + __ + " if not o?\n" + __ + " return \"null\"\n" + __ + " else\n" + __ + " return \"\" + JSON.stringify(o)\n" + __ + " .replace(//g,'\\\\u003E')\n" + __ + " .replace(/&/g,'\\\\u0026').replace(/\\u2028/g, '\\\\u2028')\n" + __ + " .replace(/\\u2029/g, '\\\\u2029')\n" + __ + " .replace(/\\u200e/g, '\\\\u200e') # LEFT-TO-RIGHT MARK\n" + __ + " .replace(/\\u200f/g, '\\\\u200f') # RIGHT-TO-LEFT MARK\n" + __ + " .replace(/\\u202a/g, '\\\\u202a') # LEFT-TO-RIGHT EMBEDDING\n" + __ + " .replace(/\\u202b/g, '\\\\u202b') # RIGHT-TO-LEFT EMBEDDING\n" + __ + " .replace(/\\u202c/g, '\\\\u202c') # POP DIRECTIONAL FORMATTING\n" + __ + " .replace(/\\u202d/g, '\\\\u202d') # LEFT-TO-RIGHT OVERRIDE\n" + __ + " .replace(/\\u202e/g, '\\\\u202e') # RIGHT-TO-LEFT OVERRIDE\n" + __ + " .replace(/\\u206a/g, '\\\\u206a') # INHIBIT SYMMETRIC SWAPPING\n" + __ + " .replace(/\\u206b/g, '\\\\u206b') # ACTIVATE SYMMETRIC SWAPPING\n" + __ + " .replace(/\\u206c/g, '\\\\u206c') # INHIBIT ARABIC FORM SHAPING\n" + __ + " .replace(/\\u206d/g, '\\\\u206d') # ACTIVATE ARABIC FORM SHAPING\n" + __ + " .replace(/\\u206e/g, '\\\\u206e') # NATIONAL DIGIT SHAPES\n" + __ + " .replace(/\\u206f/g, '\\\\u206f') # NOMINAL DIGIT SHAPES\n" + __ + " .replace(/\\u2066/g, '\\\\u2066') # LEFT-TO-RIGHT ISOLATE (LRI)\n" + __ + " .replace(/\\u2067/g, '\\\\u2067') # RIGHT-TO-LEFT ISOLATE (RLI)\n" + __ + " .replace(/\\u2068/g, '\\\\u2068') # FIRST STRONG ISOLATE (FSI)\n" + __ + " .replace(/\\u2069/g, '\\\\u2069') # POP DIRECTIONAL ISOLATE (PDI)\n\n\n" + __ + "toffee.__raw = (locals, o) -> o\n\n" + __ + "toffee.__html = (locals, o) ->\n" + __ + " (\"\"+o).replace(/&/g, '&')\n" + __ + " .replace(//g, '>')\n" + __ + " .replace(/\"/g, '"')\n" + __ + " .replace(/\\u200e/g, '') # LEFT-TO-RIGHT MARK\n" + __ + " .replace(/\\u200f/g, '') # RIGHT-TO-LEFT MARK\n" + __ + " .replace(/\\u202a/g, '') # LEFT-TO-RIGHT EMBEDDING\n" + __ + " .replace(/\\u202b/g, '') # RIGHT-TO-LEFT EMBEDDING\n" + __ + " .replace(/\\u202c/g, '') # POP DIRECTIONAL FORMATTING\n" + __ + " .replace(/\\u202d/g, '') # LEFT-TO-RIGHT OVERRIDE\n" + __ + " .replace(/\\u202e/g, '') # RIGHT-TO-LEFT OVERRIDE\n" + __ + " .replace(/\\u206a/g, '') # INHIBIT SYMMETRIC SWAPPING\n" + __ + " .replace(/\\u206b/g, '') # ACTIVATE SYMMETRIC SWAPPING\n" + __ + " .replace(/\\u206c/g, '') # INHIBIT ARABIC FORM SHAPING\n" + __ + " .replace(/\\u206d/g, '') # ACTIVATE ARABIC FORM SHAPING\n" + __ + " .replace(/\\u206e/g, '') # NATIONAL DIGIT SHAPES\n" + __ + " .replace(/\\u206f/g, '') # NOMINAL DIGIT SHAPES\n" + __ + " .replace(/\\u2066/g, '') # LEFT-TO-RIGHT ISOLATE (LRI)\n" + __ + " .replace(/\\u2067/g, '') # RIGHT-TO-LEFT ISOLATE (RLI)\n" + __ + " .replace(/\\u2068/g, '') # FIRST STRONG ISOLATE (FSI)\n" + __ + " .replace(/\\u2069/g, '') # POP DIRECTIONAL ISOLATE (PDI)\n\n\n" + __ + "toffee.__escape = (locals, o) ->\n" + __ + " if locals.__toffee.autoEscape? then ae = locals.__toffee.autoEscape\n" + __ + " else if " + (auto_escape != null) + " then ae = " + auto_escape + "\n" + __ + " else ae = true\n" + __ + " if ae\n" + __ + " if o is undefined then return ''\n" + __ + " if o? and (typeof o) is \"object\" then return locals.json o\n" + __ + " return locals.html o\n" + __ + " return o\n\n" + __ + "toffee.__augmentLocals = (locals, bundle_path) ->\n" + __ + " _l = locals\n" + __ + " _t = _l.__toffee = {out: []}\n" + __ + " if not _l.print? then _l.print = (o) -> toffee.__print _l, o\n" + __ + " if not _l.json? then _l.json = (o) -> toffee.__json _l, o\n" + __ + " if not _l.raw? then _l.raw = (o) -> toffee.__raw _l, o\n" + __ + " if not _l.html? then _l.html = (o) -> toffee.__html _l, o\n" + __ + " if not _l.escape? then _l.escape = (o) -> toffee.__escape _l, o\n" + __ + " if not _l.partial? then _l.partial = (path, vars) -> toffee.__partial toffee.templates[\"\#{bundle_path}\"], _l, path, vars\n" + __ + " if not _l.snippet? then _l.snippet = (path, vars) -> toffee.__snippet toffee.templates[\"\#{bundle_path}\"], _l, path, vars\n" + __ + " if not _l.load? then _l.load = (path, vars) -> toffee.__load toffee.templates[\"\#{bundle_path}\"], _l, path, vars\n" + __ + " _t.print = _l.print\n" + __ + " _t.json = _l.json\n" + __ + " _t.raw = _l.raw\n" + __ + " _t.html = _l.html\n" + __ + " _t.escape = _l.escape\n" + __ + " _t.partial = _l.partial\n" + __ + " _t.snippet = _l.snippet\n" + __ + " _t.load = _l.load\n\n" + (include_bundle_headers ? getBundleHeaders(tab_level) : ""); + return "\n\n" + __ + "if not toffee? then toffee = {}\n" + __ + "if not toffee.templates then toffee.templates = {}\n\n" + __ + "toffee.states = " + (JSON.stringify(states)) + "\n\n" + __ + "toffee.__json = (locals, o, opts) ->\n" + __ + " opts or= {}\n" + __ + " opts.indent or= \"\"\n" + __ + " if not o?\n" + __ + " return \"null\"\n" + __ + " else\n" + __ + " return \"\" + JSON.stringify(o,null,opts.indent)\n" + __ + " .replace(//g,'\\\\u003E')\n" + __ + " .replace(/&/g,'\\\\u0026').replace(/\\u2028/g, '\\\\u2028')\n" + __ + " .replace(/\\u2029/g, '\\\\u2029')\n" + __ + " .replace(/\\u200e/g, '\\\\u200e') # LEFT-TO-RIGHT MARK\n" + __ + " .replace(/\\u200f/g, '\\\\u200f') # RIGHT-TO-LEFT MARK\n" + __ + " .replace(/\\u202a/g, '\\\\u202a') # LEFT-TO-RIGHT EMBEDDING\n" + __ + " .replace(/\\u202b/g, '\\\\u202b') # RIGHT-TO-LEFT EMBEDDING\n" + __ + " .replace(/\\u202c/g, '\\\\u202c') # POP DIRECTIONAL FORMATTING\n" + __ + " .replace(/\\u202d/g, '\\\\u202d') # LEFT-TO-RIGHT OVERRIDE\n" + __ + " .replace(/\\u202e/g, '\\\\u202e') # RIGHT-TO-LEFT OVERRIDE\n" + __ + " .replace(/\\u206a/g, '\\\\u206a') # INHIBIT SYMMETRIC SWAPPING\n" + __ + " .replace(/\\u206b/g, '\\\\u206b') # ACTIVATE SYMMETRIC SWAPPING\n" + __ + " .replace(/\\u206c/g, '\\\\u206c') # INHIBIT ARABIC FORM SHAPING\n" + __ + " .replace(/\\u206d/g, '\\\\u206d') # ACTIVATE ARABIC FORM SHAPING\n" + __ + " .replace(/\\u206e/g, '\\\\u206e') # NATIONAL DIGIT SHAPES\n" + __ + " .replace(/\\u206f/g, '\\\\u206f') # NOMINAL DIGIT SHAPES\n" + __ + " .replace(/\\u2066/g, '\\\\u2066') # LEFT-TO-RIGHT ISOLATE (LRI)\n" + __ + " .replace(/\\u2067/g, '\\\\u2067') # RIGHT-TO-LEFT ISOLATE (RLI)\n" + __ + " .replace(/\\u2068/g, '\\\\u2068') # FIRST STRONG ISOLATE (FSI)\n" + __ + " .replace(/\\u2069/g, '\\\\u2069') # POP DIRECTIONAL ISOLATE (PDI)\n\n\n" + __ + "toffee.__raw = (locals, o) -> o\n\n" + __ + "toffee.__html = (locals, o) ->\n" + __ + " (\"\"+o).replace(/&/g, '&')\n" + __ + " .replace(//g, '>')\n" + __ + " .replace(/\"/g, '"')\n" + __ + " .replace(/\\u200e/g, '') # LEFT-TO-RIGHT MARK\n" + __ + " .replace(/\\u200f/g, '') # RIGHT-TO-LEFT MARK\n" + __ + " .replace(/\\u202a/g, '') # LEFT-TO-RIGHT EMBEDDING\n" + __ + " .replace(/\\u202b/g, '') # RIGHT-TO-LEFT EMBEDDING\n" + __ + " .replace(/\\u202c/g, '') # POP DIRECTIONAL FORMATTING\n" + __ + " .replace(/\\u202d/g, '') # LEFT-TO-RIGHT OVERRIDE\n" + __ + " .replace(/\\u202e/g, '') # RIGHT-TO-LEFT OVERRIDE\n" + __ + " .replace(/\\u206a/g, '') # INHIBIT SYMMETRIC SWAPPING\n" + __ + " .replace(/\\u206b/g, '') # ACTIVATE SYMMETRIC SWAPPING\n" + __ + " .replace(/\\u206c/g, '') # INHIBIT ARABIC FORM SHAPING\n" + __ + " .replace(/\\u206d/g, '') # ACTIVATE ARABIC FORM SHAPING\n" + __ + " .replace(/\\u206e/g, '') # NATIONAL DIGIT SHAPES\n" + __ + " .replace(/\\u206f/g, '') # NOMINAL DIGIT SHAPES\n" + __ + " .replace(/\\u2066/g, '') # LEFT-TO-RIGHT ISOLATE (LRI)\n" + __ + " .replace(/\\u2067/g, '') # RIGHT-TO-LEFT ISOLATE (RLI)\n" + __ + " .replace(/\\u2068/g, '') # FIRST STRONG ISOLATE (FSI)\n" + __ + " .replace(/\\u2069/g, '') # POP DIRECTIONAL ISOLATE (PDI)\n\n\n" + __ + "toffee.__escape = (locals, o) ->\n" + __ + " if locals.__toffee.autoEscape? then ae = locals.__toffee.autoEscape\n" + __ + " else if " + (auto_escape != null) + " then ae = " + auto_escape + "\n" + __ + " else ae = true\n" + __ + " if ae\n" + __ + " if o is undefined then return ''\n" + __ + " if o? and (typeof o) is \"object\" then return locals.json o\n" + __ + " return locals.html o\n" + __ + " return o\n\n" + __ + "toffee.__augmentLocals = (locals, bundle_path) ->\n" + __ + " _l = locals\n" + __ + " _t = _l.__toffee = {out: []}\n" + __ + " if not _l.print? then _l.print = (o) -> toffee.__print _l, o\n" + __ + " if not _l.json? then _l.json = (o, opts) -> toffee.__json _l, o, opts\n" + __ + " if not _l.raw? then _l.raw = (o) -> toffee.__raw _l, o\n" + __ + " if not _l.html? then _l.html = (o) -> toffee.__html _l, o\n" + __ + " if not _l.escape? then _l.escape = (o) -> toffee.__escape _l, o\n" + __ + " if not _l.partial? then _l.partial = (path, vars) -> toffee.__partial toffee.templates[\"\#{bundle_path}\"], _l, path, vars\n" + __ + " if not _l.snippet? then _l.snippet = (path, vars) -> toffee.__snippet toffee.templates[\"\#{bundle_path}\"], _l, path, vars\n" + __ + " if not _l.load? then _l.load = (path, vars) -> toffee.__load toffee.templates[\"\#{bundle_path}\"], _l, path, vars\n" + __ + " _t.print = _l.print\n" + __ + " _t.json = _l.json\n" + __ + " _t.raw = _l.raw\n" + __ + " _t.html = _l.html\n" + __ + " _t.escape = _l.escape\n" + __ + " _t.partial = _l.partial\n" + __ + " _t.snippet = _l.snippet\n" + __ + " _t.load = _l.load\n\n" + (include_bundle_headers ? getBundleHeaders(tab_level) : ""); }; getBundleHeaders = function(tab_level) { diff --git a/package.json b/package.json index 8056f9a..3f09db7 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "toffee", "description": "A NodeJs and browser-side templating language based on CoffeeScript with slicker tokens and syntax.", - "version": "0.3.0", + "version": "0.3.1", "directories": { "lib": "./lib" }, diff --git a/src/view.coffee b/src/view.coffee index 82a3c87..b46088b 100644 --- a/src/view.coffee +++ b/src/view.coffee @@ -29,11 +29,13 @@ getCommonHeaders = (tab_level, include_bundle_headers, auto_escape) -> #{__}toffee.states = #{JSON.stringify states} -#{__}toffee.__json = (locals, o) -> +#{__}toffee.__json = (locals, o, opts) -> +#{__} opts or= {} +#{__} opts.indent or= "" #{__} if not o? #{__} return "null" #{__} else -#{__} return "" + JSON.stringify(o) +#{__} return "" + JSON.stringify(o,null,opts.indent) #{__} .replace(//g,'\\\\u003E') #{__} .replace(/&/g,'\\\\u0026').replace(/\\u2028/g, '\\\\u2028') #{__} .replace(/\\u2029/g, '\\\\u2029') @@ -95,7 +97,7 @@ getCommonHeaders = (tab_level, include_bundle_headers, auto_escape) -> #{__} _l = locals #{__} _t = _l.__toffee = {out: []} #{__} if not _l.print? then _l.print = (o) -> toffee.__print _l, o -#{__} if not _l.json? then _l.json = (o) -> toffee.__json _l, o +#{__} if not _l.json? then _l.json = (o, opts) -> toffee.__json _l, o, opts #{__} if not _l.raw? then _l.raw = (o) -> toffee.__raw _l, o #{__} if not _l.html? then _l.html = (o) -> toffee.__html _l, o #{__} if not _l.escape? then _l.escape = (o) -> toffee.__escape _l, o diff --git a/test/cases/escape/input.toffee b/test/cases/escape/input.toffee index 07b8e21..697235e 100644 --- a/test/cases/escape/input.toffee +++ b/test/cases/escape/input.toffee @@ -2,7 +2,7 @@ x = '"Hello world"' y = '


    ' z = 'click&clack' - w = [1, 2, {"place": "The Dreadfort", "evil code": "italic"}] + w = [1, 2, {"place": "The Dreadfort", "evil \"code\"": "italic"}] v = ["\u2028", "\u2029"] dir = ["hi\u{202e}there"] # ltr type things #}

    diff --git a/test/cases/escape/output.toffee b/test/cases/escape/output.toffee index 2dff1f6..7624efa 100644 --- a/test/cases/escape/output.toffee +++ b/test/cases/escape/output.toffee @@ -2,7 +2,7 @@ default x = "Hello world" default y = <hr /> default z = click&clack - default w = [1,2,{"place":"The Dreadfort","evil \u003Cb\u003Ecode\u003C/b\u003E":"\u003Ci\u003Eitalic\u003C/i\u003E"}] + default w = [1,2,{"place":"The Dreadfort","evil \u003Cb\u003E\"code\"\u003C/b\u003E":"\u003Ci\u003Eitalic\u003C/i\u003E"}] default r = eol default w.foo = eol default v = ["\u2028","\u2029"] @@ -16,14 +16,14 @@ raw w = 1,2,[object Object]

    -  w_as_json_stringify=[1,2,{"place":"The Dreadfort","evil <b>code</b>":"<i>italic</i>"}]
    -  w_as_json_stringify_raw=[1,2,{"place":"The Dreadfort","evil code":"italic"}]
    +  w_as_json_stringify=[1,2,{"place":"The Dreadfort","evil <b>\"code\"</b>":"<i>italic</i>"}]
    +  w_as_json_stringify_raw=[1,2,{"place":"The Dreadfort","evil \"code\"":"italic"}]
     

    @@ -36,7 +36,7 @@ json printed x = "\"Hello world\"" json printed y = "\u003Chr /\u003E" json printed z = "click\u0026clack" - json printed w = [1,2,{"place":"The Dreadfort","evil \u003Cb\u003Ecode\u003C/b\u003E":"\u003Ci\u003Eitalic\u003C/i\u003E"}] + json printed w = [1,2,{"place":"The Dreadfort","evil \u003Cb\u003E\"code\"\u003C/b\u003E":"\u003Ci\u003Eitalic\u003C/i\u003E"}] json printed v = ["\u2028","\u2029"]

    diff --git a/test/cases/json_formatting/input.toffee b/test/cases/json_formatting/input.toffee new file mode 100644 index 0000000..673bead --- /dev/null +++ b/test/cases/json_formatting/input.toffee @@ -0,0 +1,12 @@ +{# + x = + foo: [1,2,3] + bar: + car: [4,5,"<\/html",{zar: [6,7,null]}] + y = [1,2,"<\/script>\""] +#} +#{x} +#{json x, {indent: ' '}} +#{json x, {indent: 2}} +#{json x, {indent: '\t'}} +#{__toffee.json y, {indent:3}} diff --git a/test/cases/json_formatting/output.toffee b/test/cases/json_formatting/output.toffee new file mode 100644 index 0000000..f9e8db4 --- /dev/null +++ b/test/cases/json_formatting/output.toffee @@ -0,0 +1,70 @@ + +{"foo":[1,2,3],"bar":{"car":[4,5,"\u003C/html",{"zar":[6,7,null]}]}} +{ + "foo": [ + 1, + 2, + 3 + ], + "bar": { + "car": [ + 4, + 5, + "\u003C/html", + { + "zar": [ + 6, + 7, + null + ] + } + ] + } +} +{ + "foo": [ + 1, + 2, + 3 + ], + "bar": { + "car": [ + 4, + 5, + "\u003C/html", + { + "zar": [ + 6, + 7, + null + ] + } + ] + } +} +{ + "foo": [ + 1, + 2, + 3 + ], + "bar": { + "car": [ + 4, + 5, + "\u003C/html", + { + "zar": [ + 6, + 7, + null + ] + } + ] + } +} +[ + 1, + 2, + "\u003C/script\u003E\"" +] diff --git a/test/express3/public/javascripts/test_cases.js b/test/express3/public/javascripts/test_cases.js index 6c6e776..7f1ce78 100644 --- a/test/express3/public/javascripts/test_cases.js +++ b/test/express3/public/javascripts/test_cases.js @@ -925,7 +925,7 @@ w = [ 1, 2, { "place": "The Dreadfort", - "evil code": "italic" + "evil \"code\"": "italic" } ]; v = ["\u2028", "\u2029"]; @@ -1126,7 +1126,7 @@ _ln(4); _to(" default z = click&clack\n"); _ln(5); - _to(" default w = [1,2,{\"place\":\"The Dreadfort\",\"evil \\u003Cb\\u003Ecode\\u003C/b\\u003E\":\"\\u003Ci\\u003Eitalic\\u003C/i\\u003E\"}]\n"); + _to(" default w = [1,2,{\"place\":\"The Dreadfort\",\"evil \\u003Cb\\u003E\\\"code\\\"\\u003C/b\\u003E\":\"\\u003Ci\\u003Eitalic\\u003C/i\\u003E\"}]\n"); _ln(6); _to(" default r = eol\n"); _ln(7); @@ -1154,9 +1154,9 @@ _ln(18); _to("

    \n");
         _ln(19);
    -    _to("  w_as_json_stringify=[1,2,{"place":"The Dreadfort","evil <b>code</b>":"<i>italic</i>"}]\n");
    +    _to("  w_as_json_stringify=[1,2,{"place":"The Dreadfort","evil <b>\\"code\\"</b>":"<i>italic</i>"}]\n");
         _ln(20);
    -    _to("  w_as_json_stringify_raw=[1,2,{\"place\":\"The Dreadfort\",\"evil code\":\"italic\"}]\n");
    +    _to("  w_as_json_stringify_raw=[1,2,{\"place\":\"The Dreadfort\",\"evil \\\"code\\\"\":\"italic\"}]\n");
         _ln(21);
         _to("
    \n"); _ln(22); @@ -1168,7 +1168,7 @@ _ln(25); _to(" z = \"click\\u0026clack\"\n"); _ln(26); - _to(" w = [1,2,{\"place\":\"The Dreadfort\",\"evil \\u003Cb\\u003Ecode\\u003C/b\\u003E\":\"\\u003Ci\\u003Eitalic\\u003C/i\\u003E\"}]\n"); + _to(" w = [1,2,{\"place\":\"The Dreadfort\",\"evil \\u003Cb\\u003E\\\"code\\\"\\u003C/b\\u003E\":\"\\u003Ci\\u003Eitalic\\u003C/i\\u003E\"}]\n"); _ln(27); _to(" v = [\"\\u2028\",\"\\u2029\"]\n"); _ln(28); @@ -1194,7 +1194,7 @@ _ln(38); _to(" json printed z = \"click\\u0026clack\"\n"); _ln(39); - _to(" json printed w = [1,2,{\"place\":\"The Dreadfort\",\"evil \\u003Cb\\u003Ecode\\u003C/b\\u003E\":\"\\u003Ci\\u003Eitalic\\u003C/i\\u003E\"}]\n"); + _to(" json printed w = [1,2,{\"place\":\"The Dreadfort\",\"evil \\u003Cb\\u003E\\\"code\\\"\\u003C/b\\u003E\":\"\\u003Ci\\u003Eitalic\\u003C/i\\u003E\"}]\n"); _ln(40); _to(" json printed v = [\"\\u2028\",\"\\u2029\"]\n"); _ln(41); @@ -2236,6 +2236,277 @@ }).call(this); +; +(function() { + var tmpl; + + tmpl = toffee.templates["/json_formatting/input.toffee"] = { + bundlePath: "/json_formatting/input.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var x, y, __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/json_formatting/input.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(2); + x = { + foo: [1, 2, 3], + bar: { + car: [ + 4, 5, "<\/html", { + zar: [6, 7, null] + } + ] + } + }; + y = [1, 2, "<\/script>\""]; + _ts(1); + _ln(7); + _to("\n"); + _ln(8); + _to("" + (x != null ? escape(x) : '')); + _to("\n"); + _ln(9); + _to("" + (json(x, { + indent: ' ' + }))); + _to("\n"); + _ln(10); + _to("" + (json(x, { + indent: 2 + }))); + _to("\n"); + _ln(11); + _to("" + (json(x, { + indent: '\t' + }))); + _to("\n"); + _ln(12); + _to("" + (__toffee.json(y, { + indent: 3 + }))); + _to("\n"); + _ln(13); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + +; +(function() { + var tmpl; + + tmpl = toffee.templates["/json_formatting/output.toffee"] = { + bundlePath: "/json_formatting/output.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/json_formatting/output.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(1); + _ln(1); + _to("\n"); + _ln(2); + _to("{\"foo\":[1,2,3],\"bar\":{\"car\":[4,5,\"\\u003C/html\",{\"zar\":[6,7,null]}]}}\n"); + _ln(3); + _to("{\n"); + _ln(4); + _to(" \"foo\": [\n"); + _ln(5); + _to(" 1,\n"); + _ln(6); + _to(" 2,\n"); + _ln(7); + _to(" 3\n"); + _ln(8); + _to(" ],\n"); + _ln(9); + _to(" \"bar\": {\n"); + _ln(10); + _to(" \"car\": [\n"); + _ln(11); + _to(" 4,\n"); + _ln(12); + _to(" 5,\n"); + _ln(13); + _to(" \"\\u003C/html\",\n"); + _ln(14); + _to(" {\n"); + _ln(15); + _to(" \"zar\": [\n"); + _ln(16); + _to(" 6,\n"); + _ln(17); + _to(" 7,\n"); + _ln(18); + _to(" null\n"); + _ln(19); + _to(" ]\n"); + _ln(20); + _to(" }\n"); + _ln(21); + _to(" ]\n"); + _ln(22); + _to(" }\n"); + _ln(23); + _to("}\n"); + _ln(24); + _to("{\n"); + _ln(25); + _to(" \"foo\": [\n"); + _ln(26); + _to(" 1,\n"); + _ln(27); + _to(" 2,\n"); + _ln(28); + _to(" 3\n"); + _ln(29); + _to(" ],\n"); + _ln(30); + _to(" \"bar\": {\n"); + _ln(31); + _to(" \"car\": [\n"); + _ln(32); + _to(" 4,\n"); + _ln(33); + _to(" 5,\n"); + _ln(34); + _to(" \"\\u003C/html\",\n"); + _ln(35); + _to(" {\n"); + _ln(36); + _to(" \"zar\": [\n"); + _ln(37); + _to(" 6,\n"); + _ln(38); + _to(" 7,\n"); + _ln(39); + _to(" null\n"); + _ln(40); + _to(" ]\n"); + _ln(41); + _to(" }\n"); + _ln(42); + _to(" ]\n"); + _ln(43); + _to(" }\n"); + _ln(44); + _to("}\n"); + _ln(45); + _to("{\n"); + _ln(46); + _to("\t\"foo\": [\n"); + _ln(47); + _to("\t\t1,\n"); + _ln(48); + _to("\t\t2,\n"); + _ln(49); + _to("\t\t3\n"); + _ln(50); + _to("\t],\n"); + _ln(51); + _to("\t\"bar\": {\n"); + _ln(52); + _to("\t\t\"car\": [\n"); + _ln(53); + _to("\t\t\t4,\n"); + _ln(54); + _to("\t\t\t5,\n"); + _ln(55); + _to("\t\t\t\"\\u003C/html\",\n"); + _ln(56); + _to("\t\t\t{\n"); + _ln(57); + _to("\t\t\t\t\"zar\": [\n"); + _ln(58); + _to("\t\t\t\t\t6,\n"); + _ln(59); + _to("\t\t\t\t\t7,\n"); + _ln(60); + _to("\t\t\t\t\tnull\n"); + _ln(61); + _to("\t\t\t\t]\n"); + _ln(62); + _to("\t\t\t}\n"); + _ln(63); + _to("\t\t]\n"); + _ln(64); + _to("\t}\n"); + _ln(65); + _to("}\n"); + _ln(66); + _to("[\n"); + _ln(67); + _to(" 1,\n"); + _ln(68); + _to(" 2,\n"); + _ln(69); + _to(" \"\\u003C/script\\u003E\\\"\"\n"); + _ln(70); + _to("]\n"); + _ln(71); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; (function() { var tmpl; diff --git a/test/express3/public/javascripts/toffee.js b/test/express3/public/javascripts/toffee.js index d7e6c96..5d6b01c 100644 --- a/test/express3/public/javascripts/toffee.js +++ b/test/express3/public/javascripts/toffee.js @@ -13,11 +13,13 @@ toffee.states = { "COFFEE": 2 }; -toffee.__json = function(locals, o) { +toffee.__json = function(locals, o, opts) { + opts || (opts = {}); + opts.indent || (opts.indent = ""); if (o == null) { return "null"; } else { - return "" + JSON.stringify(o).replace(//g, '\\u003E').replace(/&/g, '\\u0026').replace(/\u2028/g, '\\u2028').replace(/\u2029/g, '\\u2029').replace(/\u200e/g, '\\u200e').replace(/\u200f/g, '\\u200f').replace(/\u202a/g, '\\u202a').replace(/\u202b/g, '\\u202b').replace(/\u202c/g, '\\u202c').replace(/\u202d/g, '\\u202d').replace(/\u202e/g, '\\u202e').replace(/\u206a/g, '\\u206a').replace(/\u206b/g, '\\u206b').replace(/\u206c/g, '\\u206c').replace(/\u206d/g, '\\u206d').replace(/\u206e/g, '\\u206e').replace(/\u206f/g, '\\u206f').replace(/\u2066/g, '\\u2066').replace(/\u2067/g, '\\u2067').replace(/\u2068/g, '\\u2068').replace(/\u2069/g, '\\u2069'); + return "" + JSON.stringify(o, null, opts.indent).replace(//g, '\\u003E').replace(/&/g, '\\u0026').replace(/\u2028/g, '\\u2028').replace(/\u2029/g, '\\u2029').replace(/\u200e/g, '\\u200e').replace(/\u200f/g, '\\u200f').replace(/\u202a/g, '\\u202a').replace(/\u202b/g, '\\u202b').replace(/\u202c/g, '\\u202c').replace(/\u202d/g, '\\u202d').replace(/\u202e/g, '\\u202e').replace(/\u206a/g, '\\u206a').replace(/\u206b/g, '\\u206b').replace(/\u206c/g, '\\u206c').replace(/\u206d/g, '\\u206d').replace(/\u206e/g, '\\u206e').replace(/\u206f/g, '\\u206f').replace(/\u2066/g, '\\u2066').replace(/\u2067/g, '\\u2067').replace(/\u2068/g, '\\u2068').replace(/\u2069/g, '\\u2069'); } }; @@ -62,8 +64,8 @@ toffee.__augmentLocals = function(locals, bundle_path) { }; } if (_l.json == null) { - _l.json = function(o) { - return toffee.__json(_l, o); + _l.json = function(o, opts) { + return toffee.__json(_l, o, opts); }; } if (_l.raw == null) { diff --git a/test/express3/views/index.toffee b/test/express3/views/index.toffee index 19cde6d..3176ae5 100644 --- a/test/express3/views/index.toffee +++ b/test/express3/views/index.toffee @@ -132,7 +132,7 @@ You have 3 female friends. default x = "Hello world" default y = <hr /> default z = click&clack - default w = [1,2,{"place":"The Dreadfort","evil \u003Cb\u003Ecode\u003C/b\u003E":"\u003Ci\u003Eitalic\u003C/i\u003E"}] + default w = [1,2,{"place":"The Dreadfort","evil \u003Cb\u003E\"code\"\u003C/b\u003E":"\u003Ci\u003Eitalic\u003C/i\u003E"}] default r = eol default w.foo = eol default v = ["\u2028","\u2029"] @@ -146,14 +146,14 @@ You have 3 female friends. raw w = 1,2,[object Object]

    -  w_as_json_stringify=[1,2,{"place":"The Dreadfort","evil <b>code</b>":"<i>italic</i>"}]
    -  w_as_json_stringify_raw=[1,2,{"place":"The Dreadfort","evil code":"italic"}]
    +  w_as_json_stringify=[1,2,{"place":"The Dreadfort","evil <b>\"code\"</b>":"<i>italic</i>"}]
    +  w_as_json_stringify_raw=[1,2,{"place":"The Dreadfort","evil \"code\"":"italic"}]
     

    @@ -166,7 +166,7 @@ You have 3 female friends. json printed x = "\"Hello world\"" json printed y = "\u003Chr /\u003E" json printed z = "click\u0026clack" - json printed w = [1,2,{"place":"The Dreadfort","evil \u003Cb\u003Ecode\u003C/b\u003E":"\u003Ci\u003Eitalic\u003C/i\u003E"}] + json printed w = [1,2,{"place":"The Dreadfort","evil \u003Cb\u003E\"code\"\u003C/b\u003E":"\u003Ci\u003Eitalic\u003C/i\u003E"}] json printed v = ["\u2028","\u2029"]

    @@ -323,18 +323,105 @@ Pass7Pass8 + + + json_formatting + +{"foo":[1,2,3],"bar":{"car":[4,5,"\u003C/html",{"zar":[6,7,null]}]}} +{ + "foo": [ + 1, + 2, + 3 + ], + "bar": { + "car": [ + 4, + 5, + "\u003C/html", + { + "zar": [ + 6, + 7, + null + ] + } + ] + } +} +{ + "foo": [ + 1, + 2, + 3 + ], + "bar": { + "car": [ + 4, + 5, + "\u003C/html", + { + "zar": [ + 6, + 7, + null + ] + } + ] + } +} +{ + "foo": [ + 1, + 2, + 3 + ], + "bar": { + "car": [ + 4, + 5, + "\u003C/html", + { + "zar": [ + 6, + 7, + null + ] + } + ] + } +} +[ + 1, + 2, + "\u003C/script\u003E\"" +] + + #{partial '../../cases/json_formatting/input.toffee', {}} + + + + + + + + + junk -

      +
      • broom
      • mop
      • vacuum
      - #{partial '../../cases/junk/input.toffee', {}} - + #{partial '../../cases/junk/input.toffee', {}} + @@ -345,13 +432,13 @@ Pass7Pass8 lambda_fns - PassPassPassPass - #{partial '../../cases/lambda_fns/input.toffee', {}} - + PassPassPassPass + #{partial '../../cases/lambda_fns/input.toffee', {}} + @@ -362,15 +449,15 @@ Pass7Pass8 multiline_interpolation - Hello, world + Hello, world
      Goodbye, world - #{partial '../../cases/multiline_interpolation/input.toffee', {}} - + #{partial '../../cases/multiline_interpolation/input.toffee', {}} + @@ -381,7 +468,7 @@ Goodbye, world passback - vx,vy,vz = vx0,, + vx,vy,vz = vx0,, This should output (1). vx,vy,vz = vx1,vy1, @@ -393,18 +480,18 @@ vx,vy,vz = vx3,vy3,vz2 vx,vy,vz = vx4,vy4,vz2 vx,vy,vz = vx5_sub,vy5_sub,vz2 - #{partial '../../cases/passback/input.toffee', { + #{partial '../../cases/passback/input.toffee', { "vx": "vx0", "x" : "hi" }} - + @@ -415,13 +502,13 @@ vx,vy,vz = vx5_sub,vy5_sub,vz2 plaintext - Hi there. - #{partial '../../cases/plaintext/input.toffee', {}} - + Hi there. + #{partial '../../cases/plaintext/input.toffee', {}} + @@ -432,15 +519,15 @@ vx,vy,vz = vx5_sub,vy5_sub,vz2 post_process - This-is-a-hidden-message + This-is-a-hidden-message .dlrow leurc ,eybdooG .dlrow ,olleH - #{partial '../../cases/post_process/input.toffee', { + #{partial '../../cases/post_process/input.toffee', { greeting: 'Hello' postProcess: (s) -> (c for c in s by -1).join '' }} - + @@ -469,13 +556,13 @@ vx,vy,vz = vx5_sub,vy5_sub,vz2 render_no_args - No arguments passed. - #{partial '../../cases/render_no_args/input.toffee', } - + No arguments passed. + #{partial '../../cases/render_no_args/input.toffee', } + @@ -486,7 +573,7 @@ vx,vy,vz = vx5_sub,vy5_sub,vz2 snippets - From: Preloaded sender + From: Preloaded sender Preloaded message. From: Unknown sender Unknown message. @@ -494,18 +581,18 @@ From: Sam Preloaded message. From: Max Unknown message. - #{partial '../../cases/snippets/input.toffee', { + #{partial '../../cases/snippets/input.toffee', { "from": "Preloaded sender", "msg" : "Preloaded message." }} - + @@ -516,7 +603,7 @@ Unknown message. special_cases - + "PASSED"

      @@ -527,12 +614,12 @@ A backslash is a \ - #{partial '../../cases/special_cases/input.toffee', {}} - + #{partial '../../cases/special_cases/input.toffee', {}} + diff --git a/toffee.js b/toffee.js index d7e6c96..5d6b01c 100644 --- a/toffee.js +++ b/toffee.js @@ -13,11 +13,13 @@ toffee.states = { "COFFEE": 2 }; -toffee.__json = function(locals, o) { +toffee.__json = function(locals, o, opts) { + opts || (opts = {}); + opts.indent || (opts.indent = ""); if (o == null) { return "null"; } else { - return "" + JSON.stringify(o).replace(//g, '\\u003E').replace(/&/g, '\\u0026').replace(/\u2028/g, '\\u2028').replace(/\u2029/g, '\\u2029').replace(/\u200e/g, '\\u200e').replace(/\u200f/g, '\\u200f').replace(/\u202a/g, '\\u202a').replace(/\u202b/g, '\\u202b').replace(/\u202c/g, '\\u202c').replace(/\u202d/g, '\\u202d').replace(/\u202e/g, '\\u202e').replace(/\u206a/g, '\\u206a').replace(/\u206b/g, '\\u206b').replace(/\u206c/g, '\\u206c').replace(/\u206d/g, '\\u206d').replace(/\u206e/g, '\\u206e').replace(/\u206f/g, '\\u206f').replace(/\u2066/g, '\\u2066').replace(/\u2067/g, '\\u2067').replace(/\u2068/g, '\\u2068').replace(/\u2069/g, '\\u2069'); + return "" + JSON.stringify(o, null, opts.indent).replace(//g, '\\u003E').replace(/&/g, '\\u0026').replace(/\u2028/g, '\\u2028').replace(/\u2029/g, '\\u2029').replace(/\u200e/g, '\\u200e').replace(/\u200f/g, '\\u200f').replace(/\u202a/g, '\\u202a').replace(/\u202b/g, '\\u202b').replace(/\u202c/g, '\\u202c').replace(/\u202d/g, '\\u202d').replace(/\u202e/g, '\\u202e').replace(/\u206a/g, '\\u206a').replace(/\u206b/g, '\\u206b').replace(/\u206c/g, '\\u206c').replace(/\u206d/g, '\\u206d').replace(/\u206e/g, '\\u206e').replace(/\u206f/g, '\\u206f').replace(/\u2066/g, '\\u2066').replace(/\u2067/g, '\\u2067').replace(/\u2068/g, '\\u2068').replace(/\u2069/g, '\\u2069'); } }; @@ -62,8 +64,8 @@ toffee.__augmentLocals = function(locals, bundle_path) { }; } if (_l.json == null) { - _l.json = function(o) { - return toffee.__json(_l, o); + _l.json = function(o, opts) { + return toffee.__json(_l, o, opts); }; } if (_l.raw == null) { From 5ddefeae6b7036d6cfc08df4a1d1583af7fadea3 Mon Sep 17 00:00:00 2001 From: Chris Coyne Date: Tue, 30 Oct 2018 10:23:43 -0400 Subject: [PATCH 120/132] updates --- package-lock.json | 1923 +++++++++++++++++++++++++++++++++++++++++++++ package.json | 18 +- 2 files changed, 1932 insertions(+), 9 deletions(-) create mode 100644 package-lock.json diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..ca88bed --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1923 @@ +{ + "name": "toffee", + "version": "0.3.1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "JSONSelect": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/JSONSelect/-/JSONSelect-0.4.0.tgz", + "integrity": "sha1-oI7cxn6z/L6Z7WMIVTRKDPKCu40=", + "dev": true + }, + "JSV": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/JSV/-/JSV-4.0.2.tgz", + "integrity": "sha1-0Hf2glVx+CEy+d/67Vh7QCn+/1c=", + "dev": true + }, + "abab": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", + "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==", + "dev": true + }, + "accepts": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.13.tgz", + "integrity": "sha1-5fHzkoxtlf2WVYw27D2dDeSm7Oo=", + "dev": true, + "requires": { + "mime-types": "~2.1.6", + "negotiator": "0.5.3" + } + }, + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "dev": true + }, + "acorn-globals": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.0.tgz", + "integrity": "sha512-hMtHj3s5RnuhvHPowpBYvJVj3rAar82JiDQHvGs1zO0l10ocX/xEdBShNHTJaboucJUsScghp74pH3s7EnHHQw==", + "dev": true, + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + }, + "dependencies": { + "acorn": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.2.tgz", + "integrity": "sha512-GXmKIvbrN3TV7aVqAzVFaMW8F8wzVX7voEBRO3bDA64+EX37YSayggRJP5Xig6HYHBkWKpFg9W5gg6orklubhg==", + "dev": true + } + } + }, + "acorn-walk": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.0.tgz", + "integrity": "sha512-ugTb7Lq7u4GfWSqqpwE0bGyoBZNMTok/zDBXxfEG0QM50jNlGhIWjRC1pPN7bvV1anhF+bs+/gNcRw+o55Evbg==", + "dev": true + }, + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true, + "optional": true + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "dev": true, + "requires": { + "util": "0.10.3" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "base64-url": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/base64-url/-/base64-url-1.2.1.tgz", + "integrity": "sha1-GZ/WYXAqDnt9yubgaYuwicUvbXg=", + "dev": true + }, + "basic-auth": { + "version": "1.0.4", + "resolved": "http://registry.npmjs.org/basic-auth/-/basic-auth-1.0.4.tgz", + "integrity": "sha1-Awk1sB3nyblKgksp8/zLdQ06UpA=", + "dev": true + }, + "basic-auth-connect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz", + "integrity": "sha1-/bC0OWLKe0BFanwrtI/hc9otISI=", + "dev": true + }, + "batch": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.5.3.tgz", + "integrity": "sha1-PzQU84AyF0O/wQQvmoP/HVgk1GQ=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bluebird": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.2.tgz", + "integrity": "sha512-dhHTWMI7kMx5whMQntl7Vr9C6BvV10lFXDAasnqnrMYhXVCzzk6IO9Fo2L75jXHT07WrOngL1WDXOp+yYS91Yg==", + "dev": true + }, + "body-parser": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.13.3.tgz", + "integrity": "sha1-wIzzMMM1jhUQFqBXRvE/ApyX+pc=", + "dev": true, + "requires": { + "bytes": "2.1.0", + "content-type": "~1.0.1", + "debug": "~2.2.0", + "depd": "~1.0.1", + "http-errors": "~1.3.1", + "iconv-lite": "0.4.11", + "on-finished": "~2.3.0", + "qs": "4.0.0", + "raw-body": "~2.1.2", + "type-is": "~1.6.6" + } + }, + "browser-process-hrtime": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", + "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==", + "dev": true + }, + "bytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.1.0.tgz", + "integrity": "sha1-rJPEEOL/ycx89LRks4KJBn9eR7Q=", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "cjson": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/cjson/-/cjson-0.3.0.tgz", + "integrity": "sha1-5kObkHA9MS/24iJAl76pLOPQKhQ=", + "dev": true, + "requires": { + "jsonlint": "1.6.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "coffee-script": { + "version": "1.12.7", + "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.12.7.tgz", + "integrity": "sha512-fLeEhqwymYat/MpTPUjSKHVYYl0ec2mOyALEMLmzr5i1isuG+6jfI2j2d5oBO3VIzgUXgBVIcOT9uH1TFxBckw==" + }, + "colors": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.2.tgz", + "integrity": "sha512-rhP0JSBGYvpcNQj4s5AdShMeE5ahMop96cTeDl/v9qQQm2fYClE2QXZRi8wLzc+GmXSxdIqqbOIAhyObEXDbfQ==", + "dev": true + }, + "combined-stream": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", + "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" + }, + "compressible": { + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.15.tgz", + "integrity": "sha512-4aE67DL33dSW9gw4CI2H/yTxqHLNcxp0yS6jB+4h+wr3e43+1z7vm0HU9qXOH8j+qjKuL8+UtkOxYQSMq60Ylw==", + "dev": true, + "requires": { + "mime-db": ">= 1.36.0 < 2" + } + }, + "compression": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.5.2.tgz", + "integrity": "sha1-sDuNhub4rSloPLqN+R3cb/x3s5U=", + "dev": true, + "requires": { + "accepts": "~1.2.12", + "bytes": "2.1.0", + "compressible": "~2.0.5", + "debug": "~2.2.0", + "on-headers": "~1.0.0", + "vary": "~1.0.1" + } + }, + "connect": { + "version": "2.30.2", + "resolved": "https://registry.npmjs.org/connect/-/connect-2.30.2.tgz", + "integrity": "sha1-jam8vooFTT0xjXTf7JA7XDmhtgk=", + "dev": true, + "requires": { + "basic-auth-connect": "1.0.0", + "body-parser": "~1.13.3", + "bytes": "2.1.0", + "compression": "~1.5.2", + "connect-timeout": "~1.6.2", + "content-type": "~1.0.1", + "cookie": "0.1.3", + "cookie-parser": "~1.3.5", + "cookie-signature": "1.0.6", + "csurf": "~1.8.3", + "debug": "~2.2.0", + "depd": "~1.0.1", + "errorhandler": "~1.4.2", + "express-session": "~1.11.3", + "finalhandler": "0.4.0", + "fresh": "0.3.0", + "http-errors": "~1.3.1", + "method-override": "~2.3.5", + "morgan": "~1.6.1", + "multiparty": "3.3.2", + "on-headers": "~1.0.0", + "parseurl": "~1.3.0", + "pause": "0.1.0", + "qs": "4.0.0", + "response-time": "~2.3.1", + "serve-favicon": "~2.3.0", + "serve-index": "~1.7.2", + "serve-static": "~1.10.0", + "type-is": "~1.6.6", + "utils-merge": "1.0.0", + "vhost": "~3.0.1" + } + }, + "connect-timeout": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/connect-timeout/-/connect-timeout-1.6.2.tgz", + "integrity": "sha1-3ppexh4zoStu2qt7XwYumMWZuI4=", + "dev": true, + "requires": { + "debug": "~2.2.0", + "http-errors": "~1.3.1", + "ms": "0.7.1", + "on-headers": "~1.0.0" + } + }, + "content-disposition": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.0.tgz", + "integrity": "sha1-QoT+auBjCHRjnkToCkGMKTQTXp4=", + "dev": true + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "cookie": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz", + "integrity": "sha1-5zSlwUF/zkctWu+Cw4HKu2TRpDU=", + "dev": true + }, + "cookie-parser": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.5.tgz", + "integrity": "sha1-nXVVcPtdF4kHcSJ6AjFNm+fPg1Y=", + "dev": true, + "requires": { + "cookie": "0.1.3", + "cookie-signature": "1.0.6" + } + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "core-js": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", + "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "crc": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.3.0.tgz", + "integrity": "sha1-+mIuG8OIvyVzCQgta2UgDOZwkLo=", + "dev": true + }, + "csrf": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/csrf/-/csrf-3.0.6.tgz", + "integrity": "sha1-thEg3c7q/JHnbtUxO7XAsmZ7cQo=", + "dev": true, + "requires": { + "rndm": "1.2.0", + "tsscmp": "1.0.5", + "uid-safe": "2.1.4" + } + }, + "cssom": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.4.tgz", + "integrity": "sha512-+7prCSORpXNeR4/fUP3rL+TzqtiFfhMvTd7uEqMdgPvLPt4+uzFUeufx5RHjGTACCargg/DiEt/moMQmvnfkog==", + "dev": true + }, + "cssstyle": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.1.1.tgz", + "integrity": "sha512-364AI1l/M5TYcFH83JnOH/pSqgaNnKmYgKrm0didZMGKWjQB60dymwWy1rKUgL3J1ffdq9xVi2yGLHdSjjSNog==", + "dev": true, + "requires": { + "cssom": "0.3.x" + } + }, + "csurf": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/csurf/-/csurf-1.8.3.tgz", + "integrity": "sha1-I/KhO/HY/OHQyZZYg5RELLqGpWo=", + "dev": true, + "requires": { + "cookie": "0.1.3", + "cookie-signature": "1.0.6", + "csrf": "~3.0.0", + "http-errors": "~1.3.1" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + }, + "dependencies": { + "whatwg-url": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", + "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + } + } + }, + "debug": { + "version": "2.2.0", + "resolved": "http://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "depd": { + "version": "1.0.1", + "resolved": "http://registry.npmjs.org/depd/-/depd-1.0.1.tgz", + "integrity": "sha1-gK7GTJ1tl+ZcwqnKqTwKpqv3Oqo=", + "dev": true + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true, + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "ebnf-parser": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/ebnf-parser/-/ebnf-parser-0.1.10.tgz", + "integrity": "sha1-zR9rpHfFY4xAyX7ZtXLbW6tdgzE=", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "errorhandler": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.4.3.tgz", + "integrity": "sha1-t7cO2PNZ6duICS8tIMD4MUIK2D8=", + "dev": true, + "requires": { + "accepts": "~1.3.0", + "escape-html": "~1.0.3" + }, + "dependencies": { + "accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "dev": true, + "requires": { + "mime-types": "~2.1.18", + "negotiator": "0.6.1" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "dev": true + } + } + }, + "escape-html": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz", + "integrity": "sha1-130y+pjjjC9BroXpJ44ODmuhAiw=", + "dev": true + }, + "escodegen": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.3.3.tgz", + "integrity": "sha1-8CQBb1qI4Eb9EgBQVek5gC5sXyM=", + "dev": true, + "requires": { + "esprima": "~1.1.1", + "estraverse": "~1.5.0", + "esutils": "~1.0.0", + "source-map": "~0.1.33" + } + }, + "esprima": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.1.1.tgz", + "integrity": "sha1-W28VR/TRAuZw4UDFCb5ncdautUk=", + "dev": true + }, + "estraverse": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.5.1.tgz", + "integrity": "sha1-hno+jlip+EYYr7bC3bzZFrfLr3E=", + "dev": true + }, + "esutils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-1.0.0.tgz", + "integrity": "sha1-gVHTWOIMisx/t0XnRywAJf5JZXA=", + "dev": true + }, + "etag": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz", + "integrity": "sha1-A9MLX2fdbmMtKUXTDWZScxo01dg=", + "dev": true + }, + "eventsource": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "dev": true, + "requires": { + "original": "^1.0.0" + } + }, + "express": { + "version": "3.21.2", + "resolved": "http://registry.npmjs.org/express/-/express-3.21.2.tgz", + "integrity": "sha1-DCkD7lxU5j1lqWFwdkcDVQZlo94=", + "dev": true, + "requires": { + "basic-auth": "~1.0.3", + "commander": "2.6.0", + "connect": "2.30.2", + "content-disposition": "0.5.0", + "content-type": "~1.0.1", + "cookie": "0.1.3", + "cookie-signature": "1.0.6", + "debug": "~2.2.0", + "depd": "~1.0.1", + "escape-html": "1.0.2", + "etag": "~1.7.0", + "fresh": "0.3.0", + "merge-descriptors": "1.0.0", + "methods": "~1.1.1", + "mkdirp": "0.5.1", + "parseurl": "~1.3.0", + "proxy-addr": "~1.0.8", + "range-parser": "~1.0.2", + "send": "0.13.0", + "utils-merge": "1.0.0", + "vary": "~1.0.1" + }, + "dependencies": { + "commander": { + "version": "2.6.0", + "resolved": "http://registry.npmjs.org/commander/-/commander-2.6.0.tgz", + "integrity": "sha1-nfflL7Kgyw+4kFjugMMQQiXzfh0=", + "dev": true + } + } + }, + "express-session": { + "version": "1.11.3", + "resolved": "http://registry.npmjs.org/express-session/-/express-session-1.11.3.tgz", + "integrity": "sha1-XMmPP1/4Ttg1+Ry/CqvQxxB0AK8=", + "dev": true, + "requires": { + "cookie": "0.1.3", + "cookie-signature": "1.0.6", + "crc": "3.3.0", + "debug": "~2.2.0", + "depd": "~1.0.1", + "on-headers": "~1.0.0", + "parseurl": "~1.3.0", + "uid-safe": "~2.0.0", + "utils-merge": "1.0.0" + }, + "dependencies": { + "uid-safe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.0.0.tgz", + "integrity": "sha1-p/PGymSh9qXQTsDvPkw9U2cxcTc=", + "dev": true, + "requires": { + "base64-url": "1.2.1" + } + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "finalhandler": { + "version": "0.4.0", + "resolved": "http://registry.npmjs.org/finalhandler/-/finalhandler-0.4.0.tgz", + "integrity": "sha1-llpS2ejQXSuFdUhUH7ibU6JJfZs=", + "dev": true, + "requires": { + "debug": "~2.2.0", + "escape-html": "1.0.2", + "on-finished": "~2.3.0", + "unpipe": "~1.0.0" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fresh": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz", + "integrity": "sha1-ZR+DjiJCTnVm3hYdg1jKoZn4PU8=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", + "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", + "dev": true, + "requires": { + "ajv": "^5.3.0", + "har-schema": "^2.0.0" + } + }, + "highlight.js": { + "version": "9.13.1", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.13.1.tgz", + "integrity": "sha512-Sc28JNQNDzaH6PORtRLMvif9RSn1mYuOoX3omVjnb0+HbpPygU2ALBI0R/wsiqCb4/fcp07Gdo8g+fhtFrQl6A==" + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "http-errors": { + "version": "1.3.1", + "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", + "integrity": "sha1-GX4izevUGYWF6GlO9nhhl7ke2UI=", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "statuses": "1" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "iced-coffee-script": { + "version": "108.0.11", + "resolved": "https://registry.npmjs.org/iced-coffee-script/-/iced-coffee-script-108.0.11.tgz", + "integrity": "sha1-HXH/k8kElyimRoOFqpvIkf10xY8=", + "dev": true, + "requires": { + "iced-runtime": ">=0.0.1" + } + }, + "iced-runtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/iced-runtime/-/iced-runtime-1.0.3.tgz", + "integrity": "sha1-LU9PuZmreqVDCxk8d6f85BGDGc4=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.11", + "resolved": "http://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.11.tgz", + "integrity": "sha1-LstC/SlHRJIiCaLnxATayHk9it4=", + "dev": true + }, + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "ipaddr.js": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.0.5.tgz", + "integrity": "sha1-X6eM8wG4JceKvDBC2BJyMEnqI8c=", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "jison": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/jison/-/jison-0.4.18.tgz", + "integrity": "sha512-FKkCiJvozgC7VTHhMJ00a0/IApSxhlGsFIshLW6trWJ8ONX2TQJBBz6DlcO1Gffy4w9LT+uL+PA+CVnUSJMF7w==", + "dev": true, + "requires": { + "JSONSelect": "0.4.0", + "cjson": "0.3.0", + "ebnf-parser": "0.1.10", + "escodegen": "1.3.x", + "esprima": "1.1.x", + "jison-lex": "0.3.x", + "lex-parser": "~0.1.3", + "nomnom": "1.5.2" + } + }, + "jison-lex": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/jison-lex/-/jison-lex-0.3.4.tgz", + "integrity": "sha1-gcoo2E+ESZ36jFlNzePYo/Jux6U=", + "dev": true, + "requires": { + "lex-parser": "0.1.x", + "nomnom": "1.5.2" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsdom": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", + "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "acorn": "^5.5.3", + "acorn-globals": "^4.1.0", + "array-equal": "^1.0.0", + "cssom": ">= 0.3.2 < 0.4.0", + "cssstyle": "^1.0.0", + "data-urls": "^1.0.0", + "domexception": "^1.0.1", + "escodegen": "^1.9.1", + "html-encoding-sniffer": "^1.0.2", + "left-pad": "^1.3.0", + "nwsapi": "^2.0.7", + "parse5": "4.0.0", + "pn": "^1.1.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.5", + "sax": "^1.2.4", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.3.4", + "w3c-hr-time": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.3", + "whatwg-mimetype": "^2.1.0", + "whatwg-url": "^6.4.1", + "ws": "^5.2.0", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "escodegen": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.0.tgz", + "integrity": "sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==", + "dev": true, + "requires": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "jsonlint": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/jsonlint/-/jsonlint-1.6.0.tgz", + "integrity": "sha1-iKpGvCiaesk7tGyuLVihh6m7SUo=", + "dev": true, + "requires": { + "JSV": ">= 4.0.x", + "nomnom": ">= 1.5.x" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "left-pad": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", + "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "lex-parser": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/lex-parser/-/lex-parser-0.1.4.tgz", + "integrity": "sha1-ZMTwJfF/1Tv7RXY/rrFvAVp0dVA=", + "dev": true + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "merge-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.0.tgz", + "integrity": "sha1-IWnPdTjhsMyH+4jhUC2EdLv3mGQ=", + "dev": true + }, + "method-override": { + "version": "2.3.10", + "resolved": "https://registry.npmjs.org/method-override/-/method-override-2.3.10.tgz", + "integrity": "sha1-49r41d7hDdLc59SuiNYrvud0drQ=", + "dev": true, + "requires": { + "debug": "2.6.9", + "methods": "~1.1.2", + "parseurl": "~1.3.2", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + } + } + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "mime": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", + "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=", + "dev": true + }, + "mime-db": { + "version": "1.37.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", + "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==", + "dev": true + }, + "mime-types": { + "version": "2.1.21", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", + "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", + "dev": true, + "requires": { + "mime-db": "~1.37.0" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + }, + "morgan": { + "version": "1.6.1", + "resolved": "http://registry.npmjs.org/morgan/-/morgan-1.6.1.tgz", + "integrity": "sha1-X9gYOYxoGcuiinzWZk8pL+HAu/I=", + "dev": true, + "requires": { + "basic-auth": "~1.0.3", + "debug": "~2.2.0", + "depd": "~1.0.1", + "on-finished": "~2.3.0", + "on-headers": "~1.0.0" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "http://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + }, + "multiparty": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/multiparty/-/multiparty-3.3.2.tgz", + "integrity": "sha1-Nd5oBNwZZD5SSfPT473GyM4wHT8=", + "dev": true, + "requires": { + "readable-stream": "~1.1.9", + "stream-counter": "~0.2.0" + } + }, + "negotiator": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz", + "integrity": "sha1-Jp1cR2gQ7JLtvntsLygxY4T5p+g=", + "dev": true + }, + "nomnom": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.5.2.tgz", + "integrity": "sha1-9DRUSKhTz71cDSYyDyR3qwUm/i8=", + "dev": true, + "requires": { + "colors": "0.5.x", + "underscore": "1.1.x" + }, + "dependencies": { + "colors": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.5.1.tgz", + "integrity": "sha1-fQAj6usVTo7p/Oddy5I9DtFmd3Q=", + "dev": true + } + } + }, + "nwsapi": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.0.9.tgz", + "integrity": "sha512-nlWFSCTYQcHk/6A9FFnfhKc14c3aFhfdNBXgo8Qgi9QTBu/qg3Ww+Uiz9wMzXd1T8GFxPc2QIHB6Qtf2XFryFQ==", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", + "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", + "dev": true + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" + } + }, + "original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "dev": true, + "requires": { + "url-parse": "^1.4.3" + } + }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "dev": true + }, + "pause": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/pause/-/pause-0.1.0.tgz", + "integrity": "sha1-68ikqGGf8LioGsFRPDQ0/0af23Q=", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "proxy-addr": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.10.tgz", + "integrity": "sha1-DUCoL4Afw1VWfS7LZe/j8HfxIcU=", + "dev": true, + "requires": { + "forwarded": "~0.1.0", + "ipaddr.js": "1.0.5" + } + }, + "psl": { + "version": "1.1.29", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", + "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==", + "dev": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "qs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-4.0.0.tgz", + "integrity": "sha1-wx2bdOwn33XlQ6hseHKO2NRiNgc=", + "dev": true + }, + "querystringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.0.tgz", + "integrity": "sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg==", + "dev": true + }, + "random-bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", + "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=", + "dev": true + }, + "range-parser": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz", + "integrity": "sha1-aHKCNTXGkuLCoBA4Jq/YLC4P8XU=", + "dev": true + }, + "raw-body": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.7.tgz", + "integrity": "sha1-rf6s4uT7MJgFgBTQjActzFl1h3Q=", + "dev": true, + "requires": { + "bytes": "2.4.0", + "iconv-lite": "0.4.13", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz", + "integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.13", + "resolved": "http://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", + "integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI=", + "dev": true + } + } + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + } + } + }, + "request-promise-core": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", + "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", + "dev": true, + "requires": { + "lodash": "^4.13.1" + } + }, + "request-promise-native": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.5.tgz", + "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=", + "dev": true, + "requires": { + "request-promise-core": "1.1.1", + "stealthy-require": "^1.1.0", + "tough-cookie": ">=2.3.3" + } + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "response-time": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/response-time/-/response-time-2.3.2.tgz", + "integrity": "sha1-/6cbq5UtYvfB1Jt0NDVfvGjf/Fo=", + "dev": true, + "requires": { + "depd": "~1.1.0", + "on-headers": "~1.0.1" + }, + "dependencies": { + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + } + } + }, + "rndm": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/rndm/-/rndm-1.2.0.tgz", + "integrity": "sha1-8z/pz7Urv9UgqhgyO8ZdsRCht2w=", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "send": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.13.0.tgz", + "integrity": "sha1-UY+SGusFYK7H3KspkLFM9vPM5d4=", + "dev": true, + "requires": { + "debug": "~2.2.0", + "depd": "~1.0.1", + "destroy": "1.0.3", + "escape-html": "1.0.2", + "etag": "~1.7.0", + "fresh": "0.3.0", + "http-errors": "~1.3.1", + "mime": "1.3.4", + "ms": "0.7.1", + "on-finished": "~2.3.0", + "range-parser": "~1.0.2", + "statuses": "~1.2.1" + }, + "dependencies": { + "destroy": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz", + "integrity": "sha1-tDO0ck5x/YVR2YhRdIUcX8N34sk=", + "dev": true + }, + "statuses": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz", + "integrity": "sha1-3e1FzBglbVHtQK7BQkidXGECbSg=", + "dev": true + } + } + }, + "serve-favicon": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.3.2.tgz", + "integrity": "sha1-3UGeJo3gEqtysxnTN/IQUBP5OB8=", + "dev": true, + "requires": { + "etag": "~1.7.0", + "fresh": "0.3.0", + "ms": "0.7.2", + "parseurl": "~1.3.1" + }, + "dependencies": { + "ms": { + "version": "0.7.2", + "resolved": "http://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + } + } + }, + "serve-index": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.7.3.tgz", + "integrity": "sha1-egV/xu4o3GP2RWbl+lexEahq7NI=", + "dev": true, + "requires": { + "accepts": "~1.2.13", + "batch": "0.5.3", + "debug": "~2.2.0", + "escape-html": "~1.0.3", + "http-errors": "~1.3.1", + "mime-types": "~2.1.9", + "parseurl": "~1.3.1" + }, + "dependencies": { + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + } + } + }, + "serve-static": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.10.3.tgz", + "integrity": "sha1-zlpuzTEB/tXsCYJ9rCKpwpv7BTU=", + "dev": true, + "requires": { + "escape-html": "~1.0.3", + "parseurl": "~1.3.1", + "send": "0.13.2" + }, + "dependencies": { + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "send": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.13.2.tgz", + "integrity": "sha1-dl52B8gFVFK7pvCwUllTUJhgNt4=", + "dev": true, + "requires": { + "debug": "~2.2.0", + "depd": "~1.1.0", + "destroy": "~1.0.4", + "escape-html": "~1.0.3", + "etag": "~1.7.0", + "fresh": "0.3.0", + "http-errors": "~1.3.1", + "mime": "1.3.4", + "ms": "0.7.1", + "on-finished": "~2.3.0", + "range-parser": "~1.0.3", + "statuses": "~1.2.1" + } + }, + "statuses": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz", + "integrity": "sha1-3e1FzBglbVHtQK7BQkidXGECbSg=", + "dev": true + } + } + }, + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "optional": true, + "requires": { + "amdefine": ">=0.0.4" + } + }, + "sshpk": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.15.2.tgz", + "integrity": "sha512-Ra/OXQtuh0/enyl4ETZAfTaeksa6BXks5ZcjpSUNrjBr0DvrJKX+1fsKDPpT9TBXgHAFsa4510aNVgI8g/+SzA==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, + "stream-counter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/stream-counter/-/stream-counter-0.2.0.tgz", + "integrity": "sha1-3tJmVWMZyLDiIoErnPOyb6fZR94=", + "dev": true, + "requires": { + "readable-stream": "~1.1.8" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "symbol-tree": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", + "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", + "dev": true + }, + "tablify": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/tablify/-/tablify-0.1.5.tgz", + "integrity": "sha1-RxYM4pGL4pHWPOzO3bUlTdcpgsc=", + "dev": true + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "tsscmp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.5.tgz", + "integrity": "sha1-fcSjOvcVgatDN9qR2FylQn69mpc=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-is": { + "version": "1.6.16", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", + "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.18" + } + }, + "uid-safe": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.4.tgz", + "integrity": "sha1-Otbzg2jG1MjHXsF2I/t5qh0HHYE=", + "dev": true, + "requires": { + "random-bytes": "~1.0.0" + } + }, + "underscore": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.1.7.tgz", + "integrity": "sha1-QLq4S60Z0jAJbo1u9ii/8FXYPbA=", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "url-parse": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.3.tgz", + "integrity": "sha512-rh+KuAW36YKo0vClhQzLLveoj8FwPJNu65xLb7Mrt+eZht0IPT0IXgSv8gcMegZ6NvjJUALf6Mf25POlMwD1Fw==", + "dev": true, + "requires": { + "querystringify": "^2.0.0", + "requires-port": "^1.0.0" + } + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + }, + "utils-merge": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", + "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=", + "dev": true + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true + }, + "vary": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz", + "integrity": "sha1-meSYFWaihhGN+yuBc1ffeZM3bRA=", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vhost": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/vhost/-/vhost-3.0.2.tgz", + "integrity": "sha1-L7HezUxGaqiLD5NBrzPcGv8keNU=", + "dev": true + }, + "w3c-hr-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", + "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", + "dev": true, + "requires": { + "browser-process-hrtime": "^0.1.2" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + } + } + }, + "whatwg-mimetype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.2.0.tgz", + "integrity": "sha512-5YSO1nMd5D1hY3WzAQV3PzZL83W3YeyR1yW9PcH26Weh1t+Vzh9B6XkDh7aXm83HBZ4nSMvkjvN2H2ySWIvBgw==", + "dev": true + }, + "whatwg-url": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", + "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "ws": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", + "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "zombie": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/zombie/-/zombie-6.1.3.tgz", + "integrity": "sha512-CckDy0fjlx/sWOjG054DOaGKFFonLQQ4MPEJDbxPXE2r+aUAj97KZfGNQ3vyCXq64qPVk8b+9DUNzXRdc9KrhA==", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "bluebird": "^3.5.1", + "debug": "^3.1.0", + "eventsource": "^1.0.5", + "iconv-lite": "^0.4.21", + "jsdom": "11.12.0", + "lodash": "^4.17.10", + "mime": "^2.3.1", + "ms": "^2.1.1", + "request": "^2.85.0", + "tough-cookie": "^2.3.4", + "ws": "^5.1.1" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "mime": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz", + "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==", + "dev": true + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + } + } +} diff --git a/package.json b/package.json index 3f09db7..7629907 100644 --- a/package.json +++ b/package.json @@ -9,20 +9,20 @@ "author": "Chris Coyne ", "bin": "./bin/toffee", "dependencies": { - "coffee-script": "*", - "commander": "*", - "mkdirp": "*", - "highlight.js": "*" + "coffee-script": "^1.12.7", + "commander": "^2.19.0", + "highlight.js": "^9.13.1", + "mkdirp": "^0.5.1" }, "devDependencies": { - "assert": "*", + "assert": "^1.4.1", "colors": "^1.1.2", "diff": "^3.3.0", "express": "^3.21.2", - "iced-coffee-script": "*", - "jison": "*", - "tablify": "*", - "zombie": "*" + "iced-coffee-script": "^108.0.11", + "jison": "^0.4.18", + "tablify": "^0.1.5", + "zombie": "^6.1.3" }, "repository": { "type": "git", From 4d0df46b8d54253dabfc06cd7994141f90ff9dd4 Mon Sep 17 00:00:00 2001 From: Chris Coyne Date: Tue, 30 Oct 2018 10:47:17 -0400 Subject: [PATCH 121/132] module updates --- index.js | 2 +- lib/command_line.js | 2 +- lib/consts.js | 2 +- lib/engine.js | 2 +- lib/errorHandler.js | 2 +- lib/pool.js | 2 +- lib/toffee_lang.js | 12 +- lib/utils.js | 2 +- lib/view.js | 2 +- package-lock.json | 794 +++++------------- package.json | 4 +- test/express3/app.coffee | 40 - test/express3/routes/index.js | 14 - test/express4/app.coffee | 37 + test/{express3 => express4}/package.json | 0 .../public/javascripts/jquery-1.9.0.min.js | 0 .../public/javascripts/test_cases.js | 0 .../public/javascripts/toffee.js | 0 .../public/stylesheets/style.css | 0 .../{express3 => express4}/views/index.toffee | 0 .../views/subdir1/hello_world.toffee | 0 .../views/subdir2/foo/goodbye.toffee | 0 .../views/subdir2/goodbye_world.toffee | 0 .../app.coffee | 0 .../package.json | 0 .../public/javascripts/jquery-1.9.0.min.js | 0 .../public/javascripts/test_cases.js | 0 .../public/javascripts/toffee.js | 0 .../public/stylesheets/style.css | 0 .../routes/index.js | 0 .../views/index.toffee | 0 .../views/test_bad_coffee_syntax.toffee | 0 .../views/test_bad_runtime.toffee | 0 .../views/test_bad_str_interpolate.toffee | 0 .../views/test_bad_toffee_syntax.toffee | 0 test/generate_express_test.coffee | 6 +- test/run_cases.iced | 2 +- 37 files changed, 242 insertions(+), 683 deletions(-) delete mode 100644 test/express3/app.coffee delete mode 100644 test/express3/routes/index.js create mode 100644 test/express4/app.coffee rename test/{express3 => express4}/package.json (100%) rename test/{express3 => express4}/public/javascripts/jquery-1.9.0.min.js (100%) rename test/{express3 => express4}/public/javascripts/test_cases.js (100%) rename test/{express3 => express4}/public/javascripts/toffee.js (100%) rename test/{express3 => express4}/public/stylesheets/style.css (100%) rename test/{express3 => express4}/views/index.toffee (100%) rename test/{express3 => express4}/views/subdir1/hello_world.toffee (100%) rename test/{express3 => express4}/views/subdir2/foo/goodbye.toffee (100%) rename test/{express3 => express4}/views/subdir2/goodbye_world.toffee (100%) rename test/{express3_error_handling => express4_error_handling}/app.coffee (100%) rename test/{express3_error_handling => express4_error_handling}/package.json (100%) rename test/{express3_error_handling => express4_error_handling}/public/javascripts/jquery-1.9.0.min.js (100%) rename test/{express3_error_handling => express4_error_handling}/public/javascripts/test_cases.js (100%) rename test/{express3_error_handling => express4_error_handling}/public/javascripts/toffee.js (100%) rename test/{express3_error_handling => express4_error_handling}/public/stylesheets/style.css (100%) rename test/{express3_error_handling => express4_error_handling}/routes/index.js (100%) rename test/{express3_error_handling => express4_error_handling}/views/index.toffee (100%) rename test/{express3_error_handling => express4_error_handling}/views/test_bad_coffee_syntax.toffee (100%) rename test/{express3_error_handling => express4_error_handling}/views/test_bad_runtime.toffee (100%) rename test/{express3_error_handling => express4_error_handling}/views/test_bad_str_interpolate.toffee (100%) rename test/{express3_error_handling => express4_error_handling}/views/test_bad_toffee_syntax.toffee (100%) diff --git a/index.js b/index.js index e8b445a..ca2da7c 100644 --- a/index.js +++ b/index.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.12.6 +// Generated by CoffeeScript 1.12.7 (function() { var __express, cacheless_engine, e, engine, getCommonHeaders, getCommonHeadersJs, ref, to_express, view; diff --git a/lib/command_line.js b/lib/command_line.js index 06ea69d..dddf3ae 100644 --- a/lib/command_line.js +++ b/lib/command_line.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.12.6 +// Generated by CoffeeScript 1.12.7 (function() { var compile, fs, getCommonHeadersJs, getVersionNumber, maybeAttachHeaders, mkdirp, path, program, recurseRun, ref, run, view; diff --git a/lib/consts.js b/lib/consts.js index 89ae18c..aed3d69 100644 --- a/lib/consts.js +++ b/lib/consts.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.12.6 +// Generated by CoffeeScript 1.12.7 (function() { exports.states = { TOFFEE: 1, diff --git a/lib/engine.js b/lib/engine.js index 90863d1..3eb244f 100644 --- a/lib/engine.js +++ b/lib/engine.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.12.6 +// Generated by CoffeeScript 1.12.7 (function() { var MAX_CACHED_SANDBOXES, Pool, engine, fs, path, ref, sandboxCons, states, tweakables, util, utils, view, vm, bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; diff --git a/lib/errorHandler.js b/lib/errorHandler.js index 77787e9..a575eba 100644 --- a/lib/errorHandler.js +++ b/lib/errorHandler.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.12.6 +// Generated by CoffeeScript 1.12.7 (function() { var _ppEscape, errorTypes, path, toffeeError, util, extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, diff --git a/lib/pool.js b/lib/pool.js index eab9224..d61bdf7 100644 --- a/lib/pool.js +++ b/lib/pool.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.12.6 +// Generated by CoffeeScript 1.12.7 (function() { var Pool; diff --git a/lib/toffee_lang.js b/lib/toffee_lang.js index ce0d0bf..e0291ae 100644 --- a/lib/toffee_lang.js +++ b/lib/toffee_lang.js @@ -1,4 +1,4 @@ -/* parser generated by jison 0.4.17 */ +/* parser generated by jison 0.4.18 */ /* Returns a Parser object of the following structure: @@ -135,13 +135,9 @@ parseError: function parseError(str, hash) { if (hash.recoverable) { this.trace(str); } else { - function _parseError (msg, hash) { - this.message = msg; - this.hash = hash; - } - _parseError.prototype = Error; - - throw new _parseError(str, hash); + var error = new Error(str); + error.hash = hash; + throw error; } }, parse: function parse(input) { diff --git a/lib/utils.js b/lib/utils.js index 432037c..7417318 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.12.6 +// Generated by CoffeeScript 1.12.7 (function() { var lex, lexer; diff --git a/lib/view.js b/lib/view.js index fbba03f..92dba16 100644 --- a/lib/view.js +++ b/lib/view.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.12.6 +// Generated by CoffeeScript 1.12.7 (function() { var TAB_SPACES, coffee, e, errorHandler, errorTypes, getBundleHeaders, getCommonHeaders, getCommonHeadersJs, parser, ref, ref1, spaces, states, tabs, toffeeError, util, utils, view, vm; diff --git a/package-lock.json b/package-lock.json index ca88bed..36781f0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,13 +23,13 @@ "dev": true }, "accepts": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.13.tgz", - "integrity": "sha1-5fHzkoxtlf2WVYw27D2dDeSm7Oo=", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", "dev": true, "requires": { - "mime-types": "~2.1.6", - "negotiator": "0.5.3" + "mime-types": "~2.1.18", + "negotiator": "0.6.1" } }, "acorn": { @@ -87,6 +87,12 @@ "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", "dev": true }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", @@ -145,30 +151,6 @@ "regenerator-runtime": "^0.11.0" } }, - "base64-url": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/base64-url/-/base64-url-1.2.1.tgz", - "integrity": "sha1-GZ/WYXAqDnt9yubgaYuwicUvbXg=", - "dev": true - }, - "basic-auth": { - "version": "1.0.4", - "resolved": "http://registry.npmjs.org/basic-auth/-/basic-auth-1.0.4.tgz", - "integrity": "sha1-Awk1sB3nyblKgksp8/zLdQ06UpA=", - "dev": true - }, - "basic-auth-connect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz", - "integrity": "sha1-/bC0OWLKe0BFanwrtI/hc9otISI=", - "dev": true - }, - "batch": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.5.3.tgz", - "integrity": "sha1-PzQU84AyF0O/wQQvmoP/HVgk1GQ=", - "dev": true - }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", @@ -185,21 +167,21 @@ "dev": true }, "body-parser": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.13.3.tgz", - "integrity": "sha1-wIzzMMM1jhUQFqBXRvE/ApyX+pc=", + "version": "1.18.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", + "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", "dev": true, "requires": { - "bytes": "2.1.0", - "content-type": "~1.0.1", - "debug": "~2.2.0", - "depd": "~1.0.1", - "http-errors": "~1.3.1", - "iconv-lite": "0.4.11", + "bytes": "3.0.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "~1.6.3", + "iconv-lite": "0.4.23", "on-finished": "~2.3.0", - "qs": "4.0.0", - "raw-body": "~2.1.2", - "type-is": "~1.6.6" + "qs": "6.5.2", + "raw-body": "2.3.3", + "type-is": "~1.6.16" } }, "browser-process-hrtime": { @@ -209,9 +191,9 @@ "dev": true }, "bytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.1.0.tgz", - "integrity": "sha1-rJPEEOL/ycx89LRks4KJBn9eR7Q=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", "dev": true }, "caseless": { @@ -260,84 +242,10 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" }, - "compressible": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.15.tgz", - "integrity": "sha512-4aE67DL33dSW9gw4CI2H/yTxqHLNcxp0yS6jB+4h+wr3e43+1z7vm0HU9qXOH8j+qjKuL8+UtkOxYQSMq60Ylw==", - "dev": true, - "requires": { - "mime-db": ">= 1.36.0 < 2" - } - }, - "compression": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.5.2.tgz", - "integrity": "sha1-sDuNhub4rSloPLqN+R3cb/x3s5U=", - "dev": true, - "requires": { - "accepts": "~1.2.12", - "bytes": "2.1.0", - "compressible": "~2.0.5", - "debug": "~2.2.0", - "on-headers": "~1.0.0", - "vary": "~1.0.1" - } - }, - "connect": { - "version": "2.30.2", - "resolved": "https://registry.npmjs.org/connect/-/connect-2.30.2.tgz", - "integrity": "sha1-jam8vooFTT0xjXTf7JA7XDmhtgk=", - "dev": true, - "requires": { - "basic-auth-connect": "1.0.0", - "body-parser": "~1.13.3", - "bytes": "2.1.0", - "compression": "~1.5.2", - "connect-timeout": "~1.6.2", - "content-type": "~1.0.1", - "cookie": "0.1.3", - "cookie-parser": "~1.3.5", - "cookie-signature": "1.0.6", - "csurf": "~1.8.3", - "debug": "~2.2.0", - "depd": "~1.0.1", - "errorhandler": "~1.4.2", - "express-session": "~1.11.3", - "finalhandler": "0.4.0", - "fresh": "0.3.0", - "http-errors": "~1.3.1", - "method-override": "~2.3.5", - "morgan": "~1.6.1", - "multiparty": "3.3.2", - "on-headers": "~1.0.0", - "parseurl": "~1.3.0", - "pause": "0.1.0", - "qs": "4.0.0", - "response-time": "~2.3.1", - "serve-favicon": "~2.3.0", - "serve-index": "~1.7.2", - "serve-static": "~1.10.0", - "type-is": "~1.6.6", - "utils-merge": "1.0.0", - "vhost": "~3.0.1" - } - }, - "connect-timeout": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/connect-timeout/-/connect-timeout-1.6.2.tgz", - "integrity": "sha1-3ppexh4zoStu2qt7XwYumMWZuI4=", - "dev": true, - "requires": { - "debug": "~2.2.0", - "http-errors": "~1.3.1", - "ms": "0.7.1", - "on-headers": "~1.0.0" - } - }, "content-disposition": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.0.tgz", - "integrity": "sha1-QoT+auBjCHRjnkToCkGMKTQTXp4=", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", "dev": true }, "content-type": { @@ -347,21 +255,11 @@ "dev": true }, "cookie": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz", - "integrity": "sha1-5zSlwUF/zkctWu+Cw4HKu2TRpDU=", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", "dev": true }, - "cookie-parser": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.5.tgz", - "integrity": "sha1-nXVVcPtdF4kHcSJ6AjFNm+fPg1Y=", - "dev": true, - "requires": { - "cookie": "0.1.3", - "cookie-signature": "1.0.6" - } - }, "cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", @@ -380,23 +278,6 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, - "crc": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/crc/-/crc-3.3.0.tgz", - "integrity": "sha1-+mIuG8OIvyVzCQgta2UgDOZwkLo=", - "dev": true - }, - "csrf": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/csrf/-/csrf-3.0.6.tgz", - "integrity": "sha1-thEg3c7q/JHnbtUxO7XAsmZ7cQo=", - "dev": true, - "requires": { - "rndm": "1.2.0", - "tsscmp": "1.0.5", - "uid-safe": "2.1.4" - } - }, "cssom": { "version": "0.3.4", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.4.tgz", @@ -412,18 +293,6 @@ "cssom": "0.3.x" } }, - "csurf": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/csurf/-/csurf-1.8.3.tgz", - "integrity": "sha1-I/KhO/HY/OHQyZZYg5RELLqGpWo=", - "dev": true, - "requires": { - "cookie": "0.1.3", - "cookie-signature": "1.0.6", - "csrf": "~3.0.0", - "http-errors": "~1.3.1" - } - }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -458,12 +327,12 @@ } }, "debug": { - "version": "2.2.0", - "resolved": "http://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { - "ms": "0.7.1" + "ms": "2.0.0" } }, "deep-is": { @@ -479,9 +348,9 @@ "dev": true }, "depd": { - "version": "1.0.1", - "resolved": "http://registry.npmjs.org/depd/-/depd-1.0.1.tgz", - "integrity": "sha1-gK7GTJ1tl+ZcwqnKqTwKpqv3Oqo=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", "dev": true }, "destroy": { @@ -527,44 +396,16 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", "dev": true }, - "errorhandler": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.4.3.tgz", - "integrity": "sha1-t7cO2PNZ6duICS8tIMD4MUIK2D8=", - "dev": true, - "requires": { - "accepts": "~1.3.0", - "escape-html": "~1.0.3" - }, - "dependencies": { - "accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", - "dev": true, - "requires": { - "mime-types": "~2.1.18", - "negotiator": "0.6.1" - } - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, - "negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", - "dev": true - } - } + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true }, "escape-html": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz", - "integrity": "sha1-130y+pjjjC9BroXpJ44ODmuhAiw=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", "dev": true }, "escodegen": { @@ -598,9 +439,9 @@ "dev": true }, "etag": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz", - "integrity": "sha1-A9MLX2fdbmMtKUXTDWZScxo01dg=", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", "dev": true }, "eventsource": { @@ -613,68 +454,41 @@ } }, "express": { - "version": "3.21.2", - "resolved": "http://registry.npmjs.org/express/-/express-3.21.2.tgz", - "integrity": "sha1-DCkD7lxU5j1lqWFwdkcDVQZlo94=", + "version": "4.16.4", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", + "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==", "dev": true, "requires": { - "basic-auth": "~1.0.3", - "commander": "2.6.0", - "connect": "2.30.2", - "content-disposition": "0.5.0", - "content-type": "~1.0.1", - "cookie": "0.1.3", + "accepts": "~1.3.5", + "array-flatten": "1.1.1", + "body-parser": "1.18.3", + "content-disposition": "0.5.2", + "content-type": "~1.0.4", + "cookie": "0.3.1", "cookie-signature": "1.0.6", - "debug": "~2.2.0", - "depd": "~1.0.1", - "escape-html": "1.0.2", - "etag": "~1.7.0", - "fresh": "0.3.0", - "merge-descriptors": "1.0.0", - "methods": "~1.1.1", - "mkdirp": "0.5.1", - "parseurl": "~1.3.0", - "proxy-addr": "~1.0.8", - "range-parser": "~1.0.2", - "send": "0.13.0", - "utils-merge": "1.0.0", - "vary": "~1.0.1" - }, - "dependencies": { - "commander": { - "version": "2.6.0", - "resolved": "http://registry.npmjs.org/commander/-/commander-2.6.0.tgz", - "integrity": "sha1-nfflL7Kgyw+4kFjugMMQQiXzfh0=", - "dev": true - } - } - }, - "express-session": { - "version": "1.11.3", - "resolved": "http://registry.npmjs.org/express-session/-/express-session-1.11.3.tgz", - "integrity": "sha1-XMmPP1/4Ttg1+Ry/CqvQxxB0AK8=", - "dev": true, - "requires": { - "cookie": "0.1.3", - "cookie-signature": "1.0.6", - "crc": "3.3.0", - "debug": "~2.2.0", - "depd": "~1.0.1", - "on-headers": "~1.0.0", - "parseurl": "~1.3.0", - "uid-safe": "~2.0.0", - "utils-merge": "1.0.0" - }, - "dependencies": { - "uid-safe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.0.0.tgz", - "integrity": "sha1-p/PGymSh9qXQTsDvPkw9U2cxcTc=", - "dev": true, - "requires": { - "base64-url": "1.2.1" - } - } + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.1.1", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.4", + "qs": "6.5.2", + "range-parser": "~1.2.0", + "safe-buffer": "5.1.2", + "send": "0.16.2", + "serve-static": "1.13.2", + "setprototypeof": "1.1.0", + "statuses": "~1.4.0", + "type-is": "~1.6.16", + "utils-merge": "1.0.1", + "vary": "~1.1.2" } }, "extend": { @@ -708,14 +522,17 @@ "dev": true }, "finalhandler": { - "version": "0.4.0", - "resolved": "http://registry.npmjs.org/finalhandler/-/finalhandler-0.4.0.tgz", - "integrity": "sha1-llpS2ejQXSuFdUhUH7ibU6JJfZs=", + "version": "1.1.1", + "resolved": "http://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", + "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", "dev": true, "requires": { - "debug": "~2.2.0", - "escape-html": "1.0.2", + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.4.0", "unpipe": "~1.0.0" } }, @@ -743,9 +560,9 @@ "dev": true }, "fresh": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz", - "integrity": "sha1-ZR+DjiJCTnVm3hYdg1jKoZn4PU8=", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", "dev": true }, "getpass": { @@ -788,13 +605,23 @@ } }, "http-errors": { - "version": "1.3.1", - "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", - "integrity": "sha1-GX4izevUGYWF6GlO9nhhl7ke2UI=", + "version": "1.6.3", + "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", "dev": true, "requires": { - "inherits": "~2.0.1", - "statuses": "1" + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } } }, "http-signature": { @@ -824,10 +651,13 @@ "dev": true }, "iconv-lite": { - "version": "0.4.11", - "resolved": "http://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.11.tgz", - "integrity": "sha1-LstC/SlHRJIiCaLnxATayHk9it4=", - "dev": true + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } }, "inherits": { "version": "2.0.1", @@ -836,9 +666,9 @@ "dev": true }, "ipaddr.js": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.0.5.tgz", - "integrity": "sha1-X6eM8wG4JceKvDBC2BJyMEnqI8c=", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", + "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=", "dev": true }, "is-typedarray": { @@ -847,12 +677,6 @@ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -1046,46 +870,11 @@ "dev": true }, "merge-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.0.tgz", - "integrity": "sha1-IWnPdTjhsMyH+4jhUC2EdLv3mGQ=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", "dev": true }, - "method-override": { - "version": "2.3.10", - "resolved": "https://registry.npmjs.org/method-override/-/method-override-2.3.10.tgz", - "integrity": "sha1-49r41d7hDdLc59SuiNYrvud0drQ=", - "dev": true, - "requires": { - "debug": "2.6.9", - "methods": "~1.1.2", - "parseurl": "~1.3.2", - "vary": "~1.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "dev": true - } - } - }, "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -1093,9 +882,9 @@ "dev": true }, "mime": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", - "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", "dev": true }, "mime-db": { @@ -1126,39 +915,16 @@ "minimist": "0.0.8" } }, - "morgan": { - "version": "1.6.1", - "resolved": "http://registry.npmjs.org/morgan/-/morgan-1.6.1.tgz", - "integrity": "sha1-X9gYOYxoGcuiinzWZk8pL+HAu/I=", - "dev": true, - "requires": { - "basic-auth": "~1.0.3", - "debug": "~2.2.0", - "depd": "~1.0.1", - "on-finished": "~2.3.0", - "on-headers": "~1.0.0" - } - }, "ms": { - "version": "0.7.1", - "resolved": "http://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "multiparty": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/multiparty/-/multiparty-3.3.2.tgz", - "integrity": "sha1-Nd5oBNwZZD5SSfPT473GyM4wHT8=", - "dev": true, - "requires": { - "readable-stream": "~1.1.9", - "stream-counter": "~0.2.0" - } - }, "negotiator": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz", - "integrity": "sha1-Jp1cR2gQ7JLtvntsLygxY4T5p+g=", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", "dev": true }, "nomnom": { @@ -1200,12 +966,6 @@ "ee-first": "1.1.1" } }, - "on-headers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", - "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", - "dev": true - }, "optionator": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", @@ -1241,10 +1001,10 @@ "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", "dev": true }, - "pause": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/pause/-/pause-0.1.0.tgz", - "integrity": "sha1-68ikqGGf8LioGsFRPDQ0/0af23Q=", + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", "dev": true }, "performance-now": { @@ -1266,13 +1026,13 @@ "dev": true }, "proxy-addr": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.10.tgz", - "integrity": "sha1-DUCoL4Afw1VWfS7LZe/j8HfxIcU=", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", + "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", "dev": true, "requires": { - "forwarded": "~0.1.0", - "ipaddr.js": "1.0.5" + "forwarded": "~0.1.2", + "ipaddr.js": "1.8.0" } }, "psl": { @@ -1288,9 +1048,9 @@ "dev": true }, "qs": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-4.0.0.tgz", - "integrity": "sha1-wx2bdOwn33XlQ6hseHKO2NRiNgc=", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", "dev": true }, "querystringify": { @@ -1299,53 +1059,22 @@ "integrity": "sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg==", "dev": true }, - "random-bytes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", - "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=", - "dev": true - }, "range-parser": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz", - "integrity": "sha1-aHKCNTXGkuLCoBA4Jq/YLC4P8XU=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", "dev": true }, "raw-body": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.7.tgz", - "integrity": "sha1-rf6s4uT7MJgFgBTQjActzFl1h3Q=", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", + "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", "dev": true, "requires": { - "bytes": "2.4.0", - "iconv-lite": "0.4.13", + "bytes": "3.0.0", + "http-errors": "1.6.3", + "iconv-lite": "0.4.23", "unpipe": "1.0.0" - }, - "dependencies": { - "bytes": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz", - "integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk=", - "dev": true - }, - "iconv-lite": { - "version": "0.4.13", - "resolved": "http://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", - "integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI=", - "dev": true - } - } - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" } }, "regenerator-runtime": { @@ -1416,30 +1145,6 @@ "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", "dev": true }, - "response-time": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/response-time/-/response-time-2.3.2.tgz", - "integrity": "sha1-/6cbq5UtYvfB1Jt0NDVfvGjf/Fo=", - "dev": true, - "requires": { - "depd": "~1.1.0", - "on-headers": "~1.0.1" - }, - "dependencies": { - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true - } - } - }, - "rndm": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/rndm/-/rndm-1.2.0.tgz", - "integrity": "sha1-8z/pz7Urv9UgqhgyO8ZdsRCht2w=", - "dev": true - }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -1459,133 +1164,44 @@ "dev": true }, "send": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.13.0.tgz", - "integrity": "sha1-UY+SGusFYK7H3KspkLFM9vPM5d4=", - "dev": true, - "requires": { - "debug": "~2.2.0", - "depd": "~1.0.1", - "destroy": "1.0.3", - "escape-html": "1.0.2", - "etag": "~1.7.0", - "fresh": "0.3.0", - "http-errors": "~1.3.1", - "mime": "1.3.4", - "ms": "0.7.1", - "on-finished": "~2.3.0", - "range-parser": "~1.0.2", - "statuses": "~1.2.1" - }, - "dependencies": { - "destroy": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz", - "integrity": "sha1-tDO0ck5x/YVR2YhRdIUcX8N34sk=", - "dev": true - }, - "statuses": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz", - "integrity": "sha1-3e1FzBglbVHtQK7BQkidXGECbSg=", - "dev": true - } - } - }, - "serve-favicon": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.3.2.tgz", - "integrity": "sha1-3UGeJo3gEqtysxnTN/IQUBP5OB8=", + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", "dev": true, "requires": { - "etag": "~1.7.0", - "fresh": "0.3.0", - "ms": "0.7.2", - "parseurl": "~1.3.1" - }, - "dependencies": { - "ms": { - "version": "0.7.2", - "resolved": "http://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - } - } - }, - "serve-index": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.7.3.tgz", - "integrity": "sha1-egV/xu4o3GP2RWbl+lexEahq7NI=", - "dev": true, - "requires": { - "accepts": "~1.2.13", - "batch": "0.5.3", - "debug": "~2.2.0", + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", "escape-html": "~1.0.3", - "http-errors": "~1.3.1", - "mime-types": "~2.1.9", - "parseurl": "~1.3.1" - }, - "dependencies": { - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - } + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" } }, "serve-static": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.10.3.tgz", - "integrity": "sha1-zlpuzTEB/tXsCYJ9rCKpwpv7BTU=", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", "dev": true, "requires": { + "encodeurl": "~1.0.2", "escape-html": "~1.0.3", - "parseurl": "~1.3.1", - "send": "0.13.2" - }, - "dependencies": { - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, - "send": { - "version": "0.13.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.13.2.tgz", - "integrity": "sha1-dl52B8gFVFK7pvCwUllTUJhgNt4=", - "dev": true, - "requires": { - "debug": "~2.2.0", - "depd": "~1.1.0", - "destroy": "~1.0.4", - "escape-html": "~1.0.3", - "etag": "~1.7.0", - "fresh": "0.3.0", - "http-errors": "~1.3.1", - "mime": "1.3.4", - "ms": "0.7.1", - "on-finished": "~2.3.0", - "range-parser": "~1.0.3", - "statuses": "~1.2.1" - } - }, - "statuses": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz", - "integrity": "sha1-3e1FzBglbVHtQK7BQkidXGECbSg=", - "dev": true - } + "parseurl": "~1.3.2", + "send": "0.16.2" } }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, "source-map": { "version": "0.1.43", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", @@ -1614,9 +1230,9 @@ } }, "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", "dev": true }, "stealthy-require": { @@ -1625,21 +1241,6 @@ "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", "dev": true }, - "stream-counter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/stream-counter/-/stream-counter-0.2.0.tgz", - "integrity": "sha1-3tJmVWMZyLDiIoErnPOyb6fZR94=", - "dev": true, - "requires": { - "readable-stream": "~1.1.8" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, "symbol-tree": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", @@ -1679,12 +1280,6 @@ "punycode": "^2.1.0" } }, - "tsscmp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.5.tgz", - "integrity": "sha1-fcSjOvcVgatDN9qR2FylQn69mpc=", - "dev": true - }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -1719,15 +1314,6 @@ "mime-types": "~2.1.18" } }, - "uid-safe": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.4.tgz", - "integrity": "sha1-Otbzg2jG1MjHXsF2I/t5qh0HHYE=", - "dev": true, - "requires": { - "random-bytes": "~1.0.0" - } - }, "underscore": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.1.7.tgz", @@ -1760,9 +1346,9 @@ } }, "utils-merge": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", - "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", "dev": true }, "uuid": { @@ -1772,9 +1358,9 @@ "dev": true }, "vary": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz", - "integrity": "sha1-meSYFWaihhGN+yuBc1ffeZM3bRA=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", "dev": true }, "verror": { @@ -1788,12 +1374,6 @@ "extsprintf": "^1.2.0" } }, - "vhost": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/vhost/-/vhost-3.0.2.tgz", - "integrity": "sha1-L7HezUxGaqiLD5NBrzPcGv8keNU=", - "dev": true - }, "w3c-hr-time": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", diff --git a/package.json b/package.json index 7629907..129bca1 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "toffee", "description": "A NodeJs and browser-side templating language based on CoffeeScript with slicker tokens and syntax.", - "version": "0.3.1", + "version": "0.3.2", "directories": { "lib": "./lib" }, @@ -18,7 +18,7 @@ "assert": "^1.4.1", "colors": "^1.1.2", "diff": "^3.3.0", - "express": "^3.21.2", + "express": "^4.16.4", "iced-coffee-script": "^108.0.11", "jison": "^0.4.18", "tablify": "^0.1.5", diff --git a/test/express3/app.coffee b/test/express3/app.coffee deleted file mode 100644 index 696deac..0000000 --- a/test/express3/app.coffee +++ /dev/null @@ -1,40 +0,0 @@ - -run = (cb) -> - toffee = require '../../index.js' - express = require 'express' - routes = require './routes' - http = require 'http' - - app = express() - - - app.configure -> - - toffee.expressEngine.verbose = not module.parent - toffee.expressEngine.prettyPrintErrors = false - - app.set 'port', process.env.PORT or 3033 - app.set 'views', __dirname + '/views' - app.engine 'toffee', toffee.__express - app.use express.favicon() - app.use express.logger 'dev' - app.use express.bodyParser() - app.use express.methodOverride() - app.use app.router - app.use express.static __dirname + '/public' - - app.configure 'development', -> - app.use express.errorHandler() - - app.get '/', routes.index - - http.createServer(app).listen app.get('port'), -> - console.log "Express server listening on port #{app.get('port')}" - if cb? then cb() - - -if not module.parent - run() - -else - exports.run = (cb) -> run cb \ No newline at end of file diff --git a/test/express3/routes/index.js b/test/express3/routes/index.js deleted file mode 100644 index e32b2b8..0000000 --- a/test/express3/routes/index.js +++ /dev/null @@ -1,14 +0,0 @@ - -/* - * GET home page. - */ - -exports.index = function(req, res){ - var circular_obj = [1,2,3]; - circular_obj.push(circular_obj); - var vars = { - title: 'Express', - a_bad_test_function: function() {return JSON.stringify(circular_obj);} - } - res.render('index.toffee', vars); -}; \ No newline at end of file diff --git a/test/express4/app.coffee b/test/express4/app.coffee new file mode 100644 index 0000000..6dc78ea --- /dev/null +++ b/test/express4/app.coffee @@ -0,0 +1,37 @@ + +run = (cb) -> + toffee = require '../../index.js' + express = require 'express' + http = require 'http' + + app = express() + + + app_configure = -> + + toffee.expressEngine.verbose = not module.parent + toffee.expressEngine.prettyPrintErrors = false + + app.set 'port', process.env.PORT or 3033 + app.set 'views', __dirname + '/views' + app.engine 'toffee', toffee.__express + app.use express.static __dirname + '/public' + app.route('/').get (req, res) => + circular_obj = [1,2,3] + circular_obj.push circular_obj + title = 'Express' + a_bad_test_function = -> return JSON.stringify circular_obj + vars = {title, a_bad_test_function} + res.render 'index.toffee', vars + + http.createServer(app).listen app.get('port'), -> + console.log "Express server listening on port #{app.get('port')}" + if cb? then cb() + + app_configure() + +if not module.parent + run() + +else + exports.run = (cb) -> run cb diff --git a/test/express3/package.json b/test/express4/package.json similarity index 100% rename from test/express3/package.json rename to test/express4/package.json diff --git a/test/express3/public/javascripts/jquery-1.9.0.min.js b/test/express4/public/javascripts/jquery-1.9.0.min.js similarity index 100% rename from test/express3/public/javascripts/jquery-1.9.0.min.js rename to test/express4/public/javascripts/jquery-1.9.0.min.js diff --git a/test/express3/public/javascripts/test_cases.js b/test/express4/public/javascripts/test_cases.js similarity index 100% rename from test/express3/public/javascripts/test_cases.js rename to test/express4/public/javascripts/test_cases.js diff --git a/test/express3/public/javascripts/toffee.js b/test/express4/public/javascripts/toffee.js similarity index 100% rename from test/express3/public/javascripts/toffee.js rename to test/express4/public/javascripts/toffee.js diff --git a/test/express3/public/stylesheets/style.css b/test/express4/public/stylesheets/style.css similarity index 100% rename from test/express3/public/stylesheets/style.css rename to test/express4/public/stylesheets/style.css diff --git a/test/express3/views/index.toffee b/test/express4/views/index.toffee similarity index 100% rename from test/express3/views/index.toffee rename to test/express4/views/index.toffee diff --git a/test/express3/views/subdir1/hello_world.toffee b/test/express4/views/subdir1/hello_world.toffee similarity index 100% rename from test/express3/views/subdir1/hello_world.toffee rename to test/express4/views/subdir1/hello_world.toffee diff --git a/test/express3/views/subdir2/foo/goodbye.toffee b/test/express4/views/subdir2/foo/goodbye.toffee similarity index 100% rename from test/express3/views/subdir2/foo/goodbye.toffee rename to test/express4/views/subdir2/foo/goodbye.toffee diff --git a/test/express3/views/subdir2/goodbye_world.toffee b/test/express4/views/subdir2/goodbye_world.toffee similarity index 100% rename from test/express3/views/subdir2/goodbye_world.toffee rename to test/express4/views/subdir2/goodbye_world.toffee diff --git a/test/express3_error_handling/app.coffee b/test/express4_error_handling/app.coffee similarity index 100% rename from test/express3_error_handling/app.coffee rename to test/express4_error_handling/app.coffee diff --git a/test/express3_error_handling/package.json b/test/express4_error_handling/package.json similarity index 100% rename from test/express3_error_handling/package.json rename to test/express4_error_handling/package.json diff --git a/test/express3_error_handling/public/javascripts/jquery-1.9.0.min.js b/test/express4_error_handling/public/javascripts/jquery-1.9.0.min.js similarity index 100% rename from test/express3_error_handling/public/javascripts/jquery-1.9.0.min.js rename to test/express4_error_handling/public/javascripts/jquery-1.9.0.min.js diff --git a/test/express3_error_handling/public/javascripts/test_cases.js b/test/express4_error_handling/public/javascripts/test_cases.js similarity index 100% rename from test/express3_error_handling/public/javascripts/test_cases.js rename to test/express4_error_handling/public/javascripts/test_cases.js diff --git a/test/express3_error_handling/public/javascripts/toffee.js b/test/express4_error_handling/public/javascripts/toffee.js similarity index 100% rename from test/express3_error_handling/public/javascripts/toffee.js rename to test/express4_error_handling/public/javascripts/toffee.js diff --git a/test/express3_error_handling/public/stylesheets/style.css b/test/express4_error_handling/public/stylesheets/style.css similarity index 100% rename from test/express3_error_handling/public/stylesheets/style.css rename to test/express4_error_handling/public/stylesheets/style.css diff --git a/test/express3_error_handling/routes/index.js b/test/express4_error_handling/routes/index.js similarity index 100% rename from test/express3_error_handling/routes/index.js rename to test/express4_error_handling/routes/index.js diff --git a/test/express3_error_handling/views/index.toffee b/test/express4_error_handling/views/index.toffee similarity index 100% rename from test/express3_error_handling/views/index.toffee rename to test/express4_error_handling/views/index.toffee diff --git a/test/express3_error_handling/views/test_bad_coffee_syntax.toffee b/test/express4_error_handling/views/test_bad_coffee_syntax.toffee similarity index 100% rename from test/express3_error_handling/views/test_bad_coffee_syntax.toffee rename to test/express4_error_handling/views/test_bad_coffee_syntax.toffee diff --git a/test/express3_error_handling/views/test_bad_runtime.toffee b/test/express4_error_handling/views/test_bad_runtime.toffee similarity index 100% rename from test/express3_error_handling/views/test_bad_runtime.toffee rename to test/express4_error_handling/views/test_bad_runtime.toffee diff --git a/test/express3_error_handling/views/test_bad_str_interpolate.toffee b/test/express4_error_handling/views/test_bad_str_interpolate.toffee similarity index 100% rename from test/express3_error_handling/views/test_bad_str_interpolate.toffee rename to test/express4_error_handling/views/test_bad_str_interpolate.toffee diff --git a/test/express3_error_handling/views/test_bad_toffee_syntax.toffee b/test/express4_error_handling/views/test_bad_toffee_syntax.toffee similarity index 100% rename from test/express3_error_handling/views/test_bad_toffee_syntax.toffee rename to test/express4_error_handling/views/test_bad_toffee_syntax.toffee diff --git a/test/generate_express_test.coffee b/test/generate_express_test.coffee index 133013a..d62dbae 100644 --- a/test/generate_express_test.coffee +++ b/test/generate_express_test.coffee @@ -6,7 +6,7 @@ coffee = require 'coffee-script' generateExpressTest = (cb) -> - proc = spawn path.join(__dirname,"../node_modules/.bin/coffee"), ['./src/command_line.coffee', '-n', './test/cases', '-o', './test/express3/public/javascripts/test_cases.js'] + proc = spawn path.join(__dirname,"../node_modules/.bin/coffee"), ['./src/command_line.coffee', '-n', './test/cases', '-o', './test/express4/public/javascripts/test_cases.js'] proc.stderr.on 'data', (buffer) -> console.log buffer.toString() proc.stdout.on 'data', (buffer) -> console.log buffer.toString() proc.on 'exit', (status) -> @@ -17,7 +17,7 @@ generateExpressTest = (cb) -> {getCommonHeadersJs} = require '../lib/view' headers = getCommonHeadersJs true, true - fs.writeFileSync "./test/express3/public/javascripts/toffee.js", headers, "utf8" + fs.writeFileSync "./test/express4/public/javascripts/toffee.js", headers, "utf8" # generate an index page that tests them all @@ -90,7 +90,7 @@ generateExpressTest = (cb) -> """ - fs.writeFileSync "./test/express3/views/index.toffee", test_page, "utf8" + fs.writeFileSync "./test/express4/views/index.toffee", test_page, "utf8" exports.generate = generateExpressTest diff --git a/test/run_cases.iced b/test/run_cases.iced index bfbf17a..04151ce 100644 --- a/test/run_cases.iced +++ b/test/run_cases.iced @@ -78,7 +78,7 @@ run_multiple_runs = (eng, num_runs, cb) -> cb null, (Date.now() - start), total_tests run_express_test = (cb) -> - require('./express3/app').run -> + require('./express4/app').run -> zombie.visit 'http://localhost:3033', (e, browser) -> if e console.log e From 360e44dcdff8561480441d51832bb663e0b8d3d1 Mon Sep 17 00:00:00 2001 From: Chris Coyne Date: Tue, 30 Oct 2018 10:51:49 -0400 Subject: [PATCH 122/132] version --- package-lock.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 36781f0..f371e87 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "toffee", - "version": "0.3.1", + "version": "0.3.2", "lockfileVersion": 1, "requires": true, "dependencies": { From 0e7f419f684528cce31aaf0a2aebfd18339ceb8a Mon Sep 17 00:00:00 2001 From: Chris Coyne Date: Tue, 27 Nov 2018 10:05:58 -0500 Subject: [PATCH 123/132] removed unnecessary package.json from test --- test/express4/package.json | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 test/express4/package.json diff --git a/test/express4/package.json b/test/express4/package.json deleted file mode 100644 index 369973d..0000000 --- a/test/express4/package.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "application-name", - "version": "0.0.1", - "private": true, - "scripts": { - "start": "node app" - }, - "dependencies": { - "express": "3.0.0beta7", - "jade": "*" - } -} \ No newline at end of file From 30ea26c23b8ed719f2e6547d69ded2244adf80e6 Mon Sep 17 00:00:00 2001 From: Chris Coyne Date: Thu, 21 Feb 2019 10:35:23 -0500 Subject: [PATCH 124/132] unicode newline fix. reduce package payload --- lib/view.js | 4 +- package.json | 7 +- src/view.coffee | 4 +- test/cases/bad_unicode/input.toffee | 8 + test/cases/bad_unicode/output.toffee | 7 + test/cases/junk/input.toffee | 2 +- test/cases/junk/output.toffee | 2 +- .../express4/public/javascripts/test_cases.js | 138 ++++++++++++- test/express4/views/index.toffee | 187 ++++++++++-------- 9 files changed, 271 insertions(+), 88 deletions(-) create mode 100644 test/cases/bad_unicode/input.toffee create mode 100644 test/cases/bad_unicode/output.toffee diff --git a/lib/view.js b/lib/view.js index 92dba16..db150aa 100644 --- a/lib/view.js +++ b/lib/view.js @@ -367,6 +367,7 @@ if (part[0] === "TOKENS") { res += this._printLineNo(lineno, ind); interp = part[1].replace(/(^[\n \t]+)|([\n \t]+)$/g, ''); + interp = interp.replace(/[\u2028\u2029]/g, '\n'); if (this._snippetIsSoloToken(interp)) { chunk = "\#{if " + interp + "? then escape " + interp + " else ''}"; } else if (this._snippetHasEscapeOverride(interp)) { @@ -377,7 +378,7 @@ res += "\n" + (spaces(ind)) + "_to " + (this._quoteStr(chunk)); lineno += part[1].split("\n").length - 1; } else { - lines = part[1].split("\n"); + lines = part[1].split(/[\n\u2028\u2029]/); for (i = m = 0, len3 = lines.length; m < len3; i = ++m) { line = lines[i]; res += this._printLineNo(lineno, ind); @@ -397,6 +398,7 @@ break; case "COFFEE": c = obj[1]; + c = c.replace(/[\u2028\u2029]/g, '\n'); res += "\n" + (this._reindent(c, indent_level, indent_baseline)); i_delta = this._getIndentationDelta(c, indent_baseline); state_carry.last_coffee_ends_with_newline = this._doesEndWithNewline(c); diff --git a/package.json b/package.json index 129bca1..876c594 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "toffee", "description": "A NodeJs and browser-side templating language based on CoffeeScript with slicker tokens and syntax.", - "version": "0.3.2", + "version": "0.3.4", "directories": { "lib": "./lib" }, @@ -24,6 +24,11 @@ "tablify": "^0.1.5", "zombie": "^6.1.3" }, + "files": [ + "index.js", + "lib/*", + "bin/*" + ], "repository": { "type": "git", "url": "http://github.com/malgorithms/toffee" diff --git a/src/view.coffee b/src/view.coffee index b46088b..0f1ea2f 100644 --- a/src/view.coffee +++ b/src/view.coffee @@ -416,6 +416,7 @@ class view if part[0] is "TOKENS" res += @_printLineNo lineno, ind interp = part[1].replace /(^[\n \t]+)|([\n \t]+)$/g, '' + interp = interp.replace /[\u2028\u2029]/g , '\n' if @_snippetIsSoloToken interp chunk = "\#{if #{interp}? then escape #{interp} else ''}" else if @_snippetHasEscapeOverride interp @@ -425,7 +426,7 @@ class view res += "\n#{spaces ind}_to #{@_quoteStr chunk}" lineno += part[1].split("\n").length - 1 else - lines = part[1].split "\n" + lines = part[1].split /[\n\u2028\u2029]/ for line,i in lines res += @_printLineNo lineno, ind lbreak = if i isnt lines.length - 1 then "\n" else "" @@ -437,6 +438,7 @@ class view res += "\n#{spaces ind}_ts #{states.COFFEE}" when "COFFEE" c = obj[1] + c = c.replace /[\u2028\u2029]/g , '\n' res += "\n#{@_reindent c, indent_level, indent_baseline}" i_delta = @_getIndentationDelta c, indent_baseline state_carry.last_coffee_ends_with_newline = @_doesEndWithNewline c diff --git a/test/cases/bad_unicode/input.toffee b/test/cases/bad_unicode/input.toffee new file mode 100644 index 0000000..f184e18 --- /dev/null +++ b/test/cases/bad_unicode/input.toffee @@ -0,0 +1,8 @@ +\u2028:
 +\u2029:
 +{# + u2028 = "
" + u2029 = "
" +#} +

      HI 2028: #{"
"}

      +

      HI 2028: #{"
"}

      diff --git a/test/cases/bad_unicode/output.toffee b/test/cases/bad_unicode/output.toffee new file mode 100644 index 0000000..e7f9c21 --- /dev/null +++ b/test/cases/bad_unicode/output.toffee @@ -0,0 +1,7 @@ +\u2028: + +\u2029: + + +

      HI 2028:

      +

      HI 2028:

      diff --git a/test/cases/junk/input.toffee b/test/cases/junk/input.toffee index 7d402e3..c0420b0 100644 --- a/test/cases/junk/input.toffee +++ b/test/cases/junk/input.toffee @@ -2,4 +2,4 @@ supplies = ["broom", "mop", "vacuum"] #}
        {# for supply in supplies {:
      • #{supply}
      • :} #} -
      \ No newline at end of file +
    diff --git a/test/cases/junk/output.toffee b/test/cases/junk/output.toffee index 5e50d3c..f60f38f 100644 --- a/test/cases/junk/output.toffee +++ b/test/cases/junk/output.toffee @@ -1,3 +1,3 @@
    • broom
    • mop
    • vacuum
    • -
    \ No newline at end of file + diff --git a/test/express4/public/javascripts/test_cases.js b/test/express4/public/javascripts/test_cases.js index 7f1ce78..6abc176 100644 --- a/test/express4/public/javascripts/test_cases.js +++ b/test/express4/public/javascripts/test_cases.js @@ -1,4 +1,136 @@ +; +(function() { + var tmpl; + + tmpl = toffee.templates["/bad_unicode/input.toffee"] = { + bundlePath: "/bad_unicode/input.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var u2028, __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/bad_unicode/input.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(1); + _ln(1); + _to("\\u2028:\n"); + _ln(2); + _to("\n"); + _ln(3); + _to("\\u2029:\n"); + _ln(4); + _to("\n"); + _ln(5); + _ln(3); + _ts(2); + _ts(2); + u2028 = "u2029 = "; + _ts(1); + _ln(6); + _to("\n"); + _ln(7); + _to("

    HI 2028: "); + _to("" + (escape(""))); + _to("

    \n"); + _ln(8); + _to("

    HI 2028: "); + _to("" + (escape(""))); + _to("

    \n"); + _ln(9); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + +; +(function() { + var tmpl; + + tmpl = toffee.templates["/bad_unicode/output.toffee"] = { + bundlePath: "/bad_unicode/output.toffee" + }; + + tmpl.render = tmpl.pub = function(__locals) { + var __repress, _ln, _ref, _to, _ts; + __locals = __locals || {}; + __repress = (_ref = __locals.__toffee) != null ? _ref.repress : void 0; + _to = function(x) { + return __locals.__toffee.out.push(x); + }; + _ln = function(x) { + return __locals.__toffee.lineno = x; + }; + _ts = function(x) { + return __locals.__toffee.state = x; + }; + toffee.__augmentLocals(__locals, "/bad_unicode/output.toffee"); + with (__locals) {; + __toffee.out = []; + _ts(1); + _ts(1); + _ln(1); + _to("\\u2028:\n"); + _ln(2); + _to("\n"); + _ln(3); + _to("\\u2029:\n"); + _ln(4); + _to("\n"); + _ln(5); + _to("\n"); + _ln(6); + _to("

    HI 2028:

    \n"); + _ln(7); + _to("

    HI 2028:

    \n"); + _ln(8); + _ts(2); + __toffee.res = __toffee.out.join(""); + if (typeof postProcess !== "undefined" && postProcess !== null) { + __toffee.res = postProcess(__toffee.res); + } + if (!__repress) { + return __toffee.res; + } else { + return ""; + } + }; + + true; } /* closing JS 'with' */ ; + + if (typeof __toffee_run_input !== "undefined" && __toffee_run_input !== null) { + return tmpl.pub(__toffee_run_input); + } + +}).call(this); + ; (function() { var tmpl; @@ -2553,7 +2685,8 @@ _ts(1); _to("\n"); _ln(5); - _to(""); + _to("\n"); + _ln(6); _ts(2); __toffee.res = __toffee.out.join(""); if (typeof postProcess !== "undefined" && postProcess !== null) { @@ -2605,7 +2738,8 @@ _ln(2); _to("
  • broom
  • mop
  • vacuum
  • \n"); _ln(3); - _to(""); + _to("\n"); + _ln(4); _ts(2); __toffee.res = __toffee.out.join(""); if (typeof postProcess !== "undefined" && postProcess !== null) { diff --git a/test/express4/views/index.toffee b/test/express4/views/index.toffee index 3176ae5..baf5c2a 100644 --- a/test/express4/views/index.toffee +++ b/test/express4/views/index.toffee @@ -28,16 +28,40 @@ FILEEXPECTED OUTPUTSERVER RENDERBROWSER RENDER + + + bad_unicode + \u2028: + +\u2029: + + +

    HI 2028:

    +

    HI 2028:

    + + #{partial '../../cases/bad_unicode/input.toffee', {}} + + + + + + + + + big_file - 0... 1... 2... 3... 4... 5... 6... 7... 8... 9... 10... 11... 12... 13... 14... 15... 16... 17... 18... 19... 20... 21... 22... 23... 24... 25... 26... 27... 28... 29... 30... 31... 32... 33... 34... 35... 36... 37... 38... 39... 40... 41... 42... 43... 44... 45... 46... 47... 48... 49... 50... 51... 52... 53... 54... 55... 56... 57... 58... 59... 60... 61... 62... 63... 64... 65... 66... 67... 68... 70... 70... 71... 72... 73... 74... 75... 76... 77... 78... 79... 80... 81... 82... 83... 84... 85... 86... 87... 88... 89... 90... 91... 92... 93... 94... 95... 96... 97... 98... 99... 100... 101... 102... 103... 104... 105... 106... 107... 108... 109... 110... 111... 112... 113... 114... 115... 116... 117... 118... 119... 120... 121... 122... 123... 124... 125... 126... 127... 128... 129... 130... 131... 132... 133... 134... 135... 136... 137... 138... 139... 140... 141... 142... 143... 144... 145... 146... 147... 148... 149... 150... 151... 152... 153... 154... 155... 156... 157... 158... 159... 160... 162...162... 163... 164... 165... 166... 167... 168... 169... 170... 171... 172... 173... 174... 175... 176... 177... 178... 179... 180... 181... 182... 183... 184... 185... 186... 187... 188... 189... 190... 191... 192... 193... 194... 195... 196... 197... 198... 199... 200... 201... 202... 203... 204... 205... 206... 207... 208... 209... 210... 211... 212... 213... 214... 215... 216... 217... 218... 219... 220... 221... 222... 223... 224... 225... 226... 227... 228... 229... 230... 232... 232... 233... 234... 235... 236... 237... 238... 239... 240... 241... 242... 243... 244... 245... 246... 247... 248... 249... 250... 251... 252... 253... 254... 255... 256... 257... 258... 259... 260... 261... 262... 263... 264... 265... 266... 267... 268... 269... 270... 271... 272... 273... 274... 275... 276... 277... 278... 279... 280... 281... 282... 283... 284... 285... 286... 287... 288... 289... 290... 291... 292... 293... 294... 295... 296... 297... 298... 299... 300... 301... 302... 303... 304... 305... 306... 307... 308... 309... 310... 311... 312... 313... 314... 315... 316... 317... 318... 319... 320... 321... 322... 324... - #{partial '../../cases/big_file/input.toffee', {}} - + 0... 1... 2... 3... 4... 5... 6... 7... 8... 9... 10... 11... 12... 13... 14... 15... 16... 17... 18... 19... 20... 21... 22... 23... 24... 25... 26... 27... 28... 29... 30... 31... 32... 33... 34... 35... 36... 37... 38... 39... 40... 41... 42... 43... 44... 45... 46... 47... 48... 49... 50... 51... 52... 53... 54... 55... 56... 57... 58... 59... 60... 61... 62... 63... 64... 65... 66... 67... 68... 70... 70... 71... 72... 73... 74... 75... 76... 77... 78... 79... 80... 81... 82... 83... 84... 85... 86... 87... 88... 89... 90... 91... 92... 93... 94... 95... 96... 97... 98... 99... 100... 101... 102... 103... 104... 105... 106... 107... 108... 109... 110... 111... 112... 113... 114... 115... 116... 117... 118... 119... 120... 121... 122... 123... 124... 125... 126... 127... 128... 129... 130... 131... 132... 133... 134... 135... 136... 137... 138... 139... 140... 141... 142... 143... 144... 145... 146... 147... 148... 149... 150... 151... 152... 153... 154... 155... 156... 157... 158... 159... 160... 162...162... 163... 164... 165... 166... 167... 168... 169... 170... 171... 172... 173... 174... 175... 176... 177... 178... 179... 180... 181... 182... 183... 184... 185... 186... 187... 188... 189... 190... 191... 192... 193... 194... 195... 196... 197... 198... 199... 200... 201... 202... 203... 204... 205... 206... 207... 208... 209... 210... 211... 212... 213... 214... 215... 216... 217... 218... 219... 220... 221... 222... 223... 224... 225... 226... 227... 228... 229... 230... 232... 232... 233... 234... 235... 236... 237... 238... 239... 240... 241... 242... 243... 244... 245... 246... 247... 248... 249... 250... 251... 252... 253... 254... 255... 256... 257... 258... 259... 260... 261... 262... 263... 264... 265... 266... 267... 268... 269... 270... 271... 272... 273... 274... 275... 276... 277... 278... 279... 280... 281... 282... 283... 284... 285... 286... 287... 288... 289... 290... 291... 292... 293... 294... 295... 296... 297... 298... 299... 300... 301... 302... 303... 304... 305... 306... 307... 308... 309... 310... 311... 312... 313... 314... 315... 316... 317... 318... 319... 320... 321... 322... 324... + #{partial '../../cases/big_file/input.toffee', {}} + @@ -48,23 +72,23 @@ comments - + Pass 1 Pass 2 Pass 3 - #{partial '../../cases/comments/input.toffee', { + #{partial '../../cases/comments/input.toffee', { "greeting": "Hello" }} - + @@ -75,16 +99,16 @@ Pass 3 custom_escape -

    +

    custom x = Helloworldscriptvarx100script custom y = td custom z = clickclack custom w = 12objectObject

    - #{partial '../../cases/custom_escape/input.toffee', { + #{partial '../../cases/custom_escape/input.toffee', { escape: (s) -> "#{s}".replace /[^a-z0-9]/gi, '' }} - + @@ -103,7 +127,7 @@ Pass 3 eco_compare - + okcupid

    A site for singles

    @@ -112,12 +136,12 @@ Pass 3 You have 3 female friends. - #{partial '../../cases/eco_compare/input.toffee', {}} - + #{partial '../../cases/eco_compare/input.toffee', {}} + @@ -128,7 +152,7 @@ You have 3 female friends. escape -

    +

    default x = "Hello world" default y = <hr /> default z = click&clack @@ -176,12 +200,12 @@ You have 3 female friends. html printed longhand w = 1,2,[object Object]

    - #{partial '../../cases/escape/input.toffee', {}} - + #{partial '../../cases/escape/input.toffee', {}} + @@ -192,17 +216,17 @@ You have 3 female friends. hello_world - Hello, world. - #{partial '../../cases/hello_world/input.toffee', { + Hello, world. + #{partial '../../cases/hello_world/input.toffee', { "greeting": "Hello" }} - + @@ -213,23 +237,23 @@ You have 3 female friends. include_order - 1 + 1 2 hia b 3 4 - #{partial '../../cases/include_order/input.toffee', { + #{partial '../../cases/include_order/input.toffee', { "greeting": "Hello" }} - + @@ -240,17 +264,17 @@ b include_recursion - 10...9...8...7...6...5...4...3...2...1...blastoff! - #{partial '../../cases/include_recursion/input.toffee', { + 10...9...8...7...6...5...4...3...2...1...blastoff! + #{partial '../../cases/include_recursion/input.toffee', { "countdown" : 10 }} - + @@ -261,7 +285,7 @@ b include_techniques - From: Chris <ccoyne77@gmail> + From: Chris <ccoyne77@gmail> Msg: Hello, world From: Max & Sam @@ -274,14 +298,14 @@ Msg: Hello, world From: Unknown Msg: Hello, world - #{partial '../../cases/include_techniques/input.toffee', { + #{partial '../../cases/include_techniques/input.toffee', { }} - + @@ -292,7 +316,7 @@ Msg: Hello, world indent_attack -
    +
    Pass1Pass2
    @@ -308,14 +332,14 @@ Pass7Pass8 Pass12Pass13Pass14Pass15Pass16(a perfect square)Pass17Pass18Pass19 Pass20

    - #{partial '../../cases/indent_attack/input.toffee', { + #{partial '../../cases/indent_attack/input.toffee', { }} - + @@ -326,7 +350,7 @@ Pass7Pass8 json_formatting - + {"foo":[1,2,3],"bar":{"car":[4,5,"\u003C/html",{"zar":[6,7,null]}]}} { "foo": [ @@ -397,12 +421,12 @@ Pass7Pass8 "\u003C/script\u003E\"" ] - #{partial '../../cases/json_formatting/input.toffee', {}} - + #{partial '../../cases/json_formatting/input.toffee', {}} + @@ -413,15 +437,16 @@ Pass7Pass8 junk -
      +
      • broom
      • mop
      • vacuum
      • -
      - #{partial '../../cases/junk/input.toffee', {}} - +
    + + #{partial '../../cases/junk/input.toffee', {}} + @@ -432,13 +457,13 @@ Pass7Pass8 lambda_fns - PassPassPassPass - #{partial '../../cases/lambda_fns/input.toffee', {}} - + PassPassPassPass + #{partial '../../cases/lambda_fns/input.toffee', {}} + @@ -449,15 +474,15 @@ Pass7Pass8 multiline_interpolation - Hello, world + Hello, world
    Goodbye, world - #{partial '../../cases/multiline_interpolation/input.toffee', {}} - + #{partial '../../cases/multiline_interpolation/input.toffee', {}} + @@ -468,7 +493,7 @@ Goodbye, world passback - vx,vy,vz = vx0,, + vx,vy,vz = vx0,, This should output (1). vx,vy,vz = vx1,vy1, @@ -480,18 +505,18 @@ vx,vy,vz = vx3,vy3,vz2 vx,vy,vz = vx4,vy4,vz2 vx,vy,vz = vx5_sub,vy5_sub,vz2 - #{partial '../../cases/passback/input.toffee', { + #{partial '../../cases/passback/input.toffee', { "vx": "vx0", "x" : "hi" }} - + @@ -502,13 +527,13 @@ vx,vy,vz = vx5_sub,vy5_sub,vz2 plaintext - Hi there. - #{partial '../../cases/plaintext/input.toffee', {}} - + Hi there. + #{partial '../../cases/plaintext/input.toffee', {}} + @@ -519,15 +544,15 @@ vx,vy,vz = vx5_sub,vy5_sub,vz2 post_process - This-is-a-hidden-message + This-is-a-hidden-message .dlrow leurc ,eybdooG .dlrow ,olleH - #{partial '../../cases/post_process/input.toffee', { + #{partial '../../cases/post_process/input.toffee', { greeting: 'Hello' postProcess: (s) -> (c for c in s by -1).join '' }} - + @@ -556,13 +581,13 @@ vx,vy,vz = vx5_sub,vy5_sub,vz2 render_no_args - No arguments passed. - #{partial '../../cases/render_no_args/input.toffee', } - + No arguments passed. + #{partial '../../cases/render_no_args/input.toffee', } + @@ -573,7 +598,7 @@ vx,vy,vz = vx5_sub,vy5_sub,vz2 snippets - From: Preloaded sender + From: Preloaded sender Preloaded message. From: Unknown sender Unknown message. @@ -581,18 +606,18 @@ From: Sam Preloaded message. From: Max Unknown message. - #{partial '../../cases/snippets/input.toffee', { + #{partial '../../cases/snippets/input.toffee', { "from": "Preloaded sender", "msg" : "Preloaded message." }} - + @@ -603,7 +628,7 @@ Unknown message. special_cases - + "PASSED"

    @@ -614,12 +639,12 @@ A backslash is a \ - #{partial '../../cases/special_cases/input.toffee', {}} - + #{partial '../../cases/special_cases/input.toffee', {}} + From c7a2768bb21a463cb74c40389bc783115f5cac7a Mon Sep 17 00:00:00 2001 From: Chris Coyne Date: Mon, 14 Oct 2019 16:00:08 -0400 Subject: [PATCH 125/132] upgrade some old modules --- .kbignore | 1 - .yarnrc | 1 + lib/toffee_lang.js | 20 +- package-lock.json | 1503 -------------------------------------------- package.json | 24 +- yarn.lock | 1465 ++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 1488 insertions(+), 1526 deletions(-) delete mode 100644 .kbignore create mode 100644 .yarnrc delete mode 100644 package-lock.json create mode 100644 yarn.lock diff --git a/.kbignore b/.kbignore deleted file mode 100644 index 40b878d..0000000 --- a/.kbignore +++ /dev/null @@ -1 +0,0 @@ -node_modules/ \ No newline at end of file diff --git a/.yarnrc b/.yarnrc new file mode 100644 index 0000000..fdd705c --- /dev/null +++ b/.yarnrc @@ -0,0 +1 @@ +save-prefix "" diff --git a/lib/toffee_lang.js b/lib/toffee_lang.js index e0291ae..b3f17e5 100644 --- a/lib/toffee_lang.js +++ b/lib/toffee_lang.js @@ -73,7 +73,7 @@ */ var toffee_lang = (function(){ var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[2,7],$V1=[1,8],$V2=[1,7],$V3=[1,9],$V4=[5,15],$V5=[1,15],$V6=[2,19],$V7=[1,20],$V8=[11,12,13,14,15,16],$V9=[5,9,12,13,14,15,16],$Va=[5,9,12,15,16]; -var parser = {trace: function trace() { }, +var parser = {trace: function trace () { }, yy: {}, symbols_: {"error":2,"starter":3,"toffee_zone":4,"EOF":5,"toffee_code":6,"flip_to_coffee":7,"flip_to_toffee_comment":8,"START_TOFFEE_COMMENT":9,"toffee_commented_region":10,"END_TOFFEE_COMMENT":11,"START_COFFEE":12,"END_COFFEE":13,"START_TOFFEE":14,"END_TOFFEE":15,"CODE":16,"coffee_zone":17,"coffee_code":18,"flip_to_toffee":19,"code":20,"$accept":0,"$end":1}, terminals_: {2:"error",5:"EOF",9:"START_TOFFEE_COMMENT",11:"END_TOFFEE_COMMENT",12:"START_COFFEE",13:"END_COFFEE",14:"START_TOFFEE",15:"END_TOFFEE",16:"CODE"}, @@ -131,7 +131,7 @@ break; }, table: [{3:1,4:2,5:$V0,6:3,7:4,8:5,9:$V1,12:$V2,16:$V3,20:6},{1:[3]},{5:[1,10]},o($V4,[2,2],{7:11,8:12,9:$V1,12:$V2}),o($V4,$V0,{6:3,7:4,8:5,20:6,4:13,9:$V1,12:$V2,16:$V3}),o($V4,$V0,{6:3,7:4,8:5,20:6,4:14,9:$V1,12:$V2,16:$V3}),o([5,9,12,15],[2,21],{16:$V5}),{13:$V6,14:$V7,16:$V3,17:16,18:17,19:18,20:19},o($V8,[2,14],{10:21}),o($V9,[2,23]),{1:[2,1]},o($V4,$V0,{6:3,7:4,8:5,20:6,4:22,9:$V1,12:$V2,16:$V3}),o($V4,$V0,{6:3,7:4,8:5,20:6,4:23,9:$V1,12:$V2,16:$V3}),o($V4,[2,4]),o($V4,[2,6]),o($V9,[2,24]),{13:[1,24]},{13:[2,16],14:$V7,19:25},{13:$V6,14:$V7,16:$V3,17:26,18:17,19:18,20:19},o([13,14],[2,22],{16:$V5}),{4:27,6:3,7:4,8:5,9:$V1,12:$V2,15:$V0,16:$V3,20:6},{11:[1,28],12:[1,29],13:[1,30],14:[1,31],15:[1,32],16:[1,33]},o($V4,[2,3]),o($V4,[2,5]),o($Va,[2,15]),{13:$V6,14:$V7,16:$V3,17:34,18:17,19:18,20:19},{13:[2,18]},{15:[1,35]},o($Va,[2,8]),o($V8,[2,9]),o($V8,[2,10]),o($V8,[2,11]),o($V8,[2,12]),o($V8,[2,13]),{13:[2,17]},o([13,14,16],[2,20])], defaultActions: {10:[2,1],26:[2,18],34:[2,17]}, -parseError: function parseError(str, hash) { +parseError: function parseError (str, hash) { if (hash.recoverable) { this.trace(str); } else { @@ -419,7 +419,7 @@ showPosition:function () { }, // test the lexed token: return FALSE when not a match, otherwise return token -test_match:function (match, indexed_rule) { +test_match:function(match, indexed_rule) { var token, lines, backup; @@ -549,7 +549,7 @@ next:function () { }, // return next match that has a token -lex:function lex() { +lex:function lex () { var r = this.next(); if (r) { return r; @@ -559,12 +559,12 @@ lex:function lex() { }, // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) -begin:function begin(condition) { +begin:function begin (condition) { this.conditionStack.push(condition); }, // pop the previously active lexer condition state off the condition stack -popState:function popState() { +popState:function popState () { var n = this.conditionStack.length - 1; if (n > 0) { return this.conditionStack.pop(); @@ -574,7 +574,7 @@ popState:function popState() { }, // produce the lexer rule set which is active for the currently active lexer condition state -_currentRules:function _currentRules() { +_currentRules:function _currentRules () { if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) { return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; } else { @@ -583,7 +583,7 @@ _currentRules:function _currentRules() { }, // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available -topState:function topState(n) { +topState:function topState (n) { n = this.conditionStack.length - 1 - Math.abs(n || 0); if (n >= 0) { return this.conditionStack[n]; @@ -593,7 +593,7 @@ topState:function topState(n) { }, // alias for begin(condition) -pushState:function pushState(condition) { +pushState:function pushState (condition) { this.begin(condition); }, @@ -641,7 +641,7 @@ if (typeof require !== 'undefined' && typeof exports !== 'undefined') { exports.parser = toffee_lang; exports.Parser = toffee_lang.Parser; exports.parse = function () { return toffee_lang.parse.apply(toffee_lang, arguments); }; -exports.main = function commonjsMain(args) { +exports.main = function commonjsMain (args) { if (!args[1]) { console.log('Usage: '+args[0]+' FILE'); process.exit(1); diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index f371e87..0000000 --- a/package-lock.json +++ /dev/null @@ -1,1503 +0,0 @@ -{ - "name": "toffee", - "version": "0.3.2", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "JSONSelect": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/JSONSelect/-/JSONSelect-0.4.0.tgz", - "integrity": "sha1-oI7cxn6z/L6Z7WMIVTRKDPKCu40=", - "dev": true - }, - "JSV": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/JSV/-/JSV-4.0.2.tgz", - "integrity": "sha1-0Hf2glVx+CEy+d/67Vh7QCn+/1c=", - "dev": true - }, - "abab": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", - "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==", - "dev": true - }, - "accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", - "dev": true, - "requires": { - "mime-types": "~2.1.18", - "negotiator": "0.6.1" - } - }, - "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", - "dev": true - }, - "acorn-globals": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.0.tgz", - "integrity": "sha512-hMtHj3s5RnuhvHPowpBYvJVj3rAar82JiDQHvGs1zO0l10ocX/xEdBShNHTJaboucJUsScghp74pH3s7EnHHQw==", - "dev": true, - "requires": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" - }, - "dependencies": { - "acorn": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.2.tgz", - "integrity": "sha512-GXmKIvbrN3TV7aVqAzVFaMW8F8wzVX7voEBRO3bDA64+EX37YSayggRJP5Xig6HYHBkWKpFg9W5gg6orklubhg==", - "dev": true - } - } - }, - "acorn-walk": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.0.tgz", - "integrity": "sha512-ugTb7Lq7u4GfWSqqpwE0bGyoBZNMTok/zDBXxfEG0QM50jNlGhIWjRC1pPN7bvV1anhF+bs+/gNcRw+o55Evbg==", - "dev": true - }, - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "dev": true, - "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" - } - }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true, - "optional": true - }, - "array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", - "dev": true - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", - "dev": true - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dev": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", - "dev": true, - "requires": { - "util": "0.10.3" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - }, - "async-limiter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true - }, - "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", - "dev": true - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "bluebird": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.2.tgz", - "integrity": "sha512-dhHTWMI7kMx5whMQntl7Vr9C6BvV10lFXDAasnqnrMYhXVCzzk6IO9Fo2L75jXHT07WrOngL1WDXOp+yYS91Yg==", - "dev": true - }, - "body-parser": { - "version": "1.18.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", - "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", - "dev": true, - "requires": { - "bytes": "3.0.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "~1.6.3", - "iconv-lite": "0.4.23", - "on-finished": "~2.3.0", - "qs": "6.5.2", - "raw-body": "2.3.3", - "type-is": "~1.6.16" - } - }, - "browser-process-hrtime": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", - "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==", - "dev": true - }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "dev": true - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "cjson": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/cjson/-/cjson-0.3.0.tgz", - "integrity": "sha1-5kObkHA9MS/24iJAl76pLOPQKhQ=", - "dev": true, - "requires": { - "jsonlint": "1.6.0" - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "coffee-script": { - "version": "1.12.7", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.12.7.tgz", - "integrity": "sha512-fLeEhqwymYat/MpTPUjSKHVYYl0ec2mOyALEMLmzr5i1isuG+6jfI2j2d5oBO3VIzgUXgBVIcOT9uH1TFxBckw==" - }, - "colors": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.2.tgz", - "integrity": "sha512-rhP0JSBGYvpcNQj4s5AdShMeE5ahMop96cTeDl/v9qQQm2fYClE2QXZRi8wLzc+GmXSxdIqqbOIAhyObEXDbfQ==", - "dev": true - }, - "combined-stream": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", - "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" - }, - "content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", - "dev": true - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true - }, - "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", - "dev": true - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", - "dev": true - }, - "core-js": { - "version": "2.5.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", - "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==", - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "cssom": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.4.tgz", - "integrity": "sha512-+7prCSORpXNeR4/fUP3rL+TzqtiFfhMvTd7uEqMdgPvLPt4+uzFUeufx5RHjGTACCargg/DiEt/moMQmvnfkog==", - "dev": true - }, - "cssstyle": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.1.1.tgz", - "integrity": "sha512-364AI1l/M5TYcFH83JnOH/pSqgaNnKmYgKrm0didZMGKWjQB60dymwWy1rKUgL3J1ffdq9xVi2yGLHdSjjSNog==", - "dev": true, - "requires": { - "cssom": "0.3.x" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", - "dev": true, - "requires": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" - }, - "dependencies": { - "whatwg-url": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", - "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - } - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true - }, - "domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", - "dev": true, - "requires": { - "webidl-conversions": "^4.0.2" - } - }, - "ebnf-parser": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/ebnf-parser/-/ebnf-parser-0.1.10.tgz", - "integrity": "sha1-zR9rpHfFY4xAyX7ZtXLbW6tdgzE=", - "dev": true - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dev": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, - "escodegen": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.3.3.tgz", - "integrity": "sha1-8CQBb1qI4Eb9EgBQVek5gC5sXyM=", - "dev": true, - "requires": { - "esprima": "~1.1.1", - "estraverse": "~1.5.0", - "esutils": "~1.0.0", - "source-map": "~0.1.33" - } - }, - "esprima": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.1.1.tgz", - "integrity": "sha1-W28VR/TRAuZw4UDFCb5ncdautUk=", - "dev": true - }, - "estraverse": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.5.1.tgz", - "integrity": "sha1-hno+jlip+EYYr7bC3bzZFrfLr3E=", - "dev": true - }, - "esutils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-1.0.0.tgz", - "integrity": "sha1-gVHTWOIMisx/t0XnRywAJf5JZXA=", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true - }, - "eventsource": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", - "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", - "dev": true, - "requires": { - "original": "^1.0.0" - } - }, - "express": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", - "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==", - "dev": true, - "requires": { - "accepts": "~1.3.5", - "array-flatten": "1.1.1", - "body-parser": "1.18.3", - "content-disposition": "0.5.2", - "content-type": "~1.0.4", - "cookie": "0.3.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.1.1", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.4", - "qs": "6.5.2", - "range-parser": "~1.2.0", - "safe-buffer": "5.1.2", - "send": "0.16.2", - "serve-static": "1.13.2", - "setprototypeof": "1.1.0", - "statuses": "~1.4.0", - "type-is": "~1.6.16", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true - }, - "fast-deep-equal": { - "version": "1.1.0", - "resolved": "http://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "finalhandler": { - "version": "1.1.1", - "resolved": "http://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", - "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.4.0", - "unpipe": "~1.0.0" - } - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", - "dev": true - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true - }, - "har-validator": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", - "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", - "dev": true, - "requires": { - "ajv": "^5.3.0", - "har-schema": "^2.0.0" - } - }, - "highlight.js": { - "version": "9.13.1", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.13.1.tgz", - "integrity": "sha512-Sc28JNQNDzaH6PORtRLMvif9RSn1mYuOoX3omVjnb0+HbpPygU2ALBI0R/wsiqCb4/fcp07Gdo8g+fhtFrQl6A==" - }, - "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", - "dev": true, - "requires": { - "whatwg-encoding": "^1.0.1" - } - }, - "http-errors": { - "version": "1.6.3", - "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - } - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "iced-coffee-script": { - "version": "108.0.11", - "resolved": "https://registry.npmjs.org/iced-coffee-script/-/iced-coffee-script-108.0.11.tgz", - "integrity": "sha1-HXH/k8kElyimRoOFqpvIkf10xY8=", - "dev": true, - "requires": { - "iced-runtime": ">=0.0.1" - } - }, - "iced-runtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/iced-runtime/-/iced-runtime-1.0.3.tgz", - "integrity": "sha1-LU9PuZmreqVDCxk8d6f85BGDGc4=", - "dev": true - }, - "iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "ipaddr.js": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", - "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=", - "dev": true - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, - "jison": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/jison/-/jison-0.4.18.tgz", - "integrity": "sha512-FKkCiJvozgC7VTHhMJ00a0/IApSxhlGsFIshLW6trWJ8ONX2TQJBBz6DlcO1Gffy4w9LT+uL+PA+CVnUSJMF7w==", - "dev": true, - "requires": { - "JSONSelect": "0.4.0", - "cjson": "0.3.0", - "ebnf-parser": "0.1.10", - "escodegen": "1.3.x", - "esprima": "1.1.x", - "jison-lex": "0.3.x", - "lex-parser": "~0.1.3", - "nomnom": "1.5.2" - } - }, - "jison-lex": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/jison-lex/-/jison-lex-0.3.4.tgz", - "integrity": "sha1-gcoo2E+ESZ36jFlNzePYo/Jux6U=", - "dev": true, - "requires": { - "lex-parser": "0.1.x", - "nomnom": "1.5.2" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true - }, - "jsdom": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", - "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", - "dev": true, - "requires": { - "abab": "^2.0.0", - "acorn": "^5.5.3", - "acorn-globals": "^4.1.0", - "array-equal": "^1.0.0", - "cssom": ">= 0.3.2 < 0.4.0", - "cssstyle": "^1.0.0", - "data-urls": "^1.0.0", - "domexception": "^1.0.1", - "escodegen": "^1.9.1", - "html-encoding-sniffer": "^1.0.2", - "left-pad": "^1.3.0", - "nwsapi": "^2.0.7", - "parse5": "4.0.0", - "pn": "^1.1.0", - "request": "^2.87.0", - "request-promise-native": "^1.0.5", - "sax": "^1.2.4", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.3.4", - "w3c-hr-time": "^1.0.1", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.3", - "whatwg-mimetype": "^2.1.0", - "whatwg-url": "^6.4.1", - "ws": "^5.2.0", - "xml-name-validator": "^3.0.0" - }, - "dependencies": { - "escodegen": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.0.tgz", - "integrity": "sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==", - "dev": true, - "requires": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } - }, - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true - }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true - } - } - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "jsonlint": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/jsonlint/-/jsonlint-1.6.0.tgz", - "integrity": "sha1-iKpGvCiaesk7tGyuLVihh6m7SUo=", - "dev": true, - "requires": { - "JSV": ">= 4.0.x", - "nomnom": ">= 1.5.x" - } - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "left-pad": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", - "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", - "dev": true - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "lex-parser": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/lex-parser/-/lex-parser-0.1.4.tgz", - "integrity": "sha1-ZMTwJfF/1Tv7RXY/rrFvAVp0dVA=", - "dev": true - }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", - "dev": true - }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "dev": true - }, - "media-typer": { - "version": "0.3.0", - "resolved": "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "dev": true - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", - "dev": true - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "dev": true - }, - "mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", - "dev": true - }, - "mime-db": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", - "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==", - "dev": true - }, - "mime-types": { - "version": "2.1.21", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", - "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", - "dev": true, - "requires": { - "mime-db": "~1.37.0" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", - "dev": true - }, - "nomnom": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.5.2.tgz", - "integrity": "sha1-9DRUSKhTz71cDSYyDyR3qwUm/i8=", - "dev": true, - "requires": { - "colors": "0.5.x", - "underscore": "1.1.x" - }, - "dependencies": { - "colors": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/colors/-/colors-0.5.1.tgz", - "integrity": "sha1-fQAj6usVTo7p/Oddy5I9DtFmd3Q=", - "dev": true - } - } - }, - "nwsapi": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.0.9.tgz", - "integrity": "sha512-nlWFSCTYQcHk/6A9FFnfhKc14c3aFhfdNBXgo8Qgi9QTBu/qg3Ww+Uiz9wMzXd1T8GFxPc2QIHB6Qtf2XFryFQ==", - "dev": true - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" - } - }, - "original": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", - "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", - "dev": true, - "requires": { - "url-parse": "^1.4.3" - } - }, - "parse5": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", - "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", - "dev": true - }, - "parseurl": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", - "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", - "dev": true - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", - "dev": true - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", - "dev": true - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "proxy-addr": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", - "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", - "dev": true, - "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.8.0" - } - }, - "psl": { - "version": "1.1.29", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", - "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==", - "dev": true - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true - }, - "querystringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.0.tgz", - "integrity": "sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg==", - "dev": true - }, - "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", - "dev": true - }, - "raw-body": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", - "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", - "dev": true, - "requires": { - "bytes": "3.0.0", - "http-errors": "1.6.3", - "iconv-lite": "0.4.23", - "unpipe": "1.0.0" - } - }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - }, - "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.0", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true - } - } - }, - "request-promise-core": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", - "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", - "dev": true, - "requires": { - "lodash": "^4.13.1" - } - }, - "request-promise-native": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.5.tgz", - "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=", - "dev": true, - "requires": { - "request-promise-core": "1.1.1", - "stealthy-require": "^1.1.0", - "tough-cookie": ">=2.3.3" - } - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", - "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" - } - }, - "serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", - "dev": true, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.2" - } - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "source-map": { - "version": "0.1.43", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", - "dev": true, - "optional": true, - "requires": { - "amdefine": ">=0.0.4" - } - }, - "sshpk": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.15.2.tgz", - "integrity": "sha512-Ra/OXQtuh0/enyl4ETZAfTaeksa6BXks5ZcjpSUNrjBr0DvrJKX+1fsKDPpT9TBXgHAFsa4510aNVgI8g/+SzA==", - "dev": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", - "dev": true - }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", - "dev": true - }, - "symbol-tree": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", - "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", - "dev": true - }, - "tablify": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/tablify/-/tablify-0.1.5.tgz", - "integrity": "sha1-RxYM4pGL4pHWPOzO3bUlTdcpgsc=", - "dev": true - }, - "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "dev": true, - "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - } - } - }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "type-is": { - "version": "1.6.16", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", - "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", - "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.18" - } - }, - "underscore": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.1.7.tgz", - "integrity": "sha1-QLq4S60Z0jAJbo1u9ii/8FXYPbA=", - "dev": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true - }, - "url-parse": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.3.tgz", - "integrity": "sha512-rh+KuAW36YKo0vClhQzLLveoj8FwPJNu65xLb7Mrt+eZht0IPT0IXgSv8gcMegZ6NvjJUALf6Mf25POlMwD1Fw==", - "dev": true, - "requires": { - "querystringify": "^2.0.0", - "requires-port": "^1.0.0" - } - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - } - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "dev": true - }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", - "dev": true - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "dev": true - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "w3c-hr-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", - "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", - "dev": true, - "requires": { - "browser-process-hrtime": "^0.1.2" - } - }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, - "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "requires": { - "iconv-lite": "0.4.24" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - } - } - }, - "whatwg-mimetype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.2.0.tgz", - "integrity": "sha512-5YSO1nMd5D1hY3WzAQV3PzZL83W3YeyR1yW9PcH26Weh1t+Vzh9B6XkDh7aXm83HBZ4nSMvkjvN2H2ySWIvBgw==", - "dev": true - }, - "whatwg-url": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", - "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - }, - "ws": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", - "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } - }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "zombie": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/zombie/-/zombie-6.1.3.tgz", - "integrity": "sha512-CckDy0fjlx/sWOjG054DOaGKFFonLQQ4MPEJDbxPXE2r+aUAj97KZfGNQ3vyCXq64qPVk8b+9DUNzXRdc9KrhA==", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "bluebird": "^3.5.1", - "debug": "^3.1.0", - "eventsource": "^1.0.5", - "iconv-lite": "^0.4.21", - "jsdom": "11.12.0", - "lodash": "^4.17.10", - "mime": "^2.3.1", - "ms": "^2.1.1", - "request": "^2.85.0", - "tough-cookie": "^2.3.4", - "ws": "^5.1.1" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "mime": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz", - "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==", - "dev": true - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - } - } - } - } -} diff --git a/package.json b/package.json index 876c594..a997835 100644 --- a/package.json +++ b/package.json @@ -9,20 +9,20 @@ "author": "Chris Coyne ", "bin": "./bin/toffee", "dependencies": { - "coffee-script": "^1.12.7", - "commander": "^2.19.0", - "highlight.js": "^9.13.1", - "mkdirp": "^0.5.1" + "coffee-script": "1.12.7", + "commander": "2.19.0", + "highlight.js": "9.13.1", + "mkdirp": "0.5.1" }, "devDependencies": { - "assert": "^1.4.1", - "colors": "^1.1.2", - "diff": "^3.3.0", - "express": "^4.16.4", - "iced-coffee-script": "^108.0.11", - "jison": "^0.4.18", - "tablify": "^0.1.5", - "zombie": "^6.1.3" + "assert": "2.0.0", + "colors": "1.1.2", + "diff": "4.0.1", + "express": "4.17.1", + "iced-coffee-script": "108.0.13", + "jison": "0.4.18", + "tablify": "0.1.5", + "zombie": "6.1.4" }, "files": [ "index.js", diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..58ed6b0 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,1465 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +JSONSelect@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/JSONSelect/-/JSONSelect-0.4.0.tgz#a08edcc67eb3fcbe99ed630855344a0cf282bb8d" + integrity sha1-oI7cxn6z/L6Z7WMIVTRKDPKCu40= + +"JSV@>= 4.0.x": + version "4.0.2" + resolved "https://registry.yarnpkg.com/JSV/-/JSV-4.0.2.tgz#d077f6825571f82132f9dffaed587b4029feff57" + integrity sha1-0Hf2glVx+CEy+d/67Vh7QCn+/1c= + +abab@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.2.tgz#a2fba1b122c69a85caa02d10f9270c7219709a9d" + integrity sha512-2scffjvioEmNz0OyDSLGWDfKCVwaKc6l9Pm9kOIREU13ClXZvHpg/nRL5xyjSSSLhOnXqft2HpsAzNEEA8cFFg== + +accepts@~1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== + dependencies: + mime-types "~2.1.24" + negotiator "0.6.2" + +acorn-globals@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" + integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== + dependencies: + acorn "^6.0.1" + acorn-walk "^6.0.1" + +acorn-walk@^6.0.1: + version "6.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" + integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== + +acorn@^5.5.3: + version "5.7.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" + integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== + +acorn@^6.0.1: + version "6.3.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.3.0.tgz#0087509119ffa4fc0a0041d1e93a417e68cb856e" + integrity sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA== + +ajv@^6.5.5: + version "6.10.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" + integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== + dependencies: + fast-deep-equal "^2.0.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= + +ansi-styles@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178" + integrity sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg= + +array-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" + integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +assert@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-2.0.0.tgz#95fc1c616d48713510680f2eaf2d10dd22e02d32" + integrity sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A== + dependencies: + es6-object-assign "^1.1.0" + is-nan "^1.2.1" + object-is "^1.0.1" + util "^0.12.0" + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" + integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== + +babel-runtime@6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +bluebird@^3.5.1: + version "3.7.0" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.0.tgz#56a6a886e03f6ae577cffedeb524f8f2450293cf" + integrity sha512-aBQ1FxIa7kSWCcmKHlcHFlT2jt6J/l4FzC7KcPELkOJOsPOb/bccdhmIrKDfXhwFrmc7vDoDrrepFvGqjyXGJg== + +body-parser@1.19.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" + integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== + dependencies: + bytes "3.1.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "1.7.2" + iconv-lite "0.4.24" + on-finished "~2.3.0" + qs "6.7.0" + raw-body "2.4.0" + type-is "~1.6.17" + +browser-process-hrtime@^0.1.2: + version "0.1.3" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz#616f00faef1df7ec1b5bf9cfe2bdc3170f26c7b4" + integrity sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw== + +bytes@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +chalk@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f" + integrity sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8= + dependencies: + ansi-styles "~1.0.0" + has-color "~0.1.0" + strip-ansi "~0.1.0" + +cjson@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/cjson/-/cjson-0.3.0.tgz#e6439b90703d312ff6e2224097bea92ce3d02a14" + integrity sha1-5kObkHA9MS/24iJAl76pLOPQKhQ= + dependencies: + jsonlint "1.6.0" + +coffee-script@1.12.7: + version "1.12.7" + resolved "https://registry.yarnpkg.com/coffee-script/-/coffee-script-1.12.7.tgz#c05dae0cb79591d05b3070a8433a98c9a89ccc53" + integrity sha512-fLeEhqwymYat/MpTPUjSKHVYYl0ec2mOyALEMLmzr5i1isuG+6jfI2j2d5oBO3VIzgUXgBVIcOT9uH1TFxBckw== + +colors@0.5.x: + version "0.5.1" + resolved "https://registry.yarnpkg.com/colors/-/colors-0.5.1.tgz#7d0023eaeb154e8ee9fce75dcb923d0ed1667774" + integrity sha1-fQAj6usVTo7p/Oddy5I9DtFmd3Q= + +colors@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" + integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM= + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" + integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== + +commander@2.20.0: + version "2.20.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" + integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== + +content-disposition@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" + integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== + dependencies: + safe-buffer "5.1.2" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" + integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== + +core-js@^2.4.0: + version "2.6.10" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.10.tgz#8a5b8391f8cc7013da703411ce5b585706300d7f" + integrity sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA== + +core-util-is@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1" + integrity sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA== + dependencies: + cssom "0.3.x" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + +data-urls@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" + integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== + dependencies: + abab "^2.0.0" + whatwg-mimetype "^2.2.0" + whatwg-url "^7.0.0" + +debug@2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +define-properties@^1.1.1, define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +diff@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.1.tgz#0c667cb467ebbb5cea7f14f135cc2dba7780a8ff" + integrity sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q== + +domexception@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" + integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== + dependencies: + webidl-conversions "^4.0.2" + +ebnf-parser@0.1.10: + version "0.1.10" + resolved "https://registry.yarnpkg.com/ebnf-parser/-/ebnf-parser-0.1.10.tgz#cd1f6ba477c5638c40c97ed9b572db5bab5d8331" + integrity sha1-zR9rpHfFY4xAyX7ZtXLbW6tdgzE= + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +es-abstract@^1.12.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.15.0.tgz#8884928ec7e40a79e3c9bc812d37d10c8b24cc57" + integrity sha512-bhkEqWJ2t2lMeaJDuk7okMkJWI/yqgH/EoGwpcvv0XW9RWQsRspI4wt6xuyuvMvvQE3gg/D9HXppgk21w78GyQ== + dependencies: + es-to-primitive "^1.2.0" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.0" + is-callable "^1.1.4" + is-regex "^1.0.4" + object-inspect "^1.6.0" + object-keys "^1.1.1" + string.prototype.trimleft "^2.1.0" + string.prototype.trimright "^2.1.0" + +es-to-primitive@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" + integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es6-object-assign@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c" + integrity sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw= + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escodegen@1.3.x: + version "1.3.3" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.3.3.tgz#f024016f5a88e046fd12005055e939802e6c5f23" + integrity sha1-8CQBb1qI4Eb9EgBQVek5gC5sXyM= + dependencies: + esprima "~1.1.1" + estraverse "~1.5.0" + esutils "~1.0.0" + optionalDependencies: + source-map "~0.1.33" + +escodegen@^1.9.1: + version "1.12.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.12.0.tgz#f763daf840af172bb3a2b6dd7219c0e17f7ff541" + integrity sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg== + dependencies: + esprima "^3.1.3" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +esprima@1.1.x, esprima@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.1.1.tgz#5b6f1547f4d102e670e140c509be6771d6aeb549" + integrity sha1-W28VR/TRAuZw4UDFCb5ncdautUk= + +esprima@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= + +estraverse@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@~1.5.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.5.1.tgz#867a3e8e58a9f84618afb6c2ddbcd916b7cbaf71" + integrity sha1-hno+jlip+EYYr7bC3bzZFrfLr3E= + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +esutils@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-1.0.0.tgz#8151d358e20c8acc7fb745e7472c0025fe496570" + integrity sha1-gVHTWOIMisx/t0XnRywAJf5JZXA= + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +eventsource@^1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" + integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== + dependencies: + original "^1.0.0" + +express@4.17.1: + version "4.17.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" + integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== + dependencies: + accepts "~1.3.7" + array-flatten "1.1.1" + body-parser "1.19.0" + content-disposition "0.5.3" + content-type "~1.0.4" + cookie "0.4.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "~1.1.2" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.5" + qs "6.7.0" + range-parser "~1.2.1" + safe-buffer "5.1.2" + send "0.17.1" + serve-static "1.14.1" + setprototypeof "1.1.1" + statuses "~1.5.0" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +fast-deep-equal@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" + integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= + +fast-json-stable-stringify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= + +fast-levenshtein@~2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.0: + version "5.1.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" + integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== + dependencies: + ajv "^6.5.5" + har-schema "^2.0.0" + +has-color@~0.1.0: + version "0.1.7" + resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f" + integrity sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8= + +has-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" + integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= + +has@^1.0.1, has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +highlight.js@9.13.1: + version "9.13.1" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.13.1.tgz#054586d53a6863311168488a0f58d6c505ce641e" + integrity sha512-Sc28JNQNDzaH6PORtRLMvif9RSn1mYuOoX3omVjnb0+HbpPygU2ALBI0R/wsiqCb4/fcp07Gdo8g+fhtFrQl6A== + +html-encoding-sniffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" + integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== + dependencies: + whatwg-encoding "^1.0.1" + +http-errors@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" + integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-errors@~1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +iced-coffee-script@108.0.13: + version "108.0.13" + resolved "https://registry.yarnpkg.com/iced-coffee-script/-/iced-coffee-script-108.0.13.tgz#574085c8c0e2e3f21583db46df3d8d541e511e0a" + integrity sha512-0qG9vtelrtfY1NCh+120EINbytkt2rkCVXJ81EOItbP7B8vildMCfLfuQdYRSy7r2T6Z+2zok/NuPRuokqSNNA== + dependencies: + iced-runtime ">=0.0.1" + uglify-js "^3.5.9" + +iced-runtime@>=0.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/iced-runtime/-/iced-runtime-1.0.4.tgz#e9de26dfe98cd8621201f7f3dfb9f7f09c550990" + integrity sha512-rgiJXNF6ZgF2Clh/TKUlBDW3q51YPDJUXmxGQXx1b8tbZpVpTn+1RX9q1sjNkujXIIaVxZByQzPHHORg7KV51g== + +iconv-lite@0.4.24, iconv-lite@^0.4.21: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +inherits@2.0.4, inherits@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ipaddr.js@1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65" + integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA== + +is-arguments@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" + integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== + +is-callable@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" + integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== + +is-date-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" + integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= + +is-generator-function@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.7.tgz#d2132e529bb0000a7f80794d4bdf5cd5e5813522" + integrity sha512-YZc5EwyO4f2kWCax7oegfuSr9mFz1ZvieNYBEjmukLxgXfBUbxAWGVF7GZf0zidYtoBl3WvC07YK0wT76a+Rtw== + +is-nan@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.2.1.tgz#9faf65b6fb6db24b7f5c0628475ea71f988401e2" + integrity sha1-n69ltvttskt/XAYoR16nH5iEAeI= + dependencies: + define-properties "^1.1.1" + +is-regex@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= + dependencies: + has "^1.0.1" + +is-symbol@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" + integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== + dependencies: + has-symbols "^1.0.0" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +jison-lex@0.3.x: + version "0.3.4" + resolved "https://registry.yarnpkg.com/jison-lex/-/jison-lex-0.3.4.tgz#81ca28d84f84499dfa8c594dcde3d8a3f26ec7a5" + integrity sha1-gcoo2E+ESZ36jFlNzePYo/Jux6U= + dependencies: + lex-parser "0.1.x" + nomnom "1.5.2" + +jison@0.4.18: + version "0.4.18" + resolved "https://registry.yarnpkg.com/jison/-/jison-0.4.18.tgz#c68a6a54bfe7028fa40bcfc6cc8bbd9ed291f502" + integrity sha512-FKkCiJvozgC7VTHhMJ00a0/IApSxhlGsFIshLW6trWJ8ONX2TQJBBz6DlcO1Gffy4w9LT+uL+PA+CVnUSJMF7w== + dependencies: + JSONSelect "0.4.0" + cjson "0.3.0" + ebnf-parser "0.1.10" + escodegen "1.3.x" + esprima "1.1.x" + jison-lex "0.3.x" + lex-parser "~0.1.3" + nomnom "1.5.2" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +jsdom@11.12.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" + integrity sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw== + dependencies: + abab "^2.0.0" + acorn "^5.5.3" + acorn-globals "^4.1.0" + array-equal "^1.0.0" + cssom ">= 0.3.2 < 0.4.0" + cssstyle "^1.0.0" + data-urls "^1.0.0" + domexception "^1.0.1" + escodegen "^1.9.1" + html-encoding-sniffer "^1.0.2" + left-pad "^1.3.0" + nwsapi "^2.0.7" + parse5 "4.0.0" + pn "^1.1.0" + request "^2.87.0" + request-promise-native "^1.0.5" + sax "^1.2.4" + symbol-tree "^3.2.2" + tough-cookie "^2.3.4" + w3c-hr-time "^1.0.1" + webidl-conversions "^4.0.2" + whatwg-encoding "^1.0.3" + whatwg-mimetype "^2.1.0" + whatwg-url "^6.4.1" + ws "^5.2.0" + xml-name-validator "^3.0.0" + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +jsonlint@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/jsonlint/-/jsonlint-1.6.0.tgz#88aa46bc289a7ac93bb46cae2d58a187a9bb494a" + integrity sha1-iKpGvCiaesk7tGyuLVihh6m7SUo= + dependencies: + JSV ">= 4.0.x" + nomnom ">= 1.5.x" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +left-pad@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" + integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== + +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +lex-parser@0.1.x, lex-parser@~0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/lex-parser/-/lex-parser-0.1.4.tgz#64c4f025f17fd53bfb45763faeb16f015a747550" + integrity sha1-ZMTwJfF/1Tv7RXY/rrFvAVp0dVA= + +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + +lodash@^4.17.10, lodash@^4.17.11: + version "4.17.15" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" + integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + +mime-db@1.40.0: + version "1.40.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" + integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA== + +mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24: + version "2.1.24" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81" + integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ== + dependencies: + mime-db "1.40.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.3.1: + version "2.4.4" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" + integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA== + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= + +mkdirp@0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + dependencies: + minimist "0.0.8" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +negotiator@0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + +nomnom@1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/nomnom/-/nomnom-1.5.2.tgz#f4345448a853cfbd5c0d26320f2477ab0526fe2f" + integrity sha1-9DRUSKhTz71cDSYyDyR3qwUm/i8= + dependencies: + colors "0.5.x" + underscore "1.1.x" + +"nomnom@>= 1.5.x": + version "1.8.1" + resolved "https://registry.yarnpkg.com/nomnom/-/nomnom-1.8.1.tgz#2151f722472ba79e50a76fc125bb8c8f2e4dc2a7" + integrity sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc= + dependencies: + chalk "~0.4.0" + underscore "~1.6.0" + +nwsapi@^2.0.7: + version "2.1.4" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.1.4.tgz#e006a878db23636f8e8a67d33ca0e4edf61a842f" + integrity sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw== + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-inspect@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.6.0.tgz#c70b6cbf72f274aab4c34c0c82f5167bf82cf15b" + integrity sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ== + +object-is@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz#0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6" + integrity sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY= + +object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.entries@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.0.tgz#2024fc6d6ba246aee38bdb0ffd5cfbcf371b7519" + integrity sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.12.0" + function-bind "^1.1.1" + has "^1.0.3" + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +optionator@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.4" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + wordwrap "~1.0.0" + +original@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" + integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== + dependencies: + url-parse "^1.4.3" + +parse5@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" + integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== + +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +pn@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" + integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + +proxy-addr@~2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34" + integrity sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ== + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.9.0" + +psl@^1.1.24, psl@^1.1.28: + version "1.4.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.4.0.tgz#5dd26156cdb69fa1fdb8ab1991667d3f80ced7c2" + integrity sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw== + +punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +qs@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" + integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== + +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +querystringify@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" + integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" + integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== + dependencies: + bytes "3.1.0" + http-errors "1.7.2" + iconv-lite "0.4.24" + unpipe "1.0.0" + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== + +request-promise-core@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.2.tgz#339f6aababcafdb31c799ff158700336301d3346" + integrity sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag== + dependencies: + lodash "^4.17.11" + +request-promise-native@^1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.7.tgz#a49868a624bdea5069f1251d0a836e0d89aa2c59" + integrity sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w== + dependencies: + request-promise-core "1.1.2" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + +request@^2.85.0, request@^2.87.0: + version "2.88.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" + integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.0" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.4.3" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + +safe-buffer@5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@^5.0.1, safe-buffer@^5.1.2: + version "5.2.0" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" + integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sax@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +send@0.17.1: + version "0.17.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.7.2" + mime "1.6.0" + ms "2.1.1" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + +serve-static@1.14.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.1" + +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + +source-map@~0.1.33: + version "0.1.43" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" + integrity sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y= + dependencies: + amdefine ">=0.0.4" + +source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +"statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +stealthy-require@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= + +string.prototype.trimleft@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz#6cc47f0d7eb8d62b0f3701611715a3954591d634" + integrity sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw== + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" + +string.prototype.trimright@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz#669d164be9df9b6f7559fa8e89945b168a5a6c58" + integrity sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg== + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" + +strip-ansi@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz#39e8a98d044d150660abe4a6808acf70bb7bc991" + integrity sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE= + +symbol-tree@^3.2.2: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + +tablify@0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/tablify/-/tablify-0.1.5.tgz#47160ce2918be291d63cecceddb5254dd72982c7" + integrity sha1-RxYM4pGL4pHWPOzO3bUlTdcpgsc= + +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + +tough-cookie@^2.3.3, tough-cookie@^2.3.4: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tough-cookie@~2.4.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" + integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== + dependencies: + psl "^1.1.24" + punycode "^1.4.1" + +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= + dependencies: + punycode "^2.1.0" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + dependencies: + prelude-ls "~1.1.2" + +type-is@~1.6.17, type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +uglify-js@^3.5.9: + version "3.6.1" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.6.1.tgz#ae7688c50e1bdcf2f70a0e162410003cf9798311" + integrity sha512-+dSJLJpXBb6oMHP+Yvw8hUgElz4gLTh82XuX68QiJVTXaE5ibl6buzhNkQdYhBlIhozWOC9ge16wyRmjG4TwVQ== + dependencies: + commander "2.20.0" + source-map "~0.6.1" + +underscore@1.1.x: + version "1.1.7" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.1.7.tgz#40bab84bad19d230096e8d6ef628bff055d83db0" + integrity sha1-QLq4S60Z0jAJbo1u9ii/8FXYPbA= + +underscore@~1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8" + integrity sha1-izixDKze9jM3uLJOT/htRa6lKag= + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + dependencies: + punycode "^2.1.0" + +url-parse@^1.4.3: + version "1.4.7" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" + integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +util@^0.12.0: + version "0.12.1" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.1.tgz#f908e7b633e7396c764e694dd14e716256ce8ade" + integrity sha512-MREAtYOp+GTt9/+kwf00IYoHZyjM8VU4aVrkzUlejyqaIjd2GztVl5V9hGXKlvBKE3gENn/FMfHE5v6hElXGcQ== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + object.entries "^1.1.0" + safe-buffer "^5.1.2" + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@^3.3.2: + version "3.3.3" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" + integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +w3c-hr-time@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045" + integrity sha1-gqwr/2PZUOqeMYmlimViX+3xkEU= + dependencies: + browser-process-hrtime "^0.1.2" + +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== + +whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3: + version "1.0.5" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== + dependencies: + iconv-lite "0.4.24" + +whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + +whatwg-url@^6.4.1: + version "6.5.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" + integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +whatwg-url@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.0.0.tgz#fde926fa54a599f3adf82dff25a9f7be02dc6edd" + integrity sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= + +ws@^5.2.0: + version "5.2.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" + integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== + dependencies: + async-limiter "~1.0.0" + +ws@^6.1.2: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" + integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== + dependencies: + async-limiter "~1.0.0" + +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== + +zombie@6.1.4: + version "6.1.4" + resolved "https://registry.yarnpkg.com/zombie/-/zombie-6.1.4.tgz#9f0f53f3d9a032beb7f3fe5b382146a3475a4d47" + integrity sha512-yxNvKtyz3PP8lkr31AYh7vdbBD4is9hYXiOQKPp+k/7GiDiFQXX1Ex+peCl4ttodu/bHZcIluJ8lxMla5XefBQ== + dependencies: + babel-runtime "6.26.0" + bluebird "^3.5.1" + debug "^4.1.0" + eventsource "^1.0.5" + iconv-lite "^0.4.21" + jsdom "11.12.0" + lodash "^4.17.10" + mime "^2.3.1" + ms "^2.1.1" + request "^2.85.0" + tough-cookie "^2.3.4" + ws "^6.1.2" From 93786482d38b8e25c084f190952541bdb6076459 Mon Sep 17 00:00:00 2001 From: Chris Coyne Date: Mon, 14 Oct 2019 16:04:09 -0400 Subject: [PATCH 126/132] version 0.3.5 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a997835..7e4567b 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "toffee", "description": "A NodeJs and browser-side templating language based on CoffeeScript with slicker tokens and syntax.", - "version": "0.3.4", + "version": "0.3.5", "directories": { "lib": "./lib" }, From 9ea7a1d83c832d88e7c91f6670223cbe00b865b4 Mon Sep 17 00:00:00 2001 From: Chris Coyne Date: Wed, 16 Oct 2019 12:36:43 -0400 Subject: [PATCH 127/132] likely fixes issue with occasional file rename race on linux --- lib/engine.js | 58 +++++++++++++++++++++++++++-------------------- package.json | 3 ++- src/engine.coffee | 39 +++++++++++++++++-------------- yarn.lock | 9 +++++++- 4 files changed, 66 insertions(+), 43 deletions(-) diff --git a/lib/engine.js b/lib/engine.js index 3eb244f..2417d0e 100644 --- a/lib/engine.js +++ b/lib/engine.js @@ -1,6 +1,6 @@ // Generated by CoffeeScript 1.12.7 (function() { - var MAX_CACHED_SANDBOXES, Pool, engine, fs, path, ref, sandboxCons, states, tweakables, util, utils, view, vm, + var LockTable, MAX_CACHED_SANDBOXES, Pool, engine, fs, path, ref, sandboxCons, states, tweakables, util, utils, view, vm, bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; view = require('./view').view; @@ -19,6 +19,8 @@ vm = require('vm'); + LockTable = require('iced-lock').Table; + MAX_CACHED_SANDBOXES = 100; sandboxCons = function() { @@ -44,6 +46,7 @@ this.viewCache = {}; this.fsErrorCache = {}; this.filenameCache = {}; + this.fileLockTable = new LockTable(); } engine.prototype._log = function(o) { @@ -315,32 +318,39 @@ }; engine.prototype._reloadFileInBkg = function(filename, options) { - return fs.readFile(filename, 'utf8', (function(_this) { - return function(err, txt) { - var ctx, ref1, v, view_options; - if (err || (txt !== _this.viewCache[filename].txt)) { - if (err) { - _this.fsErrorCache[filename] = Date.now(); - txt = "Error: Could not read " + filename; - if (((ref1 = options.__toffee) != null ? ref1.parent : void 0) != null) { - txt += " requested in " + options.__toffee.parent; - } - } - if (!(err && _this.viewCache[filename].fsError)) { - view_options = _this._generateViewOptions(filename); - ctx = _this.pool.get(); - view_options.ctx = ctx; - view_options.cb = function(v) { - _this._log(filename + " updated and ready"); - _this.viewCache[filename] = v; - return _this.pool.release(ctx); - }; + this._log(filename + " acquiring lock to read"); + return this.fileLockTable.acquire2({ + name: filename + }, (function(_this) { + return function(lock) { + return fs.readFile(filename, 'utf8', function(err, txt) { + var ctx, ref1, v, view_options; + if (err || (txt !== _this.viewCache[filename].txt)) { if (err) { - view_options.fsError = true; + _this.fsErrorCache[filename] = Date.now(); + txt = "Error: Could not read " + filename; + if (((ref1 = options.__toffee) != null ? ref1.parent : void 0) != null) { + txt += " requested in " + options.__toffee.parent; + } + } + if (!(err && _this.viewCache[filename].fsError)) { + view_options = _this._generateViewOptions(filename); + ctx = _this.pool.get(); + view_options.ctx = ctx; + view_options.cb = function(v) { + _this._log(filename + " updated and ready"); + _this.viewCache[filename] = v; + return _this.pool.release(ctx); + }; + if (err) { + view_options.fsError = true; + } + v = new view(txt, view_options); } - return v = new view(txt, view_options); } - } + _this._log(filename + " lock releasing"); + return lock.release(); + }); }; })(this)); }; diff --git a/package.json b/package.json index 7e4567b..fdf514a 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "toffee", "description": "A NodeJs and browser-side templating language based on CoffeeScript with slicker tokens and syntax.", - "version": "0.3.5", + "version": "0.3.6", "directories": { "lib": "./lib" }, @@ -12,6 +12,7 @@ "coffee-script": "1.12.7", "commander": "2.19.0", "highlight.js": "9.13.1", + "iced-lock": "2.0.1", "mkdirp": "0.5.1" }, "devDependencies": { diff --git a/src/engine.coffee b/src/engine.coffee index db5495b..8eeea0d 100644 --- a/src/engine.coffee +++ b/src/engine.coffee @@ -6,7 +6,7 @@ fs = require 'fs' path = require 'path' util = require 'util' vm = require 'vm' - +LockTable = require('iced-lock').Table MAX_CACHED_SANDBOXES = 100 sandboxCons = () -> @@ -28,6 +28,7 @@ class engine @fsErrorCache = {} # filename -> timestamp last failed @filenameCache = {} # caches dir -> filename -> path.normalize path.resolve dir, filename + @fileLockTable = new LockTable() _log: (o) -> if @verbose @@ -227,23 +228,27 @@ class engine return v _reloadFileInBkg: (filename, options) -> - fs.readFile filename, 'utf8', (err, txt) => - if err or (txt isnt @viewCache[filename].txt) - if err - @fsErrorCache[filename] = Date.now() - txt = "Error: Could not read #{filename}" - if options.__toffee?.parent? then txt += " requested in #{options.__toffee.parent}" - if not (err and @viewCache[filename].fsError) # i.e., don't just create a new error view - view_options = @_generateViewOptions filename - ctx = @pool.get() - view_options.ctx = ctx - view_options.cb = (v) => - @_log "#{filename} updated and ready" - @viewCache[filename] = v - @pool.release(ctx) + @_log "#{filename} acquiring lock to read" + @fileLockTable.acquire2 {name: filename}, (lock) => + fs.readFile filename, 'utf8', (err, txt) => + if err or (txt isnt @viewCache[filename].txt) if err - view_options.fsError = true - v = new view txt, view_options + @fsErrorCache[filename] = Date.now() + txt = "Error: Could not read #{filename}" + if options.__toffee?.parent? then txt += " requested in #{options.__toffee.parent}" + if not (err and @viewCache[filename].fsError) # i.e., don't just create a new error view + view_options = @_generateViewOptions filename + ctx = @pool.get() + view_options.ctx = ctx + view_options.cb = (v) => + @_log "#{filename} updated and ready" + @viewCache[filename] = v + @pool.release(ctx) + if err + view_options.fsError = true + v = new view txt, view_options + @_log "#{filename} lock releasing" + lock.release() _generateViewOptions: (filename) -> return { diff --git a/yarn.lock b/yarn.lock index 58ed6b0..6352b05 100644 --- a/yarn.lock +++ b/yarn.lock @@ -651,7 +651,14 @@ iced-coffee-script@108.0.13: iced-runtime ">=0.0.1" uglify-js "^3.5.9" -iced-runtime@>=0.0.1: +iced-lock@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/iced-lock/-/iced-lock-2.0.1.tgz#92fe46ffe01b872bf88f963c2a319fa8ad80d13b" + integrity sha512-J6dnGMpAoHNyACUYJYhiJkLY7YFRTa7NMZ8ZygpYB3HNDOGWtzv55+kT2u1zItRi4Y1EXruG9d1VDsx8R5faTw== + dependencies: + iced-runtime "^1.0.0" + +iced-runtime@>=0.0.1, iced-runtime@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/iced-runtime/-/iced-runtime-1.0.4.tgz#e9de26dfe98cd8621201f7f3dfb9f7f09c550990" integrity sha512-rgiJXNF6ZgF2Clh/TKUlBDW3q51YPDJUXmxGQXx1b8tbZpVpTn+1RX9q1sjNkujXIIaVxZByQzPHHORg7KV51g== From 317368e8093ce71fd417997a17d1a70ecfaf0808 Mon Sep 17 00:00:00 2001 From: Chris Coyne Date: Wed, 16 Oct 2019 12:39:14 -0400 Subject: [PATCH 128/132] logging --- lib/engine.js | 1 + src/engine.coffee | 1 + 2 files changed, 2 insertions(+) diff --git a/lib/engine.js b/lib/engine.js index 2417d0e..e434f9b 100644 --- a/lib/engine.js +++ b/lib/engine.js @@ -325,6 +325,7 @@ return function(lock) { return fs.readFile(filename, 'utf8', function(err, txt) { var ctx, ref1, v, view_options; + _this._log((Date.now()) + " - " + filename + " changed to " + (txt != null ? txt.length : void 0) + "bytes. " + (txt != null ? typeof txt.replace === "function" ? txt.replace(/\n/g, '').slice(0, 80) : void 0 : void 0)); if (err || (txt !== _this.viewCache[filename].txt)) { if (err) { _this.fsErrorCache[filename] = Date.now(); diff --git a/src/engine.coffee b/src/engine.coffee index 8eeea0d..feb1b74 100644 --- a/src/engine.coffee +++ b/src/engine.coffee @@ -231,6 +231,7 @@ class engine @_log "#{filename} acquiring lock to read" @fileLockTable.acquire2 {name: filename}, (lock) => fs.readFile filename, 'utf8', (err, txt) => + @_log "#{Date.now()} - #{filename} changed to #{txt?.length}bytes. #{txt?.replace?(/\n/g , '')[...80]}" if err or (txt isnt @viewCache[filename].txt) if err @fsErrorCache[filename] = Date.now() From 7516ee949a22a42df3a82d727bb7dca0135bc1be Mon Sep 17 00:00:00 2001 From: Chris Coyne Date: Thu, 2 Jan 2020 08:51:13 -0500 Subject: [PATCH 129/132] Update src/engine.coffee MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Michał Zochniak --- src/engine.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine.coffee b/src/engine.coffee index feb1b74..61d9309 100644 --- a/src/engine.coffee +++ b/src/engine.coffee @@ -231,7 +231,7 @@ class engine @_log "#{filename} acquiring lock to read" @fileLockTable.acquire2 {name: filename}, (lock) => fs.readFile filename, 'utf8', (err, txt) => - @_log "#{Date.now()} - #{filename} changed to #{txt?.length}bytes. #{txt?.replace?(/\n/g , '')[...80]}" + @_log "#{Date.now()} - #{filename} changed to #{txt?.length} bytes. #{txt?.replace?(/\n/g , '')[...80]}" if not err if err or (txt isnt @viewCache[filename].txt) if err @fsErrorCache[filename] = Date.now() From e11563c03f4682076292791a9e7f2ab94274c64d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Zochniak?= Date: Tue, 7 Jan 2020 21:30:36 +0100 Subject: [PATCH 130/132] Put lock.release in view_options.cb --- lib/engine.js | 18 +++++++++++++----- src/engine.coffee | 9 +++++++-- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/lib/engine.js b/lib/engine.js index e434f9b..77ba860 100644 --- a/lib/engine.js +++ b/lib/engine.js @@ -324,8 +324,11 @@ }, (function(_this) { return function(lock) { return fs.readFile(filename, 'utf8', function(err, txt) { - var ctx, ref1, v, view_options; - _this._log((Date.now()) + " - " + filename + " changed to " + (txt != null ? txt.length : void 0) + "bytes. " + (txt != null ? typeof txt.replace === "function" ? txt.replace(/\n/g, '').slice(0, 80) : void 0 : void 0)); + var ctx, ref1, v, view_options, waiting_for_view; + if (!err) { + _this._log((Date.now()) + " - " + filename + " changed to " + (txt != null ? txt.length : void 0) + " bytes. " + (txt != null ? typeof txt.replace === "function" ? txt.replace(/\n/g, '').slice(0, 80) : void 0 : void 0)); + } + waiting_for_view = false; if (err || (txt !== _this.viewCache[filename].txt)) { if (err) { _this.fsErrorCache[filename] = Date.now(); @@ -341,16 +344,21 @@ view_options.cb = function(v) { _this._log(filename + " updated and ready"); _this.viewCache[filename] = v; - return _this.pool.release(ctx); + _this.pool.release(ctx); + _this._log(filename + " lock releasing (view_options.cb)"); + return lock.release(); }; + waiting_for_view = true; if (err) { view_options.fsError = true; } v = new view(txt, view_options); } } - _this._log(filename + " lock releasing"); - return lock.release(); + if (!waiting_for_view) { + _this._log(filename + " lock releasing (not waiting for view)"); + return lock.release(); + } }); }; })(this)); diff --git a/src/engine.coffee b/src/engine.coffee index 61d9309..337697f 100644 --- a/src/engine.coffee +++ b/src/engine.coffee @@ -232,6 +232,7 @@ class engine @fileLockTable.acquire2 {name: filename}, (lock) => fs.readFile filename, 'utf8', (err, txt) => @_log "#{Date.now()} - #{filename} changed to #{txt?.length} bytes. #{txt?.replace?(/\n/g , '')[...80]}" if not err + waiting_for_view = false if err or (txt isnt @viewCache[filename].txt) if err @fsErrorCache[filename] = Date.now() @@ -245,11 +246,15 @@ class engine @_log "#{filename} updated and ready" @viewCache[filename] = v @pool.release(ctx) + @_log "#{filename} lock releasing (view_options.cb)" + lock.release() + waiting_for_view = true # do not release lock instantly if err view_options.fsError = true v = new view txt, view_options - @_log "#{filename} lock releasing" - lock.release() + if not waiting_for_view + @_log "#{filename} lock releasing (not waiting for view)" + lock.release() _generateViewOptions: (filename) -> return { From 37fa8b0f6bf1c8383f669acb63861a445474282d Mon Sep 17 00:00:00 2001 From: Chris Coyne Date: Thu, 9 Feb 2023 09:03:26 -0500 Subject: [PATCH 131/132] package version bumps --- package.json | 16 +- test/run_cases.iced | 5 +- yarn.lock | 1085 +++++++++++++++++++++---------------------- 3 files changed, 529 insertions(+), 577 deletions(-) diff --git a/package.json b/package.json index fdf514a..ea46ba3 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "toffee", "description": "A NodeJs and browser-side templating language based on CoffeeScript with slicker tokens and syntax.", - "version": "0.3.6", + "version": "0.3.7", "directories": { "lib": "./lib" }, @@ -10,17 +10,17 @@ "bin": "./bin/toffee", "dependencies": { "coffee-script": "1.12.7", - "commander": "2.19.0", - "highlight.js": "9.13.1", + "commander": "10.0.0", + "highlight.js": "11.7.0", "iced-lock": "2.0.1", - "mkdirp": "0.5.1" + "mkdirp": "2.1.3" }, "devDependencies": { "assert": "2.0.0", - "colors": "1.1.2", - "diff": "4.0.1", - "express": "4.17.1", - "iced-coffee-script": "108.0.13", + "colors": "1.4.0", + "diff": "5.1.0", + "express": "4.18.2", + "iced-coffee-script": "108.0.14", "jison": "0.4.18", "tablify": "0.1.5", "zombie": "6.1.4" diff --git a/test/run_cases.iced b/test/run_cases.iced index 04151ce..a64ec0e 100644 --- a/test/run_cases.iced +++ b/test/run_cases.iced @@ -1,7 +1,7 @@ {engine} = require '../lib/engine' fs = require 'fs' path = require 'path' -zombie = require 'zombie' +Browser = require 'zombie' coffee = require 'coffee-script' tablify = require 'tablify' colors = require 'colors' @@ -79,7 +79,8 @@ run_multiple_runs = (eng, num_runs, cb) -> run_express_test = (cb) -> require('./express4/app').run -> - zombie.visit 'http://localhost:3033', (e, browser) -> + browser = new Browser() + browser.visit 'http://127.0.0.1:3033', (e) -> if e console.log e $ = browser.window.$ diff --git a/yarn.lock b/yarn.lock index 6352b05..2829e32 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,25 +5,25 @@ JSONSelect@0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/JSONSelect/-/JSONSelect-0.4.0.tgz#a08edcc67eb3fcbe99ed630855344a0cf282bb8d" - integrity sha1-oI7cxn6z/L6Z7WMIVTRKDPKCu40= + integrity sha512-VRLR3Su35MH+XV2lrvh9O7qWoug/TUyj9tLDjn9rtpUCNnILLrHjgd/tB0KrhugCxUpj3UqoLqfYb3fLJdIQQQ== "JSV@>= 4.0.x": version "4.0.2" resolved "https://registry.yarnpkg.com/JSV/-/JSV-4.0.2.tgz#d077f6825571f82132f9dffaed587b4029feff57" - integrity sha1-0Hf2glVx+CEy+d/67Vh7QCn+/1c= + integrity sha512-ZJ6wx9xaKJ3yFUhq5/sk82PJMuUyLk277I8mQeyDgCTjGdjWJIvPfaU5LIXaMuaN2UO1X3kZH4+lgphublZUHw== abab@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.2.tgz#a2fba1b122c69a85caa02d10f9270c7219709a9d" - integrity sha512-2scffjvioEmNz0OyDSLGWDfKCVwaKc6l9Pm9kOIREU13ClXZvHpg/nRL5xyjSSSLhOnXqft2HpsAzNEEA8cFFg== + version "2.0.6" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" + integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== -accepts@~1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== +accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" + mime-types "~2.1.34" + negotiator "0.6.3" acorn-globals@^4.1.0: version "4.3.4" @@ -39,21 +39,21 @@ acorn-walk@^6.0.1: integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== acorn@^5.5.3: - version "5.7.3" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" - integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== + version "5.7.4" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" + integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== acorn@^6.0.1: - version "6.3.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.3.0.tgz#0087509119ffa4fc0a0041d1e93a417e68cb856e" - integrity sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA== + version "6.4.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== -ajv@^6.5.5: - version "6.10.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" - integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== +ajv@^6.12.3: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: - fast-deep-equal "^2.0.1" + fast-deep-equal "^3.1.1" fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.4.1" uri-js "^4.2.2" @@ -61,34 +61,34 @@ ajv@^6.5.5: amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" - integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= + integrity sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg== ansi-styles@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178" - integrity sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg= + integrity sha512-3iF4FIKdxaVYT3JqQuY3Wat/T2t7TRbbQ94Fu50ZUCbLy4TFbTzr90NOHQodQkNqmeEGCw8WbeP78WNi6SKYUA== array-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" - integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= + integrity sha512-H3LU5RLiSsGXPhN+Nipar0iR0IofH+8r89G2y1tBKxQ/agagKyAjhkAFDRBfodP2caPrNKHpAWNIM/c9yeL7uA== array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + version "0.2.6" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" + integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== dependencies: safer-buffer "~2.1.0" assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== assert@2.0.0: version "2.0.0" @@ -108,22 +108,27 @@ async-limiter@~1.0.0: asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== aws4@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" - integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== + version "1.12.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" + integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== babel-runtime@6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= + integrity sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g== dependencies: core-js "^2.4.0" regenerator-runtime "^0.11.0" @@ -131,50 +136,60 @@ babel-runtime@6.26.0: bcrypt-pbkdf@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== dependencies: tweetnacl "^0.14.3" bluebird@^3.5.1: - version "3.7.0" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.0.tgz#56a6a886e03f6ae577cffedeb524f8f2450293cf" - integrity sha512-aBQ1FxIa7kSWCcmKHlcHFlT2jt6J/l4FzC7KcPELkOJOsPOb/bccdhmIrKDfXhwFrmc7vDoDrrepFvGqjyXGJg== + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -body-parser@1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" - integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== +body-parser@1.20.1: + version "1.20.1" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" + integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== dependencies: - bytes "3.1.0" + bytes "3.1.2" content-type "~1.0.4" debug "2.6.9" - depd "~1.1.2" - http-errors "1.7.2" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" iconv-lite "0.4.24" - on-finished "~2.3.0" - qs "6.7.0" - raw-body "2.4.0" - type-is "~1.6.17" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.1" + type-is "~1.6.18" + unpipe "1.0.0" -browser-process-hrtime@^0.1.2: - version "0.1.3" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz#616f00faef1df7ec1b5bf9cfe2bdc3170f26c7b4" - integrity sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw== +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -bytes@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" - integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== chalk@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f" - integrity sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8= + integrity sha512-sQfYDlfv2DGVtjdoQqxS0cEZDroyG8h6TamA6rvxwlrU5BaSLDx9xhatBYl2pxZ7gmpNaPFVwBtdGdu5rQ+tYQ== dependencies: ansi-styles "~1.0.0" has-color "~0.1.0" @@ -183,7 +198,7 @@ chalk@~0.4.0: cjson@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/cjson/-/cjson-0.3.0.tgz#e6439b90703d312ff6e2224097bea92ce3d02a14" - integrity sha1-5kObkHA9MS/24iJAl76pLOPQKhQ= + integrity sha512-bBRQcCIHzI1IVH59fR0bwGrFmi3Btb/JNwM/n401i1DnYgWndpsUBiQRAddLflkZage20A2d25OAWZZk0vBRlA== dependencies: jsonlint "1.6.0" @@ -195,12 +210,12 @@ coffee-script@1.12.7: colors@0.5.x: version "0.5.1" resolved "https://registry.yarnpkg.com/colors/-/colors-0.5.1.tgz#7d0023eaeb154e8ee9fce75dcb923d0ed1667774" - integrity sha1-fQAj6usVTo7p/Oddy5I9DtFmd3Q= + integrity sha512-XjsuUwpDeY98+yz959OlUK6m7mLBM+1MEG5oaenfuQnNnrQk1WvtcvFgN3FNDP3f2NmZ211t0mNEfSEN1h0eIg== -colors@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" - integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM= +colors@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.8" @@ -209,47 +224,42 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" - integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== - -commander@2.20.0: - version "2.20.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" - integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== +commander@10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.0.tgz#71797971162cd3cf65f0b9d24eb28f8d303acdf1" + integrity sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA== -content-disposition@0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" - integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== dependencies: - safe-buffer "5.1.2" + safe-buffer "5.2.1" content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + version "1.0.5" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== -cookie@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" - integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== +cookie@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== core-js@^2.4.0: - version "2.6.10" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.10.tgz#8a5b8391f8cc7013da703411ce5b585706300d7f" - integrity sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA== + version "2.6.12" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" + integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== core-util-is@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": version "0.3.8" @@ -266,7 +276,7 @@ cssstyle@^1.0.0: dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== dependencies: assert-plus "^1.0.0" @@ -287,43 +297,44 @@ debug@2.6.9: ms "2.0.0" debug@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: - ms "^2.1.1" + ms "2.1.2" deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== -define-properties@^1.1.1, define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== +define-properties@^1.1.3: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" + integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== dependencies: - object-keys "^1.0.12" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== -diff@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.1.tgz#0c667cb467ebbb5cea7f14f135cc2dba7780a8ff" - integrity sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q== +diff@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40" + integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw== domexception@^1.0.1: version "1.0.1" @@ -335,12 +346,12 @@ domexception@^1.0.1: ebnf-parser@0.1.10: version "0.1.10" resolved "https://registry.yarnpkg.com/ebnf-parser/-/ebnf-parser-0.1.10.tgz#cd1f6ba477c5638c40c97ed9b572db5bab5d8331" - integrity sha1-zR9rpHfFY4xAyX7ZtXLbW6tdgzE= + integrity sha512-urvSxVQ6XJcoTpc+/x2pWhhuOX4aljCNQpwzw+ifZvV1andZkAmiJc3Rq1oGEAQmcjiLceyMXOy1l8ms8qs2fQ== ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== dependencies: jsbn "~0.1.0" safer-buffer "^2.1.0" @@ -348,52 +359,27 @@ ecc-jsbn@~0.1.1: ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= - -es-abstract@^1.12.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.15.0.tgz#8884928ec7e40a79e3c9bc812d37d10c8b24cc57" - integrity sha512-bhkEqWJ2t2lMeaJDuk7okMkJWI/yqgH/EoGwpcvv0XW9RWQsRspI4wt6xuyuvMvvQE3gg/D9HXppgk21w78GyQ== - dependencies: - es-to-primitive "^1.2.0" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.0" - is-callable "^1.1.4" - is-regex "^1.0.4" - object-inspect "^1.6.0" - object-keys "^1.1.1" - string.prototype.trimleft "^2.1.0" - string.prototype.trimright "^2.1.0" - -es-to-primitive@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" - integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== es6-object-assign@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c" - integrity sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw= + integrity sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw== escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== escodegen@1.3.x: version "1.3.3" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.3.3.tgz#f024016f5a88e046fd12005055e939802e6c5f23" - integrity sha1-8CQBb1qI4Eb9EgBQVek5gC5sXyM= + integrity sha512-z9FWgKc48wjMlpzF5ymKS1AF8OIgnKLp9VyN7KbdtyrP/9lndwUFqCtMm+TAJmJf7KJFFYc4cFJfVTTGkKEwsA== dependencies: esprima "~1.1.1" estraverse "~1.5.0" @@ -402,11 +388,11 @@ escodegen@1.3.x: source-map "~0.1.33" escodegen@^1.9.1: - version "1.12.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.12.0.tgz#f763daf840af172bb3a2b6dd7219c0e17f7ff541" - integrity sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg== + version "1.14.3" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" + integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== dependencies: - esprima "^3.1.3" + esprima "^4.0.1" estraverse "^4.2.0" esutils "^2.0.2" optionator "^0.8.1" @@ -416,12 +402,12 @@ escodegen@^1.9.1: esprima@1.1.x, esprima@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.1.1.tgz#5b6f1547f4d102e670e140c509be6771d6aeb549" - integrity sha1-W28VR/TRAuZw4UDFCb5ncdautUk= + integrity sha512-qxxB994/7NtERxgXdFgLHIs9M6bhLXc6qtUmWZ3L8+gTQ9qaoyki2887P2IqAYsoENyr8SUbTutStDniOHSDHg== -esprima@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" - integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= +esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== estraverse@^4.2.0: version "4.3.0" @@ -431,7 +417,7 @@ estraverse@^4.2.0: estraverse@~1.5.0: version "1.5.1" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.5.1.tgz#867a3e8e58a9f84618afb6c2ddbcd916b7cbaf71" - integrity sha1-hno+jlip+EYYr7bC3bzZFrfLr3E= + integrity sha512-FpCjJDfmo3vsc/1zKSeqR5k42tcIhxFIlvq+h9j0fO2q/h2uLKyweq7rYJ+0CoVvrGQOxIS5wyBrW/+vF58BUQ== esutils@^2.0.2: version "2.0.3" @@ -441,52 +427,51 @@ esutils@^2.0.2: esutils@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/esutils/-/esutils-1.0.0.tgz#8151d358e20c8acc7fb745e7472c0025fe496570" - integrity sha1-gVHTWOIMisx/t0XnRywAJf5JZXA= + integrity sha512-x/iYH53X3quDwfHRz4y8rn4XcEwwCJeWsul9pF1zldMbGtgOtMNBEOuYWwB1EQlK2LRa1fev3YAgym/RElp5Cg== etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== eventsource@^1.0.5: - version "1.0.7" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" - integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== - dependencies: - original "^1.0.0" + version "1.1.2" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.1.2.tgz#bc75ae1c60209e7cb1541231980460343eaea7c2" + integrity sha512-xAH3zWhgO2/3KIniEKYPr8plNSzlGINOUqYj0m0u7AB81iRw8b/3E73W6AuU+6klLbaSFmZnaETQ2lXPfAydrA== -express@4.17.1: - version "4.17.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" - integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== +express@4.18.2: + version "4.18.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" + integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== dependencies: - accepts "~1.3.7" + accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.19.0" - content-disposition "0.5.3" + body-parser "1.20.1" + content-disposition "0.5.4" content-type "~1.0.4" - cookie "0.4.0" + cookie "0.5.0" cookie-signature "1.0.6" debug "2.6.9" - depd "~1.1.2" + depd "2.0.0" encodeurl "~1.0.2" escape-html "~1.0.3" etag "~1.8.1" - finalhandler "~1.1.2" + finalhandler "1.2.0" fresh "0.5.2" + http-errors "2.0.0" merge-descriptors "1.0.1" methods "~1.1.2" - on-finished "~2.3.0" + on-finished "2.4.1" parseurl "~1.3.3" path-to-regexp "0.1.7" - proxy-addr "~2.0.5" - qs "6.7.0" + proxy-addr "~2.0.7" + qs "6.11.0" range-parser "~1.2.1" - safe-buffer "5.1.2" - send "0.17.1" - serve-static "1.14.1" - setprototypeof "1.1.1" - statuses "~1.5.0" + safe-buffer "5.2.1" + send "0.18.0" + serve-static "1.15.0" + setprototypeof "1.2.0" + statuses "2.0.1" type-is "~1.6.18" utils-merge "1.0.1" vary "~1.1.2" @@ -499,45 +484,52 @@ extend@~3.0.2: extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + version "1.4.1" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== -fast-deep-equal@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" - integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-json-stable-stringify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" - integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@~2.0.4: +fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== -finalhandler@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== dependencies: debug "2.6.9" encodeurl "~1.0.2" escape-html "~1.0.3" - on-finished "~2.3.0" + on-finished "2.4.1" parseurl "~1.3.3" - statuses "~1.5.0" + statuses "2.0.1" unpipe "~1.0.0" +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== form-data@~2.3.2: version "2.3.3" @@ -548,62 +540,92 @@ form-data@~2.3.2: combined-stream "^1.0.6" mime-types "^2.1.12" -forwarded@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" - integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== fresh@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" + integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.3" + getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== dependencies: assert-plus "^1.0.0" +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== -har-validator@~5.1.0: - version "5.1.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" - integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== dependencies: - ajv "^6.5.5" + ajv "^6.12.3" har-schema "^2.0.0" has-color@~0.1.0: version "0.1.7" resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f" - integrity sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8= + integrity sha512-kaNz5OTAYYmt646Hkqw50/qyxP2vFnTVu5AQ1Zmk22Kk5+4Qx6BpO8+u7IKsML5fOsFk0ZT0AcCJNYwcvaLBvw== + +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" -has-symbols@^1.0.0: +has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" - integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" -has@^1.0.1, has@^1.0.3: +has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: function-bind "^1.1.1" -highlight.js@9.13.1: - version "9.13.1" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.13.1.tgz#054586d53a6863311168488a0f58d6c505ce641e" - integrity sha512-Sc28JNQNDzaH6PORtRLMvif9RSn1mYuOoX3omVjnb0+HbpPygU2ALBI0R/wsiqCb4/fcp07Gdo8g+fhtFrQl6A== +highlight.js@11.7.0: + version "11.7.0" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-11.7.0.tgz#3ff0165bc843f8c9bce1fd89e2fda9143d24b11e" + integrity sha512-1rRqesRFhMO/PRF+G86evnyJkCgaZFOI+Z6kdj15TA18funfoqJXvgPCLSf0SWq3SRfg1j3HlDs8o4s3EGq1oQ== html-encoding-sniffer@^1.0.2: version "1.0.2" @@ -612,41 +634,30 @@ html-encoding-sniffer@^1.0.2: dependencies: whatwg-encoding "^1.0.1" -http-errors@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" - integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-errors@~1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" - integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== dependencies: - depd "~1.1.2" + depd "2.0.0" inherits "2.0.4" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== dependencies: assert-plus "^1.0.0" jsprim "^1.2.2" sshpk "^1.7.0" -iced-coffee-script@108.0.13: - version "108.0.13" - resolved "https://registry.yarnpkg.com/iced-coffee-script/-/iced-coffee-script-108.0.13.tgz#574085c8c0e2e3f21583db46df3d8d541e511e0a" - integrity sha512-0qG9vtelrtfY1NCh+120EINbytkt2rkCVXJ81EOItbP7B8vildMCfLfuQdYRSy7r2T6Z+2zok/NuPRuokqSNNA== +iced-coffee-script@108.0.14: + version "108.0.14" + resolved "https://registry.yarnpkg.com/iced-coffee-script/-/iced-coffee-script-108.0.14.tgz#9ca5b258decf4a5eafb16f5663ff7683227c4f1a" + integrity sha512-e0CNmz51UGWRa2glPnUMnJM7oKQE81cxeC0WAgCjJDRImv3FDHldZr/Ngkbrgdbf1drGGzYWp+PWeJwXIfHwDw== dependencies: iced-runtime ">=0.0.1" uglify-js "^3.5.9" @@ -670,76 +681,69 @@ iconv-lite@0.4.24, iconv-lite@^0.4.21: dependencies: safer-buffer ">= 2.1.2 < 3" -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - inherits@2.0.4, inherits@^2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -ipaddr.js@1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65" - integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA== +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== is-arguments@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" - integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== - -is-callable@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" - integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" -is-date-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" - integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= +is-callable@^1.1.3: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== is-generator-function@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.7.tgz#d2132e529bb0000a7f80794d4bdf5cd5e5813522" - integrity sha512-YZc5EwyO4f2kWCax7oegfuSr9mFz1ZvieNYBEjmukLxgXfBUbxAWGVF7GZf0zidYtoBl3WvC07YK0wT76a+Rtw== - -is-nan@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.2.1.tgz#9faf65b6fb6db24b7f5c0628475ea71f988401e2" - integrity sha1-n69ltvttskt/XAYoR16nH5iEAeI= + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== dependencies: - define-properties "^1.1.1" + has-tostringtag "^1.0.0" -is-regex@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" - integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= +is-nan@^1.2.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" + integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== dependencies: - has "^1.0.1" + call-bind "^1.0.0" + define-properties "^1.1.3" -is-symbol@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" - integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== +is-typed-array@^1.1.10, is-typed-array@^1.1.3: + version "1.1.10" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" + integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== dependencies: - has-symbols "^1.0.0" + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== jison-lex@0.3.x: version "0.3.4" resolved "https://registry.yarnpkg.com/jison-lex/-/jison-lex-0.3.4.tgz#81ca28d84f84499dfa8c594dcde3d8a3f26ec7a5" - integrity sha1-gcoo2E+ESZ36jFlNzePYo/Jux6U= + integrity sha512-EBh5wrXhls1cUwROd5DcDHR1sG7CdsCFSqY1027+YA1RGxz+BX2TDLAhdsQf40YEtFDGoiO0Qm8PpnBl2EzDJw== dependencies: lex-parser "0.1.x" nomnom "1.5.2" @@ -761,7 +765,7 @@ jison@0.4.18: jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== jsdom@11.12.0: version "11.12.0" @@ -800,32 +804,32 @@ json-schema-traverse@^0.4.1: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= +json-schema@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== jsonlint@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/jsonlint/-/jsonlint-1.6.0.tgz#88aa46bc289a7ac93bb46cae2d58a187a9bb494a" - integrity sha1-iKpGvCiaesk7tGyuLVihh6m7SUo= + integrity sha512-x6YLBe6NjdpmIeiklwQOxsZuYj/SOWkT33GlTpaG1UdFGjdWjPcxJ1CWZAX3wA7tarz8E2YHF6KiW5HTapPlXw== dependencies: JSV ">= 4.0.x" nomnom ">= 1.5.x" jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + version "1.4.2" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" + integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== dependencies: assert-plus "1.0.0" extsprintf "1.3.0" - json-schema "0.2.3" + json-schema "0.4.0" verror "1.10.0" left-pad@^1.3.0: @@ -836,7 +840,7 @@ left-pad@^1.3.0: levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== dependencies: prelude-ls "~1.1.2" type-check "~0.3.2" @@ -844,44 +848,44 @@ levn@~0.3.0: lex-parser@0.1.x, lex-parser@~0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/lex-parser/-/lex-parser-0.1.4.tgz#64c4f025f17fd53bfb45763faeb16f015a747550" - integrity sha1-ZMTwJfF/1Tv7RXY/rrFvAVp0dVA= + integrity sha512-DuAEISsr1H4LOpmFLkyMc8YStiRWZCO8hMsoXAXSbgyfvs2WQhSt0+/FBv3ZU/JBFZMGcE+FWzEBSzwUU7U27w== lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== -lodash@^4.17.10, lodash@^4.17.11: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" - integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== +lodash@^4.17.10, lodash@^4.17.19: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== -mime-db@1.40.0: - version "1.40.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" - integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA== +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24: - version "2.1.24" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81" - integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ== +mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: - mime-db "1.40.0" + mime-db "1.52.0" mime@1.6.0: version "1.6.0" @@ -889,46 +893,39 @@ mime@1.6.0: integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== mime@^2.3.1: - version "2.4.4" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" - integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA== - -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= + version "2.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== -mkdirp@0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= - dependencies: - minimist "0.0.8" +mkdirp@2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-2.1.3.tgz#b083ff37be046fd3d6552468c1f0ff44c1545d1f" + integrity sha512-sjAkg21peAG9HS+Dkx7hlG9Ztx7HLeKnvB3NQRcu/mltCVmvkF0pisbiTSfDVYTT86XEfZrTUosLdZLStquZUw== ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== -ms@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - -ms@^2.1.1: +ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -negotiator@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== +ms@2.1.3, ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== nomnom@1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/nomnom/-/nomnom-1.5.2.tgz#f4345448a853cfbd5c0d26320f2477ab0526fe2f" - integrity sha1-9DRUSKhTz71cDSYyDyR3qwUm/i8= + integrity sha512-fiVbT7BqxiQqjlR9U3FDGOSERFCKoXVCdxV2FwZuNN7/cmJ42iQx35nUFOAFDcyvemu9Adp+IlsCGlKQYLmBKw== dependencies: colors "0.5.x" underscore "1.1.x" @@ -936,71 +933,57 @@ nomnom@1.5.2: "nomnom@>= 1.5.x": version "1.8.1" resolved "https://registry.yarnpkg.com/nomnom/-/nomnom-1.8.1.tgz#2151f722472ba79e50a76fc125bb8c8f2e4dc2a7" - integrity sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc= + integrity sha512-5s0JxqhDx9/rksG2BTMVN1enjWSvPidpoSgViZU4ZXULyTe+7jxcCRLB6f42Z0l1xYJpleCBtSyY6Lwg3uu5CQ== dependencies: chalk "~0.4.0" underscore "~1.6.0" nwsapi@^2.0.7: - version "2.1.4" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.1.4.tgz#e006a878db23636f8e8a67d33ca0e4edf61a842f" - integrity sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw== + version "2.2.2" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.2.tgz#e5418863e7905df67d51ec95938d67bf801f0bb0" + integrity sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw== oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -object-inspect@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.6.0.tgz#c70b6cbf72f274aab4c34c0c82f5167bf82cf15b" - integrity sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ== +object-inspect@^1.9.0: + version "1.12.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== object-is@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz#0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6" - integrity sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY= + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" -object-keys@^1.0.12, object-keys@^1.1.1: +object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object.entries@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.0.tgz#2024fc6d6ba246aee38bdb0ffd5cfbcf371b7519" - integrity sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.12.0" - function-bind "^1.1.1" - has "^1.0.3" - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== dependencies: ee-first "1.1.1" optionator@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" - integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== dependencies: deep-is "~0.1.3" - fast-levenshtein "~2.0.4" + fast-levenshtein "~2.0.6" levn "~0.3.0" prelude-ls "~1.1.2" type-check "~0.3.2" - wordwrap "~1.0.0" - -original@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" - integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== - dependencies: - url-parse "^1.4.3" + word-wrap "~1.2.3" parse5@4.0.0: version "4.0.0" @@ -1015,12 +998,12 @@ parseurl@~1.3.3: path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== pn@^1.1.0: version "1.1.0" @@ -1030,58 +1013,50 @@ pn@^1.1.0: prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== -proxy-addr@~2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34" - integrity sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ== +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== dependencies: - forwarded "~0.1.2" - ipaddr.js "1.9.0" + forwarded "0.2.0" + ipaddr.js "1.9.1" -psl@^1.1.24, psl@^1.1.28: - version "1.4.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.4.0.tgz#5dd26156cdb69fa1fdb8ab1991667d3f80ced7c2" - integrity sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw== - -punycode@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= +psl@^1.1.28: + version "1.9.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + version "2.3.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== -qs@6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" - integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== +qs@6.11.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + dependencies: + side-channel "^1.0.4" qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== - -querystringify@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" - integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== + version "6.5.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" + integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -raw-body@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" - integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== +raw-body@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== dependencies: - bytes "3.1.0" - http-errors "1.7.2" + bytes "3.1.2" + http-errors "2.0.0" iconv-lite "0.4.24" unpipe "1.0.0" @@ -1090,26 +1065,26 @@ regenerator-runtime@^0.11.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== -request-promise-core@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.2.tgz#339f6aababcafdb31c799ff158700336301d3346" - integrity sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag== +request-promise-core@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" + integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== dependencies: - lodash "^4.17.11" + lodash "^4.17.19" request-promise-native@^1.0.5: - version "1.0.7" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.7.tgz#a49868a624bdea5069f1251d0a836e0d89aa2c59" - integrity sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w== + version "1.0.9" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" + integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== dependencies: - request-promise-core "1.1.2" + request-promise-core "1.1.4" stealthy-require "^1.1.1" tough-cookie "^2.3.3" request@^2.85.0, request@^2.87.0: - version "2.88.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" - integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== dependencies: aws-sign2 "~0.7.0" aws4 "^1.8.0" @@ -1118,7 +1093,7 @@ request@^2.85.0, request@^2.87.0: extend "~3.0.2" forever-agent "~0.6.1" form-data "~2.3.2" - har-validator "~5.1.0" + har-validator "~5.1.3" http-signature "~1.2.0" is-typedarray "~1.0.0" isstream "~0.1.2" @@ -1128,24 +1103,14 @@ request@^2.85.0, request@^2.87.0: performance-now "^2.1.0" qs "~6.5.2" safe-buffer "^5.1.2" - tough-cookie "~2.4.3" + tough-cookie "~2.5.0" tunnel-agent "^0.6.0" uuid "^3.3.2" -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= - -safe-buffer@5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@^5.0.1, safe-buffer@^5.1.2: - version "5.2.0" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" - integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== +safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.2: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== "safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" @@ -1157,44 +1122,53 @@ sax@^1.2.4: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -send@0.17.1: - version "0.17.1" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" - integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== +send@0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== dependencies: debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" + depd "2.0.0" + destroy "1.2.0" encodeurl "~1.0.2" escape-html "~1.0.3" etag "~1.8.1" fresh "0.5.2" - http-errors "~1.7.2" + http-errors "2.0.0" mime "1.6.0" - ms "2.1.1" - on-finished "~2.3.0" + ms "2.1.3" + on-finished "2.4.1" range-parser "~1.2.1" - statuses "~1.5.0" + statuses "2.0.1" -serve-static@1.14.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" - integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== dependencies: encodeurl "~1.0.2" escape-html "~1.0.3" parseurl "~1.3.3" - send "0.17.1" + send "0.18.0" -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" - integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" source-map@~0.1.33: version "0.1.43" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" - integrity sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y= + integrity sha512-VtCvB9SIQhk3aF6h+N85EaqIaBFIAfZ9Cu+NJHHVvc8BbEcnvDcFw6sqQ2dQrT6SlOrZq3tIvyD9+EGq/lJryQ== dependencies: amdefine ">=0.0.4" @@ -1204,9 +1178,9 @@ source-map@~0.6.1: integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + version "1.17.0" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" + integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" @@ -1218,36 +1192,20 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -"statuses@>= 1.5.0 < 2", statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== stealthy-require@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" - integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= - -string.prototype.trimleft@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz#6cc47f0d7eb8d62b0f3701611715a3954591d634" - integrity sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw== - dependencies: - define-properties "^1.1.3" - function-bind "^1.1.1" - -string.prototype.trimright@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz#669d164be9df9b6f7559fa8e89945b168a5a6c58" - integrity sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg== - dependencies: - define-properties "^1.1.3" - function-bind "^1.1.1" + integrity sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g== strip-ansi@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz#39e8a98d044d150660abe4a6808acf70bb7bc991" - integrity sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE= + integrity sha512-behete+3uqxecWlDAm5lmskaSaISA+ThQ4oNNBDTBJt0x2ppR6IPqfZNuj6BLaLJ/Sji4TPZlcRyOis8wXQTLg== symbol-tree@^3.2.2: version "3.2.4" @@ -1257,14 +1215,14 @@ symbol-tree@^3.2.2: tablify@0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/tablify/-/tablify-0.1.5.tgz#47160ce2918be291d63cecceddb5254dd72982c7" - integrity sha1-RxYM4pGL4pHWPOzO3bUlTdcpgsc= + integrity sha512-puOS3ef9p20DqujVs5JBCAYp5EeQke7B7+5g0SUdQKUNWkX6oM3jSzW8OD42HXowB7NTLisFGLsbYms3x+q9HA== -toidentifier@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" - integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== -tough-cookie@^2.3.3, tough-cookie@^2.3.4: +tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@~2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== @@ -1272,41 +1230,33 @@ tough-cookie@^2.3.3, tough-cookie@^2.3.4: psl "^1.1.28" punycode "^2.1.1" -tough-cookie@~2.4.3: - version "2.4.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" - integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== - dependencies: - psl "^1.1.24" - punycode "^1.4.1" - tr46@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" - integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= + integrity sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA== dependencies: punycode "^2.1.0" tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== dependencies: safe-buffer "^5.0.1" tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== dependencies: prelude-ls "~1.1.2" -type-is@~1.6.17, type-is@~1.6.18: +type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== @@ -1315,84 +1265,73 @@ type-is@~1.6.17, type-is@~1.6.18: mime-types "~2.1.24" uglify-js@^3.5.9: - version "3.6.1" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.6.1.tgz#ae7688c50e1bdcf2f70a0e162410003cf9798311" - integrity sha512-+dSJLJpXBb6oMHP+Yvw8hUgElz4gLTh82XuX68QiJVTXaE5ibl6buzhNkQdYhBlIhozWOC9ge16wyRmjG4TwVQ== - dependencies: - commander "2.20.0" - source-map "~0.6.1" + version "3.17.4" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" + integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== underscore@1.1.x: version "1.1.7" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.1.7.tgz#40bab84bad19d230096e8d6ef628bff055d83db0" - integrity sha1-QLq4S60Z0jAJbo1u9ii/8FXYPbA= + integrity sha512-w4QtCHoLBXw1mjofIDoMyexaEdWGMedWNDhlWTtT1V1lCRqi65Pnoygkh6+WRdr+Bm8ldkBNkNeCsXGMlQS9HQ== underscore@~1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8" - integrity sha1-izixDKze9jM3uLJOT/htRa6lKag= + integrity sha512-z4o1fvKUojIWh9XuaVLUDdf86RQiq13AC1dmHbTpoyuu+bquHms76v16CjycCbec87J7z0k//SiQVk0sMdFmpQ== unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== uri-js@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" -url-parse@^1.4.3: - version "1.4.7" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" - integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - util@^0.12.0: - version "0.12.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.12.1.tgz#f908e7b633e7396c764e694dd14e716256ce8ade" - integrity sha512-MREAtYOp+GTt9/+kwf00IYoHZyjM8VU4aVrkzUlejyqaIjd2GztVl5V9hGXKlvBKE3gENn/FMfHE5v6hElXGcQ== + version "0.12.5" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" + integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== dependencies: inherits "^2.0.3" is-arguments "^1.0.4" is-generator-function "^1.0.7" - object.entries "^1.1.0" - safe-buffer "^5.1.2" + is-typed-array "^1.1.3" + which-typed-array "^1.1.2" utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== uuid@^3.3.2: - version "3.3.3" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" - integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== dependencies: assert-plus "^1.0.0" core-util-is "1.0.2" extsprintf "^1.2.0" w3c-hr-time@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045" - integrity sha1-gqwr/2PZUOqeMYmlimViX+3xkEU= + version "1.0.2" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== dependencies: - browser-process-hrtime "^0.1.2" + browser-process-hrtime "^1.0.0" webidl-conversions@^4.0.2: version "4.0.2" @@ -1421,30 +1360,42 @@ whatwg-url@^6.4.1: webidl-conversions "^4.0.2" whatwg-url@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.0.0.tgz#fde926fa54a599f3adf82dff25a9f7be02dc6edd" - integrity sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ== + version "7.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== dependencies: lodash.sortby "^4.7.0" tr46 "^1.0.1" webidl-conversions "^4.0.2" -wordwrap@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= +which-typed-array@^1.1.2: + version "1.1.9" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" + integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + is-typed-array "^1.1.10" + +word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== ws@^5.2.0: - version "5.2.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" - integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== + version "5.2.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.3.tgz#05541053414921bc29c63bee14b8b0dd50b07b3d" + integrity sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA== dependencies: async-limiter "~1.0.0" ws@^6.1.2: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" - integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== + version "6.2.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e" + integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== dependencies: async-limiter "~1.0.0" From 9d389f9b0f633cfc59ac351cf871d757b2a112c0 Mon Sep 17 00:00:00 2001 From: Chris Coyne Date: Thu, 9 Feb 2023 09:07:12 -0500 Subject: [PATCH 132/132] barely maintained notice --- README.md | 287 +++++++++++++++++++++--------------------------------- 1 file changed, 112 insertions(+), 175 deletions(-) diff --git a/README.md b/README.md index c4afd2c..fa54c1b 100644 --- a/README.md +++ b/README.md @@ -1,30 +1,32 @@ -TOFFEE -========= -*Toffee* is a templating language, based on the simplicity and beauty of CoffeeScript. +# TOFFEE + +**_Toffee_ is barely maintained. Please consider another templating language.** - * it works with Node.js - * it works in the browser, too -- even the advanced features. +_Toffee_ is a templating language, based on the simplicity and beauty of CoffeeScript. + +- it works with Node.js +- it works in the browser, too -- even the advanced features. Newest feature: - * post-processing! You can let Toffee do your server-side code highighting, and other magic. +- post-processing! You can let Toffee do your server-side code highighting, and other magic. Toffee has many cool features. Keep on reading. -Table of Contents -================= - * [1. Language Basics](#section_1) - * [2. Notes on Escaping](#section_2) - * [3. Common Questions](#section_3) - * [4. Installation & Usage (Node, Express, and the browser)](#section_4) +# Table of Contents + +- [1. Language Basics](#section_1) +- [2. Notes on Escaping](#section_2) +- [3. Common Questions](#section_3) +- [4. Installation & Usage (Node, Express, and the browser)](#section_4) ## Language Basics Printing variables in Toffee is easy. Just use CoffeeScript's #{} syntax: + ```html

    - Hey, #{user.name}. - #{flirty_welcome_msg} + Hey, #{user.name}. #{flirty_welcome_msg}
    ``` @@ -32,7 +34,8 @@ The `#{}` syntax is powerful, so be responsible. ```html

    - You have #{(sheep for sheep in flock when sheep.color is 'black').length} black sheep in the flock. + You have #{(sheep for sheep in flock when sheep.color is 'black').length} + black sheep in the flock.

    ``` @@ -40,21 +43,17 @@ Including other files is possible thanks to the function `partial`. This works i ```html

    - #{partial "navigation.toffee", {username: user.name, age: 22} } + #{partial "navigation.toffee", {username: user.name, age: 22} }

    ``` But the greatest pleasure arises when you enter `coffee mode`. Note the `{# ... #}` region, where you can write multiple lines of CoffeeScript. - ```html

    - {# - ten_numbers = [1,3,2,4,5,8,6,7,69, Math.random()] - ten_numbers.sort (a,b) -> b - a - #} - The largest number I can even think of is #{ten_numbers[0]}. + {# ten_numbers = [1,3,2,4,5,8,6,7,69, Math.random()] ten_numbers.sort (a,b) -> + b - a #} The largest number I can even think of is #{ten_numbers[0]}.

    ``` @@ -62,25 +61,23 @@ Against all odds, inside `coffee mode`, you can switch back to `toffee mode` wit ```html
    -
    - {# - if projects.length - for project in projects {: - - :} - #} -
    +
    + {# if projects.length for project in projects {: + + :} #} +
    ``` This bracket and nesting syntax avoids a lot of large, ugly regions, such as EJS's unethical `<% } %>`. It's been wrong for thousands of years to have control markers surrounded by other control -markers, and it is still wrong. Witness: +markers, and it is still wrong. Witness: EJS, verbose and weak. + ``` <% for(var i=0; i
  • <%= supplies[i] %>
  • @@ -88,18 +85,19 @@ EJS, verbose and weak. ``` TOFFEE, so elegant and proud. + ```html -{# - for supply in supplies {:
  • #{supply}
  • :} -#} +{# for supply in supplies {: +
  • #{supply}
  • +:} #} ``` Or, using Toffee's `print`: + ```html -{# - for supply in supplies - print "
  • #{supply}
  • " -#} +{# for supply in supplies print " +
  • #{supply}
  • +" #} ``` These are slightly different, as `print` outputs raw text, while `#{}` used in toffee mode safely escapes HTML or JSON. This escaping @@ -108,19 +106,13 @@ escaping is customizable. More on that below. With nested code, indentation of your CoffeeScript is magically maintained. ```html -{# - if user.is_drunk - for name, profile of friends when profile.is_responsible {: -

    - You know, #{name} would make a great designated driver. - And she only lives #{profile.distance}km away. - {# - if profile.car? {: And wow, she drives a #{profile.car.model} :} - else {: But, alas, she has no wheels. :} - #} -

    - :} -#} +{# if user.is_drunk for name, profile of friends when profile.is_responsible {: +

    + You know, #{name} would make a great designated driver. And she only lives + #{profile.distance}km away. {# if profile.car? {: And wow, she drives a + #{profile.car.model} :} else {: But, alas, she has no wheels. :} #} +

    +:} #} ``` ### Partials (including other files), both for output and configuration @@ -144,10 +136,7 @@ Shallow copies of variables are passed through from the parent document, however Again, toffee's `print` function allows you to use partials when in coffeescript mode: ```html -{# - if user? - print partial "logged_in_template.toffee" -#} +{# if user? print partial "logged_in_template.toffee" #} ``` For your safety and convenience, variables are shallow-copied into a template. This means if you redefine or create a variable in a @@ -160,9 +149,7 @@ in a the child template.

    Our site's name is #{site_name}.

    -{# - passback.site_name = "gittub.com" -#} +{# passback.site_name = "gittub.com" #} ``` For your naming convenience, you can also use the `load` function, which is identical to `partial` but withholds output. @@ -170,21 +157,17 @@ For your naming convenience, you can also use the `load` function, which is iden ### Post-processing New in the latest version of Toffee, you can pass a `postProcess` function to Toffee. This works for individual partials or even -an entire document. The `postProcess` function performs a final transformation on your output. +an entire document. The `postProcess` function performs a final transformation on your output. One smart use of postProcess is to find anything inside triple tick marks and perform a code higlighting. ```html -{# - print partial './something.toffee', { - foo: 1000 - postProcess: (s) -> find_and_higlight_code_in s - } -#} +{# print partial './something.toffee', { foo: 1000 postProcess: (s) -> +find_and_higlight_code_in s } #} ``` You could define `find_and_highlight_code_in` anywhere in your publishing stack. You can pass it from your webserver, define it above, whatever. If you're -doing this server-side, consider the popular Node module *highlight.js*. In that case, define a highlight function that hunts for +doing this server-side, consider the popular Node module _highlight.js_. In that case, define a highlight function that hunts for triple tick marks and then uses highlight's highlighter to transform it. Your users shouldn't have to wait for client-side JS to re-process your pages. @@ -193,24 +176,16 @@ Your users shouldn't have to wait for client-side JS to re-process your pages. Since CoffeeScript is sensitive to indenting, so is Toffee. -But...Toffee doesn't care where you start your CoffeeScript. When you want to create a coffee block, -you can indent it however you like, and all that matters is that the internal, +But...Toffee doesn't care where you start your CoffeeScript. When you want to create a coffee block, +you can indent it however you like, and all that matters is that the internal, relative indenting is correct. For example, these are identical: ```html

    - {# - if user.is_awesome {: - YAY! - :} - #} + {# if user.is_awesome {: YAY! :} #}

    -{# -if user.is_awesome {: - YAY! -:} -#} + {# if user.is_awesome {: YAY! :} #}

    ``` @@ -220,15 +195,8 @@ Note that where you put your toffee mode tokens (`{:`) is important, as the foll ```html

    - {# - if x is true - if y is true - if z is true - w = true - {: - x is true! Dunno anything about y or z, though. - :} - #} + {# if x is true if y is true if z is true w = true {: x is true! Dunno + anything about y or z, though. :} #}

    ``` @@ -236,88 +204,67 @@ Why? Because this is roughly the same as saying: ```html

    - {# - if x is true - if y is true - if z is true - w = true - print "\n x is true! Dunno anything about y or z, though.\n " - #} + {# if x is true if y is true if z is true w = true print "\n x is true! Dunno + anything about y or z, though.\n " #}

    ``` -One syntactic convenience: if you start a `{:` on the same line as some preceeding CoffeeScript, it's +One syntactic convenience: if you start a `{:` on the same line as some preceeding CoffeeScript, it's treated the same as putting it on a new line and indenting one level. So the following three conditionals are the same: ```html -{# - if x is true - {:yay:} -#} +{# if x is true {:yay:} #} ``` ```html -{# - if x is true {:yay:} -#} +{# if x is true {:yay:} #} ``` ```html -{# - if x is true {: - yay - :} -#} +{# if x is true {: yay :} #} ``` The third example has extra whitespace around the "yay," but otherwise the three are logically identical. ### One gotcha with indenting - - THIS IS AN ERROR + ```html -{# if x is 0 {:Yay!:} - else {:Burned:} -#} +{# if x is 0 {:Yay!:} else {:Burned:} #} ``` Note that the indentations before the 'if' and the 'else' are technically different, as the `if` has only 1 space before it, and the `else` has 2. This is better style anyway: GOOD + ```html -{# - if x is 0 {:Yay!:} - else {:Burned:} -#} +{# if x is 0 {:Yay!:} else {:Burned:} #} ``` With a single line of CoffeeScript, feel free to keep it all on one line: GOOD + ```html
    {# foo = "bar" #}
    ``` - ## Commenting out a block of toffee In toffee mode, you can comment out a region with `{##` and `##}`. ```html
    - I don't want to output this anymore... - {## -

    An ode to Ruby on Rails

    -

    #{partial 'ode.toffee'}

    - ##} + I don't want to output this anymore... {## +

    An ode to Ruby on Rails

    +

    #{partial 'ode.toffee'}

    + ##}
    ``` - ## Escaping In your CoffeeScript, the `print` function lets you print the raw value of a variable: @@ -336,46 +283,44 @@ But in toffee mode, `#{some_expression}` output is escaped intelligently by defa

    #{danger_code}

    ``` -You can control the escaping, but here are the defaults: +You can control the escaping, but here are the defaults: - * if it's a string or scalar, it is escaped for HTML safety. - * it's an array or object, it is converted to JSON. +- if it's a string or scalar, it is escaped for HTML safety. +- it's an array or object, it is converted to JSON. ### Custom Escaping You can bypass the above rules. - * `#{json foo}`: this outputs foo as JSON. - * `#{raw foo}`: this outputs foo in raw text. - * `#{html foo}`: this outputs foo, escaped as HTML. For a scalar, it's the same as `#{foo}`, but it's available in case you -(1) override the default escaping or (2) turn off auto-escaping (both explained below). - * `#{partial "foo.toffee"}` and `#{snippet "foo.toffee"}`: unescaped, since you don't want to escape your own templates +- `#{json foo}`: this outputs foo as JSON. +- `#{raw foo}`: this outputs foo in raw text. +- `#{html foo}`: this outputs foo, escaped as HTML. For a scalar, it's the same as `#{foo}`, but it's available in case you + (1) override the default escaping or (2) turn off auto-escaping (both explained below). +- `#{partial "foo.toffee"}` and `#{snippet "foo.toffee"}`: unescaped, since you don't want to escape your own templates -When any of the functions mentioned above are leftmost in a `#{}` token in toffee mode, their output is left untouched by the +When any of the functions mentioned above are leftmost in a `#{}` token in toffee mode, their output is left untouched by the built in escape function. These functions are also available to you in coffee mode. ```html

    - Want to read some JSON, human? - {# - foo = [1,2,3, {bar: "none"}] - foo_as_json_as_html = html json foo - print foo_as_json_as_html - #} + Want to read some JSON, human? {# foo = [1,2,3, {bar: "none"}] + foo_as_json_as_html = html json foo print foo_as_json_as_html #}

    ``` -*Note!* if you pass a variable to the template called `json`, `raw`, or `html`, Toffee won't create these helper functions, which would override your vars. +_Note!_ if you pass a variable to the template called `json`, `raw`, or `html`, Toffee won't create these helper functions, which would override your vars. In this case, you can access the escape functions through their official titles, `__toffee.raw`, etc. Overriding the default `escape`: - * If you pass a variable to your template called `escape`, this will be used as the default escape. In toffee mode, everything inside `#{}` that isn't subject to an above-mentioned exception will go through your `escape` function. + +- If you pass a variable to your template called `escape`, this will be used as the default escape. In toffee mode, everything inside `#{}` that isn't subject to an above-mentioned exception will go through your `escape` function. Turning off autoescaping entirely: - * If you set `autoEscape: false` when creating the engine, the default will be raw across your project. (See more on that below under Express 3.x settings.) - * Alternatively, you could pass the var `escape: (x) -> x` to turn off escaping for a given template. + +- If you set `autoEscape: false` when creating the engine, the default will be raw across your project. (See more on that below under Express 3.x settings.) +- Alternatively, you could pass the var `escape: (x) -> x` to turn off escaping for a given template. ## Common Questions @@ -387,6 +332,7 @@ The syntaxes are pretty different, so pick the one you prefer. One big Toffee advantage: multiple lines of CoffeeScript just look like CoffeeScript. Compare: ECO + ``` <% if @projects.length: %> <% for project in @projects: %> @@ -398,17 +344,14 @@ ECO ``` TOFFEE + ```html -{# - if projects.length - for project in projects - if project.is_active {: -

    #{project.name} | #{project.description}

    - :} -#} +{# if projects.length for project in projects if project.is_active {: +

    #{project.name} | #{project.description}

    +:} #} ``` -With Toffee's syntax, brackets enclose regions not directives, so your editor +With Toffee's syntax, brackets enclose regions not directives, so your editor will let you collapse and expand sections of code. And if you click on one of the brackets in most editors, it will highlight the matching bracket. @@ -418,33 +361,31 @@ In Express 2.0, that's up to Express. When used in Express 3.0, Toffee asynchron #### Does it find line numbers in errors? -Yes, Toffee does a very good job of that. There are 3 possible places you can hit an error in Toffee: - * in the language itself, say a parse error - * in the CoffeeScript, preventing it from compiling to JS - * runtime, in the final JS +Yes, Toffee does a very good job of that. There are 3 possible places you can hit an error in Toffee: + +- in the language itself, say a parse error +- in the CoffeeScript, preventing it from compiling to JS +- runtime, in the final JS -Stack traces are converted to lines in Toffee and show you where the problem is. -By default when Toffee hits an error it replies with some pretty-printed HTML showing you the problem. +Stack traces are converted to lines in Toffee and show you where the problem is. +By default when Toffee hits an error it replies with some pretty-printed HTML showing you the problem. This can be overridden, as explained below in the Express 3.0 section. ### Does it support partials? (a.k.a includes) -Yes. In Express 2.0, Express itself is responsible for including other files, and they call this system "partials." In Express 3.0 and in the browser, -Toffee defines the `partial` function, and it works as you'd expect. +Yes. In Express 2.0, Express itself is responsible for including other files, and they call this system "partials." In Express 3.0 and in the browser, +Toffee defines the `partial` function, and it works as you'd expect. ```html
    #{partial '../foo/bar.toffee', name: "Chris"}
    ``` Inside a region of CoffeeScript, you can print or capture the result of a partial. + ```html
    -{# - if session - print partial 'user_menu.toffee', info: session.info - else - print partial 'guest_menu.toffee' -#} + {# if session print partial 'user_menu.toffee', info: session.info else print + partial 'guest_menu.toffee' #}
    ``` @@ -466,14 +407,13 @@ be the path to your layout file. ## Installation & Usage - * [Using Toffee in NodeJS](https://github.com/malgorithms/toffee/wiki/NodeJS-Usage) - * [Using Toffee in Express 3](https://github.com/malgorithms/toffee/wiki/Express3-Usage) - * [Using Toffee in Express 2](https://github.com/malgorithms/toffee/wiki/Express2-Usage) - * [Using Toffee in the Browser](https://github.com/malgorithms/toffee/wiki/Browser-Usage) +- [Using Toffee in NodeJS](https://github.com/malgorithms/toffee/wiki/NodeJS-Usage) +- [Using Toffee in Express 3](https://github.com/malgorithms/toffee/wiki/Express3-Usage) +- [Using Toffee in Express 2](https://github.com/malgorithms/toffee/wiki/Express2-Usage) +- [Using Toffee in the Browser](https://github.com/malgorithms/toffee/wiki/Browser-Usage) +# contributing & asking for fixes. -contributing & asking for fixes. -================= If you have a problem with Toffee let me know, and I'll fix it ASAP. Also, I'm likely to accept good pull requests. @@ -488,6 +428,3 @@ To build and test your changes > icake build > icake test ``` - - -