lurker 0.6.3 → 0.6.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c59974fdb662a2fbadcb01539d0fe9a1b919da2c
4
- data.tar.gz: 476c5cad93b78d96f397fae62ed32ae19ad30c21
3
+ metadata.gz: 6f19d765a42825a49246ece3cfe310a71ef07026
4
+ data.tar.gz: 04db573bb51da7ac28f3f55c5a85990e6bb6768b
5
5
  SHA512:
6
- metadata.gz: a2a7af02fa6d092a639b79f5f903c373c33b40cc3b8ad621aa69eb6ebdd056998b66cfdb57d93be644dff1c0dd2e3cf554aec85a30fd61bc65038b6060a1ace9
7
- data.tar.gz: d2afae3c32e2adce210fb74144e0078ea8db8241b7aebeb0afeb474ec67dcf16083ad8153fc405fde8924af7d4986602575078d836be4c5b2c1e5d7a20f28fd3
6
+ metadata.gz: 4d203a0847bda1f56a2b8b39eda067d0d40f1ddde7bd27c5e800ae61f3000c7cae600c076d619bfc634c087c9f9e4480e6982c745c1f267c3689ec46d77671e7
7
+ data.tar.gz: 98af7ab781606392252390b6f7f74a844b56d1d61910acd2b6b2c180fbb06dc03ed43b03b6b2d34f59dec7c5cdcc681a0bc188d6235d662335d54f1aa75638d9
checksums.yaml.gz.sig CHANGED
@@ -1 +1,3 @@
1
- �ƴs���:�vsT�\�k���Ȑj<Dk�9�s:d�������L��{oz���W�_�W���aA�za�G��q#Mz^)8K㊥����r_~����%��Մ��H���'�0���51rÝRy�NW��ݧm�FZ��#��a൥� I9�g��b�:Kj��,i|�g\C�}��F��Ѥs��A�;��*���P�iM7�5aܶ��/ ����U���7A�>/K���Sh�Ņm; 5;��P�oX�3��
1
+ aR)�&���L�PS���!D����E�'���H��\�]_�km��n zԎ�"� ���B���j����w
2
+ r2��;#��D�d#KO�򰼒H����eqr���Q����SV[6��y�\ھ� .���$�^��0��_ D�`)�0b�>)lp��o6�&��-�
3
+ -r�sb����X���\:�6���W�v=��N�Li��� l��?��c/�3|Ff
@@ -2,12 +2,6 @@ module Lurker
2
2
  module Json
3
3
  module Concerns
4
4
  module Validatable
5
- ID = 'id'.freeze
6
- TYPE = 'type'.freeze
7
- OBJECT = 'object'.freeze
8
- PROPERTIES = 'properties'.freeze
9
- ADDITIONAL_PROPERTIES = 'additionalProperties'.freeze
10
-
11
5
  def validate(data)
12
6
  Lurker::Validator.new(to_validation_schema, data,
13
7
  record_errors: true).validate.map { |error| "- #{error}" }
@@ -15,7 +9,7 @@ module Lurker
15
9
 
16
10
  def to_validation_schema
17
11
  set_additional_properties_false_on(to_hash).tap do |schema|
18
- schema[ID] = "file://#{uri}"
12
+ schema[Json::ID] = "file://#{uri}"
19
13
  end
20
14
  end
21
15
 
@@ -26,12 +20,12 @@ module Lurker
26
20
  when Hash
27
21
  copy = object.dup
28
22
 
29
- if object[TYPE] == OBJECT || object.key?(PROPERTIES)
30
- copy[ADDITIONAL_PROPERTIES] ||= false
23
+ if object[Json::TYPE] == Json::OBJECT || object.key?(Json::PROPERTIES)
24
+ copy[Json::ADDITIONAL_PROPERTIES] ||= false
31
25
  end
32
26
 
33
27
  object.each do |key, value|
34
- next if key == ADDITIONAL_PROPERTIES
28
+ next if key == Json::ADDITIONAL_PROPERTIES
35
29
  copy[key] = set_additional_properties_false_on(value)
