diff options
author | cjihrig <cjihrig@gmail.com> | 2019-07-21 00:15:32 -0400 |
---|---|---|
committer | Rich Trott <rtrott@gmail.com> | 2019-07-22 22:32:11 -0700 |
commit | e5736d817c93ff9ac88c24d9e6a247a0f057a266 (patch) | |
tree | ca899e9f333880f500f060c424d37992b2b63fd2 /tools/node_modules/eslint/node_modules/strip-json-comments/index.js | |
parent | 9949fbda469e70acc45975f5e50eedd2a3cde57d (diff) | |
download | android-node-v8-e5736d817c93ff9ac88c24d9e6a247a0f057a266.tar.gz android-node-v8-e5736d817c93ff9ac88c24d9e6a247a0f057a266.tar.bz2 android-node-v8-e5736d817c93ff9ac88c24d9e6a247a0f057a266.zip |
tools: update ESLint to 6.1.0
Update ESLint to 6.1.0
PR-URL: https://github.com/nodejs/node/pull/28793
Reviewed-By: Yongsheng Zhang <zyszys98@gmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Diffstat (limited to 'tools/node_modules/eslint/node_modules/strip-json-comments/index.js')
-rw-r--r-- | tools/node_modules/eslint/node_modules/strip-json-comments/index.js | 69 |
1 files changed, 36 insertions, 33 deletions
diff --git a/tools/node_modules/eslint/node_modules/strip-json-comments/index.js b/tools/node_modules/eslint/node_modules/strip-json-comments/index.js index 4e6576e6d3..c37da3de24 100644 --- a/tools/node_modules/eslint/node_modules/strip-json-comments/index.js +++ b/tools/node_modules/eslint/node_modules/strip-json-comments/index.js @@ -1,32 +1,35 @@ 'use strict'; -var singleComment = 1; -var multiComment = 2; +const singleComment = Symbol('singleComment'); +const multiComment = Symbol('multiComment'); +const stripWithoutWhitespace = () => ''; +const stripWithWhitespace = (string, start, end) => string.slice(start, end).replace(/\S/g, ' '); -function stripWithoutWhitespace() { - return ''; -} +const isEscaped = (jsonString, quotePosition) => { + let index = quotePosition - 1; + let backslashCount = 0; -function stripWithWhitespace(str, start, end) { - return str.slice(start, end).replace(/\S/g, ' '); -} + while (jsonString[index] === '\\') { + index -= 1; + backslashCount += 1; + } + + return Boolean(backslashCount % 2); +}; -module.exports = function (str, opts) { - opts = opts || {}; +module.exports = (jsonString, options = {}) => { + const strip = options.whitespace === false ? stripWithoutWhitespace : stripWithWhitespace; - var currentChar; - var nextChar; - var insideString = false; - var insideComment = false; - var offset = 0; - var ret = ''; - var strip = opts.whitespace === false ? stripWithoutWhitespace : stripWithWhitespace; + let insideString = false; + let insideComment = false; + let offset = 0; + let result = ''; - for (var i = 0; i < str.length; i++) { - currentChar = str[i]; - nextChar = str[i + 1]; + for (let i = 0; i < jsonString.length; i++) { + const currentCharacter = jsonString[i]; + const nextCharacter = jsonString[i + 1]; - if (!insideComment && currentChar === '"') { - var escaped = str[i - 1] === '\\' && str[i - 2] !== '\\'; + if (!insideComment && currentCharacter === '"') { + const escaped = isEscaped(jsonString, i); if (!escaped) { insideString = !insideString; } @@ -36,35 +39,35 @@ module.exports = function (str, opts) { continue; } - if (!insideComment && currentChar + nextChar === '//') { - ret += str.slice(offset, i); + if (!insideComment && currentCharacter + nextCharacter === '//') { + result += jsonString.slice(offset, i); offset = i; insideComment = singleComment; i++; - } else if (insideComment === singleComment && currentChar + nextChar === '\r\n') { + } else if (insideComment === singleComment && currentCharacter + nextCharacter === '\r\n') { i++; insideComment = false; - ret += strip(str, offset, i); + result += strip(jsonString, offset, i); offset = i; continue; - } else if (insideComment === singleComment && currentChar === '\n') { + } else if (insideComment === singleComment && currentCharacter === '\n') { insideComment = false; - ret += strip(str, offset, i); + result += strip(jsonString, offset, i); offset = i; - } else if (!insideComment && currentChar + nextChar === '/*') { - ret += str.slice(offset, i); + } else if (!insideComment && currentCharacter + nextCharacter === '/*') { + result += jsonString.slice(offset, i); offset = i; insideComment = multiComment; i++; continue; - } else if (insideComment === multiComment && currentChar + nextChar === '*/') { + } else if (insideComment === multiComment && currentCharacter + nextCharacter === '*/') { i++; insideComment = false; - ret += strip(str, offset, i + 1); + result += strip(jsonString, offset, i + 1); offset = i + 1; continue; } } - return ret + (insideComment ? strip(str.substr(offset)) : str.substr(offset)); + return result + (insideComment ? strip(jsonString.slice(offset)) : jsonString.slice(offset)); }; |