Parsing of CSS predicates.

This adds support for parsing expressions such as "foo[class]".
This commit is contained in:
Yorick Peterse 2014-10-05 09:32:21 +02:00
parent 665d5fe08c
commit 2dd148539d
2 changed files with 23 additions and 1 deletions

View File

@ -31,6 +31,7 @@ rule
node_test
: node_name { s(:test, *val[0]) }
| node_name predicate { s(:test, *val[0], val[1]) }
;
node_name
@ -43,6 +44,10 @@ rule
# |foo
| T_PIPE T_IDENT { [nil, val[1]] }
;
predicate
: T_LBRACK expression T_RBRACK { val[1] }
;
end
---- inner

View File

@ -0,0 +1,17 @@
require 'spec_helper'
describe Oga::CSS::Parser do
context 'predicates' do
example 'parse a predicate' do
parse_css('foo[bar]').should == s(:test, nil, 'foo', s(:test, nil, 'bar'))
end
example 'parse a node test followed by a node test with a predicate' do
parse_css('foo bar[baz]').should == s(
:path,
s(:test, nil, 'foo'),
s(:test, nil, 'bar', s(:test, nil, 'baz'))
)
end
end
end