36
30
  end
37
31
 
@@ -2,27 +2,20 @@ module Lurker
2
2
  module Json
3
3
  class Parser
4
4
  module Expertise
5
- REF = '$ref'.freeze
6
- TYPE = 'type'.freeze
7
- ANYOF = 'anyOf'.freeze
8
- ALLOF = 'allOf'.freeze
9
- ONEOF = 'oneOf'.freeze
10
- ITEMS = 'items'.freeze
11
- PROPERTIES = 'properties'.freeze
12
-
13
5
  module_function
14
6
 
15
7
  def type_defined?(hash)
16
8
  return false unless hash.is_a?(Hash)
17
9
 
18
- hash.key? TYPE
10
+ hash.key?(Json::TYPE) && Json::PRIMITIVES.include?(hash[Json::TYPE])
19
11
  end
20
12
 
21
13
  def type_supposed?(hash)
22
14
  return false unless hash.is_a?(Hash)
23
15
 
24
- hash.key?(ANYOF) || hash.key?(ALLOF) || hash.key?(ONEOF) ||
25
- hash.key?(ITEMS) || hash.key?(PROPERTIES) || hash.key?(REF)
16
+ hash.key?(Json::ANYOF) || hash.key?(Json::ALLOF) || hash.key?(Json::ONEOF) ||
17
+ hash.key?(Json::ITEMS) || hash.key?(Json::PROPERTIES) ||
18
+ hash.key?(Json::REF)
26
19
  end
27
20
  end
28
21
  end
@@ -4,15 +4,6 @@ module Lurker
4
4
  class TypedStrategy
5
5
  include Lurker::Json::Parser::Expertise
6
6
 
7
- ANYOF = 'anyOf'.freeze
8
- ALLOF = 'allOf'.freeze
9
- ONEOF = 'oneOf'.freeze
10
- ITEMS = 'items'.freeze
11
- TYPE = 'type'.freeze
12
- ARRAY = 'array'.freeze
13
- OBJECT = 'object'.freeze
14
- PROPERTIES = 'properties'.freeze
15
-
16
7
  attr_reader :schema_options
17
8
 
18
9
  def initialize(options)
@@ -38,17 +29,17 @@ module Lurker
38
29
  private
39
30
 
40
31
  def create_by_supposition(payload)
41
- if payload.key?(ITEMS)
32
+ if payload.key?(Json::ITEMS)
42
33
  Lurker::Json::List.new(payload, schema_options)
43
- elsif payload.key?(PROPERTIES)
34
+ elsif payload.key?(Json::PROPERTIES)
44
35
  Lurker::Json::Object.new(payload, schema_options)
45
- elsif payload.key?(ANYOF)
36
+ elsif payload.key?(Json::ANYOF)
46
37
  Lurker::Json::Tuple::AnyOf.new(payload, schema_options)
47
- elsif payload.key?(ALLOF)
38
+ elsif payload.key?(Json::ALLOF)
48
39
  Lurker::Json::Tuple::AllOf.new(payload, schema_options)
49
- elsif payload.key?(ONEOF)
40
+ elsif payload.key?(Json::ONEOF)
50
41
  Lurker::Json::Tuple::OneOf.new(payload, schema_options)
51
- elsif payload.key?(REF)
42
+ elsif payload.key?(Json::REF)
52
43
  Lurker::Json::Reference.new(payload, schema_options)
53
44
  else
54
45
  raise "Unknown type supposition for #{payload}"
@@ -56,10 +47,10 @@ module Lurker
56
47
  end
57
48
 
58
49
  def create_by_type(payload)
59
- case payload[TYPE]
60
- when OBJECT
50
+ case payload[Json::TYPE]
51
+ when Json::OBJECT
61
52
  Lurker::Json::Object.new(payload, schema_options)
62
- when ARRAY
53
+ when Json::ARRAY
63
54
  Lurker::Json::List.new(payload, schema_options)
64
55
  else
65
56
  Lurker::Json::Attribute.new(payload, schema_options)
@@ -4,26 +4,23 @@ module Lurker
4
4
  module Json
