Skip to content

Commit 852645e

Browse files
authored
fix: enhance fenced code language rule to support tilde as a delimiter (#344)
* fix: enhance fenced code language rule to support tilde as a delimiter * wip: improve perf
1 parent ec6bcc8 commit 852645e

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

src/rules/fenced-code-language.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,12 @@
1212
* FencedCodeLanguageRuleDefinition
1313
*/
1414

15+
//-----------------------------------------------------------------------------
16+
// Helpers
17+
//-----------------------------------------------------------------------------
18+
19+
const fencedCodeCharacters = new Set(["`", "~"]);
20+
1521
//-----------------------------------------------------------------------------
1622
// Rule Definition
1723
//-----------------------------------------------------------------------------
@@ -58,7 +64,11 @@ export default {
5864
code(node) {
5965
if (!node.lang) {
6066
// only check fenced code blocks
61-
if (sourceCode.text[node.position.start.offset] !== "`") {
67+
if (
68+
!fencedCodeCharacters.has(
69+
sourceCode.text[node.position.start.offset],
70+
)
71+
) {
6272
return;
6373
}
6474

tests/rules/fenced-code-language.test.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,22 @@ const ruleTester = new RuleTester({
2424

2525
ruleTester.run("fenced-code-language", rule, {
2626
valid: [
27+
// backtick code block
2728
`\`\`\`js
2829
console.log("Hello, world!");
2930
\`\`\``,
3031
`\`\`\`javascript
3132
console.log("Hello, world!");
3233
\`\`\``,
3334

35+
// tilde code block
36+
`~~~js
37+
console.log("Hello, world!");
38+
~~~`,
39+
`~~~javascript
40+
console.log("Hello, world!");
41+
~~~`,
42+
3443
// indented code block
3544
`
3645
console.log("Hello, world!");
@@ -57,6 +66,20 @@ ruleTester.run("fenced-code-language", rule, {
5766
},
5867
],
5968
},
69+
{
70+
code: `~~~
71+
console.log("Hello, world!");
72+
~~~`,
73+
errors: [
74+
{
75+
messageId: "missingLanguage",
76+
line: 1,
77+
column: 1,
78+
endLine: 3,
79+
endColumn: 20,
80+
},
81+
],
82+
},
6083
{
6184
code: `\`\`\`javascript
6285
console.log("Hello, world!");

0 commit comments

Comments
 (0)