@@ -4,8 +4,9 @@ const MODE_SLASH = 0;
44const MODE_TEXT = 1 ;
55const MODE_WHITESPACE = 2 ;
66const MODE_TAGNAME = 3 ;
7- const MODE_PROP_SET = 4 ;
8- const MODE_PROP_APPEND = 5 ;
7+ const MODE_COMMENT = 4 ;
8+ const MODE_PROP_SET = 5 ;
9+ const MODE_PROP_APPEND = 6 ;
910
1011const TAG_SET = 1 ;
1112const CHILD_APPEND = 0 ;
@@ -144,25 +145,28 @@ export const build = function(statics) {
144145 current . push ( true , PROP_SET , buffer ) ;
145146 }
146147 }
147- else if ( MINI && mode === MODE_PROP_SET ) {
148- ( current [ 2 ] = current [ 2 ] || { } ) [ propName ] = field ? buffer ? ( buffer + fields [ field ] ) : fields [ field ] : buffer ;
149- mode = MODE_PROP_APPEND ;
150- }
151- else if ( MINI && mode === MODE_PROP_APPEND ) {
152- if ( buffer || field ) {
153- current [ 2 ] [ propName ] += field ? buffer + fields [ field ] : buffer ;
154- }
155- }
156- else if ( ! MINI && mode >= MODE_PROP_SET ) {
157- if ( buffer || ( ! field && mode === MODE_PROP_SET ) ) {
158- current . push ( buffer , mode , propName ) ;
159- mode = MODE_PROP_APPEND ;
148+ else if ( mode >= MODE_PROP_SET ) {
149+ if ( MINI ) {
150+ if ( mode === MODE_PROP_SET ) {
151+ ( current [ 2 ] = current [ 2 ] || { } ) [ propName ] = field ? buffer ? ( buffer + fields [ field ] ) : fields [ field ] : buffer ;
152+ mode = MODE_PROP_APPEND ;
153+ }
154+ else if ( field || buffer ) {
155+ current [ 2 ] [ propName ] += field ? buffer + fields [ field ] : buffer ;
156+ }
160157 }
161- if ( field ) {
162- current . push ( field , mode , propName ) ;
163- mode = MODE_PROP_APPEND ;
158+ else {
159+ if ( buffer || ( ! field && mode === MODE_PROP_SET ) ) {
160+ current . push ( buffer , mode , propName ) ;
161+ mode = MODE_PROP_APPEND ;
162+ }
163+ if ( field ) {
164+ current . push ( field , mode , propName ) ;
165+ mode = MODE_PROP_APPEND ;
166+ }
164167 }
165168 }
169+
166170 buffer = '' ;
167171 } ;
168172
@@ -193,6 +197,16 @@ export const build = function(statics) {
193197 buffer += char ;
194198 }
195199 }
200+ else if ( mode === MODE_COMMENT ) {
201+ // Ignore everything until the last three characters are '-', '-' and '>'
202+ if ( buffer === '--' && char === '>' ) {
203+ mode = MODE_TEXT ;
204+ buffer = '' ;
205+ }
206+ else {
207+ buffer = char + buffer [ 0 ] ;
208+ }
209+ }
196210 else if ( quote ) {
197211 if ( char === quote ) {
198212 quote = '' ;
@@ -238,6 +252,11 @@ export const build = function(statics) {
238252 else {
239253 buffer += char ;
240254 }
255+
256+ if ( mode === MODE_TAGNAME && buffer === '!--' ) {
257+ mode = MODE_COMMENT ;
258+ current = current [ 0 ] ;
259+ }
241260 }
242261 }
243262 commit ( ) ;
0 commit comments