Sha256: 282c2362793ae37af0a70ef0df359ba41b8bd63e3e1046cae288730d5b4f8709

Contents?: true

Size: 993 Bytes

Versions: 5

Compression:

Stored size: 993 Bytes

Contents

#!/usr/bin/env ruby
require 'rubygems'
require 'optparse'

$LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
require 'pru'

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' ['reduce']
    something | pru -r 'reduce'

Options:
BANNER
  opts.on("-r", "--reduce S","reduce via") {|s| options[:reduce] = s }
  opts.on("-h", "--help","Show this.") { puts opts; exit }
  opts.on('-v', '--version','Show Version'){ puts Pru::VERSION; exit}
end.parse!

map, reduce = ARGV
reduce ||= options[:reduce]
map = nil if map and map.empty?

if map and not reduce
  Pru.map($stdin, map){|x| puts x }
elsif map and reduce
  results = []
  Pru.map($stdin, map){|x| results << x }
  puts Pru.reduce(results, reduce)
elsif reduce
  puts Pru.reduce($stdin.read.split("\n"), reduce)
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
pru-0.1.4 bin/pru
pru-0.1.3 bin/pru
pru-0.1.2 bin/pru
pru-0.1.1 bin/pru
pru-0.1.0 bin/pru