Skip to content

Commit

Permalink
small changed; fixed indentation bug and prettyprint
Browse files Browse the repository at this point in the history
  • Loading branch information
malgorithms committed Jul 4, 2012
1 parent c31438a commit 8e9693c
Show file tree
Hide file tree
Showing 10 changed files with 87 additions and 40 deletions.
13 changes: 11 additions & 2 deletions lib/errorHandler.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

25 changes: 14 additions & 11 deletions lib/view.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ fs = require 'fs'
obj =
name: "toffee"
description: """An Express 3.x and 2.x templating language based on CoffeeScript with slicker tokens and syntax. Built at OkCupid."""
version: "0.0.17"
version: "0.0.18"
directories: {"lib" : "./lib"}
main: "index.js"
author: "Chris Coyne <ccoyne77@gmail.com>"
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -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 at OkCupid.",
"version": "0.0.17",
"version": "0.0.18",
"directories": {
"lib": "./lib"
},
Expand Down
4 changes: 3 additions & 1 deletion src/errorHandler.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,9 @@ eh = exports.errorHandler =
continue
line = eh._ppEscape txt_lines[i]
lineno = i+1
res+= "\n#{lineno}: #{line} <br />"
padding_len = 5 - ("#{lineno}").length
padding = ("&nbsp;" for i in [0...padding_len]).join ""
res+= "\n#{lineno}: #{padding} #{line} <br />"
res += "\n</div>"
res += "\n</div>"
res
Expand Down
26 changes: 17 additions & 9 deletions src/view.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -120,22 +120,26 @@ class view
res += s
temp_indent_level = indent_level + delta
when "TOFFEE"
res += "\n#{@_space indent_level}__toffee.lineno = #{obj[2]}"
res += "\n#{@_space indent_level}__toffee.state = states.TOFFEE"
ind = indent_level# - indent_baseline
res += "\n#{@_space ind}__toffee.lineno = #{obj[2]}"
res += "\n#{@_space ind}__toffee.state = states.TOFFEE"
res += "\n#{@_space ind}__toffee.indent_baseline = #{indent_baseline}"
res += "\n#{@_space ind}__toffee.indent_level = #{indent_level}"

lines = obj[1].split "\n"
for line, i in lines
if not line.match /#/
if i
res += "\n#{@_space indent_level}__toffee.lineno = #{obj[2]+i}"
res += "\n#{@_space ind}__toffee.lineno = #{obj[2]+i}"
lbreak = if i isnt lines.length - 1 then "\n" else ""
res += "\n#{@_space indent_level}__toffee.out.push " + '"""' + @_escapeForStr(line + lbreak) + '"""'
res += "\n#{@_space ind}__toffee.out.push " + '"""' + @_escapeForStr(line + lbreak) + '"""'
else
res += "\n#{@_space indent_level}__toffee.out.push " + '"""' + @_escapeForStr(lines[(i)...].join "\n") + '"""'
res += "\n#{@_space ind}__toffee.out.push " + '"""' + @_escapeForStr(lines[(i)...].join "\n") + '"""'
break

#res += "\n#{@_space indent_level}__toffee.out.push " + '"""' + @_escapeForStr(obj[1]) + '"""'
res += "\n#{@_space indent_level}__toffee.lineno = #{obj[2] + (obj[1].split('\n').length-1)}"
res += "\n#{@_space indent_level}__toffee.state = states.COFFEE"
res += "\n#{@_space ind}__toffee.lineno = #{obj[2] + (obj[1].split('\n').length-1)}"
res += "\n#{@_space ind}__toffee.state = states.COFFEE"
when "COFFEE"
#obj[1] = obj[1].replace /\t/g, @_tabAsSpaces()
#console.log "=====\n#{obj[1]}\n===="
Expand Down Expand Up @@ -174,6 +178,9 @@ class view
if not line.match /^[ ]*$/
res = line.match(/[ ]*/)[0].length
break
if not res
res = coffee.length - 1
#console.log "====\n#{coffee}\n#{res}\n---"
return res

