formulario 0.1.8 → 0.1.9

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: 24abc8ebb3ec38dfdf384d5dff1bf8b63424a9dc99a9f9224c9fea4e21a6fef4
4
- data.tar.gz: d9796024e2c19dd1b9d0c462ec55a5df05eda87c42bfbcc957cfe7bdb55b6097
3
+ metadata.gz: 507489d0c8af8edb81f59da860625ec7925937758ad8f958ff9fcf244895005f
4
+ data.tar.gz: '028b01a6f2707ec2a40caf1238664e54cc5571a5e4de807f1d75ec12900f46c6'
5
5
  SHA512:
6
- metadata.gz: aa6aeb6e0c1fd578d7fe483f3487ec3fdd56acfd0db5a39407909c9e5017d830bab561d990f7e937c238f6360e35225561f4c4b2469a8507c9923d7a8c3104ca
7
- data.tar.gz: 13b14f8549d6abc9d193079c97c24405247dea4c83664c91993fed529d512b9431e4037ee353af7d11642a8b274454d727110a17cef31d4b73361cdd53ca2859
6
+ metadata.gz: 940a70c32f8b6bfd0a5801b81e6d495d4adb3e566e44bd99dfd22fa217ffbe0c5b9eb9b7642b16534d1da8639d84cc551422b8928e62b1e09c08dfb0bf4cc882
7
+ data.tar.gz: 54c3db378507498700c18a81601a666a62fd11db54e255acd4c5c5e1bae603f224b063e0b044ddf41f6167ee7e0ccfa1127c92ed3ad84460763119a927f82432
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- formulario (0.1.8)
4
+ formulario (0.1.9)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -14,7 +14,7 @@ module Formulario
14
14
 
15
15
  def self.[](type)
16
16
  Class.new(self).tap { |typed_class|
17
- typed_class.field_types = TYPES.fetch(type)
17
+ typed_class.field_types = type_for(type)
18
18
  }
19
19
  end
20
20
 
@@ -16,6 +16,10 @@ module Formulario
16
16
  :array => Formulario::Field::Collection,
17
17
  }
18
18
 
19
+ def self.type_for(type)
20
+ TYPES.fetch(type)
21
+ end
22
+
19
23
  attr_reader :raw_value
20
24
 
21
25
  def self.for(raw_value)
@@ -3,7 +3,7 @@ module Formulario
3
3
  attr_accessor :model
4
4
 
5
5
  def initialize(skip_validations: false, **params)
6
- __fields.each do |field_name, **options|
6
+ self.class.__fields.each do |field_name, **options|
7
7
  send("#{field_name}=", params.delete(field_name))
8
8
  end
9
9
 
@@ -35,10 +35,6 @@ module Formulario
35
35
  new(skip_validations: true, **params)
36
36
  end
37
37
 
38
- def __fields
39
- @__fields ||= {}
40
- end
41
-
42
38
  def params
43
39
  __fields.each_with_object({}) { |field_info, res|
44
40
  field_name = field_info.first
@@ -78,12 +74,12 @@ module Formulario
78
74
 
79
75
  private
80
76
 
81
- def self.__fields
82
- @field ||= {}
77
+ def __fields
78
+ @__fields ||= {}
83
79
  end
84
80
 
85
- def __fields
86
- @__fields ||= self.class.__fields
81
+ def self.__fields
82
+ @field ||= {}
87
83
  end
88
84
 
89
85
  def self.field(field_name,
@@ -97,7 +93,12 @@ module Formulario
97
93
  validators: [],
98
94
  )
99
95
 
96
+ define_method("__set_field_#{field_name}") do
97
+ __fields[field_name.to_sym] ||= self.class.__fields[field_name.to_sym].dup
98
+ end
99
+
100
100
  define_method(field_name) do
101
+ send("__set_field_#{field_name}")
101
102
  __fields[field_name.to_sym].value
102
103
  end
103
104
 
@@ -108,6 +109,7 @@ module Formulario
108
109
  end
109
110
 
110
111
  define_method("#{field_name}=") do |raw_value|
112
+ send("__set_field_#{field_name}")
111
113
  __fields[field_name.to_sym].value = Field.type_for(field_type).for(
112
114
  send("set_#{field_name}", raw_value)
113
115
  )
@@ -1,3 +1,3 @@
1
1
  module Formulario
2
- VERSION = "0.1.8"
2
+ VERSION = "0.1.9"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: formulario
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Federico Iachetti