123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- var TYPE = require('../../tokenizer').TYPE;
- var WHITESPACE = TYPE.WhiteSpace;
- var COMMENT = TYPE.Comment;
- var ATKEYWORD = TYPE.AtKeyword;
- var CDO = TYPE.CDO;
- var CDC = TYPE.CDC;
- var EXCLAMATIONMARK = 0x0021;
- function consumeRaw(startToken) {
- return this.Raw(startToken, null, false);
- }
- module.exports = {
- name: 'StyleSheet',
- structure: {
- children: [[
- 'Comment',
- 'CDO',
- 'CDC',
- 'Atrule',
- 'Rule',
- 'Raw'
- ]]
- },
- parse: function() {
- var start = this.scanner.tokenStart;
- var children = this.createList();
- var child;
- scan:
- while (!this.scanner.eof) {
- switch (this.scanner.tokenType) {
- case WHITESPACE:
- this.scanner.next();
- continue;
- case COMMENT:
-
- if (this.scanner.source.charCodeAt(this.scanner.tokenStart + 2) !== EXCLAMATIONMARK) {
- this.scanner.next();
- continue;
- }
- child = this.Comment();
- break;
- case CDO:
- child = this.CDO();
- break;
- case CDC:
- child = this.CDC();
- break;
-
-
-
- case ATKEYWORD:
- child = this.parseWithFallback(this.Atrule, consumeRaw);
- break;
-
- default:
- child = this.parseWithFallback(this.Rule, consumeRaw);
- }
- children.push(child);
- }
- return {
- type: 'StyleSheet',
- loc: this.getLocation(start, this.scanner.tokenStart),
- children: children
- };
- },
- generate: function(node) {
- this.children(node);
- },
- walkContext: 'stylesheet'
- };
|