Sha256: 6ca5d66c164a7b8638bb22230348485b1395c31173a96401833ebfa83e450951

Contents?: true

Size: 1.04 KB

Versions: 1

Compression:

Stored size: 1.04 KB

Contents

#!/usr/bin/env ruby
# coding: utf-8

lib = File.expand_path('../../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)

require 'jr/cli/version'
require 'optparse'
require 'yajl'

opt = OptionParser.new
opt.banner  = "jr - Command-line JSON processor for Rubyists [Ver. #{Jr::Cli::VERSION}]\n\n" +
              "Usage: jr [options] <jr filter> [file...]"
opt.version = Jr::Cli::VERSION
opt.on('-r FILE', 'require the FILE before execution') {|file| require file }
opt.parse! ARGV

unless Kernel.respond_to? :itself
  module Kernel
    def itself
      self
    end
  end
end

trap('INT') { exit 130 }

inputs = ARGV[1] ? ARGV[1..-1].map {|f| open f } : [STDIN]
result = Enumerator.new do |yielder|
  inputs.each do |input|
    Yajl::Parser.new(symbolize_keys: true).parse(input) do |d|
      yielder.yield d
    end
  end
end.lazy.instance_eval(ARGV[0])

encoder = Yajl::Encoder.new(pretty: true)

if result.is_a? Array or result.kind_of? Enumerator
  result.each do |data|
    puts encoder.encode(data)
  end
else
  puts encoder.encode(result)
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
jr-cli-0.1.0 bin/jr