作ったもの
YAML JSON — https://sen.ltd/portfolio/yaml-json/
- YAML → JSON、JSON → YAML
- 自作 YAML サブセットパーサ
- ライブ双方向変換
- エラー表示(行番号付き)
- 4 サンプル(K8s / GitHub Actions / config / ネスト)
vanilla JS、ゼロ依存、ビルド不要。node --test で 74 ケース。
YAML 1.2 の全仕様はデカい
YAML 仕様は JSON より大きく、XML より大きい。だが実運用で見る YAML の 90% は小さなサブセット: マップ、リスト、クォート文字列、ブロックスカラー、コメント。これだけなら 300 行で書ける。
Norway 問題
country: NO
これは YAML 1.1 で false にパースされる(no = boolean)。ノルウェーの国コード NO を書くと country = false になるバグが有名。回避策は明示的クォート:
country: "NO"
パーサは 1.1 互換で yes/no/on/off を真偽値として扱う。ユーザがクォートしない限り、国コードは false になる。仕様通りだが実用上は罠。
インデントベースのパース
YAML は構造をインデントで表現する。再帰パーサで「現在のインデントレベル」を追跡し、子行を集める。キーの値が空ならネストブロック、非空ならスカラー。
ブロックスカラー | と >
desc: |
複数行
改行保持
summary: >
複数行
だが改行はスペース
末尾の | / > を検出して、インデントされた行をデデントまで読み続ける。chomping 修飾子 (|-, |+) は削除/保持を指定。
シリーズ
100+ 公開ポートフォリオ シリーズの #94 です。
- 📦 リポジトリ: https://github.com/sen-ltd/yaml-json
- 🌐 デモ: https://sen.ltd/portfolio/yaml-json/
- 🏢 会社: https://sen.ltd/
