Skip to content

Commit 3a2e893

Browse files
committed
Change keyword parsing
Signed-off-by: Liam Allan <[email protected]>
1 parent 82af74a commit 3a2e893

File tree

1 file changed

+25
-38
lines changed

1 file changed

+25
-38
lines changed

src/dspf.js

Lines changed: 25 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -256,41 +256,7 @@ class DisplayFile {
256256
conditions: []
257257
};
258258

259-
let inString = false;
260-
let value = ``;
261-
262-
keywordStrings.forEach(keywordString => {
263-
if (keywordString.startsWith(`'`)) {
264-
inString = true;
265-
keywordString = keywordString.substring(1);
266-
267-
if (keywordString.endsWith(`'`) || keywordString.endsWith(`-`)) {
268-
keywordString = keywordString.substring(0, keywordString.length - 1);
269-
}
270-
271-
result.value = keywordString;
272-
value += `!`;
273-
return;
274-
}
275-
276-
if (keywordString.endsWith('-')) {
277-
if (inString)
278-
result.value += keywordString.substring(0, keywordString.length - 1);
279-
else
280-
value += keywordString.substring(0, keywordString.length - 1);
281-
} else
282-
if (keywordString.endsWith(`'`)) {
283-
if (inString) {
284-
result.value += keywordString.substring(0, keywordString.length - 1);
285-
inString = false;
286-
}
287-
} else {
288-
value += keywordString + ` `;
289-
}
290-
291-
value += `!`;
292-
});
293-
259+
let value = keywordStrings.join(` !`) + ` !`;
294260
let conditionalLine = 1;
295261

296262
if (value.length > 0) {
@@ -299,24 +265,45 @@ class DisplayFile {
299265
let inBrakcets = 0;
300266
let word = ``;
301267
let innerValue = ``;
268+
let inString = false;
302269

303270
for (let i = 0; i < value.length; i++) {
304271
switch (value[i]) {
272+
case `+`:
273+
case `-`:
274+
if (!inString) {
275+
innerValue += value[i];
276+
}
277+
break;
278+
305279
case `!`:
306-
if (inBrakcets > 0) {
280+
if (inBrakcets > 0 && !inString) {
307281
innerValue += value[i];
308282
} else {
309283
conditionalLine += 1;
310284
}
311285
break;
286+
287+
case `'`:
288+
if (inString) {
289+
inBrakcets = 0;
290+
inString = false;
291+
292+
result.value = innerValue;
293+
innerValue = ``;
294+
} else {
295+
inString = true;
296+
}
297+
break;
298+
312299
case `(`:
313300
inBrakcets++;
314301
break;
315302
case `)`:
316303
inBrakcets--;
317304
break;
318305
case ` `:
319-
if (inBrakcets > 0) {
306+
if (inBrakcets > 0 || inString) {
320307
innerValue += value[i];
321308
} else {
322309
if (word.length > 0) {
@@ -334,7 +321,7 @@ class DisplayFile {
334321
}
335322
break;
336323
default:
337-
if (inBrakcets > 0)
324+
if (inBrakcets > 0 || inString)
338325
innerValue += value[i];
339326
else
340327
word += value[i];

0 commit comments

Comments
 (0)