X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FHTML%2FZoom%2FSelectorParser.pm;h=32688fce3cc4f6e8d1c1befc5e7001e76c3940fe;hb=74a46830869136ae0d00610c6dfda53ce149211f;hp=096eb3e732dda2c12964b8d46c6b5597b9f9f46b;hpb=04d71924c4a8c70294b48e682a3b581899cedfb4;p=catagits%2FHTML-Zoom.git diff --git a/lib/HTML/Zoom/SelectorParser.pm b/lib/HTML/Zoom/SelectorParser.pm index 096eb3e..32688fc 100644 --- a/lib/HTML/Zoom/SelectorParser.pm +++ b/lib/HTML/Zoom/SelectorParser.pm @@ -37,6 +37,32 @@ sub _raw_parse_simple_selector { } }; + # 'el[attr^="foo"] + + /\G$sel_re\[$sel_re\^="$sel_re"\]/gc and + return do { + my $name = $1; + my $attr = $2; + my $val = $3; + sub { + $_[0]->{name} && $_[0]->{name} eq $name and + $_[0]->{attrs}{$attr} && $_[0]->{attrs}{$attr} =~ /^\Q$val\E/ + } + }; + + # 'el[attr$="foo"] + + /\G$sel_re\[$sel_re\$="$sel_re"\]/gc and + return do { + my $name = $1; + my $attr = $2; + my $val = $3; + sub { + $_[0]->{name} && $_[0]->{name} eq $name and + $_[0]->{attrs}{$attr} && $_[0]->{attrs}{$attr} =~ /\Q$val\E$/ + } + }; + # 'el[attr="foo"] /\G$sel_re\[$sel_re="$sel_re"\]/gc and @@ -50,6 +76,17 @@ sub _raw_parse_simple_selector { } }; + # 'el[attr] + + /\G$sel_re\[$sel_re\]/gc and + return do { + my $name = $1; + my $attr = $2; + sub { + $_[0]->{name} && $_[0]->{name} eq $name && $_[0]->{attrs}{$attr} + } + }; + # 'element' - match on tag name /\G$sel_re/gc and