-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTokenizerTokens.ts
More file actions
58 lines (46 loc) · 1.09 KB
/
Copy pathTokenizerTokens.ts
File metadata and controls
58 lines (46 loc) · 1.09 KB
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
class Token {}
/* EOF TOKEN */
class EOFToken extends Token {}
/* DOCTYPE TOKEN */
class DoctypeToken extends Token {}
/* COMMENT TOKEN */
class CommentToken extends Token {
constructor(public comment) {
super();
}
}
/* CHARACTER TOKEN */
class CharacterToken extends Token {
constructor(public character) {
super();
}
}
/* TAG TOKENS */
interface ITagTokenAttriute {
name: String;
value: String;
}
class TagToken extends Token {
public tagName: String;
public attributes: Array<ITagTokenAttriute> = [];
public selfClosing: boolean = false;
public currentAttribute: ITagTokenAttriute = null;
constructor(tagName: String) {
super();
this.tagName = tagName;
}
public addAttribute(attribute: ITagTokenAttriute): void {
this.currentAttribute = attribute;
this.attributes.push(attribute);
}
}
class StartTagToken extends TagToken {
constructor(tagName: String) {
super(tagName);
}
}
class EndTagToken extends TagToken {
constructor(tagName: String) {
super(tagName);
}
}