テキストを正方形っぽく整形したい

ふとなんとなくテキストを正方形っぽく整形したいなあと思って書いてみた。割とそれっぽくなるはず。

class String
  def pat
    w = Math.sqrt(self.length).ceil
    a = self.split(//)
    t = []
    self.length.times do |s|
      t[s%w] ||= ""
      t[s%w] << a.shift
    end
    t
  end
end

使用例

irb(main):025:0> "このまま眠りつづけて死ぬ".pat.inject("", :puts)
こ眠け
のりて
まつ死
まづぬ
=> nil