rehype-highlight-code-lines 0.0.2 → 0.0.4
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.
- package/README.md +7 -1
- package/dist/esm/index.js +22 -9
- package/dist/esm/index.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +24 -8
package/README.md
CHANGED
|
@@ -158,7 +158,13 @@ use(rehypeHighlightLines, {
|
|
|
158
158
|
});
|
|
159
159
|
```
|
|
160
160
|
|
|
161
|
-
Now, all code blocks will become numbered by line.
|
|
161
|
+
Now, all code blocks will become numbered by line. If you want to exclude a specific code block not to be numbered, use `noLineNumbers`.
|
|
162
|
+
|
|
163
|
+
**\`\`\`[language] noLineNumbers {2}**
|
|
164
|
+
|
|
165
|
+
**\`\`\`[language] noLineNumbers**
|
|
166
|
+
|
|
167
|
+
**\`\`\`noLineNumbers**
|
|
162
168
|
|
|
163
169
|
#### `lineContainerTagName`
|
|
164
170
|
|
package/dist/esm/index.js
CHANGED
|
@@ -23,19 +23,20 @@ const plugin = (options) => {
|
|
|
23
23
|
function flattenCodeTree(children, className = [], newTree = []) {
|
|
24
24
|
for (let i = 0; i < children.length; i++) {
|
|
25
25
|
const node = children[i];
|
|
26
|
-
console.log(node);
|
|
27
26
|
if (node.type !== "element") {
|
|
28
27
|
newTree = newTree.concat([node]);
|
|
29
28
|
}
|
|
30
|
-
else if (node.children.length === 1 && node.children[0].type !== "element") {
|
|
31
|
-
// @ts-expect-error
|
|
32
|
-
node.properties.className = className.concat(node.properties.className);
|
|
33
|
-
newTree = newTree.concat([node]);
|
|
34
|
-
}
|
|
35
29
|
else {
|
|
36
30
|
// @ts-expect-error
|
|
31
|
+
// /* v8 ignore next */
|
|
37
32
|
const classNames = className.concat(node.properties?.className || []);
|
|
38
|
-
|
|
33
|
+
if (node.children.length === 1 && node.children[0].type !== "element") {
|
|
34
|
+
node.properties.className = classNames;
|
|
35
|
+
newTree = newTree.concat([node]);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
newTree = newTree.concat(flattenCodeTree(node.children, classNames));
|
|
39
|
+
}
|
|
39
40
|
}
|
|
40
41
|
}
|
|
41
42
|
return newTree;
|
|
@@ -146,7 +147,9 @@ const plugin = (options) => {
|
|
|
146
147
|
const className = code.properties.className.find(testingFunction);
|
|
147
148
|
if (className) {
|
|
148
149
|
const language = className.slice(9).toLowerCase();
|
|
149
|
-
if (language.startsWith("{") ||
|
|
150
|
+
if (language.startsWith("{") ||
|
|
151
|
+
language.startsWith("showlinenumbers") ||
|
|
152
|
+
language.startsWith("nolinenumbers")) {
|
|
150
153
|
meta = meta ? language + meta : language;
|
|
151
154
|
const idx = code.properties.className.findIndex(testingFunction);
|
|
152
155
|
if (idx > -1) {
|
|
@@ -155,9 +158,19 @@ const plugin = (options) => {
|
|
|
155
158
|
}
|
|
156
159
|
}
|
|
157
160
|
}
|
|
161
|
+
if (settings.showLineNumbers) {
|
|
162
|
+
if (!meta) {
|
|
163
|
+
meta = "showlinenumbers";
|
|
164
|
+
}
|
|
165
|
+
else if (!meta.includes("showlinenumbers")) {
|
|
166
|
+
meta = meta + " showlinenumbers";
|
|
167
|
+
}
|
|
168
|
+
}
|
|
158
169
|
if (!meta)
|
|
159
170
|
return;
|
|
160
|
-
const showLineNumbers =
|
|
171
|
+
const showLineNumbers = meta.includes("nolinenumbers")
|
|
172
|
+
? false
|
|
173
|
+
: meta.includes("showlinenumbers");
|
|
161
174
|
// find number range string within curly braces and parse it
|
|
162
175
|
const RE = /{(?<lines>[\d\s,-]+)}/g;
|
|
163
176
|
const strLineNumbers = RE.exec(meta)?.groups?.lines?.replace(/\s/g, "");
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,WAAW,MAAM,qBAAqB,CAAC;AAa9C,MAAM,gBAAgB,GAA0B;IAC9C,eAAe,EAAE,KAAK;IACtB,oBAAoB,EAAE,MAAM;CAC7B,CAAC;AAUF,oDAAoD;AACpD,MAAM,UAAU,IAAI,CAAC,GAA8C;IACjE,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACtD,CAAC;AAED;;;;GAIG;AACH,MAAM,MAAM,GAA2C,CAAC,OAAO,EAAE,EAAE;IACjE,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAC5B,EAAE,EACF,gBAAgB,EAChB,OAAO,CACkC,CAAC;IAE5C;;;;OAIG;IACH,SAAS,eAAe,CACtB,QAA0B,EAC1B,YAAsB,EAAE,EACxB,UAA4B,EAAE;QAE9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YACzB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -56,17 +56,19 @@ const plugin: Plugin<[HighlightLinesOptions?], Root> = (options) => {
|
|
|
56
56
|
): ElementContent[] {
|
|
57
57
|
for (let i = 0; i < children.length; i++) {
|
|
58
58
|
const node = children[i];
|
|
59
|
-
console.log(node);
|
|
60
59
|
if (node.type !== "element") {
|
|
61
60
|
newTree = newTree.concat([node]);
|
|
62
|
-
} else if (node.children.length === 1 && node.children[0].type !== "element") {
|
|
63
|
-
// @ts-expect-error
|
|
64
|
-
node.properties.className = className.concat(node.properties.className);
|
|
65
|
-
newTree = newTree.concat([node]);
|
|
66
61
|
} else {
|
|
67
62
|
// @ts-expect-error
|
|
63
|
+
// /* v8 ignore next */
|
|
68
64
|
const classNames = className.concat(node.properties?.className || []);
|
|
69
|
-
|
|
65
|
+
|
|
66
|
+
if (node.children.length === 1 && node.children[0].type !== "element") {
|
|
67
|
+
node.properties.className = classNames;
|
|
68
|
+
newTree = newTree.concat([node]);
|
|
69
|
+
} else {
|
|
70
|
+
newTree = newTree.concat(flattenCodeTree(node.children, classNames));
|
|
71
|
+
}
|
|
70
72
|
}
|
|
71
73
|
}
|
|
72
74
|
return newTree;
|
|
@@ -210,7 +212,11 @@ const plugin: Plugin<[HighlightLinesOptions?], Root> = (options) => {
|
|
|
210
212
|
if (className) {
|
|
211
213
|
const language = className.slice(9).toLowerCase();
|
|
212
214
|
|
|
213
|
-
if (
|
|
215
|
+
if (
|
|
216
|
+
language.startsWith("{") ||
|
|
217
|
+
language.startsWith("showlinenumbers") ||
|
|
218
|
+
language.startsWith("nolinenumbers")
|
|
219
|
+
) {
|
|
214
220
|
meta = meta ? language + meta : language;
|
|
215
221
|
|
|
216
222
|
const idx = code.properties.className.findIndex(testingFunction);
|
|
@@ -222,9 +228,19 @@ const plugin: Plugin<[HighlightLinesOptions?], Root> = (options) => {
|
|
|
222
228
|
}
|
|
223
229
|
}
|
|
224
230
|
|
|
231
|
+
if (settings.showLineNumbers) {
|
|
232
|
+
if (!meta) {
|
|
233
|
+
meta = "showlinenumbers";
|
|
234
|
+
} else if (!meta.includes("showlinenumbers")) {
|
|
235
|
+
meta = meta + " showlinenumbers";
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
|
|
225
239
|
if (!meta) return;
|
|
226
240
|
|
|
227
|
-
const showLineNumbers =
|
|
241
|
+
const showLineNumbers = meta.includes("nolinenumbers")
|
|
242
|
+
? false
|
|
243
|
+
: meta.includes("showlinenumbers");
|
|
228
244
|
|
|
229
245
|
// find number range string within curly braces and parse it
|
|
230
246
|
const RE = /{(?<lines>[\d\s,-]+)}/g;
|