-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
types.ts
executable file
·119 lines (108 loc) · 2.38 KB
/
types.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
import {
Parent as TexastParent,
TexastContent,
Literal as TexastLiteral,
Root as TexastRoot,
ParagraphContent as TexastParagraphContent,
} from 'texast'
import {
Attributes as JastProperties,
//Node,
Parent,
ElementContent as Element,
Text,
Root,
Content,
Name,
} from 'jast-types'
/**
* jast Node
*/
export type Node = Parent['children'][number] | Root
type t = Extract<Node, { name: 'td' }>
export type Attributes = JastProperties
export interface Options {
handlers?: { [handle: string]: Handle }
document?: boolean
newLines?: boolean
checked?: string
unchecked?: string
quotes?: Array<string>
topSection?: number
italics?: 'emph' | 'textit'
bibname?: string
columnSeparator?: boolean
booktabs?: boolean
documentClass?: {
options?: string[]
name: string
}
citationAnalyzer?: (node: Node) => string
}
export type Handle = (
j: J,
node: any,
parent?: Parent,
) => TexastContent | Array<TexastContent> | void
export interface Context {
nodeById?: {
[id: string]: Element
}
baseFound: boolean
frozenBaseUrl: string | null
wrapText: boolean
inTable: boolean
qNesting: number
handlers: { [handler: string]: Handle }
document: boolean | undefined
checked: string
unchecked: string
booktabs: boolean
quotes: Array<string>
italics: string
documentClass: {
options?: string[]
name: string
}
sectionDepth: number
bibname: string
columnSeparator: boolean
footnotes: Record<string, TexastContent[]>
rowNumber: number
numberOfRows: number
citationAnalyzer: (node: Node) => string
}
export type JWithProps = (
node: Node,
type: string,
props?: Attributes,
children?: string | Array<TexastContent>,
) => TexastContent
export type JWithoutProps = (
node: Node,
type: string,
children?: string | Array<TexastContent>,
) => TexastContent
export type JWithPropsSpecific<TNode extends TexastContent = TexastContent> = (
node: Node,
type: Pick<TNode, 'type'>,
props?: Attributes,
//@ts-expect-error yeah i know butttt
// TODO: Make this not error
children?: Pick<TNode, 'children'>,
) => TNode
export type J = JWithProps & JWithoutProps & Context
export type {
Parent,
Root,
Element,
Content,
TexastLiteral,
TexastContent,
TexastParent,
TexastRoot,
TexastParagraphContent,
Text,
Name,
}
export type Parents = Extract<Exclude<Node, Text | Root>, { children: any[] }>