From dd1bd2c5c321239439df84861269067fc3be4b02 Mon Sep 17 00:00:00 2001 From: e2tha-e Date: Mon, 22 Feb 2016 07:35:10 -0500 Subject: [PATCH 1/3] replacing eval with JSON.parse --- builder/parameter_hunter.js | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/builder/parameter_hunter.js b/builder/parameter_hunter.js index cee16596b..9478e2804 100644 --- a/builder/parameter_hunter.js +++ b/builder/parameter_hunter.js @@ -35,13 +35,17 @@ console.log('found patternParameters for ' + partialName); } - //strip out the additional data and eval + //strip out the additional data, convert string to JSON. var leftParen = pMatch.indexOf('('); var rightParen = pMatch.indexOf(')'); - var paramString = '({' + pMatch.substring(leftParen + 1, rightParen) + '})'; - - //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 - var paramData = eval(paramString); + var paramString = '{' + pMatch.substring(leftParen + 1, rightParen) + '}'; + //if param keys are wrapped in single quotes, replace with double quotes. + var paramStringWellFormed = paramString.replace(/(')([^'\s]+)(')(\s*\:)/gm, '"$2"$4'); + //if params keys are not wrapped in any quotes, wrap in double quotes. + var paramStringWellFormed = paramStringWellFormed.replace(/([\{|,]\s*)([^\:\s]+)(\s*\:)/gm, '$1"$2"$3'); + //if param values are wrapped in single quotes, replace with double quotes. + var paramStringWellFormed = paramStringWellFormed.replace(/(\:\s*)(')([^']+)(')/gm, '$1"$3"'); + var paramData = JSON.parse(paramStringWellFormed); var globalData = JSON.parse(JSON.stringify(patternlab.data)); var localData = JSON.parse(JSON.stringify(pattern.jsonFileData || {})); From e67e2d86e1f8914a2a67f6bddebaab777c909af2 Mon Sep 17 00:00:00 2001 From: e2tha-e Date: Mon, 22 Feb 2016 08:09:33 -0500 Subject: [PATCH 2/3] error handling --- builder/parameter_hunter.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/builder/parameter_hunter.js b/builder/parameter_hunter.js index 9478e2804..2b6d57f0f 100644 --- a/builder/parameter_hunter.js +++ b/builder/parameter_hunter.js @@ -45,10 +45,18 @@ var paramStringWellFormed = paramStringWellFormed.replace(/([\{|,]\s*)([^\:\s]+)(\s*\:)/gm, '$1"$2"$3'); //if param values are wrapped in single quotes, replace with double quotes. var paramStringWellFormed = paramStringWellFormed.replace(/(\:\s*)(')([^']+)(')/gm, '$1"$3"'); - var paramData = JSON.parse(paramStringWellFormed); - var globalData = JSON.parse(JSON.stringify(patternlab.data)); - var localData = JSON.parse(JSON.stringify(pattern.jsonFileData || {})); + var paramData = {}; + var globalData = {}; + var localData = {}; + + try { + paramData = JSON.parse(paramStringWellFormed); + globalData = JSON.parse(JSON.stringify(patternlab.data)); + localData = JSON.parse(JSON.stringify(pattern.jsonFileData || {})); + } catch(e){ + console.log(e); + } var allData = pattern_assembler.merge_data(globalData, localData); allData = pattern_assembler.merge_data(allData, paramData); From a5b6e4dcc6593e6fcf6bd3c41356e5fbb9e55992 Mon Sep 17 00:00:00 2001 From: e2tha-e Date: Mon, 22 Feb 2016 08:17:26 -0500 Subject: [PATCH 3/3] minor regex update --- builder/parameter_hunter.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/builder/parameter_hunter.js b/builder/parameter_hunter.js index 2b6d57f0f..bcd8f9010 100644 --- a/builder/parameter_hunter.js +++ b/builder/parameter_hunter.js @@ -38,9 +38,9 @@ //strip out the additional data, convert string to JSON. var leftParen = pMatch.indexOf('('); var rightParen = pMatch.indexOf(')'); - var paramString = '{' + pMatch.substring(leftParen + 1, rightParen) + '}'; + var paramString = '{' + pMatch.substring(leftParen + 1, rightParen) + '}'; //if param keys are wrapped in single quotes, replace with double quotes. - var paramStringWellFormed = paramString.replace(/(')([^'\s]+)(')(\s*\:)/gm, '"$2"$4'); + var paramStringWellFormed = paramString.replace(/(')([^']+)(')(\s*\:)/gm, '"$2"$4'); //if params keys are not wrapped in any quotes, wrap in double quotes. var paramStringWellFormed = paramStringWellFormed.replace(/([\{|,]\s*)([^\:\s]+)(\s*\:)/gm, '$1"$2"$3'); //if param values are wrapped in single quotes, replace with double quotes.