Comparing version 0.0.1 to 0.0.2
@@ -1,14 +0,14 @@ | ||
var iterator = 0; | ||
var ignore = false; | ||
var exps = { | ||
'statement': (/\{\s*([^}]+?)\s*\}/g), | ||
'operators': (/\s+(and|or|eq|neq)\s+/), | ||
'if': (/^if\s+(.*)$/), | ||
'elseif': (/^else\s+if\s+(.*)$/), | ||
'else': (/^else$/), | ||
'for': (/^for\s+([$A-Za-z_][0-9A-Za-z_]*)(?:\s*,\s*([$A-Za-z_][0-9A-Za-z_]*))?\s+in\s+(.*)$/), | ||
'each': (/^each\s+([$A-Za-z_][0-9A-Za-z_]*)(?:\s*,\s*([$A-Za-z_][0-9A-Za-z_]*))?\s+in\s(.*)$/), | ||
'end': (/^end$/) | ||
} | ||
_statement: (/\{\s*([^}]+?)\s*\}/g), | ||
_operators: (/\s+(and|or|eq|neq|is|isnt|not)\s+/g), | ||
_if: (/^if\s+([^]*)$/), | ||
_elseif: (/^else\s+if\s+([^]*)$/), | ||
_else: (/^else$/), | ||
_for: (/^for\s+([$A-Za-z_][0-9A-Za-z_]*)(?:\s*,\s*([$A-Za-z_][0-9A-Za-z_]*))?\s+in\s+(.*)$/), | ||
_each: (/^each\s+([$A-Za-z_][0-9A-Za-z_]*)(?:\s*,\s*([$A-Za-z_][0-9A-Za-z_]*))?\s+in\s(.*)$/), | ||
_end: (/^end$/) | ||
}; | ||
@@ -20,24 +20,26 @@ var operators = { | ||
neq: ' !== ', | ||
not: ' !' | ||
} | ||
not: ' !', | ||
isnt: ' != ', | ||
is: ' == ' | ||
}; | ||
var parse = { | ||
operators: function(_, op){ | ||
_operators: function(_, op){ | ||
return operators[op]; | ||
}, | ||
if: function(_, state){ | ||
_if: function(_, state){ | ||
return 'if (' + state + ') {'; | ||
}, | ||
elseif: function(_, state){ | ||
_elseif: function(_, state){ | ||
return '} else if (' + state +') {'; | ||
}, | ||
else: function(){ | ||
_else: function(){ | ||
return '} else {'; | ||
}, | ||
for: function(_, key, value, object){ | ||
_for: function(_, key, value, object){ | ||
if (!value) key = (value = key, 'iterator' + iterator++); | ||
@@ -47,12 +49,13 @@ return 'for (var ' + key + ' in ' + object + '){' + 'var ' + value + ' = ' + object + '[' + key +'];'; | ||
each: function(_, iter, value, array){ | ||
_each: function(_, iter, value, array){ | ||
if (!value) iter = (value = iter, 'iterator' + iterator++); | ||
return 'for (var ' + iter + ' = 0, l = ' + array + '.length; ' + iter + ' < l; ' + iter + '++) {' + 'var ' + value + ' = ' + array + '[' + (iter) + '];'; | ||
var length = 'length' + iterator++; | ||
return 'for (var ' + iter + ' = 0, ' + length + ' = ' + array + '.length; ' + iter + ' < ' + length + '; ' + iter + '++) {' + 'var ' + value + ' = ' + array + '[' + (iter) + '];'; | ||
}, | ||
end: function(){ | ||
_end: function(){ | ||
return '}'; | ||
} | ||
} | ||
}; | ||
@@ -62,12 +65,24 @@ var parser = function(match, inner){ | ||
inner = inner.replace(exps.operators, parse.operators) | ||
.replace(exps.end, parse.end) | ||
.replace(exps.else, parse.else) | ||
.replace(exps.elseif, parse.elseif) | ||
.replace(exps.if, parse.if) | ||
.replace(exps.each, parse.each) | ||
.replace(exps.for, parse.for); | ||
switch (true) { | ||
case (match == '{ignore}'): | ||
ignore = true; | ||
return ''; | ||
case (ignore && match == '{endignore}'): | ||
ignore = false; | ||
return ''; | ||
case (ignore): | ||
return match; | ||
} | ||
inner = inner | ||
.replace(exps._operators, parse._operators) | ||
.replace(exps._end, parse._end) | ||
.replace(exps._else, parse._else) | ||
.replace(exps._elseif, parse._elseif) | ||
.replace(exps._if, parse._if) | ||
.replace(exps._each, parse._each) | ||
.replace(exps._for, parse._for); | ||
return '";' + (inner == prev ? ' _buffer += ' : '') + inner.replace(/\t|\n|\r/, '') + '; _buffer += "'; | ||
} | ||
}; | ||
@@ -77,3 +92,3 @@ var compiler = function(str){ | ||
var fn = ('var _buffer = ""; with (data){ _buffer += "' + str.replace(exps.statement, parser) + '"; return _buffer; }') | ||
var fn = ('var _buffer = ""; with (data){ _buffer += "' + str.replace(exps._statement, parser) + '"; return _buffer; }') | ||
.replace(/_buffer\s\+\=\s"";/, '') | ||
@@ -86,3 +101,2 @@ .replace(/(\{|\});/g, '$1') | ||
// create the function | ||
try { | ||
@@ -93,3 +107,3 @@ return new Function('data', fn); | ||
} | ||
} | ||
}; | ||
@@ -102,4 +116,6 @@ Beard = { | ||
} | ||
}; | ||
module.exports = Beard; | ||
if (typeof module !== 'undefined' && module.exports) { | ||
module.exports = Beard; | ||
} |
{ | ||
"name": "beard", | ||
"version": "0.0.1", | ||
"version": "0.0.2", | ||
"description": "More than a mustache.", | ||
@@ -8,4 +8,4 @@ "keywords": ["template engine", "node", "browser"], | ||
"author": "Shane Thacker <shane@steadymade.com>", | ||
"engine": "node >= 0.4.1", | ||
"engine": ">= 0.4.1", | ||
"main": "./lib/beard" | ||
} |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
No README
QualityPackage does not have a README. This may indicate a failed publish or a low quality package.
Found 1 instance in 1 package
4969
5
91
1
46