@f12io/maple-language-core 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/README.md +42 -0
  2. package/dist/LanguageService.d.ts +104 -0
  3. package/dist/LanguageService.js +16 -0
  4. package/dist/LanguageService.js.map +1 -0
  5. package/dist/extractor.helper.d.ts +66 -0
  6. package/dist/extractor.helper.js +319 -0
  7. package/dist/extractor.helper.js.map +1 -0
  8. package/dist/formatter.d.ts +26 -0
  9. package/dist/formatter.js +206 -0
  10. package/dist/formatter.js.map +1 -0
  11. package/dist/index.d.ts +15 -0
  12. package/dist/index.js +50 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/language-definitions.d.ts +9 -0
  15. package/dist/language-definitions.js +35 -0
  16. package/dist/language-definitions.js.map +1 -0
  17. package/dist/languages/AngularLanguageService.d.ts +6 -0
  18. package/dist/languages/AngularLanguageService.js +66 -0
  19. package/dist/languages/AngularLanguageService.js.map +1 -0
  20. package/dist/languages/BaseLanguageService.d.ts +80 -0
  21. package/dist/languages/BaseLanguageService.js +409 -0
  22. package/dist/languages/BaseLanguageService.js.map +1 -0
  23. package/dist/languages/HtmlLanguageService.d.ts +5 -0
  24. package/dist/languages/HtmlLanguageService.js +29 -0
  25. package/dist/languages/HtmlLanguageService.js.map +1 -0
  26. package/dist/languages/JavascriptLanguageService.d.ts +10 -0
  27. package/dist/languages/JavascriptLanguageService.js +95 -0
  28. package/dist/languages/JavascriptLanguageService.js.map +1 -0
  29. package/dist/languages/PhpLanguageService.d.ts +22 -0
  30. package/dist/languages/PhpLanguageService.js +242 -0
  31. package/dist/languages/PhpLanguageService.js.map +1 -0
  32. package/dist/languages/RazorLanguageService.d.ts +33 -0
  33. package/dist/languages/RazorLanguageService.js +338 -0
  34. package/dist/languages/RazorLanguageService.js.map +1 -0
  35. package/dist/languages/ReactLanguageService.d.ts +6 -0
  36. package/dist/languages/ReactLanguageService.js +31 -0
  37. package/dist/languages/ReactLanguageService.js.map +1 -0
  38. package/dist/languages/SvelteLanguageService.d.ts +9 -0
  39. package/dist/languages/SvelteLanguageService.js +65 -0
  40. package/dist/languages/SvelteLanguageService.js.map +1 -0
  41. package/dist/languages/TwigLanguageService.d.ts +4 -0
  42. package/dist/languages/TwigLanguageService.js +12 -0
  43. package/dist/languages/TwigLanguageService.js.map +1 -0
  44. package/dist/languages/VueLanguageService.d.ts +6 -0
  45. package/dist/languages/VueLanguageService.js +36 -0
  46. package/dist/languages/VueLanguageService.js.map +1 -0
  47. package/dist/regex.d.ts +63 -0
  48. package/dist/regex.js +92 -0
  49. package/dist/regex.js.map +1 -0
  50. package/dist/registry.d.ts +7 -0
  51. package/dist/registry.js +86 -0
  52. package/dist/registry.js.map +1 -0
  53. package/package.json +38 -0
