Closed MurakamiShinyu closed 3 years ago
原因判明。
index.ts
の checkMetadata
で metadata
からコピーしている。しかし link
処理について result
ではなく元の metadata
を対象としているため変更が反映されていない。Frontmatter 側に一つでも link
が定義されているならその Array 参照もコピーされるため処理の関係上、問題なく動作している。テスト コード metadata.test.ts
の Styles from options
はこの状態になっていたためこの問題に気づけなかった。
修正時には Frontmatter のみの link
は他方で検証されているため、本 Issue のように「オプションの style
指定のみ」としてテスト名は Styles from options (String)
と Styles from options (String[])
に分けるのがよいだろう。
checkMetadata
は冪等性を考慮して metadata
を result
へコピーしてから処理している。しかし metadata
はネストされた Array
や Object
を持つため厳密な Deep Copy をしないと冪等性は保証されない。
metadata
そのものは #106 で外部プログラムが取得可能となったのと checkMetadata
は VFM
から呼ばれ、かつ options
を加味して
metadata
で対応するものが未定義なら options
の値を設定metadata.link
は options.style
の値を追加となりデータ損失があるわけでもないため冪等性にこだわるよりも本件のような事故を防ぐためにも metadata
を直に更新するよう設計変更する。
Issue Details
1.0.0-alpha.23 で
--style
コマンドラインオプションが無視されるようになりました。例
前のバージョン 1.0.0-alpha.22 では正常でした:
Expected Behavior
<link rel="stylesheet" href="style.css">
が出力されること。Actual Behavior
<link rel="stylesheet" href="style.css">
が出力されない。