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