simplify_api 0.1.5 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|