[Feature #21346] マッチする文字がない場合に特定の文字を追加するメソッドの提案

に公開

[Feature #21346] Introduce String#ensure_suffix

uri.end_with?("/") ? uri : "#{uri}/"
  • このようなことを行う String#ensure_suffix, ensure_prefix を追加する提案
# 末尾に o! がない場合は追加したオブジェクトを返す
"Hell".ensure_suffix("o!")   # => "Hello!"

# 既に末尾に o! がある場合はレシーバを返す
"Hello!".ensure_suffix("o!") # => "Hello!"
  • また以下のような『一部の文字が一致している場合』には『すべての文字が追加される』ような挙動になります
# "Hello" の末尾に "o!" が追加される
"Hello".ensure_suffix("o!")   # => "Helloo!"
  • こういうメソッドを追加すること自体は matz も同意したんですがいくつか調整が入りそう
    • 既に文字が存在する場合でも一貫性として常にコピーした文字列を返す
    • "Hello".ensure_suffix("o!") の場合は "Hello!" を返す(重複している文字はそのまま)
      • "foo.r".ensure_suffix(".rb") の場合は "foo.rb" を返してほしいケースがある
    • 名前をどうするか
  • 現状は主に名前をどうするのかで議論が止まっているみたい
GitHubで編集を提案

Discussion