ds-markdown 0.0.9 → 0.0.10-beta.1

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.
@@ -2,6 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';
3
3
  import HighReactMarkdown from '../components/HighReactMarkdown/index.js';
4
4
  import classNames from 'classnames';
5
+ import { compiler } from '../utils/compiler.js';
5
6
  import { __DEV__ } from '../constant.js';
6
7
  const MarkdownCMD = forwardRef(({ interval = 30, isClosePrettyTyped = false, onEnd, onStart, onTypedChar }, ref) => {
7
8
  /** 当前需要打字的内容 */
@@ -32,12 +33,12 @@ const MarkdownCMD = forwardRef(({ interval = 30, isClosePrettyTyped = false, onE
32
33
  * 稳定段落
33
34
  * 稳定段落是已经打过字,并且不会再变化的段落
34
35
  */
35
- const [stableParagraphs, setStableParagraphs] = useState([]);
36
+ const [stableSegments, setStableSegments] = useState([]);
36
37
  /** 当前段落 */
37
- const [currentParagraph, setCurrentParagraph] = useState(undefined);
38
+ const [currentSegment, setCurrentSegment] = useState(undefined);
38
39
  /** 当前段落引用 */
39
40
  const currentParagraphRef = useRef(undefined);
40
- currentParagraphRef.current = currentParagraph;
41
+ currentParagraphRef.current = currentSegment;
41
42
  /** 清除打字定时器 */
42
43
  const clearTimer = () => {
43
44
  if (timerRef.current) {
@@ -53,9 +54,9 @@ const MarkdownCMD = forwardRef(({ interval = 30, isClosePrettyTyped = false, onE
53
54
  };
54
55
  }, []);
55
56
  /** 思考段落 */
56
- const thinkingParagraphs = useMemo(() => stableParagraphs.filter((paragraph) => paragraph.answerType === 'thinking'), [stableParagraphs]);
57
+ const thinkingParagraphs = useMemo(() => stableSegments.filter((paragraph) => paragraph.answerType === 'thinking'), [stableSegments]);
57
58
  /** 回答段落 */
58
- const answerParagraphs = useMemo(() => stableParagraphs.filter((paragraph) => paragraph.answerType === 'answer'), [stableParagraphs]);
59
+ const answerParagraphs = useMemo(() => stableSegments.filter((paragraph) => paragraph.answerType === 'answer'), [stableSegments]);
59
60
  /**
60
61
  * 记录打过的字
61
62
  * @param char 当前字符
@@ -174,14 +175,14 @@ const MarkdownCMD = forwardRef(({ interval = 30, isClosePrettyTyped = false, onE
174
175
  else {
175
176
  triggerOnTypedChar(char);
176
177
  }
177
- const currentParagraph = currentParagraphRef.current;
178
- /** 如果碰到 则需要处理成两个段落 */
179
- if (char.content === '\n\n') {
180
- if (currentParagraph) {
181
- setStableParagraphs((prev) => {
178
+ const currentSegment = currentParagraphRef.current;
179
+ /** 如果碰到 space 则需要处理成两个段落 */
180
+ if (char.contentType === 'space') {
181
+ if (currentSegment) {
182
+ setStableSegments((prev) => {
182
183
  const newParagraphs = [...prev];
183
- if (currentParagraph) {
184
- newParagraphs.push({ ...currentParagraph, isTyped: false });
184
+ if (currentSegment) {
185
+ newParagraphs.push({ ...currentSegment, isTyped: false });
185
186
  }
186
187
  newParagraphs.push({
187
188
  content: '',
@@ -191,10 +192,10 @@ const MarkdownCMD = forwardRef(({ interval = 30, isClosePrettyTyped = false, onE
191
192
  });
192
193
  return newParagraphs;
193
194
  });
194
- setCurrentParagraph(undefined);
195
+ setCurrentSegment(undefined);
195
196
  }
196
197
  else {
197
- setStableParagraphs((prev) => {
198
+ setStableSegments((prev) => {
198
199
  const newParagraphs = [...prev];
199
200
  newParagraphs.push({
200
201
  content: '',
@@ -209,7 +210,7 @@ const MarkdownCMD = forwardRef(({ interval = 30, isClosePrettyTyped = false, onE
209
210
  return;
210
211
  }
211
212
  // 处理当前段落
212
- let _currentParagraph = currentParagraph;
213
+ let _currentParagraph = currentSegment;
213
214
  const newCurrentParagraph = {
214
215
  content: '',
215
216
  isTyped: false,
@@ -220,17 +221,17 @@ const MarkdownCMD = forwardRef(({ interval = 30, isClosePrettyTyped = false, onE
220
221
  // 如果当前没有段落,则直接设置为当前段落
221
222
  _currentParagraph = newCurrentParagraph;
222
223
  }
223
- else if (currentParagraph && currentParagraph?.answerType !== char.answerType) {
224
+ else if (currentSegment && currentSegment?.answerType !== char.answerType) {
224
225
  // 如果当前段落和当前字符的回答类型不一致,则需要处理成两个段落
225
- setStableParagraphs((prev) => {
226
+ setStableSegments((prev) => {
226
227
  const newParagraphs = [...prev];
227
- newParagraphs.push({ ...currentParagraph, isTyped: false });
228
+ newParagraphs.push({ ...currentSegment, isTyped: false });
228
229
  return newParagraphs;
229
230
  });
230
231
  _currentParagraph = newCurrentParagraph;
231
- setCurrentParagraph(_currentParagraph);
232
+ setCurrentSegment(_currentParagraph);
232
233
  }
233
- setCurrentParagraph((prev) => {
234
+ setCurrentSegment((prev) => {
234
235
  return {
235
236
  ..._currentParagraph,
236
237
  content: (prev?.content || '') + char.content,
@@ -241,6 +242,7 @@ const MarkdownCMD = forwardRef(({ interval = 30, isClosePrettyTyped = false, onE
241
242
  }
242
243
  startTyped(true);
243
244
  };
245
+ const lastSegmentRaw = useRef('');
244
246
  useImperativeHandle(ref, () => ({
245
247
  /**
246
248
  * 添加内容
@@ -254,17 +256,26 @@ const MarkdownCMD = forwardRef(({ interval = 30, isClosePrettyTyped = false, onE
254
256
  }
255
257
  return;
256
258
  }
257
- // 如果两个\n,则\n这两个字符要合一起,作为一个字符处理,并且把多个\n处理成一个\n
258
- const charsGroup = content.split('\n\n');
259
- charsGroup.forEach((chars, index) => {
260
- if (isClosePrettyTyped) {
261
- charsRef.current.push({ content: chars, answerType });
259
+ if (!lastSegmentRaw.current) {
260
+ lastSegmentRaw.current = content;
261
+ }
262
+ else {
263
+ lastSegmentRaw.current += content;
264
+ }
265
+ const tokens = compiler(lastSegmentRaw.current);
266
+ // 如果最后一个token是segment,则把最后一个token的raw赋值给lastSegmentRaw
267
+ if (tokens[tokens.length - 1].type === 'segment') {
268
+ lastSegmentRaw.current = tokens[tokens.length - 1].raw;
269
+ }
270
+ else {
271
+ lastSegmentRaw.current = '';
272
+ }
273
+ tokens.forEach((token) => {
274
+ if (token.type === 'space') {
275
+ charsRef.current.push({ content: token.raw, answerType, contentType: 'space' });
262
276
  }
263
277
  else {
264
- charsRef.current.push(...chars.split('').map((char) => ({ content: char, answerType })));
265
- }
266
- if (index !== charsGroup.length - 1) {
267
- charsRef.current.push({ content: '\n\n', answerType });
278
+ charsRef.current.push(...token.raw.split('').map((char) => ({ content: char, answerType, contentType: 'segment' })));
268
279
  }
269
280
  });
270
281
  if (!isTypedRef.current) {
@@ -277,8 +288,8 @@ const MarkdownCMD = forwardRef(({ interval = 30, isClosePrettyTyped = false, onE
277
288
  clear: () => {
278
289
  clearTimer();
279
290
  charsRef.current = [];
280
- setStableParagraphs([]);
281
- setCurrentParagraph(undefined);
291
+ setStableSegments([]);
292
+ setCurrentSegment(undefined);
282
293
  isWholeTypedEndRef.current = false;
283
294
  },
284
295
  /**
@@ -297,12 +308,12 @@ const MarkdownCMD = forwardRef(({ interval = 30, isClosePrettyTyped = false, onE
297
308
  return null;
298
309
  }
299
310
  return _jsx(HighReactMarkdown, { children: paragraph.content || '' }, index);
300
- }), currentParagraph?.answerType === answerType && _jsx(HighReactMarkdown, { children: currentParagraph.content || '' }, currentParagraph.content)] }));
311
+ }), currentSegment?.answerType === answerType && _jsx(HighReactMarkdown, { children: currentSegment.content || '' }, currentSegment.content)] }));
301
312
  };
302
313
  return (_jsxs("div", { className: classNames({
303
314
  'ds-markdown': true,
304
315
  apple: true,
305
- }), children: [(thinkingParagraphs.length > 0 || currentParagraph?.answerType === 'thinking') && _jsx("div", { className: "ds-markdown-thinking", children: getParagraphs(thinkingParagraphs, 'thinking') }), (answerParagraphs.length > 0 || currentParagraph?.answerType === 'answer') && _jsx("div", { className: "ds-markdown-answer", children: getParagraphs(answerParagraphs, 'answer') })] }));
316
+ }), children: [(thinkingParagraphs.length > 0 || currentSegment?.answerType === 'thinking') && _jsx("div", { className: "ds-markdown-thinking", children: getParagraphs(thinkingParagraphs, 'thinking') }), (answerParagraphs.length > 0 || currentSegment?.answerType === 'answer') && _jsx("div", { className: "ds-markdown-answer", children: getParagraphs(answerParagraphs, 'answer') })] }));
306
317
  });
307
318
  export default MarkdownCMD;
308
319
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/MarkdownCMD/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/MarkdownCMD/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /** 此文件借鉴 marked 的部分代码 */
2
+ interface Space {
3
+ type: 'space';
4
+ raw: string;
5
+ }
6
+ interface Fence {
7
+ type: 'fence';
8
+ raw: string;
9
+ }
10
+ interface Segment {
11
+ type: 'segment';
12
+ raw: string;
13
+ }
14
+ interface List {
15
+ type: 'list';
16
+ raw: string;
17
+ items: ListItem[];
18
+ loose: boolean;
19
+ }
20
+ interface ListItem {
21
+ type: 'list_item';
22
+ raw: string;
23
+ task: boolean;
24
+ checked: boolean | undefined;
25
+ loose: boolean;
26
+ text: string;
27
+ tokens: Token[];
28
+ }
29
+ export type Token = Space | Fence | Segment | List | ListItem;
30
+ export declare class Tokenizer {
31
+ /** 空行 */
32
+ space(src: string): Space | undefined;
33
+ /** 围栏 fence */
34
+ fence(src: string): Fence | undefined;
35
+ /** 块 */
36
+ segment(src: string): Segment | undefined;
37
+ /** 列表 */
38
+ list(src: string): List | undefined;
39
+ }
40
+ export {};
@@ -0,0 +1,179 @@
1
+ /** 此文件借鉴 marked 的部分代码 */
2
+ import { rules } from './rule.js';
3
+ export class Tokenizer {
4
+ /** 空行 */
5
+ space(src) {
6
+ const cap = rules.block.newline.exec(src);
7
+ if (cap) {
8
+ return {
9
+ type: 'space',
10
+ raw: cap[0],
11
+ };
12
+ }
13
+ }
14
+ /** 围栏 fence */
15
+ fence(src) {
16
+ const cap = rules.block.fences.exec(src);
17
+ if (cap) {
18
+ return {
19
+ type: 'fence',
20
+ raw: cap[0],
21
+ };
22
+ }
23
+ }
24
+ /** 块 */
25
+ segment(src) {
26
+ const cap = rules.block.segment.exec(src);
27
+ if (cap) {
28
+ return {
29
+ type: 'segment',
30
+ raw: cap[0],
31
+ };
32
+ }
33
+ }
34
+ /** 列表 */
35
+ list(src) {
36
+ let cap = rules.block.list.exec(src);
37
+ if (cap) {
38
+ let bull = cap[1].trim();
39
+ const isordered = bull.length > 1;
40
+ const list = {
41
+ type: 'list',
42
+ raw: cap[0],
43
+ items: [],
44
+ loose: false,
45
+ };
46
+ bull = isordered ? `\\d{1,9}\\${bull.slice(-1)}` : `\\${bull}`;
47
+ // Get next list item
48
+ const itemRegex = rules.other.listItemRegex(bull);
49
+ while (src) {
50
+ let endEarly = false;
51
+ let raw = '';
52
+ let itemContents = '';
53
+ if (!(cap = itemRegex.exec(src))) {
54
+ break;
55
+ }
56
+ if (rules.block.hr.test(src)) {
57
+ // End list if bullet was actually HR (possibly move into itemRegex?)
58
+ break;
59
+ }
60
+ raw = cap[0];
61
+ src = src.substring(raw.length);
62
+ /** 获取列表项 */
63
+ let line = cap[2].split('\n', 1)[0].replace(rules.other.listReplaceTabs, (t) => ' '.repeat(3 * t.length));
64
+ let nextLine = src.split('\n', 1)[0];
65
+ let blankLine = !line.trim();
66
+ let indent = 0;
67
+ if (blankLine) {
68
+ indent = cap[1].length + 1;
69
+ }
70
+ else {
71
+ indent = cap[2].search(rules.other.nonSpaceChar); // Find first non-space char
72
+ indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent
73
+ itemContents = line.slice(indent);
74
+ indent += cap[1].length;
75
+ }
76
+ if (blankLine && rules.other.blankLine.test(nextLine)) {
77
+ // Items begin with at most one blank line
78
+ raw += nextLine + '\n';
79
+ src = src.substring(nextLine.length + 1);
80
+ endEarly = true;
81
+ }
82
+ if (!endEarly) {
83
+ const nextBulletRegex = rules.other.nextBulletRegex(indent);
84
+ const hrRegex = rules.other.hrRegex(indent);
85
+ const fencesBeginRegex = rules.other.fencesBeginRegex(indent);
86
+ const headingBeginRegex = rules.other.headingBeginRegex(indent);
87
+ const htmlBeginRegex = rules.other.htmlBeginRegex(indent);
88
+ // Check if following lines should be included in List Item
89
+ while (src) {
90
+ const rawLine = src.split('\n', 1)[0];
91
+ const nextLineWithoutTabs = nextLine.replace(rules.other.tabCharGlobal, ' ');
92
+ nextLine = rawLine;
93
+ // End list item if found code fences
94
+ if (fencesBeginRegex.test(nextLine)) {
95
+ break;
96
+ }
97
+ // End list item if found start of new heading
98
+ if (headingBeginRegex.test(nextLine)) {
99
+ break;
100
+ }
101
+ // End list item if found start of html block
102
+ if (htmlBeginRegex.test(nextLine)) {
103
+ break;
104
+ }
105
+ // End list item if found start of new bullet
106
+ if (nextBulletRegex.test(nextLine)) {
107
+ break;
108
+ }
109
+ // Horizontal rule found
110
+ if (hrRegex.test(nextLine)) {
111
+ break;
112
+ }
113
+ if (nextLineWithoutTabs.search(rules.other.nonSpaceChar) >= indent || !nextLine.trim()) {
114
+ // Dedent if possible
115
+ itemContents += '\n' + nextLineWithoutTabs.slice(indent);
116
+ }
117
+ else {
118
+ // not enough indentation
119
+ if (blankLine) {
120
+ break;
121
+ }
122
+ // paragraph continuation unless last line was a different block level element
123
+ if (line.replace(rules.other.tabCharGlobal, ' ').search(rules.other.nonSpaceChar) >= 4) {
124
+ // indented code block
125
+ break;
126
+ }
127
+ if (fencesBeginRegex.test(line)) {
128
+ break;
129
+ }
130
+ if (headingBeginRegex.test(line)) {
131
+ break;
132
+ }
133
+ if (hrRegex.test(line)) {
134
+ break;
135
+ }
136
+ itemContents += '\n' + nextLine;
137
+ }
138
+ if (!blankLine && !nextLine.trim()) {
139
+ // Check if current line is blank
140
+ blankLine = true;
141
+ }
142
+ raw += rawLine + '\n';
143
+ src = src.substring(rawLine.length + 1);
144
+ line = nextLineWithoutTabs.slice(indent);
145
+ }
146
+ }
147
+ let ischecked;
148
+ const istask = rules.other.listIsTask.exec(itemContents);
149
+ if (istask) {
150
+ ischecked = istask[0] !== '[ ] ';
151
+ itemContents = itemContents.replace(rules.other.listReplaceTask, '');
152
+ }
153
+ list.items.push({
154
+ type: 'list_item',
155
+ raw,
156
+ task: !!istask,
157
+ checked: ischecked,
158
+ loose: false,
159
+ text: itemContents,
160
+ tokens: [],
161
+ });
162
+ list.raw += raw;
163
+ }
164
+ // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic
165
+ const lastItem = list.items.at(-1);
166
+ if (lastItem) {
167
+ lastItem.raw = lastItem.raw.trimEnd();
168
+ lastItem.text = lastItem.text.trimEnd();
169
+ }
170
+ else {
171
+ // not a list since there were no items
172
+ return;
173
+ }
174
+ list.raw = list.raw.trimEnd();
175
+ return list;
176
+ }
177
+ }
178
+ }
179
+ //# sourceMappingURL=Tokenizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tokenizer.js","sourceRoot":"","sources":["../../../src/utils/Tokenizer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Token } from './Tokenizer.js';
2
+ declare function createCompiler(src: string): Token[];
3
+ export declare const compiler: typeof createCompiler;
4
+ export {};
@@ -0,0 +1,49 @@
1
+ import { Tokenizer } from './Tokenizer.js';
2
+ function compile(src) {
3
+ const tokenizer = new Tokenizer();
4
+ const tokens = [];
5
+ let prevScr = src;
6
+ while (src) {
7
+ const space = tokenizer.space(src);
8
+ if (space) {
9
+ tokens.push(space);
10
+ src = src.slice(space.raw.length);
11
+ continue;
12
+ }
13
+ const list = tokenizer.list(src);
14
+ if (list) {
15
+ tokens.push(list);
16
+ src = src.slice(list.raw.length);
17
+ continue;
18
+ }
19
+ const fence = tokenizer.fence(src);
20
+ if (fence) {
21
+ tokens.push(fence);
22
+ src = src.slice(fence.raw.length);
23
+ continue;
24
+ }
25
+ const segment = tokenizer.segment(src);
26
+ if (segment) {
27
+ tokens.push(segment);
28
+ src = src.slice(segment.raw.length);
29
+ continue;
30
+ }
31
+ if (prevScr === src && src) {
32
+ // 如果src没有变化,则认为是一个段落
33
+ // todo: 后面会做优化,进行细分
34
+ tokens.push({
35
+ type: 'segment',
36
+ raw: src,
37
+ });
38
+ src = '';
39
+ }
40
+ prevScr = src;
41
+ }
42
+ return tokens;
43
+ }
44
+ function createCompiler(src) {
45
+ const tokens = compile(src);
46
+ return tokens;
47
+ }
48
+ export const compiler = createCompiler;
49
+ //# sourceMappingURL=compiler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../../src/utils/compiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAElD,SAAS,OAAO,CAAC,GAAW;IAC1B,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;IAElC,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,IAAI,OAAO,GAAG,GAAG,CAAC;IAClB,OAAO,GAAG,EAAE,CAAC;QACX,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;aACT,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"}
@@ -0,0 +1,25 @@
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
+ };
@@ -0,0 +1,68 @@
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 = edit(_segment)
53
+ .replace(/fences/, fences)
54
+ .replace(/list/, list)
55
+ .replace(/hr/, hr)
56
+ .getRegex();
57
+ const blockNormal = {
58
+ newline,
59
+ fences,
60
+ segment,
61
+ list,
62
+ hr,
63
+ };
64
+ export const rules = {
65
+ block: blockNormal,
66
+ other,
67
+ };
68
+ //# sourceMappingURL=rule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule.js","sourceRoot":"","sources":["../../../src/utils/rule.ts"],"names":[],"mappings":"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"}