5
5
  class Attribute < Schema
6
6
  URI = 'uri'.freeze
7
- TYPE = 'type'.freeze
8
7
  COLOR = 'color'.freeze
9
8
  FORMAT = 'format'.freeze
10
- EXAMPLE = 'example'.freeze
11
9
  DATE_TIME = 'date-time'.freeze
12
- DESCRIPTION = 'description'.freeze
13
10
 
14
11
  TYPE_MAP = {
15
- 'Time' => 'string',
16
- 'Hash' => 'object',
17
- 'Float' => 'number',
18
- 'Fixnum' => 'integer',
19
- 'NilClass' => 'null',
20
- 'TrueClass' => 'boolean',
21
- 'FalseClass' => 'boolean',
22
- 'ActionDispatch::Http::UploadedFile' => 'string'
12
+ 'Time' => Json::STRING,
13
+ 'Hash' => Json::OBJECT,
14
+ 'Float' => Json::NUMBER,
15
+ 'Fixnum' => Json::INTEGER,
16
+ 'NilClass' => Json::NULL,
17
+ 'TrueClass' => Json::BOOLEAN,
18
+ 'FalseClass' => Json::BOOLEAN,
19
+ 'ActionDispatch::Http::UploadedFile' => Json::STRING
23
20
  }.freeze
24
21
 
25
22
  def merge!(schema)
26
- return replace!(schema) if @schema[TYPE].blank?
23
+ return replace!(schema) if @schema[Json::TYPE].blank?
27
24
 
28
25
  schema = attributify(schema)
29
26
  return if eql?(schema)
@@ -42,7 +39,7 @@ module Lurker
42
39
  end
43
40
 
44
41
  def eql?(schema)
45
- @schema[TYPE] == attributify(schema)[TYPE]
42
+ @schema[Json::TYPE] == attributify(schema)[Json::TYPE]
46
43
  end
47
44
 
48
45
  private
@@ -62,9 +59,9 @@ module Lurker
62
59
  return schema if schema.is_a?(Hash) || schema.is_a?(Lurker::Json::Schema)
63
60
 
64
61
  attribute = {
65
- DESCRIPTION => '',
66
- TYPE => guess_type(schema),
67
- EXAMPLE => serialize_example(schema)
62
+ Json::DESCRIPTION => '',
63
+ Json::TYPE => guess_type(schema),
64
+ Json::EXAMPLE => serialize_example(schema)
68
65
  }
69
66
 
70
67
  if format = guess_format(schema)
@@ -75,9 +72,9 @@ module Lurker
75
72
  end
76
73
 
77
74
  def initialize_properties
78
- @schema[DESCRIPTION] ||= ''
79
- @schema[TYPE] ||= ''
80
- @schema[EXAMPLE] ||= ''
75
+ @schema[Json::DESCRIPTION] ||= ''
76
+ @schema[Json::TYPE] ||= ''
77
+ @schema[Json::EXAMPLE] ||= ''
81
78
  end
82
79
 
83
80
  def serialize_example(data)
@@ -1,23 +1,19 @@
1
1
  module Lurker
2
2
  module Json
3
3
  class List < Schema
4
- TYPE = 'type'.freeze
5
- ARRAY = 'array'.freeze
6
- ITEMS = 'items'.freeze
7
-
8
4
  def merge!(schema)
9
5
  if schema.is_a?(Array)
10
- schema.each { |payload| @schema[ITEMS].merge!(payload) }
6
+ schema.each { |payload| @schema[Json::ITEMS].merge!(payload) }
11
7
  else
12
- @schema[ITEMS].merge!(schema)
8
+ @schema[Json::ITEMS].merge!(schema)
13
9
  end
14
10
  end
15
11
 
16
12
  def replace!(property, schema)
17
- if @schema[ITEMS].is_a?(Lurker::Json::Attribute)
18
- @schema[ITEMS] = schema
13
+ if @schema[Json::ITEMS].is_a?(Lurker::Json::Attribute)
14
+ @schema[Json::ITEMS] = schema
19
15
  else
