autoparse 0.3.2 → 0.3.3
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.md +4 -0
- data/lib/autoparse.rb +4 -2
- data/lib/autoparse/instance.rb +2 -1
- data/lib/autoparse/version.rb +1 -1
- data/lib/compat/multi_json.rb +17 -0
- data/spec/autoparse/instance_spec.rb +41 -0
- metadata +99 -74
- data/Gemfile.lock +0 -32
- data/website/index.html +0 -95
data/CHANGELOG.md
CHANGED
data/lib/autoparse.rb
CHANGED
@@ -15,6 +15,8 @@
|
|
15
15
|
require 'autoparse/instance'
|
16
16
|
require 'autoparse/version'
|
17
17
|
require 'addressable/uri'
|
18
|
+
require 'multi_json'
|
19
|
+
require 'compat/multi_json'
|
18
20
|
|
19
21
|
module AutoParse
|
20
22
|
def self.schemas
|
@@ -138,7 +140,7 @@ module AutoParse
|
|
138
140
|
end
|
139
141
|
|
140
142
|
# Register the new schema.
|
141
|
-
self.schemas[schema.uri] = schema
|
143
|
+
self.schemas[schema.uri] = schema unless parent && parent.uri == schema.uri
|
142
144
|
return schema
|
143
145
|
end
|
144
146
|
|
@@ -332,7 +334,7 @@ module AutoParse
|
|
332
334
|
elsif value.respond_to?(:to_hash)
|
333
335
|
value.to_hash
|
334
336
|
elsif value.respond_to?(:to_json)
|
335
|
-
MultiJson.
|
337
|
+
MultiJson.load(value.to_json)
|
336
338
|
else
|
337
339
|
raise TypeError, "Expected Hash, got #{value.class}."
|
338
340
|
end
|
data/lib/autoparse/instance.rb
CHANGED
@@ -14,6 +14,7 @@
|
|
14
14
|
|
15
15
|
|
16
16
|
require 'multi_json'
|
17
|
+
require 'compat/multi_json'
|
17
18
|
require 'time'
|
18
19
|
require 'autoparse/inflection'
|
19
20
|
require 'addressable/uri'
|
@@ -458,7 +459,7 @@ module AutoParse
|
|
458
459
|
# Ignores extra arguments to avoid throwing errors w/ certain JSON
|
459
460
|
# libraries.
|
460
461
|
def to_json(*args)
|
461
|
-
return MultiJson.
|
462
|
+
return MultiJson.dump(self.to_hash)
|
462
463
|
end
|
463
464
|
|
464
465
|
##
|
data/lib/autoparse/version.rb
CHANGED
@@ -0,0 +1,17 @@
|
|
1
|
+
gem 'multi_json', '>= 1.0.0'
|
2
|
+
require 'multi_json'
|
3
|
+
|
4
|
+
unless MultiJson.respond_to?(:load)
|
5
|
+
module MultiJson
|
6
|
+
class <<self
|
7
|
+
alias :load :decode
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
unless MultiJson.respond_to?(:dump)
|
12
|
+
module MultiJson
|
13
|
+
class <<self
|
14
|
+
alias :dump :encode
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -1581,6 +1581,47 @@ describe AutoParse::Instance, 'with the file schema' do
|
|
1581
1581
|
file.items.first.parents.first.should be_an_instance_of @parentref_parser
|
1582
1582
|
end
|
1583
1583
|
|
1584
|
+
|
1585
|
+
it 'should not redefine the parent when accessing anonymous children' do
|
1586
|
+
file_json = {
|
1587
|
+
"kind" => "drive#file",
|
1588
|
+
"id" => "0Bz2X2-r-Ou9fYTJFLVFYZENzMjA",
|
1589
|
+
"parents" => [
|
1590
|
+
{
|
1591
|
+
"kind" => "drive#parentReference",
|
1592
|
+
"id" => "0AD2X2-r-Ou9fUk9PVA",
|
1593
|
+
}]
|
1594
|
+
}
|
1595
|
+
|
1596
|
+
list_json = {
|
1597
|
+
"kind" => "drive#fileList",
|
1598
|
+
"items" => [
|
1599
|
+
{
|
1600
|
+
"kind" => "drive#file",
|
1601
|
+
"id" => "0Bz2X2-r-Ou9fYTJFLVFYZENzMjA",
|
1602
|
+
"parents" => [
|
1603
|
+
{
|
1604
|
+
"kind" => "drive#parentReference",
|
1605
|
+
"id" => "0AD2X2-r-Ou9fUk9PVA",
|
1606
|
+
}
|
1607
|
+
],
|
1608
|
+
}
|
1609
|
+
]
|
1610
|
+
}
|
1611
|
+
|
1612
|
+
file = @file_parser.new(file_json)
|
1613
|
+
file.should be_an_instance_of @file_parser
|
1614
|
+
file.parents.first.should be_an_instance_of @parentref_parser
|
1615
|
+
|
1616
|
+
# Regression check for bug where accessing the parents property would redefine
|
1617
|
+
# file. This resulted in an inability to parse that type later on, such as when
|
1618
|
+
# used in the items array.
|
1619
|
+
list = @filelist_parser.new(list_json)
|
1620
|
+
list.should be_an_instance_of @filelist_parser
|
1621
|
+
list.items.first.should be_an_instance_of @file_parser
|
1622
|
+
list.items.first.parents.first.should be_an_instance_of @parentref_parser
|
1623
|
+
end
|
1624
|
+
|
1584
1625
|
it 'should handle booleans correctly' do
|
1585
1626
|
file = @filelist_parser.new(@data)
|
1586
1627
|
file.should be_an_instance_of @filelist_parser
|
metadata
CHANGED
@@ -1,99 +1,129 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: autoparse
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.3.3
|
4
5
|
prerelease:
|
5
|
-
version: 0.3.2
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Bob Aman
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2013-03-26 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
16
15
|
name: addressable
|
17
|
-
|
18
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
19
17
|
none: false
|
20
|
-
requirements:
|
21
|
-
- -
|
22
|
-
- !ruby/object:Gem::Version
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
23
21
|
version: 2.3.1
|
24
22
|
type: :runtime
|
25
|
-
version_requirements: *id001
|
26
|
-
- !ruby/object:Gem::Dependency
|
27
|
-
name: multi_json
|
28
23
|
prerelease: false
|
29
|
-
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
25
|
none: false
|
31
|
-
requirements:
|
32
|
-
- -
|
33
|
-
- !ruby/object:Gem::Version
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 2.3.1
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: multi_json
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
34
37
|
version: 1.0.0
|
35
38
|
type: :runtime
|
36
|
-
version_requirements: *id002
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: extlib
|
39
39
|
prerelease: false
|
40
|
-
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 1.0.0
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: extlib
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
41
49
|
none: false
|
42
|
-
requirements:
|
43
|
-
- -
|
44
|
-
- !ruby/object:Gem::Version
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
45
53
|
version: 0.9.15
|
46
54
|
type: :runtime
|
47
|
-
version_requirements: *id003
|
48
|
-
- !ruby/object:Gem::Dependency
|
49
|
-
name: rake
|
50
55
|
prerelease: false
|
51
|
-
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.9.15
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: rake
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
52
65
|
none: false
|
53
|
-
requirements:
|
54
|
-
- -
|
55
|
-
- !ruby/object:Gem::Version
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
56
69
|
version: 0.9.0
|
57
70
|
type: :development
|
58
|
-
version_requirements: *id004
|
59
|
-
- !ruby/object:Gem::Dependency
|
60
|
-
name: rspec
|
61
71
|
prerelease: false
|
62
|
-
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 0.9.0
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: rspec
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
63
81
|
none: false
|
64
|
-
requirements:
|
65
|
-
- -
|
66
|
-
- !ruby/object:Gem::Version
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
67
85
|
version: 2.11.0
|
68
86
|
type: :development
|
69
|
-
version_requirements: *id005
|
70
|
-
- !ruby/object:Gem::Dependency
|
71
|
-
name: launchy
|
72
87
|
prerelease: false
|
73
|
-
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
89
|
none: false
|
75
|
-
requirements:
|
76
|
-
- -
|
77
|
-
- !ruby/object:Gem::Version
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 2.11.0
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: launchy
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
78
101
|
version: 2.1.1
|
79
102
|
type: :development
|
80
|
-
|
81
|
-
|
82
|
-
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 2.1.1
|
110
|
+
description: ! 'An implementation of the JSON Schema specification. Provides automatic
|
111
|
+
parsing
|
112
|
+
|
83
113
|
for any given JSON Schema.
|
84
114
|
|
115
|
+
'
|
85
116
|
email: bobaman@google.com
|
86
117
|
executables: []
|
87
|
-
|
88
118
|
extensions: []
|
89
|
-
|
90
|
-
extra_rdoc_files:
|
119
|
+
extra_rdoc_files:
|
91
120
|
- README.md
|
92
|
-
files:
|
121
|
+
files:
|
122
|
+
- lib/autoparse.rb
|
93
123
|
- lib/autoparse/inflection.rb
|
94
124
|
- lib/autoparse/instance.rb
|
95
125
|
- lib/autoparse/version.rb
|
96
|
-
- lib/
|
126
|
+
- lib/compat/multi_json.rb
|
97
127
|
- spec/autoparse/instance_spec.rb
|
98
128
|
- spec/data/account.json
|
99
129
|
- spec/data/address.json
|
@@ -123,40 +153,35 @@ files:
|
|
123
153
|
- tasks/rdoc.rake
|
124
154
|
- tasks/spec.rake
|
125
155
|
- tasks/yard.rake
|
126
|
-
- website/index.html
|
127
156
|
- CHANGELOG.md
|
128
157
|
- Gemfile
|
129
|
-
- Gemfile.lock
|
130
158
|
- LICENSE
|
131
|
-
- Rakefile
|
132
159
|
- README.md
|
160
|
+
- Rakefile
|
133
161
|
homepage: http://autoparse.rubyforge.org/
|
134
162
|
licenses: []
|
135
|
-
|
136
163
|
post_install_message:
|
137
|
-
rdoc_options:
|
164
|
+
rdoc_options:
|
138
165
|
- --main
|
139
166
|
- README.md
|
140
|
-
require_paths:
|
167
|
+
require_paths:
|
141
168
|
- lib
|
142
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
169
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
143
170
|
none: false
|
144
|
-
requirements:
|
145
|
-
- -
|
146
|
-
- !ruby/object:Gem::Version
|
147
|
-
version:
|
148
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
171
|
+
requirements:
|
172
|
+
- - ! '>='
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
version: '0'
|
175
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
149
176
|
none: false
|
150
|
-
requirements:
|
151
|
-
- -
|
152
|
-
- !ruby/object:Gem::Version
|
153
|
-
version:
|
177
|
+
requirements:
|
178
|
+
- - ! '>='
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
154
181
|
requirements: []
|
155
|
-
|
156
182
|
rubyforge_project: autoparse
|
157
183
|
rubygems_version: 1.8.24
|
158
184
|
signing_key:
|
159
185
|
specification_version: 3
|
160
186
|
summary: A parsing system based on JSON Schema.
|
161
187
|
test_files: []
|
162
|
-
|
data/Gemfile.lock
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
GEM
|
2
|
-
remote: http://rubygems.org/
|
3
|
-
specs:
|
4
|
-
addressable (2.3.1)
|
5
|
-
diff-lcs (1.1.3)
|
6
|
-
extlib (0.9.15)
|
7
|
-
multi_json (1.3.6)
|
8
|
-
rake (0.9.2.2)
|
9
|
-
rcov (1.0.0)
|
10
|
-
redcarpet (2.1.1)
|
11
|
-
rspec (2.11.0)
|
12
|
-
rspec-core (~> 2.11.0)
|
13
|
-
rspec-expectations (~> 2.11.0)
|
14
|
-
rspec-mocks (~> 2.11.0)
|
15
|
-
rspec-core (2.11.1)
|
16
|
-
rspec-expectations (2.11.1)
|
17
|
-
diff-lcs (~> 1.1.3)
|
18
|
-
rspec-mocks (2.11.1)
|
19
|
-
yard (0.8.2.1)
|
20
|
-
|
21
|
-
PLATFORMS
|
22
|
-
ruby
|
23
|
-
|
24
|
-
DEPENDENCIES
|
25
|
-
addressable (>= 2.3.1)
|
26
|
-
extlib (>= 0.9.15)
|
27
|
-
multi_json (>= 1.0.0)
|
28
|
-
rake (>= 0.9.0)
|
29
|
-
rcov (>= 0.9.9)
|
30
|
-
redcarpet
|
31
|
-
rspec (>= 2.11.0)
|
32
|
-
yard
|
data/website/index.html
DELETED
@@ -1,95 +0,0 @@
|
|
1
|
-
<!DOCTYPE html>
|
2
|
-
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
|
3
|
-
<head>
|
4
|
-
<meta charset="utf-8"/>
|
5
|
-
<title>AutoParse</title>
|
6
|
-
<style type="text/css">
|
7
|
-
* {
|
8
|
-
font-size: 100%;
|
9
|
-
margin: 0;
|
10
|
-
padding: 0;
|
11
|
-
}
|
12
|
-
|
13
|
-
body {
|
14
|
-
font-family: "Lucida Grande", Verdana, sans-serif;
|
15
|
-
margin: 1em;
|
16
|
-
}
|
17
|
-
|
18
|
-
a {
|
19
|
-
color: #880000;
|
20
|
-
}
|
21
|
-
|
22
|
-
a:visited {
|
23
|
-
color: #333333;
|
24
|
-
}
|
25
|
-
|
26
|
-
h1 {
|
27
|
-
font-size: 2em;
|
28
|
-
margin: 0 0 0.8em 0;
|
29
|
-
text-align: center;
|
30
|
-
}
|
31
|
-
|
32
|
-
h2 {
|
33
|
-
font-size: 1em;
|
34
|
-
margin: 0.8em 0;
|
35
|
-
}
|
36
|
-
|
37
|
-
p {
|
38
|
-
margin: 0.8em 0;
|
39
|
-
}
|
40
|
-
|
41
|
-
ul {
|
42
|
-
font-size: 0.9em;
|
43
|
-
margin: 0 0 0 1.5em;
|
44
|
-
}
|
45
|
-
|
46
|
-
div {
|
47
|
-
width: 50%;
|
48
|
-
margin: 0 auto;
|
49
|
-
padding: 0.8em;
|
50
|
-
background-color: #AA5852;
|
51
|
-
border: 2px solid #C2645D;
|
52
|
-
}
|
53
|
-
|
54
|
-
@media print {
|
55
|
-
body {
|
56
|
-
font-size: 0.9em;
|
57
|
-
}
|
58
|
-
|
59
|
-
a {
|
60
|
-
text-decoration: none;
|
61
|
-
color: #000;
|
62
|
-
}
|
63
|
-
}
|
64
|
-
</style>
|
65
|
-
</head>
|
66
|
-
<body>
|
67
|
-
<h1>AutoParse</h1>
|
68
|
-
<div>
|
69
|
-
<p>
|
70
|
-
An implementation of the JSON Schema specification.
|
71
|
-
</p>
|
72
|
-
<ul>
|
73
|
-
<li>
|
74
|
-
<a href="http://rubyforge.org/projects/autoparse/">
|
75
|
-
Project Page
|
76
|
-
</a>
|
77
|
-
</li>
|
78
|
-
<li>
|
79
|
-
<a href="http://github.com/sporkmonger/autoparse/tree/">
|
80
|
-
GitHub Page
|
81
|
-
</a>
|
82
|
-
</li>
|
83
|
-
<li><a href="/api/">API</a></li>
|
84
|
-
<li><a href="/specdoc/">Specifications</a></li>
|
85
|
-
<li><a href="/coverage/">Code Coverage</a></li>
|
86
|
-
</ul>
|
87
|
-
<p>
|
88
|
-
You know what to do:
|
89
|
-
</p>
|
90
|
-
<p>
|
91
|
-
<code>sudo gem install autoparse</code>
|
92
|
-
</p>
|
93
|
-
</div>
|
94
|
-
</body>
|
95
|
-
</html>
|