Skip to content

Commit

Permalink
Merge pull request #599 from metrico/fix/597
Browse files Browse the repository at this point in the history
fix #597
  • Loading branch information
akvlad authored Nov 13, 2024
2 parents 15e3dc0 + a65bcfc commit 42dd1e3
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 23 deletions.
31 changes: 11 additions & 20 deletions parser/bnf.js
Original file line number Diff line number Diff line change
Expand Up @@ -81,32 +81,23 @@ compiler.ParseScript = function (script) {
const aqLiterals = []
let _script = script
let res = ''
let qsMatch = _script.match(/^([^"]*)("([^"\\]|\\.)*")?/)
const re = /^([^"`]*)("(([^"\\]|\\.)*)"|`(([^`\\]|\\.)*)`)?/
let qsMatch = _script.match(re)
while (qsMatch && qsMatch[0]) {
let repl = qsMatch[2] || ''
let repl = qsMatch[2] || qsMatch[4] || ''
if (repl.length > 512) {
qLiterals.push(repl)
repl = `"QL_${qLiterals.length - 1}"`
if (repl.startsWith('"')) {
qLiterals.push(repl)
repl = `"QL_${qLiterals.length - 1}"`
} else {
aqLiterals.push(repl)
repl = `\`AL_${aqLiterals.length - 1}\``
}
}
res = res + qsMatch[1] + repl
_script = _script.slice(qsMatch[0].length)
qsMatch = _script.match(/^([^"]*)("([^"\\]|\\.)*")?/)
qsMatch = _script.match(re)
}

_script = res
res = ''
qsMatch = _script.match(/^([^`]*)(`([^`\\]|\\.)*`)?/)
while (qsMatch && qsMatch[0]) {
let repl = qsMatch[2] || ''
if (repl.length > 512) {
aqLiterals.push(repl)
repl = `\`AL_${qLiterals.length - 1}\``
}
res = res + qsMatch[1] + repl
_script = _script.slice(qsMatch[0].length)
qsMatch = _script.match(/^([^`]*)(`([^`\\]|\\.)*`)?/)
}

const parsedScript = this._ParseScript(res)
if (!parsedScript) {
return parsedScript
Expand Down
8 changes: 5 additions & 3 deletions parser/registry/common.js
Original file line number Diff line number Diff line change
Expand Up @@ -85,9 +85,11 @@ module.exports.querySelectorPostProcess = (query) => {
* @returns {string}
*/
module.exports.unquoteToken = (token) => {
let value = token.Child('quoted_str').value
value = `"${value.substr(1, value.length - 2)}"`
return JSON.parse(value)
const value = token.Child('quoted_str').value
if (value.startsWith('"')) {
return JSON.parse(value)
}
return value.substr(1, value.length - 2)
}

/**
Expand Down

0 comments on commit 42dd1e3

Please sign in to comment.