Skip to main content

Module web_forms

Module web_forms 

Source

Constants§

LS_FILENAME 🔒

Statics§

COOKIES 🔒
LOCAL_STORAGE 🔒
LS_LOADED 🔒
SESSION_STORAGE 🔒

Functions§

build_query 🔒
collect_form_data 🔒
要素配下の送信対象コントロールから (name, value) を収集する。 - name 属性が無いコントロールは無視(HTML 仕様)。 - checkbox/radio は checked のときのみ、value(無ければ "on")を採用。 - select は selected option(無ければ最初の option)の value。 - disabled は除外。
cookie_set
document.cookie = "..." の setter: 先頭の name=value セグメントのみを 反映し、; expires=.../; path=... 等の後続属性は無視する(name が空、 または = が無い場合は何もしない)。
cookie_store_delete 🔒
cookieStore.delete(name)
cookie_store_get 🔒
cookieStore.get(name)(Cookie Store API。丸ごと未対応だった)。 document.cookie と同じ COOKIES を参照する。見つからなければ仕様どおり null
cookie_store_get_all 🔒
cookieStore.getAll(name?)(対応する複数形。name 省略時は全 Cookie)。
cookie_store_set 🔒
cookieStore.set(name, value)cookieStore.set({name, value}) 形式も 対応)。既存の cookie_set と同じ COOKIES へ書き込む。
cookie_string
document.cookie の getter: "name=value; name2=value2" 形式で結合する。
data_attr_to_camel 🔒
data-user-iduserIdcamel_to_data_attr の逆変換)。
dataset_host_entries
dataset_host_keys と同じ判定条件で、camelCase キー→属性値のペア一覧を 返す(Object.values/Object.entries 用)。
dataset_host_keys
kinddataset:Nelement.dataset)の ObjKind::Host なら、対応する DOM 要素の data-* 属性一覧を camelCase キーへ変換して返す。 Object.keys(el.dataset)/for...in el.dataset が実データ(data-* 属性、 .props ではなく DOM 要素側の属性ストアにある)を素通しして常に空を 返していたバグの修正用(storage_host_keys(localStorage/sessionStorage) で修正済みの同型バグ)。
fd_entries 🔒
fd_for_each 🔒
fd_keys 🔒
fd_values 🔒
form_data_ctor 🔒
form_url_encode 🔒
form-urlencoded(RFC1738 系)でエンコード。空白は +、それ以外の非英数字は %XX
has_url_scheme 🔒
ls_deserialize 🔒
バイナリ形式から BTreeMap を復元。
ls_ensure_loaded 🔒
起動後初回アクセス時に SylFS から localStorage を読み込む(FS 未マウントなら skip)。
ls_flush 🔒
localStorage の変更を SylFS に書き出す(FS 未マウントなら skip)。
ls_serialize 🔒
BTreeMap を長さプレフィクス付きバイナリ形式にシリアライズ。
match_pathname_pattern 🔒
パスパターン(/users/:idのような:name名前付きセグメントを含む)を ターゲットパスとスラッシュ区切りのセグメント単位で照合する。 以前はmatch_pattern_partがパターン全体を1個の文字列として扱い、 pattern.starts_with(':')(パターン全体の先頭が:の場合のみ)しか 見ていなかったため、/users/:idのように名前付きセグメントが途中に ある一般的なパターンが常にマッチ失敗し、かつgroupsURLPatternの 名前付きキャプチャ結果、res.pathname.groups.id等でアクセスされる) も一切生成されないバグだった。一致した場合は(名前, 値)のキャプチャ 一覧を返す。
match_pattern_part 🔒
parse_query 🔒
storage_clear 🔒
storage_get_item 🔒
storage_get_prop
storage: host のプロパティ取得(メソッド / length / データキー)。
storage_host_keys
kindlocalStorage/sessionStorageObjKind::Host なら、実データを保持する storage_map から現在のキー一覧を返す。Object.keys(localStorage)/for...in localStorage が常に空を返していたバグの修正用(実データは .props ではなく別マップにあるため)。
storage_key 🔒
storage_map 🔒
storage_remove_item 🔒
storage_remove_prop
storage: host へのプロパティ代入(length 以外は setItem 相当)。 delete localStorage.foo/delete sessionStorage.foo(プロパティ直接削除。removeItem と同義だが、こちらの経路は Host プロキシが .props を持たないため以前は黙って 何も起きなかった)。
storage_set_item 🔒
storage_set_prop
this_storage_tag 🔒
url_can_parse 🔒
new URL(href): location 風の成分 + searchParams を持つオブジェクト。 URL.canParse(url, base?) の実体。この処理系の new URL()/resolve_url は寛容な簡略実装で不正な入力でも例外を投げないため、代わりに「解決結果が scheme: 形式を持つか」で判定する(WHATWG のスキーム構文 [a-zA-Z][a-zA-Z0-9+.-]*: に準拠した簡易チェック)。
url_ctor 🔒
url_get_hash 🔒
url_get_host 🔒
url_get_hostname 🔒
url_get_pathname 🔒
url_get_port 🔒
url_get_protocol 🔒
url_get_search 🔒
url.searchゲッター。 【安全性・2026-07-23】toString()/hrefと同じくsearchParamsから毎回 再構成する版(usp_to_string経由でsearchParamsオブジェクトを参照する 実装)を試した際、u.searchParams.set(...); u.searchという呼び出し順序で QEMU起動がハングする現象が一度観測されていたが、後日の徹底調査で「QEMU 起動ハングはビルドごとのヒープレイアウトに依存する非決定的現象であり、 特定のコード内容には紐づかない」と判明した(詳細はspec/walkthrough.md 「QEMU起動ハングの二分探索」参照)。この修正自体はurl_to_stringと 同じ既に安全実績のあるパターン(o.borrow()一度きり、別オブジェクトへの 単純な委譲)であり内容起因のリスクは無いと判断し、再適用する。
url_parse 🔒
URL.parse(url, base?)(ES2024/WHATWG。丸ごと未対応だった)。 try { return new URL(...) } catch { return null } という定番イディオムを 1メソッドで完結させる(URL.canParse は真偽値のみを返す存在確認、 こちらは実際に使う URL インスタンスまたは null を返す)。この処理系の new URL() 自体は不正な URL でも例外を投げず素通しする簡略実装のため、 有効性判定は canParse と同じ has_url_scheme を流用する。
url_pattern_ctor 🔒
new URLPattern(pattern, baseURL?) または new URLPattern({ pathname, hostname, ... })
url_pattern_exec 🔒
url_pattern_test 🔒
url_prop_or_empty 🔒
url_rebuild_host_and_origin 🔒
protocol/hostname/portのいずれかが変更された後、それらから導出される hosthostname+:+port)とoriginprotocol+//+host)を 再計算して.propsへ書き戻す。hostセッター自身はhostname/portへ分割 した後にこの関数を呼ぶ。
url_search_params_ctor 🔒
url_set_hash 🔒
url_set_host 🔒
url.host = 'hostname:port'hostname/portへ分割して保存し直す (hostname/port個別セッターとhostの内部表現を一致させるため)。
url_set_hostname 🔒
url_set_href 🔒
url.href = newHrefURL.prototype.hrefセッター)。url_ctorと同じ 分解ロジックを、新規オブジェクトを作る代わりに既存のthisへ上書き する形で再利用する(オブジェクト identity は保つ)。
url_set_pathname 🔒
url_set_port 🔒
url_set_protocol 🔒
url_set_search 🔒
url.search = '...'searchParamsが「唯一の真実源」(toString()/hrefsearchプロパティ自体でなくsearchParamsから毎回再構成する)ため、 searchプロパティの更新だけでなくsearchParams自体も作り直す必要がある。
url_to_string 🔒
URL.prototype.toString()href の静的スナップショットを返すのではなく、 searchParams の現在の内容から毎回クエリ文字列を再構成する(protocol/host/ pathname/hash は construction 時点のまま。この処理系は pathname/hash への 代入自体は未対応なので、それらのプロパティ再代入との不整合は生じない)。
usp_append 🔒
usp_delete 🔒
delete(name, value)(ES2023 で追加された第2引数。has と同じく省略時は名前だけ で全削除、指定時は名前と値の両方が一致するエントリのみ削除する。以前は第2引数を 完全に無視しており、値を問わず同名のエントリを全て消してしまうバグだった)。
usp_entry_count
URLSearchParams.prototype.size(ES2023)の実体。interp.rs のプロパティ getter から呼ばれる(USP は専用 ObjKind を持たない plain object 実装のため、 Map/Set の size のように直接カウントを持たず、その都度クエリ文字列をパース して数える)。
usp_get 🔒
usp_get_all 🔒
usp_has 🔒
has(name, value)(ES2023 で追加された第2引数 value。省略時は名前だけで判定する 従来どおりの挙動だが、指定時は名前と値の両方が一致するエントリの有無を返す。 以前は第2引数を完全に無視しており、has('a', 'wrong-value') が誤って true に なるバグだった)。
usp_iterator 🔒
URLSearchParams の既定イテレーション(entries() と同義)。make_iterator() で 本物のイテレータ形状(.next())にして返す。
usp_query 🔒
usp_set 🔒
usp_set_query 🔒
usp_sort 🔒
URLSearchParams.prototype.sort()(ES2020)が丸ごと未対応だった。全エントリを キー名でソートする(仕様どおり安定ソート。同名キー同士の相対順序は保持する)。
usp_to_string 🔒