lurker 0.6.3 → 0.6.4

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.
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