Skip to main content

Module selector

Module selector 

Source

Structs§

NodeMatchContext 🔒
1 ノードに対して一度だけ計算すればよい照合用の前提情報。

Functions§

apply_counter_decls 🔒
counter-reset / counter-increment を現在のカウンタ集合に適用する。 戻り値は、この要素自身が counter-reset した(=新しいスコープを作った)カウンタ名の集合。 呼び出し側(style_tree_with_ancestors_vars)が、この集合を使って「入れ子の counter-reset の効果を兄弟要素へ漏らさない」というスコープ復元を行う (apply_counter_decls 自体はフラットな1つのマップを直接書き換えるだけで、 スコープの概念は呼び出し側が別途管理する)。
attr_matches 🔒
属性セレクタの照合。
filtered_sibling_position 🔒
:nth-child(An+B of S)/:nth-last-child(An+B of S) 判定用: own_siblings(親の子ノード 一覧)のうち S に一致する要素だけを数えた「フィルタ済み」0-based 位置と総数を返す。 自分自身が S に一致しない場合は None(=不一致。フィルタ済み集合に属さない)。
has_descendant_match 🔒
:has(sel1, sel2, ...) 判定用: children 以下にリスト中いずれかの単純セレクタへ 一致する要素が存在するかを探索する。タプルの bool が true(> sel 形式)の枝は children(直接子)のみを見て、それより深くは再帰しない。false(通常の :has(.foo))の 枝は任意の深さまで再帰する。子孫側の疑似クラス判定は sibling_index 等の文脈を持たない ため None/空リストで簡略化して渡す(:has(.foo) のようなタグ/クラス/id/属性ベースの 判定が主な実用対象で、:has(:first-child) 等の兄弟文脈依存の疑似クラスは子孫探索側では 正しく判定できない既知の制約)。
has_sibling_match 🔒
:has(+ sel)/:has(~ sel) 判定用: siblings(親の子ノード一覧)中の my_idx より 後ろの要素ノードで sel に一致するものがあるか探索する。adjacent が true なら 直後の要素兄弟1つのみ(+)、false なら以降の要素兄弟いずれか(~)を対象にする。
is_ident_byte 🔒
is_node_disabled 🔒
is_selector_ident_char 🔒
matches_selector 🔒
matches_selector_chain 🔒
matches_selector_step_node 🔒
matches_simple_selector 🔒
nth_matches 🔒
nth: position が a*n + b(n>=0)で表せるか。
parse_attr_selector 🔒
[name] / [name op value] の中身をパース。
parse_content_value 🔒
parse_counter_decl 🔒
counter-reset / counter-increment 宣言をパースし、name [value] の 空白区切りペア列として (name, value) を返す。value 省略時は default を使う (reset のデフォルトは 0、increment のデフォルトは 1)。none は空を返す。
parse_nth 🔒
:nth-child(...) の引数 an+b / odd / even / b を (a, b) に。
parse_nth_of 🔒
:nth-child(An+B of S)(Selectors Level 4)用: of より前の An+B 部分を parse_nth に、of より後ろの S 部分を parse_simple_selector に、それぞれ渡す。of が無ければ 従来どおり SNone。以前は parse_nthS 部分を丸ごと読み捨てるだけで フィルタ自体が非対応だったため、:nth-child(2n+1 of .foo).foo に関係なく 単なる :nth-child(2n+1) と同じ結果になっていた。
parse_quotes_pairs 🔒
::before / ::aftercontent 値を解析する。 文字列リテラル(“…” / ‘…’)、attr(name)(対象要素自身の属性値、無ければ空)、 counter(name) / counter(name, style)(style 引数は無視し常に十進数表記)に対応。 複数トークンの連結(例 attr(href) " ")も可。それ以外の未対応関数形式や none/normal は「表示なし」として空文字列を返す(テキストとして誤描画しないため)。 quotes: "«" "»" "‹" "›" のような文字列リテラルの並びから、入れ子レベルごとの 全ペア(レベル1, レベル2, …)を取り出す。以前は最初の1組しか取り出さず、 open-quote/close-quote の入れ子(<q> の入れ子)に対応する複数組指定を 常に無視していたが、ここで全ペアを保持し、呼び出し側(quote_depth を使う parse_content_value)で入れ子レベルに応じたペアを選べるようにする。 戻り値: Nonequotes 未指定(呼び出し側で既定の二重引用符へフォールバック)、 Some(vec![])quotes:none(仕様どおり何も出力しない)、 Some(pairs)=ペア列(レベルが手持ちのペア数を超える場合は最後のペアを繰り返す、仕様どおり)。
parse_selector 🔒
parse_selector_chain 🔒
parse_simple_selector 🔒
selector_pseudo_element 🔒
セレクタ末尾(サブジェクトのコンパウンドセレクタ)に付与された疑似要素を返す。 ::before / ::after は末尾にのみ意味を持つため最後のステップだけを見る。
selector_specificity 🔒
simple_specificity 🔒
セレクタの特異度 (id数, class/属性/擬似クラス数, タグ数) を算出する。 CSS Selectors Level 4 の規定に従い、:not()/:is() はその引数の特異度を (:is() は引数中の最大値を)加算し、:where() は常に0を加算する (それ以外の擬似クラスは従来通り class 数として1を加算)。
type_sibling_position 🔒
親の子ノード一覧の中で、node と同じタグ名を持つノードだけを数えた「型フィルタ済み」 兄弟位置(0-based)と総数を返す。:first-of-type/:last-of-type/:nth-of-type/ :only-of-type 用。祖先が無い(ルート要素)場合は自分だけの単一グループとして扱う。 サブジェクト(末尾コンパウンド)位置でのみ計算する(祖先位置での of-type 判定は非対応)。
unescape_css_string 🔒
CSS文字列内のエスケープ(\ + 1〜6桁16進 + 任意の空白1つ=Unicodeコードポイント、 または \" 等の単純なリテラルエスケープ)をデコードする。 FontAwesome等のアイコンフォントは content: "\f2c9"; のように private-use-area コードポイントをこの16進エスケープで埋め込むため、これを未対応のまま生バイト列 (バックスラッシュ込みの文字そのまま)として扱うと、アイコン文字が表示されず 代わりに “\f2c9” という文字列がそのまま描画されてしまう。