Skip to content

Commit 91c7184

Browse files
author
Brian Muenzenmeyer
committed
Merge pull request #259 from e2tha-e/replacing-eval-with-JSON.parse
Replacing eval with json.parse
2 parents 012da1a + a5b6e4d commit 91c7184

File tree

1 file changed

+20
-8
lines changed

1 file changed

+20
-8
lines changed

builder/parameter_hunter.js

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,16 +35,28 @@
3535
console.log('found patternParameters for ' + partialName);
3636
}
3737

38-
//strip out the additional data and eval
38+
//strip out the additional data, convert string to JSON.
3939
var leftParen = pMatch.indexOf('(');
4040
var rightParen = pMatch.indexOf(')');
41-
var paramString = '({' + pMatch.substring(leftParen + 1, rightParen) + '})';
42-
43-
//do no evil. there is no good way to do this that I can think of without using a split, which then makes commas and colons special characters and unusable within the pattern params
44-
var paramData = eval(paramString);
45-
46-
var globalData = JSON.parse(JSON.stringify(patternlab.data));
47-
var localData = JSON.parse(JSON.stringify(pattern.jsonFileData || {}));
41+
var paramString = '{' + pMatch.substring(leftParen + 1, rightParen) + '}';
42+
//if param keys are wrapped in single quotes, replace with double quotes.
43+
var paramStringWellFormed = paramString.replace(/(')([^']+)(')(\s*\:)/gm, '"$2"$4');
44+
//if params keys are not wrapped in any quotes, wrap in double quotes.
45+
var paramStringWellFormed = paramStringWellFormed.replace(/([\{|,]\s*)([^\:\s]+)(\s*\:)/gm, '$1"$2"$3');
46+
//if param values are wrapped in single quotes, replace with double quotes.
47+
var paramStringWellFormed = paramStringWellFormed.replace(/(\:\s*)(')([^']+)(')/gm, '$1"$3"');
48+
49+
var paramData = {};
50+
var globalData = {};
51+
var localData = {};
52+
53+
try {
54+
paramData = JSON.parse(paramStringWellFormed);
55+
globalData = JSON.parse(JSON.stringify(patternlab.data));
56+
localData = JSON.parse(JSON.stringify(pattern.jsonFileData || {}));
57+
} catch(e){
58+
console.log(e);
59+
}
4860

4961
var allData = pattern_assembler.merge_data(globalData, localData);
5062
allData = pattern_assembler.merge_data(allData, paramData);

0 commit comments

Comments
 (0)