|
1 |
| -import { |
2 |
| - edit, noopTest, |
3 |
| -} from './helpers.ts'; |
| 1 | +export const noopTest = { exec: () => null } as unknown as RegExp; |
| 2 | + |
| 3 | +export function edit(regex: string | RegExp, opt?: string) { |
| 4 | + let source = typeof regex === 'string' ? regex : regex.source; |
| 5 | + opt = opt || ''; |
| 6 | + const obj = { |
| 7 | + replace: (name: string | RegExp, val: string | RegExp) => { |
| 8 | + let valSource = typeof val === 'string' ? val : val.source; |
| 9 | + valSource = valSource.replace(other.caret, '$1'); |
| 10 | + source = source.replace(name, valSource); |
| 11 | + return obj; |
| 12 | + }, |
| 13 | + getRegex: () => { |
| 14 | + return new RegExp(source, opt); |
| 15 | + }, |
| 16 | + }; |
| 17 | + return obj; |
| 18 | +} |
| 19 | +/** |
| 20 | + * Other Rules |
| 21 | + */ |
| 22 | + |
| 23 | +export const other = { |
| 24 | + codeRemoveIndent: /^(?: {1,4}| {0,3}\t)/gm, |
| 25 | + outputLinkReplace: /\\([\[\]])/g, |
| 26 | + indentCodeCompensation: /^(\s+)(?:```)/, |
| 27 | + beginningSpace: /^\s+/, |
| 28 | + endingHash: /#$/, |
| 29 | + startingSpaceChar: /^ /, |
| 30 | + endingSpaceChar: / $/, |
| 31 | + nonSpaceChar: /[^ ]/, |
| 32 | + newLineCharGlobal: /\n/g, |
| 33 | + tabCharGlobal: /\t/g, |
| 34 | + multipleSpaceGlobal: /\s+/g, |
| 35 | + blankLine: /^[ \t]*$/, |
| 36 | + doubleBlankLine: /\n[ \t]*\n[ \t]*$/, |
| 37 | + blockquoteStart: /^ {0,3}>/, |
| 38 | + blockquoteSetextReplace: /\n {0,3}((?:=+|-+) *)(?=\n|$)/g, |
| 39 | + blockquoteSetextReplace2: /^ {0,3}>[ \t]?/gm, |
| 40 | + listReplaceTabs: /^\t+/, |
| 41 | + listReplaceNesting: /^ {1,4}(?=( {4})*[^ ])/g, |
| 42 | + listIsTask: /^\[[ xX]\] /, |
| 43 | + listReplaceTask: /^\[[ xX]\] +/, |
| 44 | + anyLine: /\n.*\n/, |
| 45 | + hrefBrackets: /^<(.*)>$/, |
| 46 | + tableDelimiter: /[:|]/, |
| 47 | + tableAlignChars: /^\||\| *$/g, |
| 48 | + tableRowBlankLine: /\n[ \t]*$/, |
| 49 | + tableAlignRight: /^ *-+: *$/, |
| 50 | + tableAlignCenter: /^ *:-+: *$/, |
| 51 | + tableAlignLeft: /^ *:-+ *$/, |
| 52 | + startATag: /^<a /i, |
| 53 | + endATag: /^<\/a>/i, |
| 54 | + startPreScriptTag: /^<(pre|code|kbd|script)(\s|>)/i, |
| 55 | + endPreScriptTag: /^<\/(pre|code|kbd|script)(\s|>)/i, |
| 56 | + startAngleBracket: /^</, |
| 57 | + endAngleBracket: />$/, |
| 58 | + pedanticHrefTitle: /^([^'"]*[^\s])\s+(['"])(.*)\2/, |
| 59 | + unicodeAlphaNumeric: /[\p{L}\p{N}]/u, |
| 60 | + escapeTest: /[&<>"']/, |
| 61 | + escapeReplace: /[&<>"']/g, |
| 62 | + escapeTestNoEncode: /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/, |
| 63 | + escapeReplaceNoEncode: /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g, |
| 64 | + unescapeTest: /&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig, |
| 65 | + caret: /(^|[^\[])\^/g, |
| 66 | + percentDecode: /%25/g, |
| 67 | + findPipe: /\|/g, |
| 68 | + splitPipe: / \|/, |
| 69 | + slashPipe: /\\\|/g, |
| 70 | + carriageReturn: /\r\n|\r/g, |
| 71 | + spaceLine: /^ +$/gm, |
| 72 | + notSpaceStart: /^\S*/, |
| 73 | + endingNewline: /\n$/, |
| 74 | + listItemRegex: (bull: string) => new RegExp(`^( {0,3}${bull})((?:[\t ][^\\n]*)?(?:\\n|$))`), |
| 75 | + nextBulletRegex: (indent: number) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))`), |
| 76 | + hrRegex: (indent: number) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`), |
| 77 | + fencesBeginRegex: (indent: number) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\`\`\`|~~~)`), |
| 78 | + headingBeginRegex: (indent: number) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`), |
| 79 | + htmlBeginRegex: (indent: number) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}<[a-z].*>`, 'i'), |
| 80 | +}; |
4 | 81 |
|
5 | 82 | /**
|
6 | 83 | * Block-Level Grammar
|
@@ -322,55 +399,6 @@ const inlineBreaks: Record<InlineKeys, RegExp> = {
|
322 | 399 | * exports
|
323 | 400 | */
|
324 | 401 |
|
325 |
| -/** |
326 |
| - * Other Rules |
327 |
| - */ |
328 |
| - |
329 |
| -export const other = { |
330 |
| - codeRemoveIndent: /^(?: {1,4}| {0,3}\t)/gm, |
331 |
| - outputLinkReplace: /\\([\[\]])/g, |
332 |
| - indentCodeCompensation: /^(\s+)(?:```)/, |
333 |
| - beginningSpace: /^\s+/, |
334 |
| - endingHash: /#$/, |
335 |
| - startingSpaceChar: /^ /, |
336 |
| - endingSpaceChar: / $/, |
337 |
| - nonSpaceChar: /[^ ]/, |
338 |
| - newLineCharGlobal: /\n/g, |
339 |
| - tabCharGlobal: /\t/g, |
340 |
| - multipleSpaceGlobal: /\s+/g, |
341 |
| - blankLine: /^[ \t]*$/, |
342 |
| - doubleBlankLine: /\n[ \t]*\n[ \t]*$/, |
343 |
| - blockquoteStart: /^ {0,3}>/, |
344 |
| - blockquoteSetextReplace: /\n {0,3}((?:=+|-+) *)(?=\n|$)/g, |
345 |
| - blockquoteSetextReplace2: /^ {0,3}>[ \t]?/gm, |
346 |
| - listReplaceTabs: /^\t+/, |
347 |
| - listReplaceNesting: /^ {1,4}(?=( {4})*[^ ])/g, |
348 |
| - listIsTask: /^\[[ xX]\] /, |
349 |
| - listReplaceTask: /^\[[ xX]\] +/, |
350 |
| - anyLine: /\n.*\n/, |
351 |
| - hrefBrackets: /^<(.*)>$/, |
352 |
| - tableDelimiter: /[:|]/, |
353 |
| - tableAlignChars: /^\||\| *$/g, |
354 |
| - tableRowBlankLine: /\n[ \t]*$/, |
355 |
| - tableAlignRight: /^ *-+: *$/, |
356 |
| - tableAlignCenter: /^ *:-+: *$/, |
357 |
| - tableAlignLeft: /^ *:-+ *$/, |
358 |
| - startATag: /^<a /i, |
359 |
| - endATag: /^<\/a>/i, |
360 |
| - startPreScriptTag: /^<(pre|code|kbd|script)(\s|>)/i, |
361 |
| - endPreScriptTag: /^<\/(pre|code|kbd|script)(\s|>)/i, |
362 |
| - startAngleBracket: /^</, |
363 |
| - endAngleBracket: />$/, |
364 |
| - pedanticHrefTitle: /^([^'"]*[^\s])\s+(['"])(.*)\2/, |
365 |
| - unicodeAlphaNumeric: /[\p{L}\p{N}]/u, |
366 |
| - listItemRegex: (bull: string) => new RegExp(`^( {0,3}${bull})((?:[\t ][^\\n]*)?(?:\\n|$))`), |
367 |
| - nextBulletRegex: (indent: number) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))`), |
368 |
| - hrRegex: (indent: number) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`), |
369 |
| - fencesBeginRegex: (indent: number) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\`\`\`|~~~)`), |
370 |
| - headingBeginRegex: (indent: number) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`), |
371 |
| - htmlBeginRegex: (indent: number) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}<[a-z].*>`, 'i'), |
372 |
| -}; |
373 |
| - |
374 | 402 | export const block = {
|
375 | 403 | normal: blockNormal,
|
376 | 404 | gfm: blockGfm,
|
|
0 commit comments