UNPKG

4.16 kBPlain TextView Raw
1import type { ASTNodeTypes } from "./ASTNodeTypes";
2import type {
3 AnyTxtNode,
4 TxtBlockQuoteNode,
5 TxtBreakNode,
6 TxtCodeBlockNode,
7 TxtCommentNode,
8 TxtDeleteNode,
9 TxtDocumentNode,
10 TxtEmphasisNode,
11 TxtHeaderNode,
12 TxtHorizontalRuleNode,
13 TxtHtmlNode,
14 TxtImageNode,
15 TxtCodeNode,
16 TxtLinkNode,
17 TxtListItemNode,
18 TxtListNode,
19 TxtParagraphNode,
20 TxtStrNode,
21 TxtStrongNode,
22 TxtTableCellNode,
23 TxtTableNode,
24 TxtTableRowNode
25} from "./NodeType";
26
27/**
28 * Type utility for TxtNodeType
29 * Return TxtNode interface for the TxtNodeTYpe
30 *
31 * @example
32 * ```ts
33 * type NodeType = TxtNodeTypeOfNode<ASTNodeTypes.Document>;
34 * ```
35 */
36export type TypeofTxtNode<T extends ASTNodeTypes | string> =
37 // Root
38 T extends ASTNodeTypes.Document
39 ? TxtDocumentNode
40 : T extends ASTNodeTypes.DocumentExit
41 ? TxtDocumentNode
42 : T extends ASTNodeTypes.Paragraph // Paragraph Str.
43 ? TxtParagraphNode
44 : T extends ASTNodeTypes.ParagraphExit
45 ? TxtParagraphNode
46 : T extends ASTNodeTypes.BlockQuote // > Str
47 ? TxtBlockQuoteNode
48 : T extends ASTNodeTypes.BlockQuoteExit
49 ? TxtBlockQuoteNode
50 : T extends ASTNodeTypes.List // - item
51 ? TxtListNode
52 : T extends ASTNodeTypes.ListExit
53 ? TxtListNode
54 : T extends ASTNodeTypes.ListItem // - item
55 ? TxtListItemNode
56 : T extends ASTNodeTypes.ListItemExit
57 ? TxtListItemNode
58 : T extends ASTNodeTypes.Header // # Str
59 ? TxtHeaderNode
60 : T extends ASTNodeTypes.HeaderExit
61 ? TxtHeaderNode
62 : T extends ASTNodeTypes.CodeBlock
63 ? /* ```
64 * code block
65 * ```
66 */
67 TxtCodeBlockNode
68 : T extends ASTNodeTypes.CodeBlockExit
69 ? TxtCodeBlockNode
70 : T extends ASTNodeTypes.HtmlBlock // <div>\n</div>
71 ? TxtHtmlNode
72 : T extends ASTNodeTypes.HtmlBlockExit
73 ? TxtHtmlNode
74 : T extends ASTNodeTypes.Link // [link](https://example.com)
75 ? TxtLinkNode
76 : T extends ASTNodeTypes.LinkExit
77 ? TxtLinkNode
78 : T extends ASTNodeTypes.Delete // ~~Str~~
79 ? TxtDeleteNode
80 : T extends ASTNodeTypes.DeleteExit
81 ? TxtDeleteNode
82 : T extends ASTNodeTypes.Emphasis // *Str*
83 ? TxtEmphasisNode
84 : T extends ASTNodeTypes.EmphasisExit
85 ? TxtEmphasisNode
86 : T extends ASTNodeTypes.Strong // __Str__
87 ? TxtStrongNode
88 : T extends ASTNodeTypes.StrongExit
89 ? TxtStrongNode
90 : T extends ASTNodeTypes.Break // Str<space><space>
91 ? TxtBreakNode
92 : T extends ASTNodeTypes.BreakExit
93 ? TxtBreakNode
94 : T extends ASTNodeTypes.Image // ![alt](https://example.com/img)
95 ? TxtImageNode
96 : T extends ASTNodeTypes.ImageExit
97 ? TxtImageNode
98 : T extends ASTNodeTypes.HorizontalRule // ----
99 ? TxtHorizontalRuleNode
100 : T extends ASTNodeTypes.HorizontalRuleExit
101 ? TxtHorizontalRuleNode
102 : T extends ASTNodeTypes.Comment // Markdown does not have comment(It is Html comment). Some plugins use comment as a marker.
103 ? TxtCommentNode
104 : T extends ASTNodeTypes.CommentExit
105 ? TxtCommentNode
106 : T extends ASTNodeTypes.Str // Str
107 ? TxtStrNode
108 : T extends ASTNodeTypes.StrExit
109 ? TxtStrNode
110 : T extends ASTNodeTypes.Code // `code`
111 ? TxtCodeNode
112 : T extends ASTNodeTypes.CodeExit
113 ? TxtCodeNode
114 : T extends ASTNodeTypes.Html // <span>Str</span>
115 ? TxtHtmlNode
116 : T extends ASTNodeTypes.HtmlExit
117 ? TxtHtmlNode
118 : T extends ASTNodeTypes.Table
119 ? TxtTableNode
120 : T extends ASTNodeTypes.TableExit
121 ? TxtTableNode
122 : T extends ASTNodeTypes.TableRow
123 ? TxtTableRowNode
124 : T extends ASTNodeTypes.TableRowExit
125 ? TxtTableRowNode
126 : T extends ASTNodeTypes.TableCell
127 ? TxtTableCellNode
128 : T extends ASTNodeTypes.TableCellExit
129 ? TxtTableCellNode
130 : AnyTxtNode;