寝付きが悪かったので、作った超簡易gem 第二弾 「maybe-chain」

眠れなくて暇だったので、思い付きをgemにしてみた。
要はActiveSupportのtryの変形バージョンで、tryでチェインするとなんか見づらいから、ラップしてメソッドチェインそのまま使えるようにしてみた。
ついでにKernelモジュールを拡張して、Haskellのmaybe関数っぽい感じで中身かデフォルト値を取ってブロックに渡せるようにした。というか、むしろこっちがやりたかった。


ググれば、絶対に車輪の再発明であること確実なのだが、暇潰しだったので、そこはスルー。


こんな感じになる。

m1 = "a".to_maybe.upcase.gsub(/A/, "B")

maybe(m1) do |str|
  puts str # => B
end

m2 = nil.to_maybe.upcase.gsub(/A/, "B")

maybe(m2) do |str|
  puts str # No Execute
end

maybe(m2, "a") do |str|
  puts str # => a
end