import { ListData } from '@t/node'; import { ListNode, HtmlBlockNode, HeadingNode, CodeBlockNode, createNode, BlockNode } from './node'; import { OPENTAG, CLOSETAG } from './rawHtml'; import { peek, isSpaceOrTab, reNonSpace, CODE_INDENT, C_OPEN_BRACKET, C_GREATERTHAN, C_LESSTHAN, C_TAB, C_SPACE, } from './blockHelper'; import { Parser } from './blocks'; import { tableHead, tableBody } from './gfm/tableBlockStart'; import { customBlock } from './custom/customBlockStart'; export const enum Matched { None = 0, // No Match Container, // Keep Going Leaf, // No more block starts } export interface BlockStart { (parser: Parser, container: BlockNode): Matched; } const reCodeFence = /^`{3,}(?!.*`)|^~{3,}/; const reHtmlBlockOpen = [ /./, // dummy for 0 /^<(?:script|pre|style)(?:\s|>|$)/i, /^