2
2
3
3
namespace wast {
4
4
5
+ const whitespace : string = " "
6
+
5
7
export function highlight ( wast : string ) {
6
8
if ( TypeScript . logging . outputEverything ) {
7
9
console . log ( wast ) ;
@@ -28,6 +30,16 @@ namespace wast {
28
30
row . appendChild ( codeBlock ) ;
29
31
}
30
32
33
+ let startWith = function ( token : string ) : boolean {
34
+ for ( var i = 0 ; i < token . length ; i ++ ) {
35
+ if ( buffer [ i ] != token . charAt ( i ) ) {
36
+ return false ;
37
+ }
38
+ }
39
+
40
+ return true ;
41
+ }
42
+
31
43
while ( ! code . EndRead ) {
32
44
c = code . Next ;
33
45
@@ -41,6 +53,45 @@ namespace wast {
41
53
} else {
42
54
buffer . push ( c ) ;
43
55
}
56
+ } else if ( escape . string ) {
57
+ if ( c = "\"" ) {
58
+ escape . string = false ;
59
+ buffer . push ( c ) ;
60
+ token = $ts ( "<span>" , { class : "string" } ) . display ( buffer . join ( "" ) ) ;
61
+ buffer = [ ] ;
62
+ line . push ( token ) ;
63
+ } else {
64
+ buffer . push ( c ) ;
65
+ }
66
+ } else {
67
+ if ( startWith ( ";;" ) ) {
68
+ escape . comment = true ;
69
+ } else if ( c == "\"" ) {
70
+ escape . string = true ;
71
+ } else if ( c == " " ) {
72
+ if ( buffer . length > 0 ) {
73
+ // split a code token
74
+ token = $ts ( "<span>" , { class : "code" } ) . display ( buffer . join ( " " ) ) ;
75
+ buffer = [ ]
76
+ line . push ( token ) ;
77
+ }
78
+ // add current token delimiter whitespace
79
+ line . push ( $ts ( "<span>" ) . display ( whitespace ) ) ;
80
+ } else if ( c == "(" || c == ")" ) {
81
+ // s-expression delimiter
82
+ // using strong text style
83
+ if ( buffer . length > 0 ) {
84
+ // split a code token
85
+ token = $ts ( "<span>" , { class : "code" } ) . display ( buffer . join ( " " ) ) ;
86
+ buffer = [ ]
87
+ line . push ( token ) ;
88
+ }
89
+
90
+ // add current S-expression token delimiter
91
+ line . push ( $ts ( "<span>" , { style : "font-style: strong;" } ) . display ( c ) ) ;
92
+ } else {
93
+ buffer . push ( c ) ;
94
+ }
44
95
}
45
96
}
46
97
}
0 commit comments