jazor 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.rdoc +4 -0
- data/bin/jazor +9 -8
- data/lib/jazor.rb +1 -1
- metadata +28 -122
data/CHANGELOG.rdoc
CHANGED
data/bin/jazor
CHANGED
@@ -80,16 +80,17 @@ begin
|
|
80
80
|
end
|
81
81
|
end
|
82
82
|
|
83
|
-
if options[:sort] && obj.respond_to?(:sort)
|
84
|
-
obj = if obj.respond_to?(:keys) && obj.respond_to?(:values)
|
85
|
-
Hash[obj.sort]
|
86
|
-
else
|
87
|
-
obj.sort{ |a,b| a.to_s <=> b.to_s }
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
83
|
(ARGV.length > 0 ? ARGV[0..ARGV.length] : [nil]).each do |expression|
|
92
84
|
result = expression.nil? ? obj : obj.instance_eval(expression)
|
85
|
+
|
86
|
+
if options[:sort] && result.respond_to?(:sort)
|
87
|
+
result = if result.respond_to?(:keys) && result.respond_to?(:values)
|
88
|
+
Hash[result.sort]
|
89
|
+
else
|
90
|
+
result.sort{ |a,b| a.to_s <=> b.to_s }
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
93
94
|
if options[:test]
|
94
95
|
if result
|
95
96
|
Jazor::LOG.info("Test passed: #{expression} => #{[Hash, Array].include?(result.class) ? result.to_json : result}")
|
data/lib/jazor.rb
CHANGED
@@ -10,7 +10,7 @@ require 'json'
|
|
10
10
|
module Jazor
|
11
11
|
|
12
12
|
NAME = 'jazor'
|
13
|
-
VERSION = '0.1.
|
13
|
+
VERSION = '0.1.2'
|
14
14
|
AUTHOR = 'Michael T. Conigliaro'
|
15
15
|
AUTHOR_EMAIL = 'mike [at] conigliaro [dot] org'
|
16
16
|
DESCRIPTION = 'Jazor (JSON + razor) is a simple command line JSON parsing tool.'
|
metadata
CHANGED
@@ -1,118 +1,34 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: jazor
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.2
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 1
|
9
|
-
- 1
|
10
|
-
version: 0.1.1
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Michael T. Conigliaro
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2011-08-24 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: json
|
22
|
-
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &2152331680 !ruby/object:Gem::Requirement
|
24
17
|
none: false
|
25
|
-
requirements:
|
26
|
-
- -
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
|
29
|
-
segments:
|
30
|
-
- 0
|
31
|
-
version: "0"
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
32
22
|
type: :runtime
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
Jazor (JSON + razor) is a simple command line JSON parsing tool.
|
38
|
-
|
39
|
-
== Installation
|
40
|
-
|
41
|
-
gem install jazor
|
42
|
-
|
43
|
-
== Usage
|
44
|
-
|
45
|
-
jazor [options] [source] [expression ...]
|
46
|
-
|
47
|
-
=== Options
|
48
|
-
|
49
|
-
See the *--help* command line option.
|
50
|
-
|
51
|
-
=== Sources
|
52
|
-
|
53
|
-
The *source* argument refers to a file, URL or string containing a JSON object.
|
54
|
-
Since attempts to implement a full-featured HTTP client within Jazor would have
|
55
|
-
been futile, Jazor also accepts input from STDIN. This means if you ever need
|
56
|
-
to use an advanced HTTP option that Jazor doesn't implement, you can always use
|
57
|
-
a *real* HTTP client (e.g. {cURL}[http://curl.haxx.se/]) and simply pipe the
|
58
|
-
output to Jazor.
|
59
|
-
|
60
|
-
=== Expressions
|
61
|
-
|
62
|
-
Jazor accepts one or more Ruby *expressions* which are simply eval'ed within
|
63
|
-
the context of your JSON object. After Jazor parses your JSON input into native
|
64
|
-
Ruby data types (Hash, Array, etc.), these expressions are used to slice and
|
65
|
-
dice the data any way you want. The results will be "pretty printed" to STDOUT.
|
66
|
-
|
67
|
-
Note that hash keys can be accessed via standard Ruby (e.g. foo['bar'],
|
68
|
-
foo.fetch('bar'), etc.) or Javascript (e.g. foo.bar) syntax.
|
69
|
-
|
70
|
-
=== Expression Testing
|
71
|
-
|
72
|
-
Expression testing (*--test*) allows you to test the "truthiness" of your
|
73
|
-
expression results. If any expression returns a "falsy" value, Jazor will exit
|
74
|
-
with a non-zero return code. This is useful for calling Jazor from within shell
|
75
|
-
scripts.
|
76
|
-
|
77
|
-
== Examples
|
78
|
-
|
79
|
-
$ jazor http://github.com/api/v2/json/commits/list/mconigliaro/jazor/master commits.count
|
80
|
-
16
|
81
|
-
|
82
|
-
$ curl --silent http://github.com/api/v2/json/commits/list/mconigliaro/jazor/master | jazor commits.last.message
|
83
|
-
initial commit
|
84
|
-
|
85
|
-
$ jazor '{ "foo": "abc", "bar": [1, 2, 3] }' 'foo.split(//)'
|
86
|
-
["a", "b", "c"]
|
87
|
-
|
88
|
-
$ jazor '{ "foo": "abc", "bar": [1, 2, 3] }' 'bar.inject { |memo,obj| memo + obj }'
|
89
|
-
6
|
90
|
-
|
91
|
-
$ jazor '[1, 2, 3, 4, 5]' 'select { |obj| obj.even? }'
|
92
|
-
[2, 4]
|
93
|
-
|
94
|
-
$ jazor '[1, 2, 3, 4, 5]' 'select { |obj| obj.odd? }'
|
95
|
-
[1, 3, 5]
|
96
|
-
|
97
|
-
$ jazor '["a", "b", "c"]' self.count
|
98
|
-
3
|
99
|
-
|
100
|
-
== Authors
|
101
|
-
|
102
|
-
* Michael T. Conigliaro <mike [at] conigliaro [dot] org>
|
103
|
-
|
104
|
-
== Contributers
|
105
|
-
|
106
|
-
* {Daniel Hopkins}[https://github.com/danielhopkins]
|
107
|
-
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *2152331680
|
25
|
+
description: Jazor (JSON + razor) is a simple command line JSON parsing tool.
|
108
26
|
email: mike [at] conigliaro [dot] org
|
109
|
-
executables:
|
27
|
+
executables:
|
110
28
|
- jazor
|
111
29
|
extensions: []
|
112
|
-
|
113
30
|
extra_rdoc_files: []
|
114
|
-
|
115
|
-
files:
|
31
|
+
files:
|
116
32
|
- CHANGELOG.rdoc
|
117
33
|
- LICENSE
|
118
34
|
- Rakefile
|
@@ -125,36 +41,26 @@ files:
|
|
125
41
|
- test/test_rest_client.rb
|
126
42
|
homepage: http://github.com/mconigliaro/jazor
|
127
43
|
licenses: []
|
128
|
-
|
129
44
|
post_install_message:
|
130
45
|
rdoc_options: []
|
131
|
-
|
132
|
-
require_paths:
|
46
|
+
require_paths:
|
133
47
|
- lib
|
134
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
48
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
135
49
|
none: false
|
136
|
-
requirements:
|
137
|
-
- -
|
138
|
-
- !ruby/object:Gem::Version
|
139
|
-
|
140
|
-
|
141
|
-
- 0
|
142
|
-
version: "0"
|
143
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
144
55
|
none: false
|
145
|
-
requirements:
|
146
|
-
- -
|
147
|
-
- !ruby/object:Gem::Version
|
148
|
-
|
149
|
-
segments:
|
150
|
-
- 0
|
151
|
-
version: "0"
|
56
|
+
requirements:
|
57
|
+
- - ! '>='
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '0'
|
152
60
|
requirements: []
|
153
|
-
|
154
61
|
rubyforge_project: jazor
|
155
62
|
rubygems_version: 1.8.6
|
156
63
|
signing_key:
|
157
64
|
specification_version: 3
|
158
65
|
summary: Jazor (JSON + razor) is a simple command line JSON parsing tool.
|
159
66
|
test_files: []
|
160
|
-
|