現在のメソッド名取得とメソッド名 #{ruby}

現在のメソッド名取得:__method__, __callee__
メソッド名での実行:__send__

前回、前々回と投稿したメソッドはこんな感じにも実装できる。

class String

  def centerb(width, padding = ' ')
    justb(__method__, width, padding)
  end

  def rjustb(width, padding = ' ')
    justb(__method__, width, padding)
  end

  def ljustb(width, padding = ' ')
    justb(__method__, width, padding)
  end

  private
  def justb(method_symbol, width, padding)
    __send__(method_symbol.to_s.chop, width-(bytesize-size), padding)
  end

end