Basic support for parsing CSS pseudo classes.
This currently does not yet allow chained pseudo classes, nor does it allow for pseudos such as nth-child(2n).
This commit is contained in:
1 parent
e2b36ad9a4
commit
d0a8a3b18c
2 files changed
+46
-3
No files matched your search
+28
-3
@@ -14,6 +14,7 @@ rule
|
||||
path_member
|
||||
: node_test
|
||||
| axis
|
||||
| pseudo_class
|
||||
;
|
||||
|
||||
path_members
|
||||
@@ -60,6 +61,11 @@ rule
|
||||
| op_members T_HYPHEN_IN op_members { s(:hyphen_in, val[0],val[2]) }
|
||||
;
|
||||
|
||||
op_members
|
||||
: node_test
|
||||
| string
|
||||
;
|
||||
|
||||
axis
|
||||
# x > y
|
||||
: node_test T_CHILD node_test
|
||||
@@ -80,14 +86,33 @@ rule
|
||||
}
|
||||
;
|
||||
|
||||
op_members
|
||||
: node_test
|
||||
| string
|
||||
pseudo_class
|
||||
# x:root
|
||||
: node_test T_COLON T_IDENT { s(:pseudo, val[2], val[0]) }
|
||||
|
||||
# x:nth-child(2)
|
||||
| node_test T_COLON T_IDENT T_LPAREN pseudo_args T_RPAREN
|
||||
{
|
||||
s(:pseudo, val[2], val[0], *val[4])
|
||||
}
|
||||
;
|
||||
|
||||
pseudo_args
|
||||
: pseudo_args pseudo_arg { val[0] << val[1] }
|
||||
| pseudo_arg { val }
|
||||
;
|
||||
|
||||
pseudo_arg
|
||||
: integer
|
||||
;
|
||||
|
||||
string
|
||||
: T_STRING { s(:string, val[0]) }
|
||||
;
|
||||
|
||||
integer
|
||||
: T_INT { s(:int, val[0].to_i) }
|
||||
;
|
||||
end
|
||||
|
||||
---- inner
|
||||
|
||||
Reference in new issue
Block a user