mirror of
https://github.com/Mibew/mibew.git
synced 2025-03-03 18:38:31 +03:00
Add "replace" Handlebars.js helper
This commit is contained in:
parent
333f769a16
commit
9805b4bb18
@ -234,6 +234,26 @@
|
|||||||
return result;
|
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.
|
* 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" Handlebars helper
|
||||||
test('cutString', function() {
|
test('cutString', function() {
|
||||||
var template = '{{#cutString length}}{{str}}{{/cutString}}';
|
var template = '{{#cutString length}}{{str}}{{/cutString}}';
|
||||||
|
Loading…
Reference in New Issue
Block a user