E[attr~="foo"]
Arthur Axel 'fREW' Schmidt [Mon, 12 Apr 2010 05:36:59 +0000 (00:36 -0500)]
lib/HTML/Zoom/SelectorParser.pm

index 029f688..096eb3e 100644 (file)
@@ -18,6 +18,25 @@ sub _raw_parse_simple_selector {
     /\G\*/gc and
       return sub { 1 };
 
+     # 'el[attr~="foo"]
+
+    /\G$sel_re\[$sel_re~="$sel_re"\]/gc and
+      return do {
+        my $name = $1;
+        my $attr = $2;
+        my $val = $3;
+        sub {
+          if (
+            $_[0]->{name} && $_[0]->{name} eq $name and
+            $_[0]->{attrs}{$attr}
+          ) {
+            my %vals = map { $_ => 1 } split /\s+/, $_[0]->{attrs}{$attr};
+            return $vals{$val}
+          }
+          return undef
+        }
+      };
+
      # 'el[attr="foo"]
 
     /\G$sel_re\[$sel_re="$sel_re"\]/gc and