vivliostyle/vfm

readMetadata の引数と Metadata プロパティーの excludes を別の名前にする

akabekobeko opened this issue · 4 comments

refs: #141

Frontmatter で未定義のキーを meta として処理せず、YAML 解析結果のデータ構造を維持する目的で excludes という引数を追加した。meta 処理からの除外という意味で excludes と命名したが、実際の用途としてはサードパーティー製ツール独自のキーを定義するためのものである。

よって除外というより独自とかユーザー (サードパーティー) であることを示す名前のほうがよいだろう。例えば customizeKeyuserKeys など。Metdata のプロパティーも同様。

既に VFM v1.2.0 として excludes が反映されたものをリリースしたが、現時点ならこれを利用する API ユーザーはほとんどいないと思われるので今の内に改名したい。Metadata プロパティーについてはインターフェースとして影響がある。

@MurakamiShinyu
#141 の村上さん案を取り入れて実装しましたが、↑のとおり命名を深く考えず実装してしまいました。実際に vivliostyle-sitegen から利用しようとして excludes では意味が分かりにくいと気づき、名称変更を検討しています。

現在は

readMetadata(md: string, excludes: string[]): Metadata

type Metadata = {
  excludes?: {
    [key: string]: any;
  }
}

となっています。この excludescustomizeKeysuserKeys に変更したいと考えています。これらのどちらか、またはよりよい名前などがあれば意見をください。

custom でどうでしょう。type Metadata = {} のプロパティ名は custom で、readMetadata() の引数名としては customKeys かな。

これで指定したキーはたとえば langtitle などであっても、HTMLにlangやtitleとしては出力しないことになるという理解でよいですね?

ありがとうございます。引数としては YAML のキーを指しますが処理結果はプロパティー内にキーと値をまとめて格納してるので Keys なしのほうが分かりやすいですね。

これで指定したキーはたとえば langtitle などであっても、HTMLにlangやtitleとしては出力しないことになるという理解でよいですね?

はい。標準のキーを指定した場合は通常の処理をスキップして custom へ格納されることになります。この挙動のテストコードでは非サポートとコメントしましたが、標準キーを独自処理する目的で利用されるかもしれませんので、README.md に解説してもよさそうですね。

@MurakamiShinyu
#144 のレビュー、ありがとうございました!merge して VFM v1.2.1 へ反映させたので本件は close します。