formulario 0.1.8 → 0.1.9

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