compilerr
Advanced tools
Comparing version 0.0.0 to 0.1.0
@@ -23,3 +23,3 @@ { | ||
}, | ||
"version": "0.0.0" | ||
"version": "0.1.0" | ||
} |
@@ -40,17 +40,33 @@ 'use strict'; | ||
function renderString(string, parameters) { | ||
var regex = /\${([^\.]+)(\.[^\(]+\(\))*}/g, | ||
result, | ||
var modifiersRegex, | ||
modifiersRegexResult, | ||
expressionRegex, | ||
expressionResult, | ||
variable, | ||
variables = []; | ||
result = regex.exec(string); | ||
expressionRegex = /\${([^\.]+)((\.[^\(]+\(\))*)}/g; | ||
expressionResult = expressionRegex.exec(string); | ||
while (result !== null) { | ||
variables.push({ | ||
name: result[1], | ||
modifiers: (result[2] === undefined) ? [] : Array.prototype.slice.call(result, 2).map(function (modifier) { | ||
return modifier.slice(1, -2); | ||
}) | ||
}); | ||
while (expressionResult !== null) { | ||
variable = { | ||
name: expressionResult[1] | ||
}; | ||
result = regex.exec(string); | ||
if (expressionResult[3] !== undefined) { | ||
modifiersRegex = /\.[^\(]+\(\)/g; | ||
variable.modifiers = []; | ||
modifiersRegexResult = modifiersRegex.exec(expressionResult[2]); | ||
while (modifiersRegexResult !== null) { | ||
variable.modifiers.push(modifiersRegexResult[0].slice(1, -2)); | ||
modifiersRegexResult = modifiersRegex.exec(expressionResult[2]); | ||
} | ||
} | ||
variables.push(variable); | ||
expressionResult = expressionRegex.exec(string); | ||
} | ||
@@ -57,0 +73,0 @@ |
@@ -92,4 +92,21 @@ 'use strict'; | ||
it('should apply two modifiers to one variable', function () { | ||
var err, | ||
template; | ||
template = { | ||
message: '${error.prependIndefiniteArticle().capitalize()} can always happen.' | ||
}; | ||
err = compilerr.compile(template, { | ||
error: 'error' | ||
}); | ||
expect(err).to.be.an.instanceOf(Error); | ||
expect(err.message).to.equal('An error can always happen.'); | ||
}); | ||
}); | ||
}); |
10016
351