json-schema 0.1.0 → 0.1.1
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/README.textile +7 -1
- data/lib/json-schema/validator.rb +29 -4
- metadata +8 -8
data/README.textile
CHANGED
@@ -1,11 +1,17 @@
|
|
1
1
|
h1. Ruby JSON Schema Validator
|
2
2
|
|
3
|
-
This library is intended to provide Ruby with an interface for validating JSON objects against a JSON schema conforming to
|
3
|
+
This library is intended to provide Ruby with an interface for validating JSON objects against a JSON schema conforming to "JSON Schema Draft 3":http://tools.ietf.org/html/draft-zyp-json-schema-03. The project originally started as a fork of "Constellation's ruby-jsonschema":https://github.com/Constellation/ruby-jsonchema project, but differences in the JSON schema draft versions implemented as well as assumptions made by the ruby-jsonschema library forced this to become a new project.
|
4
4
|
|
5
5
|
This project is far from complete but is in a somewhat usable state...
|
6
6
|
|
7
7
|
h2. Usage
|
8
8
|
|
9
|
+
Install:
|
10
|
+
|
11
|
+
<pre>
|
12
|
+
gem install json-schema
|
13
|
+
</pre>
|
14
|
+
|
9
15
|
If downloading the git repo, build the gem and install it:
|
10
16
|
|
11
17
|
<pre>
|
@@ -209,7 +209,13 @@ module JSON
|
|
209
209
|
temp_uri = URI.parse(current_schema.schema['$ref'])
|
210
210
|
if temp_uri.relative?
|
211
211
|
temp_uri = current_schema.uri.clone
|
212
|
-
|
212
|
+
# Check for absolute path
|
213
|
+
path = current_schema.schema['$ref'].split("#")[0]
|
214
|
+
if path[0,1] == "/"
|
215
|
+
temp_uri.path = Pathname.new(path).cleanpath
|
216
|
+
else
|
217
|
+
temp_uri.path = (Pathname.new(current_schema.uri.path).parent + path).cleanpath
|
218
|
+
end
|
213
219
|
temp_uri.fragment = current_schema.schema['$ref'].split("#")[1]
|
214
220
|
end
|
215
221
|
temp_uri.fragment = "" if temp_uri.fragment.nil?
|
@@ -296,7 +302,13 @@ module JSON
|
|
296
302
|
uri = URI.parse(ref)
|
297
303
|
if uri.relative?
|
298
304
|
uri = parent_schema.uri.clone
|
299
|
-
|
305
|
+
# Check for absolute path
|
306
|
+
path = ref.split("#")[0]
|
307
|
+
if path[0,1] == '/'
|
308
|
+
uri.path = Pathname.new(path).cleanpath
|
309
|
+
else
|
310
|
+
uri.path = (Pathname.new(parent_schema.uri.path).parent + path).cleanpath
|
311
|
+
end
|
300
312
|
uri.fragment = nil
|
301
313
|
end
|
302
314
|
|
@@ -446,7 +458,14 @@ module JSON
|
|
446
458
|
begin
|
447
459
|
# Build a uri for it
|
448
460
|
schema_uri = URI.parse(schema)
|
449
|
-
|
461
|
+
if schema_uri.relative?
|
462
|
+
# Check for absolute path
|
463
|
+
if schema[0,1] == '/'
|
464
|
+
schema_uri = URI.parse("file://#{schema}")
|
465
|
+
else
|
466
|
+
schema_uri = URI.parse("file://#{Dir.pwd}/#{schema}")
|
467
|
+
end
|
468
|
+
end
|
450
469
|
schema = JSON.parse(open(schema_uri.to_s).read)
|
451
470
|
rescue
|
452
471
|
raise "Invalid schema: #{schema_uri.to_s}"
|
@@ -466,7 +485,13 @@ module JSON
|
|
466
485
|
rescue
|
467
486
|
begin
|
468
487
|
json_uri = URI.parse(data)
|
469
|
-
|
488
|
+
if json_uri.relative?
|
489
|
+
if data[0,1] == '/'
|
490
|
+
schema_uri = URI.parse("file://#{data}")
|
491
|
+
else
|
492
|
+
schema_uri = URI.parse("file://#{Dir.pwd}/#{data}")
|
493
|
+
end
|
494
|
+
end
|
470
495
|
data = JSON.parse(open(json_uri.to_s).read)
|
471
496
|
rescue
|
472
497
|
raise "Invalid JSON: #{json_uri.to_s}"
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: json-schema
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 1
|
10
|
+
version: 0.1.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Kenny Hoxworth
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-11-
|
18
|
+
date: 2010-11-29 00:00:00 -05:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -32,7 +32,7 @@ dependencies:
|
|
32
32
|
version: "0"
|
33
33
|
type: :runtime
|
34
34
|
version_requirements: *id001
|
35
|
-
description:
|
35
|
+
description:
|
36
36
|
email: hoxworth@gmail.com
|
37
37
|
executables: []
|
38
38
|
|
@@ -41,12 +41,12 @@ extensions: []
|
|
41
41
|
extra_rdoc_files:
|
42
42
|
- README.textile
|
43
43
|
files:
|
44
|
-
- lib/json-schema.rb
|
45
44
|
- lib/json-schema/schema.rb
|
46
|
-
- lib/json-schema/validator.rb
|
47
45
|
- lib/json-schema/uri/file.rb
|
48
|
-
-
|
46
|
+
- lib/json-schema/validator.rb
|
47
|
+
- lib/json-schema.rb
|
49
48
|
- test/test_jsonschema.rb
|
49
|
+
- README.textile
|
50
50
|
has_rdoc: true
|
51
51
|
homepage: http://github.com/hoxworth/json-schema/tree/master
|
52
52
|
licenses: []
|