Skip to content

Commit 19a9048

Browse files
authored
Merge pull request #15 from romanresh/master
Support code blocks, fix csharp reference
2 parents 2ec3532 + 235a4ec commit 19a9048

File tree

4 files changed

+45
-23
lines changed

4 files changed

+45
-23
lines changed

cshtml-razor.js

Lines changed: 30 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,10 @@ function getXmlBlocks(hljs, additional_blocks) {
1717
var string = {
1818
className: 'string',
1919
variants: [
20-
{ begin: /"/, end: /"/ },
21-
{ begin: /'/, end: /'/ },
20+
{ begin: /"/, end: /"/, contains: additional_blocks },
21+
{ begin: /'/, end: /'/, contains: additional_blocks },
2222
{ begin: /[^\s"'=<>`]+/ }
23-
],
24-
contains: additional_blocks
23+
]
2524
};
2625
var xml_tag_internal = {
2726
endsWithParent: true,
@@ -101,6 +100,12 @@ function hljsDefineCshtmlRazor(hljs) {
101100
end: "}",
102101
contains: [hljs.QUOTE_STRING_MODE, 'self']
103102
};
103+
var csbraces = {
104+
begin: "{",
105+
end: "}",
106+
contains: ['self'],
107+
skip: true
108+
};
104109
var razor_comment = hljs.COMMENT(
105110
'@\\*',
106111
'\\*@',
@@ -109,10 +114,10 @@ function hljsDefineCshtmlRazor(hljs) {
109114
}
110115
);
111116
var razor_inline_expresion = {
112-
begin: "@[a-zA-Z]+",
117+
begin: '@[A-Za-z0-9\\._:-]+',
113118
returnBegin: true,
114-
subLanguage: 'csharp',
115119
end: "(\\r|\\n|<|\\s|\"|')",
120+
subLanguage: 'cs',
116121
contains: [
117122
{
118123
begin: '@',
@@ -160,7 +165,7 @@ function hljsDefineCshtmlRazor(hljs) {
160165
end: "\\)",
161166
returnBegin: true,
162167
returnEnd: true,
163-
subLanguage: "csharp",
168+
subLanguage: 'cs',
164169
contains: [
165170
{
166171
begin: "@\\(",
@@ -169,7 +174,7 @@ function hljsDefineCshtmlRazor(hljs) {
169174
{
170175
begin: "\\(",
171176
end: "\\)",
172-
subLanguage: 'csharp',
177+
subLanguage: 'cs',
173178
contains: [hljs.QUOTE_STRING_MODE, 'self', razor_text_block]
174179
},
175180
razor_text_block,
@@ -193,7 +198,7 @@ function hljsDefineCshtmlRazor(hljs) {
193198
},
194199
{
195200
variants: [
196-
{ begin: "\\r|\\n", endsParent: true},
201+
{ begin: "\\r|\\n", endsParent: true },
197202
{ begin: "\\s[^\\r\\n]+", end: "$" },
198203
{ begin: "$" }
199204
],
@@ -202,18 +207,22 @@ function hljsDefineCshtmlRazor(hljs) {
202207
}
203208
]
204209
};
210+
var cs_code_block_variants = [
211+
{ begin: "@\\{", end: "}" },
212+
{ begin: "@code\\s*\\{", end: "}" }
213+
];
205214
var razor_block = {
206-
begin: "@\\{",
215+
variants: cs_code_block_variants,
207216
returnBegin: true,
208217
returnEnd: true,
209-
end: "\\}",
210-
subLanguage: 'csharp',
218+
subLanguage: 'cs',
211219
contains: [
212220
{
213-
begin: "@\\{",
221+
begin: "@(code\\s*)?\\{",
214222
className: SPECIAL_SYMBOL_CLASSNAME
215223
},
216224
CONTENT_REPLACER,
225+
csbraces,
217226
closed_brace
218227
]
219228
};
@@ -242,8 +251,7 @@ function hljsDefineCshtmlRazor(hljs) {
242251
variants: razor_code_block_variants,
243252
returnBegin: true,
244253
returnEnd: true,
245-
end: "}",
246-
subLanguage: 'csharp',
254+
subLanguage: 'cs',
247255
contains: [
248256
{
249257
variants: razor_code_block_variants.map(function (v) { return { begin: v.begin }; }),
@@ -252,7 +260,7 @@ function hljsDefineCshtmlRazor(hljs) {
252260
{ begin: "@", className: SPECIAL_SYMBOL_CLASSNAME },
253261
{
254262
variants: razor_code_block_variants.map(function (v) { return { begin: v.begin.substr(1, v.begin.length - 2) }; }),
255-
subLanguage: "csharp"
263+
subLanguage: 'cs'
256264
},
257265
{ begin: "{", className: SPECIAL_SYMBOL_CLASSNAME }
258266
]
@@ -271,7 +279,7 @@ function hljsDefineCshtmlRazor(hljs) {
271279
{ begin: "[\\s]*else\\sif[\\s]*\\([^{]+[\\s]*{" },
272280
{ begin: "[\\s]*else[\\s]*" }
273281
],
274-
subLanguage: "csharp"
282+
subLanguage: 'cs'
275283
},
276284
{
277285
begin: "{",
@@ -283,16 +291,15 @@ function hljsDefineCshtmlRazor(hljs) {
283291
closed_brace
284292
]
285293
};
286-
var section_begin = "@section[\\s]+[a-zA-Z0-9]+[\\s]*{";
287294
var razor_try_block = {
288295
begin: "@try[\\s]*{",
289296
end: "}",
290297
returnBegin: true,
291298
returnEnd: true,
292-
subLanguage: "csharp",
299+
subLanguage: 'cs',
293300
contains: [
294301
{ begin: "@", className: SPECIAL_SYMBOL_CLASSNAME },
295-
{ begin: "try[\\s]*{", subLanguage: "csharp" },
302+
{ begin: "try[\\s]*{", subLanguage: 'cs' },
296303
{
297304
variants: [
298305
{ begin: "}[\\s]*catch[\\s]*\\([^\\)]+\\)[\\s]*{" },
@@ -306,7 +313,7 @@ function hljsDefineCshtmlRazor(hljs) {
306313
{ begin: "[\\s]*catch[\\s]*\\([^\\)]+\\)[\\s]*", },
307314
{ begin: "[\\s]*finally[\\s]*", },
308315
],
309-
subLanguage: "csharp"
316+
subLanguage: 'cs'
310317
},
311318
{ begin: "{", className: SPECIAL_SYMBOL_CLASSNAME }
312319
]
@@ -316,6 +323,7 @@ function hljsDefineCshtmlRazor(hljs) {
316323
closed_brace
317324
]
318325
};
326+
var section_begin = "@section[\\s]+[a-zA-Z0-9]+[\\s]*{";
319327
var razor_section_block = {
320328
begin: section_begin,
321329
returnBegin: true,
@@ -334,7 +342,7 @@ function hljsDefineCshtmlRazor(hljs) {
334342
var rasor_await = {
335343
begin: "@await ",
336344
returnBegin: true,
337-
subLanguage: 'csharp',
345+
subLanguage: 'cs',
338346
end: "(\\r|\\n|<|\\s)",
339347
contains: [
340348
{

package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/markup/code-block-multiline.expect.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,11 @@ after
77
<span class="cs"></span><span class="hljs-built_in">@{</span><span class="cs">
88
<span class="hljs-keyword">var</span> inCSharp = <span class="hljs-literal">true</span>;
99
</span><span class="cshtml-razor"></span><span class="hljs-built_in">&lt;text&gt;</span><span class="cshtml-razor">xml</span><span class="hljs-built_in">&lt;/text&gt;</span><span class="cs">
10+
</span><span class="hljs-built_in">}</span>
11+
12+
13+
code:
14+
<span class="cs"></span><span class="hljs-built_in">@code {</span><span class="cs">
15+
<span class="hljs-keyword">var</span> inCSharp = <span class="hljs-literal">true</span>;
16+
</span><span class="cshtml-razor"></span><span class="hljs-built_in">&lt;text&gt;</span><span class="cshtml-razor">xml</span><span class="hljs-built_in">&lt;/text&gt;</span><span class="cs">
1017
</span><span class="hljs-built_in">}</span>

test/markup/code-block-multiline.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,11 @@ after
77
@{
88
var inCSharp = true;
99
<text>xml</text>
10+
}
11+
12+
13+
code:
14+
@code {
15+
var inCSharp = true;
16+
<text>xml</text>
1017
}

0 commit comments

Comments
 (0)