UNPKG

grunt-zuckrig-closure

Version:

Reduce a verbose syntax for Google Closure Compiler to be more Pythonic/Rubistic.

59 lines (51 loc) 1.41 kB
/** Inspirated by https://github.com/steida/coffee2closure */ var Writer; Writer = (function() { function Writer() {} Writer.prototype._create_space = function(length, new_line) { var space; if (length < 0) { return ''; } space = new Array(length + 1).join(' '); if (new_line) { space = '\n' + space; } return space; }; Writer.prototype.write = function(tokens) { var i, new_line, prev, source, token, _i, _len; source = ''; prev = null; for (i = _i = 0, _len = tokens.length; _i < _len; i = ++_i) { token = tokens[i]; new_line = false; if (prev != null) { new_line = token.loc.start.line !== prev.loc.end.line; if (new_line) { source += this._create_space(token.loc.start.column, true); } else { source += this._create_space(token.loc.start.column - prev.loc.end.column); } } if (token.type === 'NewBlock') { source += " /*" + token.value + " */"; } else if (token.type === 'Block') { source += "/*" + token.value + "*/"; } else if (token.type === 'Line') { source += "//" + token.value; } else { source += token.value; if (token.value === ';') { source += "\n"; } } prev = token; } return source; }; return Writer; })(); module.exports = Writer;