📌

[Feature #20525] インデントをサポートする %記法や String#dedent メソッドを追加する提案

2024/07/31に公開

[Feature #20525] Percent string literal with indentation support or String#dedent

  • インデントをサポートする %記法や String#dedent メソッドを追加する提案
  • 例えば以下のようなヒアドキュメントを書いたときに
ContentSlide(title: "Why Phlex?"){
  Markdown <<~MARKDOWN

  * Because its fun
  * Because its super-de-dooper
  MARKDOWN
},
  • Markdown の名前が重複しているので以下のように {} で書きたいのがモチベーションみたいですね
  • 例えば %記法だと以下のような感じでかけて
ContentSlide(title: "Why Phlex?"){
  Markdown %~{
    # Why do you like markdown?

    * Because its fun
    * Because its super-de-dooper
  }
},
  • String#dedent だと以下のようにかけるイメージです
ContentSlide(title: "Why Phlex?"){
  Markdown %{
    # Why do you like markdown?

    * Because its fun
    * Because its super-de-dooper
  }.dedent
},
# 以下は現在でも有効な %記法
# ~ から ~ までが文字列として定義される
pp %~{~
# => "{"
ContentSlide(title: "Why Phlex?"){
  Markdown <<~"}"

  * Because its fun
  * Because its super-de-dooper
  }
},
  • 個人的には {} の方が見栄えはいいんですがヒアドキュメントの識別子を EOS で一貫しているのでそこまで気にはならないすねえ
  • String#dedent はそれはそれでよさそうな気がしたんですが入れるとしたら <<~ 以外のケースでどれだけ利用するケースがあるのか、ってところになりそうですかねー
GitHubで編集を提案

Discussion