20
- @schema[ITEMS].replace!(property, schema)
16
+ @schema[Json::ITEMS].replace!(property, schema)
21
17
  end
22
18
  end
23
19
 
@@ -31,11 +27,11 @@ module Lurker
31
27
 
32
28
  schema = schema.dup
33
29
  if schema.is_a?(Array)
34
- @schema[ITEMS] = @parser.typed.parse(schema.shift)
30
+ @schema[Json::ITEMS] = @parser.typed.parse(schema.shift)
35
31
 
36
- schema.each { |payload| @schema[ITEMS].merge!(payload) }
32
+ schema.each { |payload| @schema[Json::ITEMS].merge!(payload) }
37
33
  else
38
- @schema[ITEMS] = @parser.typed.parse(schema.delete ITEMS) if schema.key?(ITEMS)
34
+ @schema[Json::ITEMS] = @parser.typed.parse(schema.delete Json::ITEMS) if schema.key?(Json::ITEMS)
39
35
  @schema.merge!(schema)
40
36
  end
41
37
 
@@ -43,8 +39,8 @@ module Lurker
43
39
  end
44
40
 
45
41
  def initialize_properties
46
- @schema[TYPE] ||= ARRAY
47
- @schema[ITEMS] ||= []
42
+ @schema[Json::TYPE] ||= Json::ARRAY
43
+ @schema[Json::ITEMS] ||= []
48
44
  end
49
45
  end
50
46
  end
@@ -1,23 +1,16 @@
1
1
  module Lurker
2
2
  module Json
3
3
  class Object < Schema
4
- TYPE = 'type'.freeze
5
- OBJECT = 'object'.freeze
6
- REQUIRED = 'required'.freeze
7
- PROPERTIES = 'properties'.freeze
8
- DESCRIPTION = 'description'.freeze
9
- ADDITIONAL_PROPERTIES = 'additionalProperties'.freeze
10
-
11
4
  def merge!(schema)
12
5
  unless schema.is_a?(Hash)
13
- return replace_with_new_type(schema) if @schema[PROPERTIES].blank?
6
+ return replace_with_new_type(schema) if @schema[Json::PROPERTIES].blank?
14
7
 
15
8
  raise TypeError, "Unable to merge #{schema.class} into JSON object"
16
9
  end
17
10
 
18
11
  schema.each do |property, property_schema|
19
- if @schema[PROPERTIES].key?(property)
20
- @schema[PROPERTIES][property].merge!(property_schema)
12
+ if @schema[Json::PROPERTIES].key?(property)
13
+ @schema[Json::PROPERTIES][property].merge!(property_schema)
21
14
  next
22
15
  end
23
16
 
@@ -26,7 +19,7 @@ module Lurker
26
19
  end
27
20
 
28
21
  def replace!(property, property_schema)
29
- @schema[PROPERTIES][property] = Lurker::Json::Parser.typed(subschema_options)
22
+ @schema[Json::PROPERTIES][property] = Lurker::Json::Parser.typed(subschema_options)
30
23
  .parse_property(property, property_schema)
31
24
  end
32
25
 
@@ -37,10 +30,10 @@ module Lurker
37
30
  initialize_properties
38
31
 
39
32
  schema = schema.dup
40
- merge_required = schema.key?(PROPERTIES)
33
+ merge_required = schema.key?(Json::PROPERTIES)
41
34
 
