diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2022-11-25 14:22:37 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2022-12-01 02:28:49 +0900 |
commit | d752cf7601adbe4bc2dc658effc2f61563a7dfb7 (patch) | |
tree | 7acc875d1933b330f96c7e3d7a31d61da5e77387 /sample/mpart.rb | |
parent | a0b0365e905e1ac51998ace7e6fc723406a2f157 (diff) |
Use class methods of `File` over `Kernel.open` and `IO.read`
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/6834
Diffstat (limited to 'sample/mpart.rb')
-rw-r--r-- | sample/mpart.rb | 44 |
1 files changed, 27 insertions, 17 deletions
diff --git a/sample/mpart.rb b/sample/mpart.rb index a88eba0ef6..eeb895d3de 100644 --- a/sample/mpart.rb +++ b/sample/mpart.rb @@ -2,11 +2,29 @@ # split into multi part # usage: mpart.rb [-nnn] file.. +class MPart < File + def self.new(basename, extname, part, parts) + super(sprintf("%s.%s%02d", basename, extname, part), "w"). + begin_mpart(basename, part, parts) + end + + def begin_mpart(basename, part, parts) + printf("%s part%02d/%02d\n", basename, part, parts) + write("BEGIN--cut here--cut here\n") + self + end + + def close + write("END--cut here--cut here\n") + super + end +end + lines = 1000 if (ARGV[0] =~ /^-(\d+)$/ ) - lines = $1.to_i; - ARGV.shift; + lines = $1.to_i + ARGV.shift end basename = ARGV[0] @@ -14,31 +32,23 @@ extname = "part" part = 1 line = 0 +ofp = nil fline = 0 -for i in ifp = open(basename) - fline = fline + 1 -end -ifp.close +File.foreach(basename) {fline += 1} parts = fline / lines + 1 -for i in ifp = open(basename) +File.foreach(basename) do |i| if line == 0 - ofp = open(sprintf("%s.%s%02d", basename, extname, part), "w") - printf(ofp, "%s part%02d/%02d\n", basename, part, parts) - ofp.write("BEGIN--cut here--cut here\n") + ofp = MPart.new(basename, extname, part, parts) end ofp.write(i) - line = line + 1 - if line >= lines and !ifp.eof? - ofp.write("END--cut here--cut here\n") + line += 1 + if line >= lines ofp.close - part = part + 1 + part += 1 line = 0 end end -ofp.write("END--cut here--cut here\n") ofp.close - -ifp.close |