source: frontend/node_modules/@babel/eslint-parser/lib/convert/convertTokens.cjs

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 2 weeks ago

Fix frontend appearance

  • Property mode set to 100644
File size: 5.8 KB
RevLine 
[9af201e]1"use strict";
2
3const ESLINT_VERSION = require("../utils/eslint-version.cjs");
4function convertTemplateType(tokens, tl) {
5 let curlyBrace = null;
6 let templateTokens = [];
7 const result = [];
8 function addTemplateType() {
9 const start = templateTokens[0];
10 const end = templateTokens[templateTokens.length - 1];
11 const value = templateTokens.reduce((result, token) => {
12 if (token.value) {
13 result += token.value;
14 } else if (token.type.label !== tl.template) {
15 result += token.type.label;
16 }
17 return result;
18 }, "");
19 result.push({
20 type: "Template",
21 value: value,
22 start: start.start,
23 end: end.end,
24 loc: {
25 start: start.loc.start,
26 end: end.loc.end
27 }
28 });
29 templateTokens = [];
30 }
31 tokens.forEach(token => {
32 switch (token.type.label) {
33 case tl.backQuote:
34 if (curlyBrace) {
35 result.push(curlyBrace);
36 curlyBrace = null;
37 }
38 templateTokens.push(token);
39 if (templateTokens.length > 1) {
40 addTemplateType();
41 }
42 break;
43 case tl.dollarBraceL:
44 templateTokens.push(token);
45 addTemplateType();
46 break;
47 case tl.braceR:
48 if (curlyBrace) {
49 result.push(curlyBrace);
50 }
51 curlyBrace = token;
52 break;
53 case tl.template:
54 if (curlyBrace) {
55 templateTokens.push(curlyBrace);
56 curlyBrace = null;
57 }
58 templateTokens.push(token);
59 break;
60 default:
61 if (curlyBrace) {
62 result.push(curlyBrace);
63 curlyBrace = null;
64 }
65 result.push(token);
66 }
67 });
68 return result;
69}
70function convertToken(token, source, tl) {
71 const {
72 type
73 } = token;
74 const {
75 label
76 } = type;
77 const newToken = token;
78 newToken.range = [token.start, token.end];
79 if (label === tl.name) {
80 const tokenValue = token.value;
81 if (tokenValue === "let" || tokenValue === "static" || tokenValue === "yield") {
82 newToken.type = "Keyword";
83 } else {
84 newToken.type = "Identifier";
85 }
86 } else if (label === tl.semi || label === tl.comma || label === tl.parenL || label === tl.parenR || label === tl.braceL || label === tl.braceR || label === tl.slash || label === tl.dot || label === tl.bracketL || label === tl.bracketR || label === tl.ellipsis || label === tl.arrow || label === tl.pipeline || label === tl.star || label === tl.incDec || label === tl.colon || label === tl.question || label === tl.template || label === tl.backQuote || label === tl.dollarBraceL || label === tl.at || label === tl.logicalOR || label === tl.logicalAND || label === tl.nullishCoalescing || label === tl.bitwiseOR || label === tl.bitwiseXOR || label === tl.bitwiseAND || label === tl.equality || label === tl.relational || label === tl.bitShift || label === tl.plusMin || label === tl.modulo || label === tl.exponent || label === tl.bang || label === tl.tilde || label === tl.doubleColon || label === tl.hash || label === tl.questionDot || label === tl.braceHashL || label === tl.braceBarL || label === tl.braceBarR || label === tl.bracketHashL || label === tl.bracketBarL || label === tl.bracketBarR || label === tl.doubleCaret || label === tl.doubleAt || type.isAssign) {
87 var _newToken$value;
88 newToken.type = "Punctuator";
89 (_newToken$value = newToken.value) != null ? _newToken$value : newToken.value = label;
90 } else if (label === tl.jsxTagStart) {
91 newToken.type = "Punctuator";
92 newToken.value = "<";
93 } else if (label === tl.jsxTagEnd) {
94 newToken.type = "Punctuator";
95 newToken.value = ">";
96 } else if (label === tl.jsxName) {
97 newToken.type = "JSXIdentifier";
98 } else if (label === tl.jsxText) {
99 newToken.type = "JSXText";
100 } else if (type.keyword === "null") {
101 newToken.type = "Null";
102 } else if (type.keyword === "false" || type.keyword === "true") {
103 newToken.type = "Boolean";
104 } else if (type.keyword) {
105 newToken.type = "Keyword";
106 } else if (label === tl.num) {
107 newToken.type = "Numeric";
108 newToken.value = source.slice(token.start, token.end);
109 } else if (label === tl.string) {
110 newToken.type = "String";
111 newToken.value = source.slice(token.start, token.end);
112 } else if (label === tl.regexp) {
113 newToken.type = "RegularExpression";
114 const value = token.value;
115 newToken.regex = {
116 pattern: value.pattern,
117 flags: value.flags
118 };
119 newToken.value = `/${value.pattern}/${value.flags}`;
120 } else if (label === tl.bigint) {
121 newToken.type = "Numeric";
122 newToken.value = `${token.value}n`;
123 } else if (label === tl.privateName) {
124 newToken.type = "PrivateIdentifier";
125 } else if (label === tl.templateNonTail || label === tl.templateTail || label === tl.Template) {
126 newToken.type = "Template";
127 }
128 return newToken;
129}
130module.exports = function convertTokens(tokens, code, tokLabels) {
131 const result = [];
132 const templateTypeMergedTokens = convertTemplateType(tokens, tokLabels);
133 for (let i = 0, {
134 length
135 } = templateTypeMergedTokens; i < length - 1; i++) {
136 const token = templateTypeMergedTokens[i];
137 const tokenType = token.type;
138 if (tokenType === "CommentLine" || tokenType === "CommentBlock") {
139 continue;
140 }
141 if (ESLINT_VERSION >= 8 && i + 1 < length && tokenType.label === tokLabels.hash) {
142 const nextToken = templateTypeMergedTokens[i + 1];
143 if (nextToken.type.label === tokLabels.name && token.end === nextToken.start) {
144 i++;
145 nextToken.type = "PrivateIdentifier";
146 nextToken.start -= 1;
147 nextToken.loc.start.column -= 1;
148 nextToken.range = [nextToken.start, nextToken.end];
149 result.push(nextToken);
150 continue;
151 }
152 }
153 result.push(convertToken(token, code, tokLabels));
154 }
155 return result;
156};
157
158//# sourceMappingURL=convertTokens.cjs.map
Note: See TracBrowser for help on using the repository browser.