Skip to main contentModule parser
Source - 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 の「未知のクエリは通過」方針と対になる設計)。