42
- (schema.delete(PROPERTIES) || schema).each do |property, property_schema|
43
- @schema[PROPERTIES][property] = @parser.typed.parse_property(
35
+ (schema.delete(Json::PROPERTIES) || schema).each do |property, property_schema|
36
+ @schema[Json::PROPERTIES][property] = @parser.typed.parse_property(
44
37
  property, property_schema)
45
38
  end
46
39
 
@@ -56,11 +49,11 @@ module Lurker
56
49
  end
57
50
 
58
51
  def initialize_properties
59
- @schema[DESCRIPTION] ||= ''
60
- @schema[TYPE] ||= OBJECT
61
- @schema[ADDITIONAL_PROPERTIES] = !!@schema[ADDITIONAL_PROPERTIES]
62
- @schema[REQUIRED] ||= []
63
- @schema[PROPERTIES] ||= {}
52
+ @schema[Json::DESCRIPTION] ||= ''
53
+ @schema[Json::TYPE] ||= Json::OBJECT
54
+ @schema[Json::ADDITIONAL_PROPERTIES] = !!@schema[Json::ADDITIONAL_PROPERTIES]
55
+ @schema[Json::REQUIRED] ||= []
56
+ @schema[Json::PROPERTIES] ||= {}
64
57
  end
65
58
  end
66
59
  end
@@ -1,8 +1,6 @@
1
1
  module Lurker
2
2
  module Json
3
3
  class Reference < Schema
4
- REF = '$ref'.freeze
5
-
6
4
  attr_reader :original_uri
7
5
 
8
6
  delegate :merge!, :replace!, :reorder!, to: :@schema
@@ -18,7 +16,7 @@ module Lurker
18
16
 
19
17
  # NOTE : We decide that reference is relative, so we are using merge
20
18
  # We use first read for correct relative path resolving
21
- reader = Lurker::Json::Reader.new(@uri.merge(schema[REF]).path)
19
+ reader = Lurker::Json::Reader.new(@uri.merge(schema[Json::REF]).path)
22
20
  payload = reader.payload
23
21
 
24
22
  @original_uri = parse_uri(reader.path)
@@ -3,7 +3,6 @@ module Lurker
3
3
  class ResponseCodes < Schema
4
4
  STATUS = 'status'.freeze
5
5
  SUCCESSFUL = 'successful'.freeze
6
- DESCRIPTION = 'description'.freeze
7
6
 
8
7
  def initialize(schema, options = {})
9
8
  @parent_property = 'responseCodes'
@@ -14,7 +13,7 @@ module Lurker
14
13
  def merge!(status_code, successful)
15
14
  return if exists?(status_code, successful)
16
15
 
17
- payload = {STATUS => status_code, SUCCESSFUL => successful, DESCRIPTION => ''}
16
+ payload = {STATUS => status_code, SUCCESSFUL => successful, Json::DESCRIPTION => ''}
18
17
  @schema << Lurker::Json::Parser.plain(root_schema: root_schema).parse(payload)
19
18
  end
20
19
 
@@ -4,12 +4,10 @@ module Lurker
4
4
  class AllOf < Json::Schema
5
5
  include Tuple::InstanceMethods
6
6
 
7
- ALLOF = 'allOf'.freeze
8
-
9
7
  private
10
8
 
11
9
  def tuple_key
12
- ALLOF
10
+ Json::ALLOF
13
11
  end
14
12
  end
15
13
  end
@@ -4,12 +4,10 @@ module Lurker
4
4
  class AnyOf < Json::Schema
5
5
  include Tuple::InstanceMethods
6
6
 
7
- ANYOF = 'anyOf'.freeze
8
-
9
7
  private
10
8
 
11
9
  def tuple_key
12
- ANYOF
10
+ Json::ANYOF
13
11
  end
14
12
  end
15
13
  end
@@ -4,12 +4,10 @@ module Lurker
4
4
  class OneOf < Json::Schema
5
5
  include Tuple::InstanceMethods
6
6
 
7
- ONEOF = 'oneOf'.freeze
8
-
9
7
  private
10
8
 
11
9
  def tuple_key
12
- ONEOF
10
+ Json::ONEOF
13
11
  end
14
12
  end
15
13
  end
@@ -0,0 +1,27 @@
1
+ module Lurker
2
+ module Json
3
+ NULL = 'null'.freeze
4
+ ARRAY = 'array'.freeze
5
+ STRING = 'string'.freeze
6
+ OBJECT = 'object'.freeze
7
+ NUMBER = 'number'.freeze
8
+ BOOLEAN = 'boolean'.freeze
9
+ INTEGER = 'integer'.freeze
10
+
11
+ PRIMITIVES = [NULL, BOOLEAN, INTEGER, NUMBER, STRING, ARRAY, OBJECT].freeze
12
+
13
+ ID = 'id'.freeze
14
+ REF = '$ref'.freeze
15
+ TYPE = 'type'.freeze
16
+ ITEMS = 'items'.freeze
17
+ EXAMPLE = 'example'.freeze
18
+ REQUIRED = 'required'.freeze
19
+ PROPERTIES = 'properties'.freeze
20
+ DESCRIPTION = 'description'.freeze
21
+ ADDITIONAL_PROPERTIES = 'additionalProperties'.freeze
22
+
23
+ ANYOF = 'anyOf'.freeze
24
+ ALLOF = 'allOf'.freeze
25
+ ONEOF = 'oneOf'.freeze
26
+ end
27
+ end
@@ -1,3 +1,3 @@
1
1
  module Lurker
2
- VERSION = "0.6.3"
2
+ VERSION = "0.6.4"
3
3
  end
data/lib/lurker.rb CHANGED
@@ -63,6 +63,7 @@ require 'lurker/presenters/service_presenter'
63
63
  require 'lurker/presenters/endpoint_presenter'
64
64
  require 'lurker/presenters/schema_presenter'
65
65
  require 'lurker/presenters/response_code_presenter'
66
+ require 'lurker/json'
66
67
  require 'lurker/json/reader'
67
68
  require 'lurker/json/writter'
68
69
  require 'lurker/json/orderer'
@@ -0,0 +1,43 @@
1
+ require 'spec_helper'
2
+
3
+ describe Lurker::Json::Object do
4
+ let(:klass) { described_class }
5
+
6
+ describe '#merge!' do
7
+ context 'when merge a hash with keywords' do
8
+ let(:object) { klass.new('name' => 'razum2um') }
9
+ let(:expected) do
10
+ {
11
+ 'description' => '',
12
+ 'type' => 'object',
13
+ 'additionalProperties' => false,
14
+ 'required' => [],
15
+ 'properties' => {
16
+ 'name' => {
17
+ 'description' => '',
18
+ 'type' => 'string',
19
+ 'example' => 'razum2um'
20
+ },
21
+ 'achievement' => {
22
+ 'description' => '',
23
+ 'type' => 'object',
24
+ 'additionalProperties' => false,
25
+ 'required' => [],
26
+ 'properties' => {
27
+ 'type' => {
28
+ 'description' => '',
29
+ 'type' => 'string',
30
+ 'example' => 'unlocked'
31
+ }
32
+ }
33
+ }
34
+ }
35
+ }
36
+ end
37
+
38
+ before { object.merge!('achievement' => {'type' => 'unlocked'}) }
39
+
40
+ it { expect(object.to_hash).to eq expected }
41
+ end
42
+ end
43
+ end
data.tar.gz.sig CHANGED
@@ -1,2 +1,3 @@
1
- ����=��@r]0ZP+-Y:�s�~UR6���.dM�Ւ��ȼ�A������
2
- ��ƙ|��
1
+ ';��,��6Gm2�n=����� Cmu�p���R¶���f
2
+ M|3�:��} 6�k�W��J‘��N1����a���yV/DK���#���6 y�~9�+��z�w:7�;�t����6[�����[����X��'N�l۪x=/Eoe�����J��%�/�Q�m�CI~1`c����q|��G��!���Qȵu���j�pl��཯��&^I��
3
+ ٌ.8`h
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lurker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.3
4
+ version: 0.6.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vlad Bokov
@@ -30,7 +30,7 @@ cert_chain:
30
30
  vzKbYclpJ7gENr/xiTjGqA/Md3zJMzmsFrzUXt4RVmo5SaCyZjC6gFfhSr+PODc7
31
31
  ZaSbckvH/+m4boAsg0JkGGFcS3j5fgNmdwgA1A==
32
32
  -----END CERTIFICATE-----
33
- date: 2014-08-04 00:00:00.000000000 Z
33
+ date: 2014-08-18 00:00:00.000000000 Z
34
34
  dependencies:
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: json
@@ -487,6 +487,7 @@ files:
487
487
  - lib/lurker/erb_schema_context.rb
488
488
  - lib/lurker/form_builder.rb
489
489
  - lib/lurker/jaml_descriptor.rb
490
+ - lib/lurker/json.rb
490
491
  - lib/lurker/json/concerns/validatable.rb
491
492
  - lib/lurker/json/orderer.rb
492
493
  - lib/lurker/json/parser.rb
@@ -506,7 +507,6 @@ files:
506
507
  - lib/lurker/json/schema/tuple/any_of.rb
507
508
  - lib/lurker/json/schema/tuple/one_of.rb
508
509
  - lib/lurker/json/writter.rb
509
- - lib/lurker/json_schema_hash.rb
510
510
  - lib/lurker/presenters/base_presenter.rb
511
511
  - lib/lurker/presenters/endpoint_presenter.rb
512
512
  - lib/lurker/presenters/json_presenter.rb
@@ -575,6 +575,7 @@ files:
575
575
  - lurker.gemspec
576
576
  - spec/lurker/endpoint_spec.rb
577
577
  - spec/lurker/json/list_spec.rb
578
+ - spec/lurker/json/object_spec.rb
578
579
  - spec/lurker/json/schema_spec.rb
579
580
  - spec/lurker/yaml_spec.rb
580
581
  - spec/spec_helper.rb
@@ -631,6 +632,7 @@ test_files:
631
632
  - features/test_endpoint.feature
632
633
  - spec/lurker/endpoint_spec.rb
633
634
  - spec/lurker/json/list_spec.rb
635
+ - spec/lurker/json/object_spec.rb
634
636
  - spec/lurker/json/schema_spec.rb
635
637
  - spec/lurker/yaml_spec.rb
636
638
  - spec/spec_helper.rb
metadata.gz.sig CHANGED
@@ -1 +1,5 @@
1
- O�=���U�Bw:2�F�P�
1
+ 2I��4*ҍ���������ط��Z
2
+ oR>o `��5�=PhjC��$�ȴZ���j��9_�$��p5���]$��'���{k���
3
+ Z^��e�~�
4
+ �
5
+ n�NC��t&�0�Z� ����)����1o6ӣ>i���;̫Z�.�c-vO yUH�U�FBi5�ʎ>�����@>O�>����@*��!iē6>$D!l#_��׳�OYeu�F����S�g�id]
@@ -1,48 +0,0 @@
1
- module Lurker
2
- class JsonSchemaHash
3
- attr_accessor :schema_hash
4
- include JamlDescriptor::Rescue
5
-
6
- def initialize(schema_hash, uri)
7
- @to_s = uri
8
- @uri = URI.parse(uri)
9
- @uri = URI.parse("file://#{uri}") if @uri.relative?
10
-
11
- @schema_hash = Hash[schema_hash.map do |k, v|
12
- if k == '$ref' && v.is_a?(String)
13
- uri = @uri.merge(v)
14
- schema_hash = JSON.parse(open(uri.to_s).read)
15
- [k, JsonSchemaHash.new(schema_hash, uri.to_s)]
16
- elsif v.is_a?(Hash)
17
- [k, JsonSchemaHash.new(v, @to_s)]
18
- else
19
- [k, v]
20
- end
21
- end]
22
- end
23
-
24
- def respond_to_missing?(method, include_private = false)
25
- @schema_hash.send(:respond_to_missing?, method, include_private)
26
- end
27
-
28
- def method_missing(method, *args, &block)
29
- @schema_hash.send method, *args, &block
30
- end
31
-
32
- def is_a?(*args)
33
- @schema_hash.is_a?(*args)
34
- end
35
-
36
- def to_h
37
- Hash[@schema_hash.map do |k, v|
38
- if JsonSchemaHash === v
39
- [k, v.to_h]
40
- elsif v.is_a?(Array)
41
- [k, v.map { |i| JsonSchemaHash === i ? i.to_h : i }]
42
- else
43
- [k, v]
44
- end
45
- end]
46
- end
47
- end
48
- end