formwandler 0.7.1 → 0.8.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 +4 -4
- data/lib/formwandler/field_definition.rb +35 -1
- data/lib/formwandler/form.rb +11 -5
- data/lib/formwandler/version.rb +1 -1
- metadata +9 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d83c20395db6d499d42e57b1575f9c3020392221358d7ff1f7c825e667dc6ef5
|
4
|
+
data.tar.gz: 315035887242f76e2f51336f09b58bb376b597932a505c539d4b0da8fdfb8b58
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e406427a31ea2cdf5cc8059ff9854e596831bd0ffc0cd9cdd128791ec4624213c3903cb98b403d90bbc88ca147b3bfe21087237c1f11f9fb8ef60b14f378a9b6
|
7
|
+
data.tar.gz: 0216f9859f581c28439d671b90935a0158a2b31e487aa008c92673f2c30a1dcd153af047afebd0485baf97b15e9dff054f582787e179d6ec3b5168f380a69642
|
@@ -5,13 +5,41 @@ require_relative 'field_value_transformer'
|
|
5
5
|
module Formwandler
|
6
6
|
class FieldDefinition
|
7
7
|
attr_reader :name
|
8
|
-
attr_accessor :hidden, :disabled, :readonly, :default, :delocalize, :model, :source, :options, :array
|
8
|
+
attr_accessor :hidden, :disabled, :readonly, :default, :delocalize, :model, :model_class, :source, :options, :array
|
9
9
|
|
10
10
|
def initialize(name)
|
11
11
|
@name = name
|
12
12
|
set_defaults
|
13
13
|
end
|
14
14
|
|
15
|
+
def model=(model)
|
16
|
+
set_model model, model
|
17
|
+
end
|
18
|
+
|
19
|
+
def model_class=(symbol_or_class)
|
20
|
+
@model_class =
|
21
|
+
if symbol_or_class.nil?
|
22
|
+
nil
|
23
|
+
elsif symbol_or_class.is_a?(Symbol)
|
24
|
+
symbol_or_class.to_s.classify.constantize rescue nil
|
25
|
+
elsif symbol_or_class < ActiveRecord::Base || symbol_or_class < ActiveModel::Model
|
26
|
+
symbol_or_class
|
27
|
+
else
|
28
|
+
fail 'The model class must be nil, a symbol or a descendant of ActiveModel::Model or ActiveRecord::Base.'
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def configure(opts)
|
33
|
+
model = opts[:model]
|
34
|
+
model_class = opts[:model_class] || model
|
35
|
+
set_model model, model_class
|
36
|
+
opts.except(:model, :model_class).each do |key, value|
|
37
|
+
send("#{key}=", value)
|
38
|
+
rescue NoMethodError
|
39
|
+
raise ArgumentError, "Invalid option #{key}"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
15
43
|
def hide_option(name, value = true)
|
16
44
|
hidden_options[name.to_s] = value
|
17
45
|
end
|
@@ -43,9 +71,15 @@ module Formwandler
|
|
43
71
|
@default = nil
|
44
72
|
@delocalize = nil
|
45
73
|
@model = nil
|
74
|
+
@model_class = nil
|
46
75
|
@source = name
|
47
76
|
@options = nil
|
48
77
|
@array = false
|
49
78
|
end
|
79
|
+
|
80
|
+
def set_model(model, model_class)
|
81
|
+
@model = model
|
82
|
+
self.model_class = model_class
|
83
|
+
end
|
50
84
|
end
|
51
85
|
end
|
data/lib/formwandler/form.rb
CHANGED
@@ -14,17 +14,23 @@ module Formwandler
|
|
14
14
|
ActiveModel::Name.new(self, nil, name.chomp('Form').underscore)
|
15
15
|
end
|
16
16
|
|
17
|
+
def human_attribute_name(attr, options = {})
|
18
|
+
field_definition = @field_definitions.fetch(attr) { nil }
|
19
|
+
if options[:default].nil? && field_definition && field_definition.model_class
|
20
|
+
not_found = '__formwandler_not_found__'
|
21
|
+
model_translation = field_definition.model_class.human_attribute_name(field_definition.source, default: not_found)
|
22
|
+
options[:default] = model_translation unless model_translation == not_found
|
23
|
+
end
|
24
|
+
super(attr, options)
|
25
|
+
end
|
26
|
+
|
17
27
|
def field_definitions
|
18
28
|
@field_definitions ||= {}
|
19
29
|
end
|
20
30
|
|
21
31
|
def field(name, opts = {}, &block)
|
22
32
|
field_definition = field_definitions[name] ||= FieldDefinition.new(name)
|
23
|
-
opts
|
24
|
-
field_definition.public_send("#{key}=", value)
|
25
|
-
rescue NoMethodError
|
26
|
-
raise ArgumentError, "Invalid option #{key}"
|
27
|
-
end
|
33
|
+
field_definition.configure(opts)
|
28
34
|
field_definition.instance_exec(&block) if block_given?
|
29
35
|
|
30
36
|
attribute_accessor(name)
|
data/lib/formwandler/version.rb
CHANGED
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: formwandler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stefan Bilharz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-02-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 5.0.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 5.0.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: delocalize
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -86,14 +86,14 @@ dependencies:
|
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
89
|
+
version: 1.3.6
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
96
|
+
version: 1.3.6
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: byebug
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -142,8 +142,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
142
142
|
- !ruby/object:Gem::Version
|
143
143
|
version: '0'
|
144
144
|
requirements: []
|
145
|
-
|
146
|
-
rubygems_version: 2.7.6
|
145
|
+
rubygems_version: 3.0.1
|
147
146
|
signing_key:
|
148
147
|
specification_version: 4
|
149
148
|
summary: Form objects for rails
|