summaryrefslogtreecommitdiff
path: root/tools/node_modules/eslint/node_modules/strip-json-comments/index.js
diff options
context:
space:
mode:
authorcjihrig <cjihrig@gmail.com>2019-07-21 00:15:32 -0400
committerRich Trott <rtrott@gmail.com>2019-07-22 22:32:11 -0700
commite5736d817c93ff9ac88c24d9e6a247a0f057a266 (patch)
treeca899e9f333880f500f060c424d37992b2b63fd2 /tools/node_modules/eslint/node_modules/strip-json-comments/index.js
parent9949fbda469e70acc45975f5e50eedd2a3cde57d (diff)
downloadandroid-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.js69
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));
};