UNPKG

3.01 kBTypeScriptView Raw
1import MarkdownIt = require('..');
2import Token = require('../token');
3
4declare namespace StateBlock {
5 type ParentType = 'blockquote' | 'list' | 'root' | 'paragraph' | 'reference';
6}
7
8declare class StateBlock {
9 constructor(src: string, md: MarkdownIt, env: any, tokens: Token[]);
10
11 src: string;
12
13 /**
14 * link to parser instance
15 */
16 md: MarkdownIt;
17
18 env: any;
19
20 //
21 // Internal state vartiables
22 //
23
24 tokens: Token[];
25
26 /**
27 * line begin offsets for fast jumps
28 */
29 bMarks: number[];
30 /**
31 * line end offsets for fast jumps
32 */
33 eMarks: number[];
34 /**
35 * offsets of the first non-space characters (tabs not expanded)
36 */
37 tShift: number[];
38 /**
39 * indents for each line (tabs expanded)
40 */
41 sCount: number[];
42
43 /**
44 * An amount of virtual spaces (tabs expanded) between beginning
45 * of each line (bMarks) and real beginning of that line.
46 *
47 * It exists only as a hack because blockquotes override bMarks
48 * losing information in the process.
49 *
50 * It's used only when expanding tabs, you can think about it as
51 * an initial tab length, e.g. bsCount=21 applied to string `\t123`
52 * means first tab should be expanded to 4-21%4 === 3 spaces.
53 */
54 bsCount: number[];
55
56 // block parser variables
57
58 /**
59 * required block content indent (for example, if we are
60 * inside a list, it would be positioned after list marker)
61 */
62 blkIndent: number;
63 /**
64 * line index in src
65 */
66 line: number;
67 /**
68 * lines count
69 */
70 lineMax: number;
71 /**
72 * loose/tight mode for lists
73 */
74 tight: boolean;
75 /**
76 * indent of the current dd block (-1 if there isn't any)
77 */
78 ddIndent: number;
79 /**
80 * indent of the current list block (-1 if there isn't any)
81 */
82 listIndent: number;
83
84 /**
85 * can be 'blockquote', 'list', 'root', 'paragraph' or 'reference'
86 * used in lists to determine if they interrupt a paragraph
87 */
88 parentType: StateBlock.ParentType;
89
90 level: number;
91
92 /**
93 * renderer
94 */
95 result: string;
96
97 /**
98 * Push new token to "stream".
99 */
100 push(type: string, tag: string, nesting: Token.Nesting): Token;
101
102 isEmpty(line: number): boolean;
103
104 skipEmptyLines(from: number): number;
105
106 /**
107 * Skip spaces from given position.
108 */
109 skipSpaces(pos: number): number;
110
111 /**
112 * Skip spaces from given position in reverse.
113 */
114 skipSpacesBack(pos: number, min: number): number;
115
116 /**
117 * Skip char codes from given position
118 */
119 skipChars(pos: number, code: number): number;
120
121 /**
122 * Skip char codes reverse from given position - 1
123 */
124 skipCharsBack(pos: number, code: number, min: number): number;
125
126 /**
127 * cut lines range from source.
128 */
129 getLines(begin: number, end: number, indent: number, keepLastLF: boolean): string;
130
131 Token: typeof Token;
132}
133
134export = StateBlock;