css_select
Libary for parsing and matching simple CSS selectors against HTML elements.
A simple selector is a selector that does not contain combinators like >
, +
, ~
,
.
(They might be added in the future).
This is lib is work in progress.
import css_select
let assert Ok(selector) = css_select.parse_simple_selector("div#wibble.wobble")
let element = #(
"div",
[
#("class", "wobble wubble"),
#("id", "wibble")
]
)
css_select.simple_match(element, selector) // True
Supported selectors
Selector | Example | Description |
---|---|---|
Type | div | Matches elements of the given type |
ID | #wibble | Matches elements with the given ID |
Class | .wibble | Matches elements with the given class |
Psuedo-classes | :checked | Matches psuedo classes like checked , disabled , selected , readonly . |
Attribute | [href] | Matches elements with the given attribute |
Attribute with value | [href="http://example.com"] | Matches elements with the given attribute and value prefix |
Attribute with value prefix | [href^="http://"] | Matches elements with the given attribute and value suffix |
Attribute with value inclusion | [href*="example"] | Matches elements with the given attribute and includes the value |
The matching is case senssitive and it does support complex psuedo classes like that needs more than one element to work.
Development
gleam test # Run the tests