summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorFlorian Frank <flori@ping.de>2011-07-04 22:56:06 +0200
committerFlorian Frank <flori@ping.de>2011-07-04 22:56:06 +0200
commit7159be5a7cea4c2c070e221f0145b97bc5f92a55 (patch)
tree6cf4c578ee4bd948970831c80b321c485d538c27 /bin
parentbba04b64715a0c6ca0d281e89f4c56a309e96ecd (diff)
downloadjson-7159be5a7cea4c2c070e221f0145b97bc5f92a55.tar.gz
Appy patch by Laurent Arnoud <laurent@spkdev.net>
Use Spruz::GO.go for options parsing
Diffstat (limited to 'bin')
-rwxr-xr-xbin/prettify_json.rb50
1 files changed, 10 insertions, 40 deletions
diff --git a/bin/prettify_json.rb b/bin/prettify_json.rb
index 943546f..3c53183 100755
--- a/bin/prettify_json.rb
+++ b/bin/prettify_json.rb
@@ -3,37 +3,8 @@
require 'json'
require 'fileutils'
include FileUtils
-
-# Parses the argument array _args_, according to the pattern _s_, to
-# retrieve the single character command line options from it. If _s_ is
-# 'xy:' an option '-x' without an option argument is searched, and an
-# option '-y foo' with an option argument ('foo').
-#
-# An option hash is returned with all found options set to true or the
-# found option argument.
-def go(s, args = ARGV)
- b, v = s.scan(/(.)(:?)/).inject([{},{}]) { |t,(o,a)|
- t[a.empty? ? 0 : 1][o] = a.empty? ? false : nil
- t
- }
- while a = args.shift
- a !~ /\A-(.+)/ and args.unshift a and break
- p = $1
- until p == ''
- o = p.slice!(0, 1)
- if v.key?(o)
- v[o] = if p == '' then args.shift or break 1 else p end
- break
- elsif b.key?(o)
- b[o] = true
- else
- args.unshift a
- break 1
- end
- end and break
- end
- b.merge(v)
-end
+require 'spruz/go'
+include Spruz::GO
opts = go 'slhi:', args = ARGV.dup
if opts['h'] || opts['l'] && opts['s']
@@ -52,17 +23,16 @@ EOT
exit 0
end
-filename = nil
-str = nil
-json_opts = {:max_nesting => false, :create_additions => false}
+json_opts = { :max_nesting => false, :create_additions => false }
-if args.empty?
- str = STDIN.read
-else
- str = File.read(filename = args.first)
-end
+document =
+ if filename = args.first or filename == '-'
+ File.read(filename)
+ else
+ STDIN.read
+ end
-json = JSON[str, json_opts]
+json = JSON.parse document, json_opts
output = if opts['s']
JSON.fast_generate json, json_opts