Sha256: 95e1a93d1998bcbd171a40c27e4ea361ac01a8eb5dd1a4f1e16362e83471a408
Contents?: true
Size: 1.83 KB
Versions: 2
Compression:
Stored size: 1.83 KB
Contents
#!/usr/bin/env ruby require 'optparse' $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib') require 'pru' usage = nil options = {} OptionParser.new do |opts| opts.banner = <<BANNER Pipeable Ruby Use ruby in your pipes, forget about grep / sed / awk / wc ... Map works on each line as String Reduce works on all lines as Array (optional or via -r) Usage: something | pru 'map' something | pru 'map' 'reduce' something | pru '' 'reduce' something | pru --reduce 'reduce' Options: BANNER opts.on("-r", "--reduce CODE","reduce via CODE") {|code| options[:reduce] = code } opts.separator '' opts.on('-I', '--libdir DIR', 'Add DIR to load path') { |dir| $LOAD_PATH << dir } opts.on('--require LIB', 'Require LIB (also comma-separated)') { |lib| begin require 'rubygems' rescue LoadError end lib.split(',').each{|l| require l } } opts.on('-i', '--inplace-edit FILE', 'Edit FILE inplace') { |file| options[:file] = file } opts.separator '' opts.on("-h", "--help","Show this.") { puts opts; exit } opts.on('-v', '--version','Show Version'){ puts Pru::VERSION; exit} usage = opts end.parse! if ARGV.empty? and options.empty? # no arguments -> show usage puts usage exit end abort "Too many arguments, see --help" if ARGV.size > 2 map, reduce = ARGV reduce ||= options[:reduce] map = 'true' if not map or map.empty? if options[:file] output_lines = [] input = File.read(options[:file]) newline = input[/\r\n|\r|\n/] else input = $stdin end collector = lambda{|line| output_lines ? output_lines << line : puts(line) } if reduce results = [] Pru.map(input, map){|out| results << out } collector.call Pru.reduce(results, reduce) else Pru.map(input, map){|out| collector.call out } end if options[:file] File.open(options[:file], 'w'){|f| f.write output_lines.join(newline) } end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
pru-0.1.7 | bin/pru |
pru-0.1.6 | bin/pru |