Skip to main content

Module parser

Module parser 

Source

Functions§

media_query_matches
トップレベルの CSS ブロックを { / } の深さを追跡して正しく分割する @media クエリが現在のビューポートにマッチするか評価。
parse_counter_style_def 🔒
@counter-style <name> { system: cyclic|numeric; symbols: a b c; suffix: ". "; } をパースする。 symbols はクォート付き文字列("a" "b")またはクォート無し空白区切り両方を許容する。 system 未指定は cyclic 扱い。negative/range/pad/prefix/fallback は非対応で無視。
parse_css
parse_css_declarations 🔒
@media ブロック内の CSS を再帰的にパースして Rule リストを返す。
parse_declaration_list 🔒
name: value; ... 形式の宣言リストをパース(!important 対応)。
parse_font_face_def 🔒
@font-face { font-family: 'X'; src: url(a) format('woff2'), url(b) format('truetype'); }の 宣言ブロックからfont-family名と、読込可能な形式(TTF/OTF)を優先したURLを1件抽出する。
parse_keyframes 🔒
@keyframes ブロックの中身(0% { ... } 50% { ... } to { ... })をパース。
split_css_blocks 🔒
strip_css_comments 🔒
CSSコメント /* ... */ を除去する。 バイト単位でコメント区切り(/*/*/、いずれも1バイトASCII)だけを検出し、それ以外の バイトはそのままコピーする。UTF-8の継続バイト(0x80-0xBF)がASCIIの//*と衝突すること は無いため、この方式でマルチバイト文字(絵文字や 等)を破壊せずに処理できる。 旧実装は bytes[i] as char で1バイトずつchar化しており、マルチバイト文字が Latin-1的に誤変換される致命的なバグがあった(例: (E2 98 85) → ‘â’ + 制御文字2つ)。
supports_condition_matches
@supports <condition> の真偽を判定する。not/and/or の論理結合は 実際に評価するが、葉の (property: value)/selector(...) 自体は 「このエンジンが構文解析できる宣言は常に対応している」扱いとする簡略方針 (media_query_matches の「未知のクエリは通過」方針と対になる設計)。