bin/dimsum in dimsum-0.0.1 vs bin/dimsum in dimsum-0.0.2
- old
+ new
@@ -1,39 +1,26 @@
-#!/usr/bin/env ruby
-
require 'optparse'
+require 'dimsum'
+include Dimsum
+
options = {}
OptionParser.new do |opts|
opts.banner = "Usage: sample.rb [options]"
opts.on("-n [Fixnum]", "--number [Fixnum]", "") do |n|
options[:lines] = n
end
end.parse!
-filename = ARGV[0]
+options[:lines] ||= "5"
+
lines = options[:lines].to_i
-raise ArgumentError, "The filename is required" unless filename
-file_size = `wc -l #{filename}`.strip.to_i
+reservoir_sample = if ARGV.length > 0
+ filename = ARGV[0]
+ reservoir_file(filename, lines)
+ else
+ reservoir_stdin(lines)
+ end
-last_2 = `tail -c2 #{filename}`
-if last_2 == "\n\n"
- file_size -= 1
-end
-
-random = Random.new
-
-File.open(filename, "r").lines do |line|
- if file_size == 0
- next
- end
- r = random.rand(0 .. file_size - 1)
- if r < lines
- STDOUT.print line
- STDOUT.flush
- lines -= 1
- end
- file_size -= 1
-end
-
+reservoir_sample.each{ |l| STDOUT.print l }