jazor 0.0.4 → 0.1.0
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/COPYING.txt +23 -675
- data/README.rdoc +50 -18
- data/Rakefile +1 -1
- data/bin/jazor +70 -78
- data/lib/jazor.rb +20 -31
- data/test/test_jazor.rb +26 -42
- data/test/test_jazor_bin.rb +9 -15
- data/test/test_rest_client.rb +2 -4
- metadata +77 -10
data/test/test_rest_client.rb
CHANGED
@@ -1,12 +1,10 @@
|
|
1
1
|
require 'test/unit'
|
2
2
|
|
3
|
-
$:.push File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib'))
|
4
|
-
require 'jazor'
|
5
|
-
|
6
|
-
|
7
3
|
class TestExecute < Test::Unit::TestCase
|
8
4
|
|
9
5
|
def test_get
|
6
|
+
require 'jazor'
|
7
|
+
|
10
8
|
response = Jazor::RestClient.get('http://ajax.googleapis.com/ajax/services/search/web')
|
11
9
|
assert response.code == '200'
|
12
10
|
assert response.body =~ /"responseStatus": 400/
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jazor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 27
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
+
- 1
|
8
9
|
- 0
|
9
|
-
|
10
|
-
version: 0.0.4
|
10
|
+
version: 0.1.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Michael T. Conigliaro
|
@@ -15,8 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
19
|
-
default_executable:
|
18
|
+
date: 2011-08-23 00:00:00 Z
|
20
19
|
dependencies:
|
21
20
|
- !ruby/object:Gem::Dependency
|
22
21
|
name: json
|
@@ -32,7 +31,76 @@ dependencies:
|
|
32
31
|
version: "0"
|
33
32
|
type: :runtime
|
34
33
|
version_requirements: *id001
|
35
|
-
description:
|
34
|
+
description: |
|
35
|
+
= Jazor
|
36
|
+
|
37
|
+
Jazor (rhymes with "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
|
+
== Author
|
101
|
+
|
102
|
+
Michael T. Conigliaro <mike [at] conigliaro [dot] org>
|
103
|
+
|
36
104
|
email:
|
37
105
|
- mike [at] conigliaro [dot] org
|
38
106
|
executables:
|
@@ -47,11 +115,10 @@ files:
|
|
47
115
|
- README.rdoc
|
48
116
|
- bin/jazor
|
49
117
|
- lib/jazor.rb
|
50
|
-
- test/test_jazor_bin.rb
|
51
118
|
- test/test.json
|
52
119
|
- test/test_jazor.rb
|
120
|
+
- test/test_jazor_bin.rb
|
53
121
|
- test/test_rest_client.rb
|
54
|
-
has_rdoc: true
|
55
122
|
homepage: http://github.com/mconigliaro/jazor
|
56
123
|
licenses: []
|
57
124
|
|
@@ -81,7 +148,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
81
148
|
requirements: []
|
82
149
|
|
83
150
|
rubyforge_project: jazor
|
84
|
-
rubygems_version: 1.
|
151
|
+
rubygems_version: 1.8.6
|
85
152
|
signing_key:
|
86
153
|
specification_version: 3
|
87
154
|
summary: Jazor is a simple command line JSON parsing tool
|