1 | import MarkdownIt = require('..');
|
2 | import Token = require('../token');
|
3 |
|
4 | declare namespace StateBlock {
|
5 | type ParentType = 'blockquote' | 'list' | 'root' | 'paragraph' | 'reference';
|
6 | }
|
7 |
|
8 | declare 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 |
|
134 | export = StateBlock;
|