X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FHTML-Zoom.git;a=blobdiff_plain;f=lib%2FHTML%2FZoom%2FSelectorParser.pm;fp=lib%2FHTML%2FZoom%2FSelectorParser.pm;h=1432c4ddf7c97f0e6278eaa8d0faba5629ed84a9;hp=e2215f91e7049ff19216d0271bc15155924d3cca;hb=4c6b44299edb3613877d7e99586026423e9f15b5;hpb=5c77ed10c499025086e5d416966da7ff82124ef7 diff --git a/lib/HTML/Zoom/SelectorParser.pm b/lib/HTML/Zoom/SelectorParser.pm index e2215f9..1432c4d 100644 --- a/lib/HTML/Zoom/SelectorParser.pm +++ b/lib/HTML/Zoom/SelectorParser.pm @@ -6,8 +6,9 @@ use Carp qw(confess); my $sel_char = '-\w_'; my $sel_meta_char = q-!"#$%&'()*+,./:;<=>?@[\]^`{|}~-; -my $sel_re = qr/((?:(?:\\[\Q$sel_meta_char\E])|[$sel_char])+)/; -my $match_value_re = qr/"?$sel_re"?/; +my $sel_item = qr/(?:(?:\\[\Q$sel_meta_char\E])|[$sel_char])/; +my $sel_re = qr/($sel_item+)/; +my $match_value_re = qr/"?($sel_item*)"?/; sub new { bless({}, shift) } @@ -54,7 +55,7 @@ sub _raw_parse_simple_selector { my $attribute = $_[0]->_unescape($1); my $value = $_[0]->_unescape($2); sub { - $_[0]->{attrs}{$attribute} + exists $_[0]->{attrs}{$attribute} && $_[0]->{attrs}{$attribute} =~ qr/^\Q$value\E/; } }; @@ -65,7 +66,7 @@ sub _raw_parse_simple_selector { my $attribute = $_[0]->_unescape($1); my $value = $_[0]->_unescape($2); sub { - $_[0]->{attrs}{$attribute} + exists $_[0]->{attrs}{$attribute} && $_[0]->{attrs}{$attribute} =~ qr/\Q$value\E$/; } }; @@ -76,7 +77,7 @@ sub _raw_parse_simple_selector { my $attribute = $_[0]->_unescape($1); my $value = $_[0]->_unescape($2); sub { - $_[0]->{attrs}{$attribute} + exists $_[0]->{attrs}{$attribute} && $_[0]->{attrs}{$attribute} =~ qr/\Q$value\E/; } }; @@ -87,7 +88,7 @@ sub _raw_parse_simple_selector { my $attribute = $_[0]->_unescape($1); my $value = $_[0]->_unescape($2); sub { - $_[0]->{attrs}{$attribute} + exists $_[0]->{attrs}{$attribute} && $_[0]->{attrs}{$attribute} =~ qr/\b\Q$value\E\b/; } }; @@ -98,7 +99,7 @@ sub _raw_parse_simple_selector { my $attribute = $_[0]->_unescape($1); my $value = $_[0]->_unescape($2); sub { - $_[0]->{attrs}{$attribute} + exists $_[0]->{attrs}{$attribute} && $_[0]->{attrs}{$attribute} =~ qr/^\Q$value\E(?:-|$)/; } }; @@ -109,7 +110,7 @@ sub _raw_parse_simple_selector { my $attribute = $_[0]->_unescape($1); my $value = $_[0]->_unescape($2); sub { - $_[0]->{attrs}{$attribute} + exists $_[0]->{attrs}{$attribute} && $_[0]->{attrs}{$attribute} eq $value; } }; @@ -120,7 +121,7 @@ sub _raw_parse_simple_selector { my $attribute = $_[0]->_unescape($1); my $value = $_[0]->_unescape($2); sub { - ! ($_[0]->{attrs}{$attribute} + ! (exists $_[0]->{attrs}{$attribute} && $_[0]->{attrs}{$attribute} eq $value); } };