enum_render 0.2.0 → 1.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/README.md +2 -1
- data/enum_render-0.1.1.gem +0 -0
- data/enum_render-0.2.0.gem +0 -0
- data/lib/enum_render.rb +30 -19
- data/lib/enum_render/liberal_enum_type.rb +12 -0
- data/lib/enum_render/version.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 54a541ca6c9a0271b7c8fb89e5ad76340509b929f0d72374607aaca714aeb1d4
|
4
|
+
data.tar.gz: b3651b785f26c7302be74b741e881c53471b443166c82f032bce02bc17314551
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cfb3799f24df1b3e3020effae98f52e4d188aaa5ba9d5910c02cb48a222ee88eef91610ce80c9a3301cdd14225aa36e2e6e5c6d2f17974e0b461188154c67890
|
7
|
+
data.tar.gz: 55edab65b07be63aaffcefb2dffedd1615830f4f29ef3e877b26904ab59f305acc6c6ce30ba1917e766879dfb2b95cc4de11031913bcfbefbc5ec7c968fff266
|
data/README.md
CHANGED
@@ -9,7 +9,7 @@ Extend methods enum to I18n enum in Rails
|
|
9
9
|
Add this line to your application's Gemfile:
|
10
10
|
|
11
11
|
```ruby
|
12
|
-
gem 'enum_render', "~> 0
|
12
|
+
gem 'enum_render', "~> 1.0"
|
13
13
|
```
|
14
14
|
|
15
15
|
And then execute:
|
@@ -73,6 +73,7 @@ After install we have methods:
|
|
73
73
|
[10] pry(main)> Event.status_select
|
74
74
|
=> [["保 留 中 ", "pending"], ["承 認 済 み ", "approved"], ["辞 退 ", "declined"]]
|
75
75
|
```
|
76
|
+
## Add validate enum
|
76
77
|
## License
|
77
78
|
|
78
79
|
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
Binary file
|
Binary file
|
data/lib/enum_render.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require 'enum_render/version'
|
2
|
+
require 'enum_render/railtie'
|
3
|
+
require "enum_render/liberal_enum_type"
|
3
4
|
|
4
5
|
module EnumRender
|
5
6
|
class Error < StandardError; end
|
@@ -7,6 +8,12 @@ module EnumRender
|
|
7
8
|
extend ActiveSupport::Concern
|
8
9
|
|
9
10
|
class_methods do
|
11
|
+
def liberal_enum(attribute)
|
12
|
+
decorate_attribute_type(attribute) do |subtype|
|
13
|
+
EnumRender::LiberalEnumType.new(attribute, defined_enums.fetch(attribute.to_s), subtype)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
10
17
|
def enum(opts)
|
11
18
|
super(opts)
|
12
19
|
|
@@ -14,51 +21,55 @@ module EnumRender
|
|
14
21
|
singular_model_name = klass.name.singularize.underscore
|
15
22
|
locale_prefix = "enums.#{singular_model_name}"
|
16
23
|
|
17
|
-
opts.each do |name,
|
24
|
+
opts.each do |name, _values|
|
25
|
+
liberal_enum name # To use validate
|
26
|
+
|
18
27
|
detect_enum_conflict!(name, "#{name}_name")
|
19
28
|
define_method("#{name}_name") do
|
20
|
-
return
|
29
|
+
return '' if send(name).nil?
|
21
30
|
|
22
|
-
|
23
|
-
|
24
|
-
|
31
|
+
begin
|
32
|
+
I18n.t("#{locale_prefix}.#{name}.#{send(name)}", raise: true)
|
33
|
+
rescue I18n::MissingTranslationData
|
34
|
+
self[name].titleize
|
35
|
+
end
|
25
36
|
end
|
26
37
|
|
27
38
|
detect_enum_conflict!(name, "#{name}_value")
|
28
39
|
define_method("#{name}_value") do
|
29
|
-
return nil if
|
40
|
+
return nil if send(name).nil?
|
30
41
|
|
31
42
|
klass.send(name.to_s.pluralize)[self[name]]
|
32
43
|
end
|
33
44
|
|
34
45
|
detect_enum_conflict!(name, "#{name}_option")
|
35
46
|
define_method("#{name}_option") do
|
36
|
-
return nil if
|
47
|
+
return nil if send(name).nil?
|
37
48
|
|
38
49
|
label = klass.new(name => self[name]).send("#{name}_name")
|
39
50
|
{
|
40
|
-
|
41
|
-
|
51
|
+
'key' => self[name],
|
52
|
+
'value' => label
|
42
53
|
}
|
43
54
|
end
|
44
55
|
|
45
56
|
detect_enum_conflict!(name, "#{name}_options", true)
|
46
57
|
define_singleton_method("#{name}_options") do
|
47
|
-
|
48
|
-
label =
|
49
|
-
key =
|
58
|
+
send(name.to_s.pluralize).map do |k, _|
|
59
|
+
label = new(name => k).send("#{name}_name")
|
60
|
+
key = new(name => k).send(name.to_s)
|
50
61
|
{
|
51
|
-
|
52
|
-
|
62
|
+
'key' => key,
|
63
|
+
'value' => label
|
53
64
|
}
|
54
65
|
end
|
55
66
|
end
|
56
67
|
|
57
68
|
detect_enum_conflict!(name, "#{name}_select", true)
|
58
69
|
define_singleton_method("#{name}_select") do
|
59
|
-
|
60
|
-
label =
|
61
|
-
key =
|
70
|
+
send(name.to_s.pluralize).map do |k, _|
|
71
|
+
label = new(name => k).send("#{name}_name")
|
72
|
+
key = new(name => k).send(name.to_s)
|
62
73
|
[label, key]
|
63
74
|
end
|
64
75
|
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'active_record'
|
4
|
+
module EnumRender
|
5
|
+
class LiberalEnumType < ::ActiveRecord::Enum::EnumType
|
6
|
+
# suppress <ArgumentError>
|
7
|
+
# returns a value to be able to use +inclusion+ validation
|
8
|
+
def assert_valid_value value
|
9
|
+
value
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
data/lib/enum_render/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: enum_render
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: '1.0'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- sangvo
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-04-02 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Extend methods enum to I18n enum in Rails
|
14
14
|
email:
|
@@ -28,8 +28,11 @@ files:
|
|
28
28
|
- bin/console
|
29
29
|
- bin/setup
|
30
30
|
- enum_render-0.1.0.gem
|
31
|
+
- enum_render-0.1.1.gem
|
32
|
+
- enum_render-0.2.0.gem
|
31
33
|
- enum_render.gemspec
|
32
34
|
- lib/enum_render.rb
|
35
|
+
- lib/enum_render/liberal_enum_type.rb
|
33
36
|
- lib/enum_render/railtie.rb
|
34
37
|
- lib/enum_render/version.rb
|
35
38
|
homepage: https://github.com/sangvo/enum_render.git
|