Skip to content

Commit 69bfd59

Browse files
committed
Merge pull request #157 from tophf/fix-kf-doc
Fixes for @document blocks
2 parents 5cd30a1 + c2b5985 commit 69bfd59

File tree

3 files changed

+38
-13
lines changed

3 files changed

+38
-13
lines changed

src/css/Parser.js

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -795,21 +795,21 @@ 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

812811
tokenStream.mustMatch(Tokens.RBRACE);
812+
token = tokenStream.token();
813813
this._readWhitespace();
814814

815815
this.fire({
@@ -1988,6 +1988,7 @@ Parser.prototype = function(){
19881988

19891989
this._readWhitespace();
19901990
tokenStream.mustMatch(Tokens.RBRACE);
1991+
this._readWhitespace();
19911992

19921993
},
19931994

tests/css/CSSParserTests.htm

Lines changed: 13 additions & 1 deletion
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,
@@ -1645,7 +1657,7 @@ <h1>CSS Parser Tests</h1>
16451657

16461658
parser.addListener("enddocument", function(event) {
16471659
assert.areEqual(1, event.line, "Line should be 1");
1648-
assert.areEqual(1, event.col, "Column should be 1");
1660+
assert.areEqual(25, event.col, "Column should be 25");
16491661
calledEnd = true;
16501662
});
16511663

tests/css/Parser.js

Lines changed: 13 additions & 1 deletion
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,
@@ -1821,7 +1833,7 @@
18211833

18221834
parser.addListener("enddocument", function(event) {
18231835
Assert.areEqual(1, event.line, "Line should be 1");
1824-
Assert.areEqual(1, event.col, "Column should be 1");
1836+
Assert.areEqual(25, event.col, "Column should be 25");
18251837
calledEnd = true;
18261838
});
18271839

0 commit comments

Comments
 (0)