In <20011013.151145.13241139.JCA02266 / nifty.ne.jp>
On Sat, 13 Oct 2001 15:12:42 +0900
Koji Arai <JCA02266 / nifty.ne.jp> wrote:
> [ruby-list:6005] を参考に私も作ってみました。jcode.rb に依存
> しないのがミソです。
> # jleft, jright はおまけで jfold がメイン
> 
> でも、jfold って既に誰かが作ってそうですよね。最上の実装の物
> を FAQ に載せるか、jcode.rb に入れたいです。

文字数で切り出しじゃなくて何バイトまでかで指定するのが
ポイントでしょうか。

jfoldはすでに改行が入っている文字列の場合にどうすれば
いいのかが悩ましいですが。

foldってNKF.nkf("-f#{len}", str)でもいいような気も
しますが。

class String
  def jleft(n)
   /\A.{0,#{n}}/m === self
   s = $&
   s.sub!(/.\z/m,'') while n < s.size
   s
  end
  def jright(n)
   /.{0,#{n}}\z/m === self
   s = $&
   s.sub!(/\A./m,'') while n < s.size
   s
  end
  def jfold(len)
    ary = []
    str = self.delete("\r\n")
    until str.empty?
      left = str.jleft(len)
      str[0,left.size] = ''
      ary.push left
      yield left if block_given?
    end
    ary
  end
end


-- 
|ZnZ(ゼット エヌ ゼット)
|西山和広(Kazuhiro NISHIYAMA)