Socket
Socket
Sign inDemoInstall

beard

Package Overview
Dependencies
Maintainers
1
Versions
21
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

beard - npm Package Compare versions

Comparing version 0.0.1 to 0.0.2

README.md

84

lib/beard.js

@@ -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"
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc