Skip to content

Commit c2b5985

Browse files
committed
support @Keyframes and @document inside @document blocks
1 parent 866ad1a commit c2b5985

File tree

3 files changed

+34
-11
lines changed

3 files changed

+34
-11
lines changed

src/css/Parser.js

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -795,17 +795,16 @@ Parser.prototype = function(){
795795
col: token.startCol
796796
});
797797

798-
while(true) {
799-
if (tokenStream.peek() === Tokens.PAGE_SYM){
800-
this._page();
801-
} else if (tokenStream.peek() === Tokens.FONT_FACE_SYM){
802-
this._font_face();
803-
} else if (tokenStream.peek() === Tokens.VIEWPORT_SYM){
804-
this._viewport();
805-
} else if (tokenStream.peek() === Tokens.MEDIA_SYM){
806-
this._media();
807-
} else if (!this._ruleset()){
808-
break;
798+
var ok = true;
799+
while (ok) {
800+
switch (tokenStream.peek()) {
801+
case Tokens.PAGE_SYM: this._page(); break;
802+
case Tokens.FONT_FACE_SYM: this._font_face(); break;
803+
case Tokens.VIEWPORT_SYM: this._viewport(); break;
804+
case Tokens.MEDIA_SYM: this._media(); break;
805+
case Tokens.KEYFRAMES_SYM: this._keyframes(); break;
806+
case Tokens.DOCUMENT_SYM: this._document(); break;
807+
default: ok = !!this._ruleset();
809808
}
810809
}
811810

tests/css/CSSParserTests.htm

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1632,6 +1632,18 @@ <h1>CSS Parser Tests</h1>
16321632
assert.isTrue(valid);
16331633
},
16341634

1635+
testDocumentWithKeyframes: function(){
1636+
var parser = new Parser({ strict: true}),
1637+
valid = true;
1638+
1639+
parser.addListener("error", function(event) {
1640+
valid = false;
1641+
});
1642+
1643+
var result = parser.parse("@document url-prefix() { @keyframes 'diagonal-slide' { from { left: 0; top: 0; } to { left: 100px; top: 100px; } } }");
1644+
assert.isTrue(valid);
1645+
},
1646+
16351647
testDocumentEventFires: function(){
16361648
var parser = new Parser({ strict:true}),
16371649
calledStart = false,

tests/css/Parser.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1808,6 +1808,18 @@
18081808
Assert.isTrue(valid);
18091809
},
18101810

1811+
testDocumentWithKeyframes: function(){
1812+
var parser = new Parser({ strict: true}),
1813+
valid = true;
1814+
1815+
parser.addListener("error", function(event) {
1816+
valid = false;
1817+
});
1818+
1819+
var result = parser.parse("@document url-prefix() { @keyframes 'diagonal-slide' { from { left: 0; top: 0; } to { left: 100px; top: 100px; } } }");
1820+
Assert.isTrue(valid);
1821+
},
1822+
18111823
testDocumentEventFires: function(){
18121824
var parser = new Parser({ strict:true}),
18131825
calledStart = false,

0 commit comments

Comments
 (0)