ds-markdown 1.0.2 → 1.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 +48 -666
- package/README.zh.md +40 -839
- package/es/Markdown/index.js +2 -2
- package/es/Markdown/index.js.map +1 -1
- package/es/MarkdownCMD/index.js +5 -5
- package/es/MarkdownCMD/index.js.map +1 -1
- package/es/components/CodeComponent/BlockWrap/index.css +0 -13
- package/es/components/CodeComponent/BlockWrap/index.js +1 -1
- package/es/components/CodeComponent/BlockWrap/index.js.map +1 -1
- package/es/components/CodeComponent/CodeBlockWrap/index.css +24 -0
- package/es/components/CodeComponent/CodeBlockWrap/index.d.ts +1 -0
- package/es/components/CodeComponent/CodeBlockWrap/index.d.ts.map +1 -1
- package/es/components/CodeComponent/CodeBlockWrap/index.js +1 -0
- package/es/components/CodeComponent/CodeBlockWrap/index.js.map +1 -1
- package/es/components/CodeComponent/index.css +0 -24
- package/es/components/CopyButton/index.js +1 -1
- package/es/components/CopyButton/index.js.map +1 -1
- package/es/components/DownloadButton/index.js +2 -2
- package/es/components/DownloadButton/index.js.map +1 -1
- package/es/components/Icon/index.js +3 -3
- package/es/components/Icon/index.js.map +1 -1
- package/es/components/ui/SuccessButton/index.js +1 -1
- package/es/components/ui/SuccessButton/index.js.map +1 -1
- package/es/constant.d.ts +2 -2
- package/es/constant.d.ts.map +1 -1
- package/es/constant.js +2 -2
- package/es/constant.js.map +1 -1
- package/es/context/ConfigProvider/index.js +2 -2
- package/es/context/ConfigProvider/index.js.map +1 -1
- package/es/context/MarkdownThemeProvider.js +1 -1
- package/es/context/MarkdownThemeProvider.js.map +1 -1
- package/es/defined/index.d.ts +17 -17
- package/es/defined/index.d.ts.map +1 -1
- package/es/i18n/en/index.js +1 -1
- package/es/i18n/en/index.js.map +1 -1
- package/es/i18n/index.js +3 -3
- package/es/i18n/index.js.map +1 -1
- package/es/i18n/zh/index.js +1 -1
- package/es/i18n/zh/index.js.map +1 -1
- package/es/index.js +1 -1
- package/es/index.js.map +1 -1
- package/es/style.css +0 -1004
- package/es/utils/remarkMathBracket.d.ts +10 -10
- package/es/utils/remarkMathBracket.js +14 -14
- package/es/utils/remarkMathBracket.js.map +1 -1
- package/package.json +2 -2
- package/es/utils/Tokenizer.d.ts +0 -48
- package/es/utils/Tokenizer.d.ts.map +0 -1
- package/es/utils/Tokenizer.js +0 -191
- package/es/utils/Tokenizer.js.map +0 -1
- package/es/utils/compiler.d.ts +0 -5
- package/es/utils/compiler.d.ts.map +0 -1
- package/es/utils/compiler.js +0 -62
- package/es/utils/compiler.js.map +0 -1
- package/es/utils/rule.d.ts +0 -26
- package/es/utils/rule.d.ts.map +0 -1
- package/es/utils/rule.js +0 -69
- package/es/utils/rule.js.map +0 -1
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import { Plugin } from 'unified';
|
|
2
2
|
/**
|
|
3
|
-
* remark
|
|
3
|
+
* remark plugin: Convert \[...\] to $$...$$, \(...\) to $...$, so that remark-math can recognize them.
|
|
4
4
|
*/
|
|
5
5
|
declare const remarkMathBracket: Plugin;
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* - \(...\) → $...$ (
|
|
10
|
-
* - \[...\] → $$...$$ (
|
|
7
|
+
* Convert bracket-formatted math formulas to dollar sign format
|
|
8
|
+
* Supports the following conversions:
|
|
9
|
+
* - \(...\) → $...$ (inline formula)
|
|
10
|
+
* - \[...\] → $$...$$ (block formula)
|
|
11
11
|
*
|
|
12
|
-
*
|
|
13
|
-
* -
|
|
14
|
-
* -
|
|
12
|
+
* Special handling:
|
|
13
|
+
* - If text contains Markdown links, skip conversion to avoid misprocessing
|
|
14
|
+
* - Use placeholder mechanism to protect brackets inside block formulas from being mis-converted
|
|
15
15
|
*
|
|
16
|
-
* @param value
|
|
17
|
-
* @returns
|
|
16
|
+
* @param value String to convert
|
|
17
|
+
* @returns Converted string
|
|
18
18
|
*/
|
|
19
19
|
export declare const replaceMathBracket: (value: string) => string;
|
|
20
20
|
export default remarkMathBracket;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { visit } from 'unist-util-visit';
|
|
2
2
|
/**
|
|
3
|
-
* remark
|
|
3
|
+
* remark plugin: Convert \[...\] to $$...$$, \(...\) to $...$, so that remark-math can recognize them.
|
|
4
4
|
*/
|
|
5
5
|
const remarkMathBracket = () => (tree, file) => {
|
|
6
6
|
visit(tree, 'text', (node) => {
|
|
@@ -11,35 +11,35 @@ const remarkMathBracket = () => (tree, file) => {
|
|
|
11
11
|
});
|
|
12
12
|
};
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* - \(...\) → $...$ (
|
|
17
|
-
* - \[...\] → $$...$$ (
|
|
14
|
+
* Convert bracket-formatted math formulas to dollar sign format
|
|
15
|
+
* Supports the following conversions:
|
|
16
|
+
* - \(...\) → $...$ (inline formula)
|
|
17
|
+
* - \[...\] → $$...$$ (block formula)
|
|
18
18
|
*
|
|
19
|
-
*
|
|
20
|
-
* -
|
|
21
|
-
* -
|
|
19
|
+
* Special handling:
|
|
20
|
+
* - If text contains Markdown links, skip conversion to avoid misprocessing
|
|
21
|
+
* - Use placeholder mechanism to protect brackets inside block formulas from being mis-converted
|
|
22
22
|
*
|
|
23
|
-
* @param value
|
|
24
|
-
* @returns
|
|
23
|
+
* @param value String to convert
|
|
24
|
+
* @returns Converted string
|
|
25
25
|
*/
|
|
26
26
|
export const replaceMathBracket = (value) => {
|
|
27
|
-
// 1.
|
|
27
|
+
// 1. Extract all block formula content, temporarily replace with placeholder, [...]
|
|
28
28
|
const blockMatches = [];
|
|
29
29
|
let replaced = value.replace(/\\+\[([\s\S]+?)\\+\]/g, (_m, p1) => {
|
|
30
30
|
blockMatches.push(p1);
|
|
31
31
|
return `__BLOCK_MATH_${blockMatches.length - 1}__`;
|
|
32
32
|
});
|
|
33
|
-
//
|
|
33
|
+
// Also need to support $$ xxxx $$ format
|
|
34
34
|
replaced = replaced.replace(/\$\$([\s\S]+?)\$\$/g, (_m, p1) => {
|
|
35
35
|
blockMatches.push(p1);
|
|
36
36
|
return `__BLOCK_MATH_${blockMatches.length - 1}__`;
|
|
37
37
|
});
|
|
38
|
-
// 2.
|
|
38
|
+
// 2. Replace ( ... ) outside block formulas with $...$
|
|
39
39
|
replaced = replaced.replace(/\\+\(([^)]+?)\\+\)/g, (_m, p1) => {
|
|
40
40
|
return '$' + p1 + '$';
|
|
41
41
|
});
|
|
42
|
-
// 3.
|
|
42
|
+
// 3. Restore block formula content, keep internal parentheses unchanged
|
|
43
43
|
replaced = replaced.replace(/__BLOCK_MATH_(\d+)__/g, (_m, idx) => {
|
|
44
44
|
return '$$' + blockMatches[Number(idx)] + '$$';
|
|
45
45
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remarkMathBracket.js","sourceRoot":"","sources":["../../src/utils/remarkMathBracket.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC;;GAEG;AACH,MAAM,iBAAiB,GAAW,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;IACrD,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,IAAuB,EAAE,EAAE;QAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAa,EAAE,EAAE;IAClD,
|
|
1
|
+
{"version":3,"file":"remarkMathBracket.js","sourceRoot":"","sources":["../../src/utils/remarkMathBracket.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC;;GAEG;AACH,MAAM,iBAAiB,GAAW,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;IACrD,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,IAAuB,EAAE,EAAE;QAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAa,EAAE,EAAE;IAClD,oFAAoF;IACpF,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,IAAI,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,uBAAuB,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;QAC/D,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtB,OAAO,gBAAgB,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,yCAAyC;IACzC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;QAC5D,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtB,OAAO,gBAAgB,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,uDAAuD;IACvD,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;QAC5D,OAAO,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,wEAAwE;IACxE,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,uBAAuB,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE;QAC/D,OAAO,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ds-markdown",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.4",
|
|
5
5
|
"main": "./dist/esm/index.js",
|
|
6
6
|
"module": "./dist/esm/index.js",
|
|
7
7
|
"style": "./dist/style.css",
|
|
@@ -71,7 +71,6 @@
|
|
|
71
71
|
"preview": "vite preview",
|
|
72
72
|
"release": "npm run build && node scripts/set-tag.cjs && cross-env RELEASE_MODE=true npm publish",
|
|
73
73
|
"prepublishOnly": "node scripts/prepublish.js",
|
|
74
|
-
"pretest": "rimraf dist && npm run build:esm",
|
|
75
74
|
"test": "jest"
|
|
76
75
|
},
|
|
77
76
|
"dependencies": {
|
|
@@ -102,6 +101,7 @@
|
|
|
102
101
|
"@rollup/plugin-terser": "^0.4.4",
|
|
103
102
|
"@rollup/plugin-typescript": "^12.1.1",
|
|
104
103
|
"@testing-library/jest-dom": "^6.6.3",
|
|
104
|
+
"@testing-library/react": "^16.3.1",
|
|
105
105
|
"@types/jest": "^29.5.14",
|
|
106
106
|
"@types/react": "^18.3.23",
|
|
107
107
|
"@types/react-dom": "^18.3.7",
|
package/es/utils/Tokenizer.d.ts
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
/** 此文件借鉴 marked 的部分代码 */
|
|
2
|
-
export declare const getTokenId: () => number;
|
|
3
|
-
interface Space {
|
|
4
|
-
type: 'space';
|
|
5
|
-
raw: string;
|
|
6
|
-
noTrimEndRaw?: string;
|
|
7
|
-
id: number;
|
|
8
|
-
}
|
|
9
|
-
interface Fence {
|
|
10
|
-
type: 'fence';
|
|
11
|
-
raw: string;
|
|
12
|
-
id: number;
|
|
13
|
-
}
|
|
14
|
-
interface Segment {
|
|
15
|
-
type: 'segment';
|
|
16
|
-
raw: string;
|
|
17
|
-
id: number;
|
|
18
|
-
}
|
|
19
|
-
interface List {
|
|
20
|
-
type: 'list';
|
|
21
|
-
raw: string;
|
|
22
|
-
items: ListItem[];
|
|
23
|
-
loose: boolean;
|
|
24
|
-
id: number;
|
|
25
|
-
}
|
|
26
|
-
interface ListItem {
|
|
27
|
-
type: 'list_item';
|
|
28
|
-
raw: string;
|
|
29
|
-
task: boolean;
|
|
30
|
-
checked: boolean | undefined;
|
|
31
|
-
loose: boolean;
|
|
32
|
-
text: string;
|
|
33
|
-
tokens: Token[];
|
|
34
|
-
id: number;
|
|
35
|
-
}
|
|
36
|
-
export type Token = Space | Fence | Segment | List | ListItem;
|
|
37
|
-
export declare class Tokenizer {
|
|
38
|
-
/** 空行 */
|
|
39
|
-
space(src: string): Space | undefined;
|
|
40
|
-
/** 围栏 fence */
|
|
41
|
-
fence(src: string): Fence | undefined;
|
|
42
|
-
/** 块 */
|
|
43
|
-
segment(src: string): Segment | undefined;
|
|
44
|
-
/** 列表 */
|
|
45
|
-
list(src: string): List | undefined;
|
|
46
|
-
}
|
|
47
|
-
export {};
|
|
48
|
-
//# sourceMappingURL=Tokenizer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Tokenizer.d.ts","sourceRoot":"","sources":["../../src/utils/Tokenizer.ts"],"names":[],"mappings":"AAAA,yBAAyB;AAMzB,eAAO,MAAM,UAAU,cAEtB,CAAC;AAEF,UAAU,KAAK;IACb,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,UAAU,KAAK;IACb,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,UAAU,OAAO;IACf,IAAI,EAAE,SAAS,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,UAAU,IAAI;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,UAAU,QAAQ;IAChB,IAAI,EAAE,WAAW,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;CACZ;AACD,MAAM,MAAM,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,IAAI,GAAG,QAAQ,CAAC;AAE9D,qBAAa,SAAS;IACpB,SAAS;IACT,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS;IAUrC,eAAe;IACf,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS;IAUrC,QAAQ;IACR,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAWzC,SAAS;IACT,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;CA6KpC"}
|
package/es/utils/Tokenizer.js
DELETED
|
@@ -1,191 +0,0 @@
|
|
|
1
|
-
/** 此文件借鉴 marked 的部分代码 */
|
|
2
|
-
import { rules } from './rule.js';
|
|
3
|
-
let id = 0;
|
|
4
|
-
export const getTokenId = () => {
|
|
5
|
-
return id++;
|
|
6
|
-
};
|
|
7
|
-
export class Tokenizer {
|
|
8
|
-
/** 空行 */
|
|
9
|
-
space(src) {
|
|
10
|
-
const cap = rules.block.newline.exec(src);
|
|
11
|
-
if (cap) {
|
|
12
|
-
return {
|
|
13
|
-
type: 'space',
|
|
14
|
-
raw: cap[0],
|
|
15
|
-
id: getTokenId(),
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
/** 围栏 fence */
|
|
20
|
-
fence(src) {
|
|
21
|
-
const cap = rules.block.fences.exec(src);
|
|
22
|
-
if (cap) {
|
|
23
|
-
return {
|
|
24
|
-
type: 'fence',
|
|
25
|
-
raw: cap[0],
|
|
26
|
-
id: getTokenId(),
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
/** 块 */
|
|
31
|
-
segment(src) {
|
|
32
|
-
const cap = rules.block.segment.exec(src);
|
|
33
|
-
if (cap) {
|
|
34
|
-
return {
|
|
35
|
-
type: 'segment',
|
|
36
|
-
raw: cap[0],
|
|
37
|
-
id: getTokenId(),
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
/** 列表 */
|
|
42
|
-
list(src) {
|
|
43
|
-
let cap = rules.block.list.exec(src);
|
|
44
|
-
if (cap) {
|
|
45
|
-
let bull = cap[1].trim();
|
|
46
|
-
const isordered = bull.length > 1;
|
|
47
|
-
const list = {
|
|
48
|
-
type: 'list',
|
|
49
|
-
raw: '',
|
|
50
|
-
items: [],
|
|
51
|
-
loose: false,
|
|
52
|
-
id: getTokenId(),
|
|
53
|
-
};
|
|
54
|
-
bull = isordered ? `\\d{1,9}\\${bull.slice(-1)}` : `\\${bull}`;
|
|
55
|
-
// Get next list item
|
|
56
|
-
const itemRegex = rules.other.listItemRegex(bull);
|
|
57
|
-
while (src) {
|
|
58
|
-
let endEarly = false;
|
|
59
|
-
let raw = '';
|
|
60
|
-
let itemContents = '';
|
|
61
|
-
if (!(cap = itemRegex.exec(src))) {
|
|
62
|
-
break;
|
|
63
|
-
}
|
|
64
|
-
if (rules.block.hr.test(src)) {
|
|
65
|
-
// End list if bullet was actually HR (possibly move into itemRegex?)
|
|
66
|
-
break;
|
|
67
|
-
}
|
|
68
|
-
raw = cap[0];
|
|
69
|
-
src = src.substring(raw.length);
|
|
70
|
-
/** 获取列表项 */
|
|
71
|
-
let line = cap[2].split('\n', 1)[0].replace(rules.other.listReplaceTabs, (t) => ' '.repeat(3 * t.length));
|
|
72
|
-
let nextLine = src.split('\n', 1)[0];
|
|
73
|
-
let blankLine = !line.trim();
|
|
74
|
-
let indent = 0;
|
|
75
|
-
if (blankLine) {
|
|
76
|
-
indent = cap[1].length + 1;
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
indent = cap[2].search(rules.other.nonSpaceChar); // Find first non-space char
|
|
80
|
-
indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent
|
|
81
|
-
itemContents = line.slice(indent);
|
|
82
|
-
indent += cap[1].length;
|
|
83
|
-
}
|
|
84
|
-
if (blankLine && src === '') {
|
|
85
|
-
endEarly = true;
|
|
86
|
-
}
|
|
87
|
-
else if (blankLine && rules.other.blankLine.test(nextLine)) {
|
|
88
|
-
// Items begin with at most one blank line
|
|
89
|
-
raw += nextLine + '\n';
|
|
90
|
-
src = src.substring(nextLine.length + 1);
|
|
91
|
-
endEarly = true;
|
|
92
|
-
}
|
|
93
|
-
if (!endEarly) {
|
|
94
|
-
const nextBulletRegex = rules.other.nextBulletRegex(indent);
|
|
95
|
-
const hrRegex = rules.other.hrRegex(indent);
|
|
96
|
-
const fencesBeginRegex = rules.other.fencesBeginRegex(indent);
|
|
97
|
-
const headingBeginRegex = rules.other.headingBeginRegex(indent);
|
|
98
|
-
const htmlBeginRegex = rules.other.htmlBeginRegex(indent);
|
|
99
|
-
// Check if following lines should be included in List Item
|
|
100
|
-
while (src) {
|
|
101
|
-
const rawLine = src.split('\n', 1)[0];
|
|
102
|
-
const nextLineWithoutTabs = nextLine.replace(rules.other.tabCharGlobal, ' ');
|
|
103
|
-
nextLine = rawLine;
|
|
104
|
-
// End list item if found code fences
|
|
105
|
-
if (fencesBeginRegex.test(nextLine)) {
|
|
106
|
-
break;
|
|
107
|
-
}
|
|
108
|
-
// End list item if found start of new heading
|
|
109
|
-
if (headingBeginRegex.test(nextLine)) {
|
|
110
|
-
break;
|
|
111
|
-
}
|
|
112
|
-
// End list item if found start of html block
|
|
113
|
-
if (htmlBeginRegex.test(nextLine)) {
|
|
114
|
-
break;
|
|
115
|
-
}
|
|
116
|
-
// End list item if found start of new bullet
|
|
117
|
-
if (nextBulletRegex.test(nextLine)) {
|
|
118
|
-
break;
|
|
119
|
-
}
|
|
120
|
-
// Horizontal rule found
|
|
121
|
-
if (hrRegex.test(nextLine)) {
|
|
122
|
-
break;
|
|
123
|
-
}
|
|
124
|
-
if (nextLineWithoutTabs.search(rules.other.nonSpaceChar) >= indent || !nextLine.trim()) {
|
|
125
|
-
// Dedent if possible
|
|
126
|
-
itemContents += '\n' + nextLineWithoutTabs.slice(indent);
|
|
127
|
-
}
|
|
128
|
-
else {
|
|
129
|
-
// not enough indentation
|
|
130
|
-
if (blankLine) {
|
|
131
|
-
break;
|
|
132
|
-
}
|
|
133
|
-
// paragraph continuation unless last line was a different block level element
|
|
134
|
-
if (line.replace(rules.other.tabCharGlobal, ' ').search(rules.other.nonSpaceChar) >= 4) {
|
|
135
|
-
// indented code block
|
|
136
|
-
break;
|
|
137
|
-
}
|
|
138
|
-
if (fencesBeginRegex.test(line)) {
|
|
139
|
-
break;
|
|
140
|
-
}
|
|
141
|
-
if (headingBeginRegex.test(line)) {
|
|
142
|
-
break;
|
|
143
|
-
}
|
|
144
|
-
if (hrRegex.test(line)) {
|
|
145
|
-
break;
|
|
146
|
-
}
|
|
147
|
-
itemContents += '\n' + nextLine;
|
|
148
|
-
}
|
|
149
|
-
if (!blankLine && !nextLine.trim()) {
|
|
150
|
-
// Check if current line is blank
|
|
151
|
-
blankLine = true;
|
|
152
|
-
}
|
|
153
|
-
raw += rawLine + '\n';
|
|
154
|
-
src = src.substring(rawLine.length + 1);
|
|
155
|
-
line = nextLineWithoutTabs.slice(indent);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
let ischecked;
|
|
159
|
-
const istask = rules.other.listIsTask.exec(itemContents);
|
|
160
|
-
if (istask) {
|
|
161
|
-
ischecked = istask[0] !== '[ ] ';
|
|
162
|
-
itemContents = itemContents.replace(rules.other.listReplaceTask, '');
|
|
163
|
-
}
|
|
164
|
-
list.items.push({
|
|
165
|
-
type: 'list_item',
|
|
166
|
-
raw,
|
|
167
|
-
task: !!istask,
|
|
168
|
-
checked: ischecked,
|
|
169
|
-
loose: false,
|
|
170
|
-
text: itemContents,
|
|
171
|
-
tokens: [],
|
|
172
|
-
id: getTokenId(),
|
|
173
|
-
});
|
|
174
|
-
list.raw += raw;
|
|
175
|
-
}
|
|
176
|
-
// Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic
|
|
177
|
-
const lastItem = list.items.at(-1);
|
|
178
|
-
if (lastItem) {
|
|
179
|
-
lastItem.raw = lastItem.raw.trimEnd();
|
|
180
|
-
lastItem.text = lastItem.text.trimEnd();
|
|
181
|
-
}
|
|
182
|
-
else {
|
|
183
|
-
// not a list since there were no items
|
|
184
|
-
return;
|
|
185
|
-
}
|
|
186
|
-
list.raw = list.raw.trimEnd();
|
|
187
|
-
return list;
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
//# sourceMappingURL=Tokenizer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Tokenizer.js","sourceRoot":"","sources":["../../src/utils/Tokenizer.ts"],"names":[],"mappings":"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"}
|
package/es/utils/compiler.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/utils/compiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,EAAa,MAAM,aAAa,CAAC;AA8D3D,iBAAS,cAAc,CAAC,GAAG,EAAE,MAAM,WAGlC;AAED,eAAO,MAAM,QAAQ,uBAAiB,CAAC"}
|
package/es/utils/compiler.js
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import { getTokenId, Tokenizer } from './Tokenizer.js';
|
|
2
|
-
function compile(src) {
|
|
3
|
-
const tokenizer = new Tokenizer();
|
|
4
|
-
const tokens = [];
|
|
5
|
-
let prevScr = src;
|
|
6
|
-
while (src) {
|
|
7
|
-
if (src.length === 0) {
|
|
8
|
-
break;
|
|
9
|
-
}
|
|
10
|
-
// TODO: 临时方案
|
|
11
|
-
if (src.trim().length === 0 && tokens.length > 0) {
|
|
12
|
-
const lastToken = tokens[tokens.length - 1];
|
|
13
|
-
// 如果只剩下空格或换行符,则加到上一个token中
|
|
14
|
-
if (lastToken.type === 'list') {
|
|
15
|
-
lastToken.raw = lastToken.raw + src;
|
|
16
|
-
break;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
const space = tokenizer.space(src);
|
|
20
|
-
if (space) {
|
|
21
|
-
tokens.push(space);
|
|
22
|
-
src = src.slice(space.raw.length);
|
|
23
|
-
continue;
|
|
24
|
-
}
|
|
25
|
-
const list = tokenizer.list(src);
|
|
26
|
-
if (list) {
|
|
27
|
-
tokens.push(list);
|
|
28
|
-
src = src.slice(list.raw.length);
|
|
29
|
-
continue;
|
|
30
|
-
}
|
|
31
|
-
const fence = tokenizer.fence(src);
|
|
32
|
-
if (fence) {
|
|
33
|
-
tokens.push(fence);
|
|
34
|
-
src = src.slice(fence.raw.length);
|
|
35
|
-
continue;
|
|
36
|
-
}
|
|
37
|
-
const segment = tokenizer.segment(src);
|
|
38
|
-
if (segment) {
|
|
39
|
-
tokens.push(segment);
|
|
40
|
-
src = src.slice(segment.raw.length);
|
|
41
|
-
continue;
|
|
42
|
-
}
|
|
43
|
-
if (prevScr === src && src) {
|
|
44
|
-
// 如果src没有变化,则认为是一个段落
|
|
45
|
-
// todo: 后面会做优化,进行细分
|
|
46
|
-
tokens.push({
|
|
47
|
-
type: 'segment',
|
|
48
|
-
raw: src,
|
|
49
|
-
id: getTokenId(),
|
|
50
|
-
});
|
|
51
|
-
src = '';
|
|
52
|
-
}
|
|
53
|
-
prevScr = src;
|
|
54
|
-
}
|
|
55
|
-
return tokens;
|
|
56
|
-
}
|
|
57
|
-
function createCompiler(src) {
|
|
58
|
-
const tokens = compile(src);
|
|
59
|
-
return tokens;
|
|
60
|
-
}
|
|
61
|
-
export const compiler = createCompiler;
|
|
62
|
-
//# sourceMappingURL=compiler.js.map
|
package/es/utils/compiler.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/utils/compiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAS,SAAS,EAAE,MAAM,aAAa,CAAC;AAE3D,SAAS,OAAO,CAAC,GAAW;IAC1B,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;IAElC,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,IAAI,OAAO,GAAG,GAAG,CAAC;IAElB,OAAO,GAAG,EAAE,CAAC;QACX,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,MAAM;QACR,CAAC;QAED,aAAa;QACb,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjD,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC5C,2BAA2B;YAC3B,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC9B,SAAS,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC;gBACpC,MAAM;YACR,CAAC;QACH,CAAC;QACD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAClC,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACjC,SAAS;QACX,CAAC;QACD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAClC,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrB,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpC,SAAS;QACX,CAAC;QACD,IAAI,OAAO,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;YAC3B,qBAAqB;YACrB,oBAAoB;YACpB,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,SAAS;gBACf,GAAG,EAAE,GAAG;gBACR,EAAE,EAAE,UAAU,EAAE;aACjB,CAAC,CAAC;YACH,GAAG,GAAG,EAAE,CAAC;QACX,CAAC;QACD,OAAO,GAAG,GAAG,CAAC;IAChB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,cAAc,CAAC,GAAW;IACjC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,cAAc,CAAC"}
|
package/es/utils/rule.d.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/** 此文件借鉴 marked 的部分代码 */
|
|
2
|
-
export declare const rules: {
|
|
3
|
-
block: {
|
|
4
|
-
newline: RegExp;
|
|
5
|
-
fences: RegExp;
|
|
6
|
-
segment: RegExp;
|
|
7
|
-
list: RegExp;
|
|
8
|
-
hr: RegExp;
|
|
9
|
-
};
|
|
10
|
-
other: {
|
|
11
|
-
caret: RegExp;
|
|
12
|
-
listItemRegex: (bull: string) => RegExp;
|
|
13
|
-
nextBulletRegex: (indent: number) => RegExp;
|
|
14
|
-
listReplaceTabs: RegExp;
|
|
15
|
-
nonSpaceChar: RegExp;
|
|
16
|
-
blankLine: RegExp;
|
|
17
|
-
listIsTask: RegExp;
|
|
18
|
-
listReplaceTask: RegExp;
|
|
19
|
-
tabCharGlobal: RegExp;
|
|
20
|
-
hrRegex: (indent: number) => RegExp;
|
|
21
|
-
headingBeginRegex: (indent: number) => RegExp;
|
|
22
|
-
htmlBeginRegex: (indent: number) => RegExp;
|
|
23
|
-
fencesBeginRegex: (indent: number) => RegExp;
|
|
24
|
-
};
|
|
25
|
-
};
|
|
26
|
-
//# sourceMappingURL=rule.d.ts.map
|
package/es/utils/rule.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../src/utils/rule.ts"],"names":[],"mappings":"AAAA,yBAAyB;AAuEzB,eAAO,MAAM,KAAK;;;;;;;;;;8BAnEM,MAAM;kCACF,MAAM;;;;;;;0BAOd,MAAM;oCACI,MAAM;iCACT,MAAM;mCACJ,MAAM;;CA2DlC,CAAC"}
|
package/es/utils/rule.js
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
/** 此文件借鉴 marked 的部分代码 */
|
|
2
|
-
const other = {
|
|
3
|
-
caret: /(^|[^[])\^/g,
|
|
4
|
-
listItemRegex: (bull) => new RegExp(`^( {0,3}${bull})((?:[\t ][^\\n]*)?(?:\\n|$))`),
|
|
5
|
-
nextBulletRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))`),
|
|
6
|
-
listReplaceTabs: /^\t+/,
|
|
7
|
-
nonSpaceChar: /[^ ]/,
|
|
8
|
-
blankLine: /^[ \t]*$/,
|
|
9
|
-
listIsTask: /^\[[ xX]\] /,
|
|
10
|
-
listReplaceTask: /^\[[ xX]\] +/,
|
|
11
|
-
tabCharGlobal: /\t/g,
|
|
12
|
-
hrRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),
|
|
13
|
-
headingBeginRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`),
|
|
14
|
-
htmlBeginRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}<(?:[a-z].*>|!--)`, 'i'),
|
|
15
|
-
fencesBeginRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\`\`\`|~~~)`),
|
|
16
|
-
};
|
|
17
|
-
/**
|
|
18
|
-
* 编辑正则表达式
|
|
19
|
-
* @param regex 正则表达式
|
|
20
|
-
* @param opt 正则表达式选项
|
|
21
|
-
* @returns 编辑后的正则表达式
|
|
22
|
-
*/
|
|
23
|
-
function edit(regex, opt = '') {
|
|
24
|
-
let source = typeof regex === 'string' ? regex : regex.source;
|
|
25
|
-
const obj = {
|
|
26
|
-
replace: (name, val) => {
|
|
27
|
-
let valSource = typeof val === 'string' ? val : val.source;
|
|
28
|
-
valSource = valSource.replace(other.caret, '$1');
|
|
29
|
-
source = source.replace(name, valSource);
|
|
30
|
-
return obj;
|
|
31
|
-
},
|
|
32
|
-
getRegex: () => {
|
|
33
|
-
return new RegExp(source, opt);
|
|
34
|
-
},
|
|
35
|
-
};
|
|
36
|
-
return obj;
|
|
37
|
-
}
|
|
38
|
-
const newline = /^(?:[ \t]*(?:\n|$))+/;
|
|
39
|
-
const hr = /^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/;
|
|
40
|
-
/** 列表 */
|
|
41
|
-
const bullet = /(?:[*+-]|\d{1,9}[.)])/;
|
|
42
|
-
/** 列表 */
|
|
43
|
-
const list = edit(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/)
|
|
44
|
-
.replace(/bull/g, bullet)
|
|
45
|
-
.getRegex();
|
|
46
|
-
/** 围栏 fence
|
|
47
|
-
* 什么是围栏: 围栏是用来包裹代码块的,比如 ```javascript 和 ``` 之间就是围栏
|
|
48
|
-
*/
|
|
49
|
-
const fences = /^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/;
|
|
50
|
-
// 一个块
|
|
51
|
-
// const _segment = /^([^\n]+(?:\n(?!fences|list|hr| +\n)[^\n]+)*)/;
|
|
52
|
-
const _segment = /^([^\n]+(?:\n(?!fences|list|hr| +\n|\n)[^\n]+)*\n?)/;
|
|
53
|
-
const segment = edit(_segment)
|
|
54
|
-
.replace(/fences/, fences)
|
|
55
|
-
.replace(/list/, list)
|
|
56
|
-
.replace(/hr/, hr)
|
|
57
|
-
.getRegex();
|
|
58
|
-
const blockNormal = {
|
|
59
|
-
newline,
|
|
60
|
-
fences,
|
|
61
|
-
segment,
|
|
62
|
-
list,
|
|
63
|
-
hr,
|
|
64
|
-
};
|
|
65
|
-
export const rules = {
|
|
66
|
-
block: blockNormal,
|
|
67
|
-
other,
|
|
68
|
-
};
|
|
69
|
-
//# sourceMappingURL=rule.js.map
|
package/es/utils/rule.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rule.js","sourceRoot":"","sources":["../../src/utils/rule.ts"],"names":[],"mappings":"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"}
|