Skip to content

Commit 2e3236b

Browse files
committed
fix a bad merge
1 parent e4658cd commit 2e3236b

File tree

2 files changed

+108
-12
lines changed

2 files changed

+108
-12
lines changed

builder/parameter_hunter.js

Lines changed: 107 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,122 @@ var parameter_hunter = function () {
1818
style_modifier_hunter = new smh(),
1919
pattern_assembler = new pa();
2020

21+
function paramToJson(pString) {
22+
var paramStringWellFormed = '';
23+
var paramStringTmp;
24+
var colonPos;
25+
var delimitPos;
26+
var quotePos;
27+
var paramString = pString;
28+
29+
do {
30+
31+
//if param key is wrapped in single quotes, replace with double quotes.
32+
paramString = paramString.replace(/(^\s*[\{|\,]\s*)'([^']+)'(\s*\:)/, '$1"$2"$3');
33+
34+
//if params key is not wrapped in any quotes, wrap in double quotes.
35+
paramString = paramString.replace(/(^\s*[\{|\,]\s*)([^\s"'\:]+)(\s*\:)/, '$1"$2"$3');
36+
37+
//move param key to paramStringWellFormed var.
38+
colonPos = paramString.indexOf(':');
39+
40+
//except to prevent infinite loops.
41+
if (colonPos === -1) {
42+
colonPos = paramString.length - 1;
43+
}
44+
else {
45+
colonPos += 1;
46+
}
47+
paramStringWellFormed += paramString.substring(0, colonPos);
48+
paramString = paramString.substring(colonPos, paramString.length).trim();
49+
50+
//if param value is wrapped in single quotes, replace with double quotes.
51+
if (paramString[0] === '\'') {
52+
quotePos = paramString.search(/[^\\]'/);
53+
54+
//except for unclosed quotes to prevent infinite loops.
55+
if (quotePos === -1) {
56+
quotePos = paramString.length - 1;
57+
}
58+
else {
59+
quotePos += 2;
60+
}
61+
62+
//prepare param value for move to paramStringWellFormed var.
63+
paramStringTmp = paramString.substring(0, quotePos);
64+
65+
//unescape any escaped single quotes.
66+
paramStringTmp = paramStringTmp.replace(/\\'/g, '\'');
67+
68+
//escape any double quotes.
69+
paramStringTmp = paramStringTmp.replace(/"/g, '\\"');
70+
71+
//replace the delimiting single quotes with double quotes.
72+
paramStringTmp = paramStringTmp.replace(/^'/, '"');
73+
paramStringTmp = paramStringTmp.replace(/'$/, '"');
74+
75+
//move param key to paramStringWellFormed var.
76+
paramStringWellFormed += paramStringTmp;
77+
paramString = paramString.substring(quotePos, paramString.length).trim();
78+
}
79+
80+
//if param value is wrapped in double quotes, just move to paramStringWellFormed var.
81+
else if (paramString[0] === '"') {
82+
quotePos = paramString.search(/[^\\]"/);
83+
84+
//except for unclosed quotes to prevent infinite loops.
85+
if (quotePos === -1) {
86+
quotePos = paramString.length - 1;
87+
}
88+
else {
89+
quotePos += 2;
90+
}
91+
92+
//move param key to paramStringWellFormed var.
93+
paramStringWellFormed += paramString.substring(0, quotePos);
94+
paramString = paramString.substring(quotePos, paramString.length).trim();
95+
}
96+
97+
//if param value is not wrapped in quotes, move everthing up to the delimiting comma to paramStringWellFormed var.
98+
else {
99+
delimitPos = paramString.indexOf(',');
100+
101+
//except to prevent infinite loops.
102+
if (delimitPos === -1) {
103+
delimitPos = paramString.length - 1;
104+
}
105+
else {
106+
delimitPos += 1;
107+
}
108+
paramStringWellFormed += paramString.substring(0, delimitPos);
109+
paramString = paramString.substring(delimitPos, paramString.length).trim();
110+
}
111+
112+
//break at the end.
113+
if (paramString.length === 1) {
114+
paramStringWellFormed += paramString.trim();
115+
paramString = '';
116+
break;
117+
}
118+
119+
} while (paramString);
120+
121+
return paramStringWellFormed;
122+
}
123+
21124
function findparameters(pattern, patternlab) {
125+
22126
if (pattern.parameteredPartials && pattern.parameteredPartials.length > 0) {
23-
//compile this partial immediately, essentially consuming it.
24127

128+
//compile this partial immeadiately, essentially consuming it.
25129
pattern.parameteredPartials.forEach(function (pMatch) {
26130
//find the partial's name and retrieve it
27131
var partialName = pMatch.match(/([\w\-\.\/~]+)/g)[0];
28132
var partialPattern = pattern_assembler.get_pattern_by_key(partialName, patternlab);
29133

30134
//if we retrieved a pattern we should make sure that its extendedTemplate is reset. looks to fix #190
31135
partialPattern.extendedTemplate = partialPattern.template;
136+
32137
if (patternlab.config.debug) {
33138
console.log('found patternParameters for ' + partialName);
34139
}
@@ -37,15 +142,7 @@ var parameter_hunter = function () {
37142
var leftParen = pMatch.indexOf('(');
38143
var rightParen = pMatch.indexOf(')');
39144
var paramString = '{' + pMatch.substring(leftParen + 1, rightParen) + '}';
40-
41-
//if param keys are wrapped in single quotes, replace with double quotes.
42-
var paramStringWellFormed = paramString.replace(/(')([^']+)(')(\s*\:)/g, '"$2"$4');
43-
44-
//if params keys are not wrapped in any quotes, wrap in double quotes.
45-
paramStringWellFormed = paramStringWellFormed.replace(/([\{|,]\s*)([^\s"'\:]+)(\s*\:)/g, '$1"$2"$3');
46-
47-
//if param values are wrapped in single quotes, replace with double quotes.
48-
paramStringWellFormed = paramStringWellFormed.replace(/(\:\s*)(')([^']+)(')/g, '$1"$3"');
145+
var paramStringWellFormed = paramToJson(paramString);
49146

50147
var paramData = {};
51148
var globalData = {};

builder/pattern_assembler.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -303,8 +303,7 @@ var pattern_assembler = function () {
303303

304304
function mergeData(obj1, obj2) {
305305
if (typeof obj2 === 'undefined') {
306-
//noinspection Eslint
307-
obj2 = {};
306+
obj2 = {}; //eslint-disable-line no-param-reassign
308307
}
309308

310309
for (var p in obj1) { //eslint-disable-line guard-for-in

0 commit comments

Comments
 (0)