Security News
PyPI Introduces Digital Attestations to Strengthen Python Package Security
PyPI now supports digital attestations, enhancing security and trust by allowing package maintainers to verify the authenticity of Python packages.
micromustache
Advanced tools
A faster and smaller subimplementation of the {{mustache}} template engine for JavaScript
This tool covers the most important use case: interpolation: replacing variable names with their values from an object.
If that's all you need, micromustache is a drop-in replacement for MustacheJS.
Download from browser directory
npm:
npm install micromustache
bower install micromustache
Micromustache achieves faster speed and smaller size by dropping:
arrName.1
though)If you can live with this, read on...
Function signature:
/**
* @param template {string} the template containing one or more {{variableNames}}
* @param [view={}] {object} an optional object containing values for every variable names
* that is used in the template
* @return {string} template where its variable names replaced with corresponding values.
* If a value is not found or is invalid, it will be assumed empty string ''.
* If the value is an object itself, it'll be stringified by JSON.
* In case of a JSON error the result will look like "{...}".
*/
micromustache.render(template, view);
Alias: .to_html()
Renders a template with the provided key/values from the view object. Example:
var person = {
first: 'Michael',
last: 'Jackson'
};
micromustache.render('Search {{first}} {{ last }} popcorn!', person);
//output = "Search Michael Jackson popcorn!"
You can even access array elements and length
because they are all valid keys in the array object in javascript:
var fruits = [ "orange", "apple", "lemon" ];
micromustache.render("I like {{0}}, {{1}} and {{2}} ({{length}} fruits!)", fruits);
//output = "I like orange, apple and lemon (3 fruits!)"
You can easily reference deep object hierarchies. For example given the package.json file of this project:
var singer = {
first: 'Michael',
last: 'Jackson',
children: [
{
first: 'Paris-Michael',
middle: 'Katherine',
},
{
first: 'Prince',
middle: 'Michael',
prefix: 'II'
},
{
first: 'Michael',
middle: 'Joseph',
prefix: 'Jr.'
}
]
}
micromustache.render("{{first}} {{last}} had {{children.length}} children: {{children.0.first}}, {{children.1.first}} and {{children.2.first}}", singer);
//output = "Michael Jackson had 3 children: Paris-Michael, Prince and Michael"
As you can see micromustache doesn't have loops or any other fancy feature that MustacheJS offers.
micromustache is a bit more forgiving than MustacheJS. For example, if the view
is null
or undefined
, MustacheJS throws an exception but micromustache doesn't.
Another difference (which can handle complicated edge cases) is that you can use functions as values for more flexibility. micromustache will simply call the function with the variable name and use its return value for interpolation:
micromustache.render('{{var1}}', {
var1: function (key, currentScope, path, currentPointer) {
// "this" inside the function refers to the current object
return key.toUpperCase();
}
});
//output = 'VAR1'
The function runs synchronously in the context of the view object (i.e. this
refers to the view object). A more complex example:
var viewObject = {
repository: {
url: valueFn
}
};
function valueFn (key, currentScope, path, pathIndex) {
// this = viewObject
// key = 'url'
// currentScope = viewObject.repository
// path = ['repository', 'url']
// pathIndex = 1
return 'http://github.com/userpixel/micromustache.git';
}
micromustache.render('micromustache is at {{repository.url}}', viewObject);
//output = 'micromustache is at http://github.com/userpixel/micromustache.git'
Function signature:
/**
* @param template {string} same as the template parameter to .render()
* @return compiler(view) {function} a function that accepts a view and returns a rendered template
*/
micromustache.compile(template);
You can compile the template and get a function that can be used multiple times:
var templateEngine = micromustache.compile('Search {{first}} {{ last }} popcorn!');
output = templateEngine(person);
//output = "Search Michael Jackson popcorn!"
output = templateEngine({first:'Albert',last:'Einstein'});
//output = "Search Albert Einstein popcorn!"
This function makes your code cleaner but for simplicity doesn't use any memoization technique behind the scenes.
Just another name for micromustache.render()
for compatibility with MustacheJS.
We use Mocha/Chai for tests:
npm test
FAQs
A fast, minimal and secure template engine for JavaScript
The npm package micromustache receives a total of 31,433 weekly downloads. As such, micromustache popularity was classified as popular.
We found that micromustache demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
PyPI now supports digital attestations, enhancing security and trust by allowing package maintainers to verify the authenticity of Python packages.
Security News
GitHub removed 27 malicious pull requests attempting to inject harmful code across multiple open source repositories, in another round of low-effort attacks.
Security News
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.