"provides" : {
"DOM::Tiny" : {
"file" : "lib/DOM/Tiny.pm",
- "version" : "0.001"
+ "version" : "0.002"
},
"DOM::Tiny::Entities" : {
"file" : "lib/DOM/Tiny/Entities.pm",
- "version" : "0.001"
+ "version" : "0.002"
}
},
"release_status" : "stable",
"web" : "https://github.com/Grinnz/DOM-Tiny"
}
},
- "version" : "0.001",
+ "version" : "0.002",
"x_contributors" : [
"Dan Book <grinnz@grinnz.com>"
]
"JSON::PP" => 0,
"Test::More" => "0.88"
},
- "VERSION" => "0.001",
+ "VERSION" => "0.002",
"test" => {
"TESTS" => "t/*.t"
}
L<DOM::Tiny> uses a CSS selector engine based on L<Mojo::DOM::CSS>. All CSS
selectors that make sense for a standalone parser are supported.
-=head2 *
+=over
+
+=item Z<>*
Any element.
my $all = $dom->find('*');
-=head2 E
+=item E
An element of type C<E>.
my $title = $dom->at('title');
-=head2 E[foo]
+=item E[foo]
An C<E> element with a C<foo> attribute.
my $links = $dom->find('a[href]');
-=head2 E[foo="bar"]
+=item E[foo="bar"]
An C<E> element whose C<foo> attribute value is exactly equal to C<bar>.
my $case_sensitive = $dom->find('input[type="hidden"]');
my $case_sensitive = $dom->find('input[type=hidden]');
-=head2 E[foo="bar" i]
+=item E[foo="bar" i]
An C<E> element whose C<foo> attribute value is exactly equal to any
(ASCII-range) case-permutation of C<bar>. Note that this selector is
L<Selectors Level 4|http://dev.w3.org/csswg/selectors-4>, which is still a work
in progress.
-=head2 E[foo~="bar"]
+=item E[foo~="bar"]
An C<E> element whose C<foo> attribute value is a list of whitespace-separated
values, one of which is exactly equal to C<bar>.
my $foo = $dom->find('input[class~="foo"]');
my $foo = $dom->find('input[class~=foo]');
-=head2 E[foo^="bar"]
+=item E[foo^="bar"]
An C<E> element whose C<foo> attribute value begins exactly with the string
C<bar>.
my $begins_with = $dom->find('input[name^="f"]');
my $begins_with = $dom->find('input[name^=f]');
-=head2 E[foo$="bar"]
+=item E[foo$="bar"]
An C<E> element whose C<foo> attribute value ends exactly with the string
C<bar>.
my $ends_with = $dom->find('input[name$="o"]');
my $ends_with = $dom->find('input[name$=o]');
-=head2 E[foo*="bar"]
+=item E[foo*="bar"]
An C<E> element whose C<foo> attribute value contains the substring C<bar>.
my $contains = $dom->find('input[name*="fo"]');
my $contains = $dom->find('input[name*=fo]');
-=head2 E:root
+=item E:root
An C<E> element, root of the document.
my $root = $dom->at(':root');
-=head2 E:nth-child(n)
+=item E:nth-child(n)
An C<E> element, the C<n-th> child of its parent.
my $even = $dom->find('div:nth-child(even)');
my $top3 = $dom->find('div:nth-child(-n+3)');
-=head2 E:nth-last-child(n)
+=item E:nth-last-child(n)
An C<E> element, the C<n-th> child of its parent, counting from the last one.
my $even = $dom->find('div:nth-last-child(even)');
my $bottom3 = $dom->find('div:nth-last-child(-n+3)');
-=head2 E:nth-of-type(n)
+=item E:nth-of-type(n)
An C<E> element, the C<n-th> sibling of its type.
my $even = $dom->find('div:nth-of-type(even)');
my $top3 = $dom->find('div:nth-of-type(-n+3)');
-=head2 E:nth-last-of-type(n)
+=item E:nth-last-of-type(n)
An C<E> element, the C<n-th> sibling of its type, counting from the last one.
my $even = $dom->find('div:nth-last-of-type(even)');
my $bottom3 = $dom->find('div:nth-last-of-type(-n+3)');
-=head2 E:first-child
+=item E:first-child
An C<E> element, first child of its parent.
my $first = $dom->find('div p:first-child');
-=head2 E:last-child
+=item E:last-child
An C<E> element, last child of its parent.
my $last = $dom->find('div p:last-child');
-=head2 E:first-of-type
+=item E:first-of-type
An C<E> element, first sibling of its type.
my $first = $dom->find('div p:first-of-type');
-=head2 E:last-of-type
+=item E:last-of-type
An C<E> element, last sibling of its type.
my $last = $dom->find('div p:last-of-type');
-=head2 E:only-child
+=item E:only-child
An C<E> element, only child of its parent.
my $lonely = $dom->find('div p:only-child');
-=head2 E:only-of-type
+=item E:only-of-type
An C<E> element, only sibling of its type.
my $lonely = $dom->find('div p:only-of-type');
-=head2 E:empty
+=item E:empty
An C<E> element that has no children (including text nodes).
my $empty = $dom->find(':empty');
-=head2 E:checked
+=item E:checked
A user interface element C<E> which is checked (for instance a radio-button or
checkbox).
my $input = $dom->find(':checked');
-=head2 E.warning
+=item E.warning
An C<E> element whose class is "warning".
my $warning = $dom->find('div.warning');
-=head2 E#myid
+=item E#myid
An C<E> element with C<ID> equal to "myid".
my $foo = $dom->at('div#foo');
-=head2 E:not(s)
+=item E:not(s)
An C<E> element that does not match simple selector C<s>.
my $others = $dom->find('div p:not(:first-child)');
-=head2 E F
+=item E F
An C<F> element descendant of an C<E> element.
my $headlines = $dom->find('div h1');
-=head2 E E<gt> F
+=item E E<gt> F
An C<F> element child of an C<E> element.
my $headlines = $dom->find('html > body > div > h1');
-=head2 E + F
+=item E + F
An C<F> element immediately preceded by an C<E> element.
my $second = $dom->find('h1 + h2');
-=head2 E ~ F
+=item E ~ F
An C<F> element preceded by an C<E> element.
my $second = $dom->find('h1 ~ h2');
-=head2 E, F, G
+=item E, F, G
Elements of type C<E>, C<F> and C<G>.
my $headlines = $dom->find('h1, h2, h3');
-=head2 E[foo=bar][bar=baz]
+=item E[foo=bar][bar=baz]
An C<E> element whose attributes match all following attribute selectors.
my $links = $dom->find('a[foo^=b][foo$=ar]');
+=back
+
=head1 OPERATORS
L<DOM::Tiny> overloads the following operators.
L<DOM::Tiny> uses a CSS selector engine based on L<Mojo::DOM::CSS>. All CSS
selectors that make sense for a standalone parser are supported.
-=head2 *
+=over
+
+=item Z<>*
Any element.
my $all = $dom->find('*');
-=head2 E
+=item E
An element of type C<E>.
my $title = $dom->at('title');
-=head2 E[foo]
+=item E[foo]
An C<E> element with a C<foo> attribute.
my $links = $dom->find('a[href]');
-=head2 E[foo="bar"]
+=item E[foo="bar"]
An C<E> element whose C<foo> attribute value is exactly equal to C<bar>.
my $case_sensitive = $dom->find('input[type="hidden"]');
my $case_sensitive = $dom->find('input[type=hidden]');
-=head2 E[foo="bar" i]
+=item E[foo="bar" i]
An C<E> element whose C<foo> attribute value is exactly equal to any
(ASCII-range) case-permutation of C<bar>. Note that this selector is
L<Selectors Level 4|http://dev.w3.org/csswg/selectors-4>, which is still a work
in progress.
-=head2 E[foo~="bar"]
+=item E[foo~="bar"]
An C<E> element whose C<foo> attribute value is a list of whitespace-separated
values, one of which is exactly equal to C<bar>.
my $foo = $dom->find('input[class~="foo"]');
my $foo = $dom->find('input[class~=foo]');
-=head2 E[foo^="bar"]
+=item E[foo^="bar"]
An C<E> element whose C<foo> attribute value begins exactly with the string
C<bar>.
my $begins_with = $dom->find('input[name^="f"]');
my $begins_with = $dom->find('input[name^=f]');
-=head2 E[foo$="bar"]
+=item E[foo$="bar"]
An C<E> element whose C<foo> attribute value ends exactly with the string
C<bar>.
my $ends_with = $dom->find('input[name$="o"]');
my $ends_with = $dom->find('input[name$=o]');
-=head2 E[foo*="bar"]
+=item E[foo*="bar"]
An C<E> element whose C<foo> attribute value contains the substring C<bar>.
my $contains = $dom->find('input[name*="fo"]');
my $contains = $dom->find('input[name*=fo]');
-=head2 E:root
+=item E:root
An C<E> element, root of the document.
my $root = $dom->at(':root');
-=head2 E:nth-child(n)
+=item E:nth-child(n)
An C<E> element, the C<n-th> child of its parent.
my $even = $dom->find('div:nth-child(even)');
my $top3 = $dom->find('div:nth-child(-n+3)');
-=head2 E:nth-last-child(n)
+=item E:nth-last-child(n)
An C<E> element, the C<n-th> child of its parent, counting from the last one.
my $even = $dom->find('div:nth-last-child(even)');
my $bottom3 = $dom->find('div:nth-last-child(-n+3)');
-=head2 E:nth-of-type(n)
+=item E:nth-of-type(n)
An C<E> element, the C<n-th> sibling of its type.
my $even = $dom->find('div:nth-of-type(even)');
my $top3 = $dom->find('div:nth-of-type(-n+3)');
-=head2 E:nth-last-of-type(n)
+=item E:nth-last-of-type(n)
An C<E> element, the C<n-th> sibling of its type, counting from the last one.
my $even = $dom->find('div:nth-last-of-type(even)');
my $bottom3 = $dom->find('div:nth-last-of-type(-n+3)');
-=head2 E:first-child
+=item E:first-child
An C<E> element, first child of its parent.
my $first = $dom->find('div p:first-child');
-=head2 E:last-child
+=item E:last-child
An C<E> element, last child of its parent.
my $last = $dom->find('div p:last-child');
-=head2 E:first-of-type
+=item E:first-of-type
An C<E> element, first sibling of its type.
my $first = $dom->find('div p:first-of-type');
-=head2 E:last-of-type
+=item E:last-of-type
An C<E> element, last sibling of its type.
my $last = $dom->find('div p:last-of-type');
-=head2 E:only-child
+=item E:only-child
An C<E> element, only child of its parent.
my $lonely = $dom->find('div p:only-child');
-=head2 E:only-of-type
+=item E:only-of-type
An C<E> element, only sibling of its type.
my $lonely = $dom->find('div p:only-of-type');
-=head2 E:empty
+=item E:empty
An C<E> element that has no children (including text nodes).
my $empty = $dom->find(':empty');
-=head2 E:checked
+=item E:checked
A user interface element C<E> which is checked (for instance a radio-button or
checkbox).
my $input = $dom->find(':checked');
-=head2 E.warning
+=item E.warning
An C<E> element whose class is "warning".
my $warning = $dom->find('div.warning');
-=head2 E#myid
+=item E#myid
An C<E> element with C<ID> equal to "myid".
my $foo = $dom->at('div#foo');
-=head2 E:not(s)
+=item E:not(s)
An C<E> element that does not match simple selector C<s>.
my $others = $dom->find('div p:not(:first-child)');
-=head2 E F
+=item E F
An C<F> element descendant of an C<E> element.
my $headlines = $dom->find('div h1');
-=head2 E E<gt> F
+=item E E<gt> F
An C<F> element child of an C<E> element.
my $headlines = $dom->find('html > body > div > h1');
-=head2 E + F
+=item E + F
An C<F> element immediately preceded by an C<E> element.
my $second = $dom->find('h1 + h2');
-=head2 E ~ F
+=item E ~ F
An C<F> element preceded by an C<E> element.
my $second = $dom->find('h1 ~ h2');
-=head2 E, F, G
+=item E, F, G
Elements of type C<E>, C<F> and C<G>.
my $headlines = $dom->find('h1, h2, h3');
-=head2 E[foo=bar][bar=baz]
+=item E[foo=bar][bar=baz]
An C<E> element whose attributes match all following attribute selectors.
my $links = $dom->find('a[foo^=b][foo$=ar]');
+=back
+
=head1 OPERATORS
L<DOM::Tiny> overloads the following operators.