_getIndentationDelta: (coffee, baseline) ->
Expand All @@ -188,8 +195,9 @@ class view
res = 0
else
lines = coffee.split "\n"
while lines.length and lines[lines.length-1].match /^[ ]*$/
lines.pop()
# if the last line has coffeescript in it, ignore it in the calculation
#if lines.length and not (lines[lines.length-1].match /^[ ]*$/)
# lines.pop()
if lines.length < 1
res = 0
else
Expand Down
4 changes: 3 additions & 1 deletion test/cases/comments/input.toffee
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ Pass
{##

Fail
#{x}

##}
Pass
Expand All @@ -11,7 +12,8 @@ Pass
# print "Fail"

###
print "FAIL FAIL FAIL"
print "FAIL FAIL FAIL"
#{ foo }
###

#}
Expand Down
11 changes: 10 additions & 1 deletion test/cases/indent_attack/input.toffee
Original file line number Diff line number Diff line change
Expand Up @@ -47,5 +47,14 @@
#}

{#
-{:...passed with flying colors.:}
if 99 is 99
print 'Pass7'
else
print 'Fail'
{:Fail8:}
-{:Pass8:}
#}

{#
-{:...passed with flying colors.:}
#}
2 changes: 2 additions & 0 deletions test/cases/indent_attack/output.toffee
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,6 @@ Pass3Pass4

Pass5Pass6

Pass7Pass8

...passed with flying colors.
38 changes: 25 additions & 13 deletions toffee.js
Original file line number Diff line number Diff line change
Expand Up @@ -377,7 +377,7 @@
return res;
},
prettyPrintError: function(view) {
var i, line, lineno, res, txt_lines, _i, _ref, _ref1;
var i, line, lineno, padding, padding_len, res, txt_lines, _i, _ref, _ref1;
if (!view.error) {
return "";
} else {
Expand All @@ -392,7 +392,16 @@
}
line = eh._ppEscape(txt_lines[i]);
lineno = i + 1;
res += "\n" + lineno + ": " + line + " <br />";
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("&nbsp;");
}
return _results;
})()).join("");
res += "\n" + lineno + ": " + padding + " " + line + " <br />";
}
res += "\n</div>";
res += "\n</div>";
Expand Down Expand Up @@ -968,7 +977,7 @@ if (typeof module !== 'undefined' && require.main === module) {
};

view.prototype._toCoffeeRecurse = function(obj, indent_level, indent_baseline) {
var c, delta, i, i_delta, item, lbreak, line, lines, res, s, temp_indent_level, zone_baseline, _i, _j, _k, _l, _len, _len1, _len2, _len3, _ref, _ref1, _ref2, _ref3, _ref4, _ref5;
var c, delta, i, i_delta, ind, item, lbreak, line, lines, res, s, temp_indent_level, zone_baseline, _i, _j, _k, _l, _len, _len1, _len2, _len3, _ref, _ref1, _ref2, _ref3, _ref4, _ref5;
res = "";
i_delta = 0;
switch (obj[0]) {
Expand Down Expand Up @@ -1003,24 +1012,27 @@ if (typeof module !== 'undefined' && require.main === module) {
}
break;
case "TOFFEE":
res += "\n" + (this._space(indent_level)) + "__toffee.lineno = " + obj[2];
res += "\n" + (this._space(indent_level)) + "__toffee.state = states.TOFFEE";
ind = indent_level;
res += "\n" + (this._space(ind)) + "__toffee.lineno = " + obj[2];
res += "\n" + (this._space(ind)) + "__toffee.state = states.TOFFEE";
res += "\n" + (this._space(ind)) + "__toffee.indent_baseline = " + indent_baseline;
res += "\n" + (this._space(ind)) + "__toffee.indent_level = " + indent_level;
lines = obj[1].split("\n");
for (i = _l = 0, _len3 = lines.length; _l < _len3; i = ++_l) {
line = lines[i];
if (!line.match(/#/)) {
if (i) {
res += "\n" + (this._space(indent_level)) + "__toffee.lineno = " + (obj[2] + i);
res += "\n" + (this._space(ind)) + "__toffee.lineno = " + (obj[2] + i);
}
lbreak = i !== lines.length - 1 ? "\n" : "";
res += ("\n" + (this._space(indent_level)) + "__toffee.out.push ") + '"""' + this._escapeForStr(line + lbreak) + '"""';
res += ("\n" + (this._space(ind)) + "__toffee.out.push ") + '"""' + this._escapeForStr(line + lbreak) + '"""';
} else {
res += ("\n" + (this._space(indent_level)) + "__toffee.out.push ") + '"""' + this._escapeForStr(lines.slice(i).join("\n")) + '"""';
res += ("\n" + (this._space(ind)) + "__toffee.out.push ") + '"""' + this._escapeForStr(lines.slice(i).join("\n")) + '"""';
break;
}
}
res += "\n" + (this._space(indent_level)) + "__toffee.lineno = " + (obj[2] + (obj[1].split('\n').length - 1));
res += "\n" + (this._space(indent_level)) + "__toffee.state = states.COFFEE";
res += "\n" + (this._space(ind)) + "__toffee.lineno = " + (obj[2] + (obj[1].split('\n').length - 1));
res += "\n" + (this._space(ind)) + "__toffee.state = states.COFFEE";
break;
case "COFFEE":
c = obj[1];
Expand Down Expand Up @@ -1071,6 +1083,9 @@ if (typeof module !== 'undefined' && require.main === module) {
}
}
}
if (!res) {
res = coffee.length - 1;
}
return res;
};

Expand All @@ -1090,9 +1105,6 @@ if (typeof module !== 'undefined' && require.main === module) {
res = 0;
} else {
lines = coffee.split("\n");
while (lines.length && lines[lines.length - 1].match(/^[ ]*$/)) {
lines.pop();
}
if (lines.length < 1) {
res = 0;
} else {
Expand Down

0 comments on commit 8e9693c

Please sign in to comment.