mirror of
https://github.com/Mibew/mibew.git
synced 2025-03-03 10:28:32 +03:00
Add "replace" Handlebars.js helper
This commit is contained in:
parent
333f769a16
commit
9805b4bb18
@ -234,6 +234,26 @@
|
||||
return result;
|
||||
});
|
||||
|
||||
/**
|
||||
* Registers "replace" helper.
|
||||
*
|
||||
* This helper replaces all found substrings with the specifed replacement.
|
||||
* Example of usage:
|
||||
* <code>
|
||||
* {{#replace search replacement}}target content{{/replace}}
|
||||
* </code>
|
||||
*/
|
||||
Handlebars.registerHelper('replace', function(search, replacement, options) {
|
||||
// Convert serch value to string and escape special regexp characters
|
||||
var searchPattern = search.toString().replace(
|
||||
/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,
|
||||
"\\$&"
|
||||
),
|
||||
re = new RegExp(searchPattern, 'g');
|
||||
|
||||
return options.fn(this).replace(re, replacement);
|
||||
});
|
||||
|
||||
/**
|
||||
* Registers "cutString" helper.
|
||||
*
|
||||
|
@ -168,6 +168,52 @@ test('repeat', function() {
|
||||
);
|
||||
});
|
||||
|
||||
// Test "replace" Handlebars helper
|
||||
test('replace', function() {
|
||||
var template = '{{#replace search replacement}}{{source}}{{/replace}}';
|
||||
var compiledTemplate = Handlebars.compile(template);
|
||||
|
||||
equal(
|
||||
compiledTemplate({
|
||||
source: 'test source',
|
||||
search: 'source',
|
||||
replacement: 'target'
|
||||
}),
|
||||
'test target',
|
||||
'Test single replace'
|
||||
);
|
||||
|
||||
equal(
|
||||
compiledTemplate({
|
||||
source: 'Hello\ncruel\nworld!\n',
|
||||
search: '\n',
|
||||
replacement: '<br/>'
|
||||
}),
|
||||
'Hello<br/>cruel<br/>world!<br/>',
|
||||
'Test multiple replace'
|
||||
);
|
||||
|
||||
equal(
|
||||
compiledTemplate({
|
||||
source: '{{!-- comment',
|
||||
search: '{{!--',
|
||||
replacement: '<!--'
|
||||
}),
|
||||
'<!-- comment',
|
||||
'Test special regexp characters'
|
||||
);
|
||||
|
||||
equal(
|
||||
compiledTemplate({
|
||||
source: '010203040506070809',
|
||||
search: 0,
|
||||
replacement: ''
|
||||
}),
|
||||
'123456789',
|
||||
'Test a number as the search value'
|
||||
);
|
||||
});
|
||||
|
||||
// Test "cutString" Handlebars helper
|
||||
test('cutString', function() {
|
||||
var template = '{{#cutString length}}{{str}}{{/cutString}}';
|
||||
|
Loading…
Reference in New Issue
Block a user