vivliostyle / vfm

⬇️ Open and extendable Markdown syntax and toolchain.
https://vivliostyle.github.io/vfm/#/vfm
Other
69 stars 12 forks source link

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

Closed akabekobeko closed 2 years ago

akabekobeko commented 2 years ago

refs: #141

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

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

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

akabekobeko commented 2 years ago

@MurakamiShinyu

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

現在は

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

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

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

MurakamiShinyu commented 2 years ago

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

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

akabekobeko commented 2 years ago

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

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

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

akabekobeko commented 2 years ago

@MurakamiShinyu

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