finest-builder 1.0.0 → 1.0.1

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: 6e146958c0527929112ef202b28806eca032b460d5ab0db7fe7ed4d5071d0fbf
4
- data.tar.gz: a89df1b3b477cf4fa4104a4086d0426b0530f0f794fc6c2dca69c651321e9ddb
3
+ metadata.gz: 0af65dd478cbb0858b84206d732cca843766b8a904ee9e6b429fcf90cb519a14
4
+ data.tar.gz: 64da89a7032bee0a4210cfdcff433194c63418829481a63c65212198e418bf33
5
5
  SHA512:
6
- metadata.gz: a42f861011bd9b67bd10f665ffc90d1e4724d9e35e0cc9dcdbcaf81adf667790e90a2d12bcd10dd9db24485ca580792ce1271d1fc89076e067304fccd077597f
7
- data.tar.gz: b70fe07db6f8214e09505f9e7db3c4be89e061183b6f03d01b0ed3dd5e684ecbf538abf26b4e521b8523255bb7a260331aa20ecedf24354df2cee7b8fe2b1e1e
6
+ metadata.gz: a1c02d4e3848ce69b88ead6515f774fc3595b7e6a7787c1bbee719987e946ae95bb373b38e56ffdad890981b80a69336ef589087b0c0a8fd4d6334d3c02fe8d6
7
+ data.tar.gz: 2927353a289ac0cb2208990eb4957dceab8106ef3b46654e6d3b515eecd65f617216640824d14c0a301305d75e42db13a7554077e0d0ed263ead25161e489582
data/README.md CHANGED
@@ -26,7 +26,7 @@ Once initialized just use the accessors as any other instance.
26
26
  class Issue
27
27
  include Finest::Struct
28
28
 
29
- def initialize(json = nil)
29
+ def initialize(json = {}, _keys = [])
30
30
  super json
31
31
  end
32
32
  end
@@ -43,7 +43,7 @@ In case not using column names but an array of method names, new accessors would
43
43
  include Finest::Helper
44
44
  end
45
45
 
46
- issue = Issue.new.build_by_keys({id: 1234,text: "hocus pocus"},Issue.column_names) # => Issue.column_names = id:
46
+ issue = Issue.new.build_by_keys({id: 1234,text: "hocus pocus"}, Issue.column_names) # => Issue.column_names = id:
47
47
  issue.as_json # => {id: 1234}
48
48
  issue.to_h # => nil
49
49
 
@@ -58,7 +58,7 @@ In case not using column names but an array of method names, new accessors would
58
58
  Call *build_by_keys* method once the model has been initialized passing a json message,
59
59
  it would *yield* itself as a block in case you want to perform further actions.
60
60
  ```ruby
61
- build_by_keys(json = {},keys = nil)
61
+ build_by_keys(**args)
62
62
  ```
63
63
  This method would also create an instance variable called *@to_h* contains a pair-value hash as a result.
64
64
  *@to_h* instance variable won't be available if the class inherits from *ActiveRecord::Base*
@@ -29,15 +29,15 @@ module Finest
29
29
  # e.client.to_h[:id]
30
30
  # e.client.id
31
31
  #
32
- def build_by_keys(**args)
33
- k = args[:keys] || args.fetch(:json, {})&.keys
34
- raise ArgumentError unless k&.respond_to?(:each)
32
+ def build_by_keys(json = {}, keys = [])
33
+ keys = keys.empty? ? json.keys : keys
34
+ raise ArgumentError unless keys&.respond_to?(:each)
35
35
 
36
36
  accessor_builder('to_h', {}) unless self.class.method_defined?(:as_json)
37
- args.fetch(:json, {}).transform_keys!(&:to_s)
38
- k&.reject! { |ky| ky.end_with?('=') }
39
- k&.each do |key|
40
- send("#{key.to_s.snake_case}=", nested_hash_value(args.fetch(:json, {}), key.to_s))
37
+ json.transform_keys!(&:to_s)
38
+ keys&.reject! { |key| key.end_with?('=') }
39
+ keys&.each do |key|
40
+ send("#{key.to_s.snake_case}=", nested_hash_value(json, key.to_s))
41
41
  @to_h&.merge!({ key.to_s.snake_case.to_sym => send(key.to_s.snake_case.to_s) })
42
42
  end
43
43
  yield self if block_given?
@@ -69,7 +69,7 @@ module Finest
69
69
  # r = nested_hash_value(a.last, key)
70
70
  def nested_hash_value(obj, key)
71
71
  if obj.respond_to?(:key?) && obj.key?(key)
72
- obj[key].is_a?(Hash) ? self.class.new(json: obj[key]) : obj[key]
72
+ obj[key].is_a?(Hash) ? self.class.new(obj[key]) : obj[key]
73
73
  elsif obj.respond_to?(:each)
74
74
  r = nil
75
75
  obj.find do |*a|
@@ -97,9 +97,9 @@ module Finest
97
97
 
98
98
  include Helper
99
99
 
100
- def initialize(**args)
100
+ def initialize(json = {}, keys = [])
101
101
  accessor_builder('to_h', {})
102
- args[:json]&.each do |k, v|
102
+ json.each do |k, v|
103
103
  send("#{k}=", v)
104
104
  end
105
105
  end
@@ -1,5 +1,5 @@
1
1
  module Finest
2
2
  module Builder
3
- VERSION = "1.0.0"
3
+ VERSION = "1.0.1"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: finest-builder
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eduard Garcia Castello
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-08-16 00:00:00.000000000 Z
11
+ date: 2021-08-17 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description:
13
+ description:
14
14
  email:
15
15
  - edugarcas@gmail.com
16
16
  - eduard@rzilient.club
@@ -38,7 +38,7 @@ metadata:
38
38
  homepage_uri: https://github.com/eddygarcas/finest-builder
39
39
  source_code_uri: https://github.com/eddygarcas/finest-builder
40
40
  changelog_uri: https://github.com/eddygarcas/finest-builder
41
- post_install_message:
41
+ post_install_message:
42
42
  rdoc_options: []
43
43
  require_paths:
44
44
  - lib
@@ -54,7 +54,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
54
54
  version: '0'
55
55
  requirements: []
56
56
  rubygems_version: 3.1.6
57
- signing_key:
57
+ signing_key:
58
58
  specification_version: 4
59
59
  summary: Builder modules to create either class ghost methods from a given JSON or
60
60
  a OpenStruct