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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: aa46f1c19a2fc27848b6ca7996a2236f41be75f03c564aaa6379d9e91155d584
4
- data.tar.gz: f4e4bb806bba725c1e0b18e1a2f9a05bd090a10a863c458187d346e405570975
3
+ metadata.gz: 196c95f46fa19384bf18b33268ddac0a731553619cbad3b08259c3ea419a2c00
4
+ data.tar.gz: 883d8462fb80c8f1d5d06e721d9f86fb7ef65f3356ff5804d3bb7f3601719849
5
5
  SHA512:
6
- metadata.gz: a2f320fb58f8271982cf26ec991817a8d69112ae9d172e3c20f67db9f24dca95fd66f2d2a9776ac07108aae6db08ae1a1d6c57d74de23c0a490d774c106c5df2
7
- data.tar.gz: 70a2af56feb3166118be45922f4ed66ccd7d4c42d73eb22df2cca141b0936fc623cd41dacc7a62061f3271ee8c0c296f96dbf59af7405fbebf099e1c95882905
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
- attributes[attr]
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
- case method_name
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 assignment call.
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
- case method_name
102
- when /(.*)\=$/
103
- true # always respond to assignment methods
104
- else
105
- super(method_name, args)
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SimplifyApi
4
- VERSION = '0.1.5'
4
+ VERSION = '0.2.0'
5
5
  end
@@ -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', '~> 0'
23
+ spec.add_development_dependency 'rubocop', '>= 0.49.0'
24
24
  spec.add_development_dependency 'rubocop-performance', '~> 1.4'
25
25
  end
@@ -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{ Test.new }.to raise_error ArgumentError
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.1.5
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: '0'
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: '0'
68
+ version: 0.49.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rubocop-performance
71
71
  requirement: !ruby/object:Gem::Requirement