Escaping key value interpolation #1
This commit is contained in:
parent
3a69f3bd20
commit
8d65af5ff7
2 changed files with 23 additions and 6 deletions
|
|
@ -72,4 +72,18 @@ describe('Kiwi.compose - %{}', function() {
|
|||
var output = "The quick brown jumps over the lazy dog.";
|
||||
expect(Kiwi.compose(input, dic)).toEqual(output);
|
||||
});
|
||||
|
||||
it('should escape key value interpolation if ` is given before %',function() {
|
||||
var input = "The quick brown `%{f} jumps over the lazy dog.";
|
||||
var dic = {"d": "dog"};
|
||||
var output = "The quick brown %{f} jumps over the lazy dog.";
|
||||
expect(Kiwi.compose(input, dic)).toEqual(output);
|
||||
});
|
||||
|
||||
it('should escape key value interpolation for the first case but not for the 2nd.',function() {
|
||||
var input = "The quick brown `%{f} %{f} jumps over the lazy dog.";
|
||||
var dic = {"f": "fox"};
|
||||
var output = "The quick brown %{f} fox jumps over the lazy dog.";
|
||||
expect(Kiwi.compose(input, dic)).toEqual(output);
|
||||
});
|
||||
});
|
||||
15
src/Kiwi.js
15
src/Kiwi.js
|
|
@ -1,9 +1,9 @@
|
|||
var Kiwi = (function ($) {
|
||||
var interpolate_general = function(text, array){
|
||||
var stringToReturn = ""
|
||||
,length = text.length
|
||||
,index = 0
|
||||
,array_length = array.length;
|
||||
,length = text.length
|
||||
,index = 0
|
||||
,array_length = array.length;
|
||||
|
||||
for(var i = 0; i < length; i++){
|
||||
var currentChar = text[i];
|
||||
|
|
@ -48,15 +48,18 @@ var Kiwi = (function ($) {
|
|||
|
||||
var interpolate_key_value = function(text, json){
|
||||
var stringToReturn = ""
|
||||
,length = text.length
|
||||
,index = 0;
|
||||
,length = text.length
|
||||
,index = 0;
|
||||
|
||||
for(var i = 0; i < length; i++){
|
||||
var currentChar = text[i];
|
||||
var nextChar = null;
|
||||
if(i + 1 < length) nextChar = text[i+1];
|
||||
|
||||
if(currentChar === '%' && nextChar === '{'){
|
||||
if (currentChar === '`' && nextChar === '%') {
|
||||
stringToReturn += '%';
|
||||
i += 1;
|
||||
}else if(currentChar === '%' && nextChar === '{'){
|
||||
var result = get_key_length(text, i);
|
||||
var key = result[0];
|
||||
var key_length = result[1];
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue