simplify_api 0.1.5 → 0.2.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.
- checksums.yaml +4 -4
- data/lib/simplify_api/simplify_api.rb +18 -22
- data/lib/simplify_api/version.rb +1 -1
- data/simplify_api.gemspec +1 -1
- data/spec/simplify_api_spec.rb +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 196c95f46fa19384bf18b33268ddac0a731553619cbad3b08259c3ea419a2c00
|
4
|
+
data.tar.gz: 883d8462fb80c8f1d5d06e721d9f86fb7ef65f3356ff5804d3bb7f3601719849
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dabb66174fd6d576d4216723af5c2887e35c2a7b2f1e985d9fabde9709acd95bb6258cabe14ca1d576c69f22fc6757f276e62e17f12945b035b4ee69b76f8a7a
|
7
|
+
data.tar.gz: 643fecead6ea85ff6a8ab185fa5ca4919df5411e54183dc78c3ea194f035944f442fb02fcabda4ccdbf01027117b273e3c69e836b6227f5f508015a203cfd061
|
@@ -26,25 +26,12 @@ module SimplifyApi
|
|
26
26
|
type: { Class => type, Array => Array }[type.class] || Object,
|
27
27
|
params: args
|
28
28
|
}
|
29
|
-
|
29
|
+
attr
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
33
33
|
def initialize(opts = {})
|
34
34
|
opts.symbolize_keys!
|
35
|
-
# opts = { klass_attr.first[0] => opts } if opts.class == Array
|
36
|
-
klass_attr.each_pair do |name, spec|
|
37
|
-
params = spec[:params]
|
38
|
-
if opts.key?(name)
|
39
|
-
value = process_value(name, opts[name])
|
40
|
-
opts.delete(name)
|
41
|
-
else
|
42
|
-
value = params[:default]
|
43
|
-
end
|
44
|
-
raise ArgumentError, "Missing mandatory attribute => #{name}" if params[:mandatory] & value.nil?
|
45
|
-
|
46
|
-
create_and_set_instance_variable(name.to_s, value)
|
47
|
-
end
|
48
35
|
|
49
36
|
opts.each_pair do |key, value|
|
50
37
|
expanded_value = process_value(key, value)
|
@@ -80,13 +67,15 @@ module SimplifyApi
|
|
80
67
|
# Called in case an unexisting method is called.
|
81
68
|
#
|
82
69
|
# To an assignment call it will create the instance variable.
|
70
|
+
# To an getter of a specified attribute, return the default value.
|
83
71
|
# Every other call will be passed to super.
|
84
72
|
#
|
85
73
|
def method_missing(method_name, *args, &block)
|
86
|
-
|
87
|
-
when /(.*)\=$/
|
74
|
+
if method_name.match(/(.*)\=$/)
|
88
75
|
create_and_set_instance_variable($1.to_s, args[0])
|
89
76
|
else
|
77
|
+
return klass_attr.dig(method_name.to_sym, :params, :default) if klass_attr.key?(method_name.to_sym)
|
78
|
+
|
90
79
|
super(method_name, args, block)
|
91
80
|
end
|
92
81
|
end
|
@@ -94,16 +83,23 @@ module SimplifyApi
|
|
94
83
|
# respond_to_mssing?
|
95
84
|
# Called to check if an instance respond to a message.
|
96
85
|
#
|
97
|
-
# It should respond to any
|
86
|
+
# It should respond to any defined attribute (getter & setter).
|
98
87
|
# Every other type should be passed to super.
|
99
88
|
#
|
100
89
|
def respond_to_missing?(method_name, *args)
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
90
|
+
return true if method_name.match(/(.*)\=$/)
|
91
|
+
|
92
|
+
return true if klass_attr.key?(method_name.to_sym)
|
93
|
+
|
94
|
+
super(method_name, args)
|
95
|
+
end
|
96
|
+
|
97
|
+
def valid?
|
98
|
+
klass_attr.each_pair do |key, value|
|
99
|
+
puts "Key: #{key}"
|
100
|
+
return false if value.dig(:params, :mandatory) & !instance_variable_defined?("@#{key.to_s}".to_sym)
|
106
101
|
end
|
102
|
+
true
|
107
103
|
end
|
108
104
|
|
109
105
|
private
|
data/lib/simplify_api/version.rb
CHANGED
data/simplify_api.gemspec
CHANGED
@@ -20,6 +20,6 @@ Gem::Specification.new do |spec|
|
|
20
20
|
spec.add_development_dependency 'bundler', '~> 2.0'
|
21
21
|
spec.add_development_dependency 'rspec', '~> 3.8'
|
22
22
|
spec.add_development_dependency 'rspec-collection_matchers', '~> 1.1'
|
23
|
-
spec.add_development_dependency 'rubocop', '
|
23
|
+
spec.add_development_dependency 'rubocop', '>= 0.49.0'
|
24
24
|
spec.add_development_dependency 'rubocop-performance', '~> 1.4'
|
25
25
|
end
|
data/spec/simplify_api_spec.rb
CHANGED
@@ -40,7 +40,7 @@ describe SimplifyApi do
|
|
40
40
|
it 'should fullfil class description' do
|
41
41
|
subject = Test.new(name: 'João da Silva')
|
42
42
|
|
43
|
-
expect
|
43
|
+
expect(Test.new.valid?).to be false
|
44
44
|
expect(subject).to respond_to :name
|
45
45
|
expect(subject).to respond_to :surname
|
46
46
|
expect(subject).to respond_to :country
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simplify_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rodrigo Garcia Couto
|
@@ -56,16 +56,16 @@ dependencies:
|
|
56
56
|
name: rubocop
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 0.49.0
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 0.49.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rubocop-performance
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|