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

SelectorExampleDescription
TypedivMatches elements of the given type
ID#wibbleMatches elements with the given ID
Class.wibbleMatches elements with the given class
Psuedo-classes:checkedMatches 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
Search Document