@@ -0,0 +1,242 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PhpLanguageService = void 0;
4
+ const extractor_helper_1 = require("../extractor.helper");
5
+ const HtmlLanguageService_1 = require("./HtmlLanguageService");
6
+ class PhpLanguageService extends HtmlLanguageService_1.HtmlLanguageService {
7
+ constructor() {
8
+ super(...arguments);
9
+ this.languageIds = ['php'];
10
+ }
11
+ getMultilineStringDelimiters(rawQuote, content) {
12
+ // PHP string literals may legally contain raw newlines
13
+ if (rawQuote === "'" || rawQuote === '"') {
14
+ return { open: rawQuote, close: rawQuote };
15
+ }
16
+ return super.getMultilineStringDelimiters(rawQuote, content);
17
+ }
18
+ /**
19
+ * Finds the `?>` that closes a PHP block, skipping string literals so a
20
+ * `?>` inside '...' or "..." does not terminate the block early. Returns
21
+ * the index of the `?` or -1.
22
+ */
23
+ findPhpCloseTag(value, from) {
24
+ let i = from;
25
+ while (i < value.length) {
26
+ const stringEnd = this.skipStringAt(value, i);
27
+ if (stringEnd > i) {
28
+ i = stringEnd;
29
+ continue;
30
+ }
31
+ if (value[i] === '?' && value[i + 1] === '>') {
32
+ return i;
33
+ }
34
+ i++;
35
+ }
36
+ return -1;
37
+ }
38
+ formatInterpolation(cls, baseIndent, maxClassesPerLine, formatClassesFn) {
39
+ const ternaryResult = this.formatTernaryInterpolation(cls, baseIndent, maxClassesPerLine, formatClassesFn);
40
+ if (ternaryResult !== undefined) {
41
+ return ternaryResult;
42
+ }
43
+ return super.formatInterpolation(cls, baseIndent, maxClassesPerLine, formatClassesFn);
44
+ }
45
+ formatTernaryInterpolation(cls, baseIndent, maxClassesPerLine, formatClassesFn) {
46
+ const startIndex = cls.indexOf('<?');
47
+ if (startIndex === -1) {
48
+ return undefined;
49
+ }
50
+ const end = this.findPhpCloseTag(cls, startIndex + 2);
51
+ if (end === -1) {
52
+ return undefined;
53
+ }
54
+ const prefix = cls.substring(0, startIndex);
55
+ const suffix = cls.substring(end + 2);
56
+ // Strip open tag: <?= or <?php or <?
57
+ let openTag = '<?';
58
+ let innerExpr = cls.substring(startIndex + 2, end);
59
+ if (innerExpr.startsWith('=')) {
60
+ openTag = '<?=';
61
+ innerExpr = innerExpr.slice(1);
62
+ }
63
+ else if (innerExpr.startsWith('php')) {
64
+ openTag = '<?php';
65
+ innerExpr = innerExpr.slice(3);
66
+ }
67
+ innerExpr = innerExpr.trim();
68
+ const formattedExpr = this.formatExpression(innerExpr, baseIndent, maxClassesPerLine, formatClassesFn);
69
+ if (formattedExpr === undefined)
70
+ return undefined;
71
+ return prefix + openTag + ' ' + formattedExpr + ' ?>' + suffix;
72
+ }
73
+ formatExpression(expr, baseIndent, maxClassesPerLine, formatClassesFn) {
74
+ const ternary = this.parseTernaryArms(expr);
75
+ if (!ternary)
76
+ return undefined;
77
+ const exprIndent = baseIndent + ' ';
78
+ const formattedConsequent = this.formatPhpArm(ternary.consequent.trim(), exprIndent, maxClassesPerLine, formatClassesFn);
79
+ const formattedAlternate = this.formatPhpArm(ternary.alternate.trim(), exprIndent, maxClassesPerLine, formatClassesFn);
80
+ if (formattedConsequent === undefined || formattedAlternate === undefined) {
81
+ return undefined;
82
+ }
83
+ // Always return the reconstructed ternary to enforce consistent spacing
84
+ return (ternary.condition +
85
+ ' ? ' +
86
+ formattedConsequent +
87
+ ' : ' +
88
+ formattedAlternate);
89
+ }
90
+ formatPhpArm(arm, exprIndent, maxClassesPerLine, formatClassesFn) {
91
+ const segments = this.parsePhpConcatenation(arm);
92
+ if (segments.length === 0)
93
+ return undefined;
94
+ // Build virtual template replacing expressions with placeholders
95
+ let virtualTemplate = '';
96
+ const expressions = [];
97
+ for (const segment of segments) {
98
+ if (segment.type === 'string') {
99
+ virtualTemplate += segment.content;
100
+ }
101
+ else {
102
+ const placeholder = `__PHPEXPR${expressions.length}__`;
103
+ expressions.push(segment.value);
104
+ virtualTemplate += placeholder;
105
+ }
106
+ }
107
+ const formatted = formatClassesFn(virtualTemplate, exprIndent, maxClassesPerLine);
108
+ if (!formatted.includes('\n')) {
109
+ return arm; // No expansion needed
110
+ }
111
+ // Reconstruct PHP concatenation from formatted template
112
+ const quoteChar = segments.find((s) => s.type === 'string')?.quoteChar || "'";
113
+ if (expressions.length === 0) {
114
+ // Simple string, wrap in quotes
115
+ return quoteChar + formatted + quoteChar;
116
+ }
117
+ return this.reconstructPhpConcatenation(formatted, expressions, quoteChar);
118
+ }
119
+ reconstructPhpConcatenation(formatted, expressions, quoteChar) {
120
+ const parts = [];
121
+ let remaining = formatted;
122
+ for (let i = 0; i < expressions.length; i++) {
123
+ const placeholder = `__PHPEXPR${i}__`;
124
+ const idx = remaining.indexOf(placeholder);
125
+ if (idx === -1)
126
+ return ''; // error fallback
127
+ const before = remaining.substring(0, idx);
128
+ remaining = remaining.substring(idx + placeholder.length);
129
+ // Wrap the string part in quotes (even if empty — will be filtered)
130
+ parts.push(quoteChar + before + quoteChar);
131
+ parts.push(expressions[i]);
132
+ }
133
+ if (remaining && remaining.trim().length > 0) {
134
+ parts.push(quoteChar + remaining + quoteChar);
135
+ }
136
+ // Filter out completely empty strings "''" or '""'
137
+ const filteredParts = parts.filter((p) => p !== "''" && p !== '""' && p !== '');
138
+ return filteredParts.join(' . ');
139
+ }
140
+ parsePhpConcatenation(arm) {
141
+ const segments = [];
142
+ let i = 0;
143
+ const str = arm.trim();
144
+ while (i < str.length) {
145
+ // Skip whitespace
146
+ while (i < str.length && str[i].trim() === '')
147
+ i++;
148
+ if (i >= str.length)
149
+ break;
150
+ // Skip concatenation operator
151
+ if (str[i] === '.') {
152
+ i++;
153
+ continue;
154
+ }
155
+ const ch = str[i];
156
+ if (ch === "'" || ch === '"') {
157
+ const quoteChar = ch;
158
+ const start = i;
159
+ i = (0, extractor_helper_1.skipStringLiteral)(str, i);
160
+ const value = str.substring(start, i);
161
+ const content = str.substring(start + 1, i - 1);
162
+ segments.push({ type: 'string', value, content, quoteChar });
163
+ }
164
+ else if (ch === '(') {
165
+ // Parenthesized expression
166
+ const start = i;
167
+ let depth = 1;
168
+ i++;
169
+ while (i < str.length && depth > 0) {
170
+ if (str[i] === "'" || str[i] === '"') {
171
+ i = (0, extractor_helper_1.skipStringLiteral)(str, i);
172
+ continue;
173
+ }
174
+ if (str[i] === '(')
175
+ depth++;
176
+ else if (str[i] === ')')
177
+ depth--;
178
+ if (depth > 0)
179
+ i++;
180
+ }
181
+ if (i < str.length)
182
+ i++; // skip closing )
183
+ const value = str.substring(start, i).trim();
184
+ if (value.length > 0) {
185
+ segments.push({ type: 'expression', value, content: value });
186
+ }
187
+ }
188
+ else {
189
+ // Variable or function call
190
+ const start = i;
191
+ while (i < str.length && str[i] !== '.' && str[i].trim() !== '') {
192
+ if (str[i] === '(') {
193
+ let depth = 1;
194
+ i++;
195
+ while (i < str.length && depth > 0) {
196
+ if (str[i] === '(')
197
+ depth++;
198
+ else if (str[i] === ')')
199
+ depth--;
200
+ i++;
201
+ }
202
+ }
203
+ else {
204
+ i++;
205
+ }
206
+ }
207
+ const value = str.substring(start, i).trim();
208
+ if (value.length > 0) {
209
+ segments.push({ type: 'expression', value, content: value });
210
+ }
211
+ }
212
+ }
213
+ return segments;
214
+ }
215
+ parseInterpolation(value, index, context) {
216
+ // PHP interpolation: <? ... ?>
217
+ if (value.substring(index, index + 2) === '<?') {
218
+ const phpEnd = this.findPhpCloseTag(value, index + 2);
219
+ if (phpEnd !== -1) {
220
+ return {
221
+ innerExprStart: index + 2,
222
+ innerExprEnd: phpEnd,
223
+ endIndex: phpEnd + 2,
224
+ };
225
+ }
226
+ }
227
+ // Internal placeholder for PHP concatenation expressions
228
+ if (value.substring(index, index + 9) === '__PHPEXPR') {
229
+ const match = /^__PHPEXPR\d+__/.exec(value.substring(index));
230
+ if (match) {
231
+ return {
232
+ innerExprStart: index,
233
+ innerExprEnd: index + match[0].length,
234
+ endIndex: index + match[0].length,
235
+ };
236
+ }
237
+ }
238
+ return super.parseInterpolation(value, index, context);
239
+ }
240
+ }
241
+ exports.PhpLanguageService = PhpLanguageService;
242
+ //# sourceMappingURL=PhpLanguageService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PhpLanguageService.js","sourceRoot":"","sources":["../../src/languages/PhpLanguageService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { StringLiteralMatch } from '../LanguageService';
2
+ import { InterpolationContext, InterpolationMatch } from './BaseLanguageService';
3
+ import { HtmlLanguageService } from './HtmlLanguageService';
4
+ export declare class RazorLanguageService extends HtmlLanguageService {
5
+ languageIds: string[];
6
+ getRenderedClassText(word: string): string;
7
+ getMultilineStringDelimiters(rawQuote: string, content: string): {
8
+ open: string;
9
+ close: string;
10
+ } | undefined;
11
+ matchStringLiteral(text: string, index: number): StringLiteralMatch | undefined;
12
+ protected skipStringAt(expr: string, index: number): number;
13
+ /**
14
+ * Scans a C# interpolated string starting just after its opening quote and
15
+ * returns the index after the closing quote. Handles `{expr}` holes with
16
+ * nested strings, `{{`/`}}` brace escapes, backslash escapes (non-verbatim)
17
+ * and `""` quote escapes (verbatim).
18
+ */
19
+ private skipCSharpInterpolatedString;
20
+ private extractCSharpStringContent;
21
+ formatInterpolation(cls: string, baseIndent: string, maxClassesPerLine: number, formatClassesFn: (value: string, indent: string, maxClasses: number) => string): string;
22
+ /**
23
+ * Upgrades C# interpolated strings ($"...") to verbatim interpolated
24
+ * strings ($@"...") only when formatting actually injected newlines into
25
+ * them, because standard interpolated strings cannot contain unescaped
26
+ * newlines. Strings the formatter left single-line keep their original
27
+ * form (and their escape semantics).
28
+ */
29
+ private upgradeMultilineInterpolatedStrings;
30
+ private formatTernaryInterpolation;
31
+ formatExpression(expr: string, baseIndent: string, maxClassesPerLine: number, formatClassesFn: (value: string, indent: string, maxClasses: number) => string): string | undefined;
32
+ protected parseInterpolation(value: string, index: number, context?: InterpolationContext): InterpolationMatch | undefined;
33
+ }
@@ -0,0 +1,338 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RazorLanguageService = void 0;
4
+ const extractor_helper_1 = require("../extractor.helper");
5
+ const HtmlLanguageService_1 = require("./HtmlLanguageService");
6
+ const IMPLICIT_EXPR_START_REGEX = /^@[a-zA-Z_]\w*/;
7
+ const MEMBER_ACCESS_REGEX = /^\.\w+/;
8
+ class RazorLanguageService extends HtmlLanguageService_1.HtmlLanguageService {
9
+ constructor() {
10
+ super(...arguments);
11
+ this.languageIds = ['razor', 'aspnetcorerazor'];
12
+ }
13
+ getRenderedClassText(word) {
14
+ // Razor renders the @@ escape as a single literal @
15
+ return word.replace(/@@/g, '@');
16
+ }
17
+ getMultilineStringDelimiters(rawQuote, content) {
18
+ // Only verbatim C# strings can hold newlines. Upgrading is unsafe when
19
+ // the content has backslash escapes (verbatim strings don't process them).
20
+ if (content.includes('\\'))
21
+ return undefined;
22
+ if (rawQuote === '$"' || rawQuote === '$@"') {
23
+ return { open: '$@"', close: '"' };
24
+ }
25
+ if (rawQuote === '"') {
26
+ return { open: '@"', close: '"' };
27
+ }
28
+ return undefined;
29
+ }
30
+ matchStringLiteral(text, index) {
31
+ if (text[index] === '$') {
32
+ if (text[index + 1] === '"') {
33
+ const end = this.skipCSharpInterpolatedString(text, index + 2, false);
34
+ if (end < index + 3 || text[end - 1] !== '"')
35
+ return undefined;
36
+ return {
37
+ start: index,
38
+ contentStart: index + 2,
39
+ contentEnd: end - 1,
40
+ endIndex: end,
41
+ rawDelimiter: '$"',
42
+ isInterpolated: true,
43
+ };
44
+ }
45
+ if (text[index + 1] === '@' && text[index + 2] === '"') {
46
+ const end = this.skipCSharpInterpolatedString(text, index + 3, true);
47
+ if (end < index + 4 || text[end - 1] !== '"')
48
+ return undefined;
49
+ return {
50
+ start: index,
51
+ contentStart: index + 3,
52
+ contentEnd: end - 1,
53
+ endIndex: end,
54
+ rawDelimiter: '$@"',
55
+ isInterpolated: true,
56
+ };
57
+ }
58
+ }
59
+ return super.matchStringLiteral(text, index);
60
+ }
61
+ skipStringAt(expr, index) {
62
+ const ch = expr[index];
63
+ // C# interpolated string: $"..." or $@"..."
64
+ if (ch === '$') {
65
+ if (expr[index + 1] === '"') {
66
+ return this.skipCSharpInterpolatedString(expr, index + 2, false);
67
+ }
68
+ if (expr[index + 1] === '@' && expr[index + 2] === '"') {
69
+ return this.skipCSharpInterpolatedString(expr, index + 3, true);
70
+ }
71
+ }
72
+ return super.skipStringAt(expr, index);
73
+ }
74
+ /**
75
+ * Scans a C# interpolated string starting just after its opening quote and
76
+ * returns the index after the closing quote. Handles `{expr}` holes with
77
+ * nested strings, `{{`/`}}` brace escapes, backslash escapes (non-verbatim)
78
+ * and `""` quote escapes (verbatim).
79
+ */
80
+ skipCSharpInterpolatedString(expr, contentStart, isVerbatim) {
81
+ let j = contentStart;
82
+ let braceDepth = 0;
83
+ while (j < expr.length) {
84
+ const c = expr[j];
85
+ if (braceDepth === 0) {
86
+ if (c === '{' && expr[j + 1] === '{') {
87
+ j += 2; // escaped literal brace
88
+ continue;
89
+ }
90
+ if (c === '}' && expr[j + 1] === '}') {
91
+ j += 2; // escaped literal brace
92
+ continue;
93
+ }
94
+ if (c === '{') {
95
+ braceDepth++;
96
+ j++;
97
+ continue;
98
+ }
99
+ if (!isVerbatim && c === '\\') {
100
+ j += 2; // backslash escape (\", \\, \n, ...)
101
+ continue;
102
+ }
103
+ if (isVerbatim && c === '"' && expr[j + 1] === '"') {
104
+ j += 2; // verbatim quote escape
105
+ continue;
106
+ }
107
+ if (c === '"') {
108
+ return j + 1; // closing quote
109
+ }
110
+ }
111
+ else {
112
+ if (c === '{') {
113
+ braceDepth++;
114
+ }
115
+ else if (c === '}') {
116
+ braceDepth--;
117
+ }
118
+ else if (c === '"' || c === "'") {
119
+ // Nested string inside an interpolation hole
120
+ j = (0, extractor_helper_1.skipStringLiteral)(expr, j);
121
+ continue;
122
+ }
123
+ }
124
+ j++;
125
+ }
126
+ return expr.length;
127
+ }
128
+ extractCSharpStringContent(str) {
129
+ if (str.startsWith('$@"') && str.endsWith('"')) {
130
+ return str.slice(3, -1);
131
+ }
132
+ if (str.startsWith('$"') && str.endsWith('"')) {
133
+ return str.slice(2, -1);
134
+ }
135
+ if (str.startsWith('"') && str.endsWith('"') && str.length >= 2) {
136
+ return str.slice(1, -1);
137
+ }
138
+ return undefined;
139
+ }
140
+ formatInterpolation(cls, baseIndent, maxClassesPerLine, formatClassesFn) {
141
+ // Try ternary expansion for @(...) expressions
142
+ const ternaryResult = this.formatTernaryInterpolation(cls, baseIndent, maxClassesPerLine, formatClassesFn);
143
+ if (ternaryResult !== undefined) {
144
+ return ternaryResult;
145
+ }
146
+ const formatted = super.formatInterpolation(cls, baseIndent, maxClassesPerLine, formatClassesFn);
147
+ if (formatted === cls)
148
+ return formatted;
149
+ return this.upgradeMultilineInterpolatedStrings(formatted);
150
+ }
151
+ /**
152
+ * Upgrades C# interpolated strings ($"...") to verbatim interpolated
153
+ * strings ($@"...") only when formatting actually injected newlines into
154
+ * them, because standard interpolated strings cannot contain unescaped
155
+ * newlines. Strings the formatter left single-line keep their original
156
+ * form (and their escape semantics).
157
+ */
158
+ upgradeMultilineInterpolatedStrings(formatted) {
159
+ let result = '';
160
+ let i = 0;
161
+ while (i < formatted.length) {
162
+ if (formatted[i] === '$' && formatted[i + 1] === '"') {
163
+ const end = this.skipCSharpInterpolatedString(formatted, i + 2, false);
164
+ const segment = formatted.substring(i, end);
165
+ result += segment.includes('\n') ? '$@' + segment.substring(1) : segment;
166
+ i = end;
167
+ continue;
168
+ }
169
+ result += formatted[i];
170
+ i++;
171
+ }
172
+ return result;
173
+ }
174
+ formatTernaryInterpolation(cls, baseIndent, maxClassesPerLine, formatClassesFn) {
175
+ const startIndex = cls.indexOf('@(');
176
+ if (startIndex === -1)
177
+ return undefined;
178
+ const end = this.parseBalanced(cls, startIndex + 1);
179
+ if (end === -1)
180
+ return undefined;
181
+ const prefix = cls.substring(0, startIndex);
182
+ const suffix = cls.substring(end);
183
+ const innerExpr = cls.substring(startIndex + 2, end - 1);
184
+ const formattedExpr = this.formatExpression(innerExpr, baseIndent, maxClassesPerLine, formatClassesFn);
185
+ if (formattedExpr === undefined)
186
+ return undefined;
187
+ return prefix + '@(' + formattedExpr + ')' + suffix;
188
+ }
189
+ formatExpression(expr, baseIndent, maxClassesPerLine, formatClassesFn) {
190
+ const ternary = this.parseTernaryArms(expr);
191
+ if (!ternary)
192
+ return undefined;
193
+ const consequentStr = ternary.consequent.trim();
194
+ const alternateStr = ternary.alternate.trim();
195
+ // Reconstructing the ternary rewrites both arms as verbatim strings
196
+ // ($@"..."), which changes what backslash escapes mean. Bail out when a
197
+ // non-verbatim arm contains escapes so we never alter runtime values.
198
+ if ((consequentStr.startsWith('$"') && consequentStr.includes('\\')) ||
199
+ (alternateStr.startsWith('$"') && alternateStr.includes('\\'))) {
200
+ return undefined;
201
+ }
202
+ const consequentContent = this.extractCSharpStringContent(consequentStr);
203
+ const alternateContent = this.extractCSharpStringContent(alternateStr);
204
+ if (consequentContent === undefined || alternateContent === undefined) {
205
+ return undefined;
206
+ }
207
+ const exprIndent = baseIndent + ' ';
208
+ const formattedConsequent = formatClassesFn(consequentContent, exprIndent, maxClassesPerLine);
209
+ const formattedAlternate = formatClassesFn(alternateContent, exprIndent, maxClassesPerLine);
210
+ // Always return the reconstructed ternary to enforce consistent spacing (e.g., spaces around `?` and `:`)
211
+ // Determine string prefix: use $@" for interpolated strings
212
+ const consequentIsInterpolated = consequentStr.startsWith('$"') || consequentStr.startsWith('$@"');
213
+ const alternateIsInterpolated = alternateStr.startsWith('$"') || alternateStr.startsWith('$@"');
214
+ const consequentPrefix = consequentIsInterpolated ? '$@' : '';
215
+ const alternatePrefix = alternateIsInterpolated ? '$@' : '';
216
+ return (ternary.condition +
217
+ ' ? ' +
218
+ consequentPrefix +
219
+ '"' +
220
+ formattedConsequent +
221
+ '" : ' +
222
+ alternatePrefix +
223
+ '"' +
224
+ formattedAlternate +
225
+ '"');
226
+ }
227
+ parseInterpolation(value, index, context) {
228
+ // Escaped transition: @@ renders a single literal '@' — never the start
229
+ // of an expression.
230
+ if (value[index] === '@' && value[index + 1] === '@') {
231
+ return {
232
+ innerExprStart: index,
233
+ innerExprEnd: index + 2,
234
+ endIndex: index + 2,
235
+ isLiteral: true,
236
+ };
237
+ }
238
+ // Razor interpolation: @(...)
239
+ if (value.substring(index, index + 2) === '@(') {
240
+ const end = this.parseBalanced(value, index + 1);
241
+ if (end !== -1) {
242
+ return {
243
+ innerExprStart: index + 2,
244
+ innerExprEnd: end - 1,
245
+ endIndex: end,
246
+ };
247
+ }
248
+ }
249
+ // Razor implicit expression: @identifier followed by any chain of
250
+ // member accesses, method calls, or indexers (@Model.Css, @Get(x)[0])
251
+ if (value[index] === '@' &&
252
+ value[index + 1] !== '@' &&
253
+ value[index + 1] !== '(') {
254
+ const match = IMPLICIT_EXPR_START_REGEX.exec(value.substring(index));
255
+ if (match) {
256
+ let end = index + match[0].length;
257
+ for (;;) {
258
+ if (value[end] === '.' && MEMBER_ACCESS_REGEX.test(value.substring(end))) {
259
+ const memberMatch = MEMBER_ACCESS_REGEX.exec(value.substring(end));
260
+ end += memberMatch[0].length;
261
+ continue;
262
+ }
263
+ if (value[end] === '(' || value[end] === '[') {
264
+ const balancedEnd = this.parseBalanced(value, end);
265
+ if (balancedEnd === -1)
266
+ break;
267
+ end = balancedEnd;
268
+ continue;
269
+ }
270
+ break;
271
+ }
272
+ return {
273
+ innerExprStart: index + 1,
274
+ innerExprEnd: end,
275
+ endIndex: end,
276
+ };
277
+ }
278
+ }
279
+ // Inside a non-verbatim C# interpolated string, backslash escapes are
280
+ // processed at runtime: \t, \n etc. render as whitespace (separating
281
+ // classes), while \\ and \" render as literal characters. Verbatim
282
+ // strings ($@") treat backslashes literally, so only $" applies.
283
+ if (context?.stringDelimiter === '$"' && value[index] === '\\') {
284
+ const next = value[index + 1] ?? '';
285
+ if (/[tnrfv0]/.test(next)) {
286
+ // Whitespace escape — acts as a class separator, contains no expression
287
+ return {
288
+ innerExprStart: index,
289
+ innerExprEnd: index,
290
+ endIndex: index + 2,
291
+ };
292
+ }
293
+ // Any other escape stays attached to the surrounding token verbatim
294
+ return {
295
+ innerExprStart: index,
296
+ innerExprEnd: index + 2,
297
+ endIndex: index + 2,
298
+ isLiteral: true,
299
+ };
300
+ }
301
+ // Braces are expression holes inside C# interpolated strings
302
+ // ($"w-{width}"); in plain Razor markup they are literal text. When no
303
+ // context is available (tokenization of already-extracted values) treat
304
+ // them as holes so brace expressions stay grouped in one token.
305
+ const inInterpolatedString = context?.stringDelimiter === '$"' || context?.stringDelimiter === '$@"';
306
+ if (!context || inInterpolatedString) {
307
+ if (value[index] === '{' && value[index + 1] === '{') {
308
+ return {
309
+ innerExprStart: index,
310
+ innerExprEnd: index + 2,
311
+ endIndex: index + 2,
312
+ isLiteral: true,
313
+ };
314
+ }
315
+ if (value[index] === '}' && value[index + 1] === '}') {
316
+ return {
317
+ innerExprStart: index,
318
+ innerExprEnd: index + 2,
319
+ endIndex: index + 2,
320
+ isLiteral: true,
321
+ };
322
+ }
323
+ if (value[index] === '{') {
324
+ const end = this.parseBalanced(value, index);
325
+ if (end !== -1) {
326
+ return {
327
+ innerExprStart: index + 1,
328
+ innerExprEnd: end - 1,
329
+ endIndex: end,
330
+ };
331
+ }
332
+ }
333
+ }
334
+ return super.parseInterpolation(value, index, context);
335
+ }
336
+ }
337
+ exports.RazorLanguageService = RazorLanguageService;
338
+ //# sourceMappingURL=RazorLanguageService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RazorLanguageService.js","sourceRoot":"","sources":["../../src/languages/RazorLanguageService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { MapleRegion } from '../LanguageService';
2
+ import { JavascriptLanguageService } from './JavascriptLanguageService';
3
+ export declare class ReactLanguageService extends JavascriptLanguageService {
4
+ languageIds: string[];
5
+ collectRegions(text: string): Array<MapleRegion>;
6
+ }