Parsing of CSS predicates.
This adds support for parsing expressions such as "foo[class]".
This commit is contained in:
parent
665d5fe08c
commit
2dd148539d
|
@ -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
|
||||
|
|
|
@ -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
|
Loading…
Reference in New Issue