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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8ce74d64098f9a2ea00ce468db3f763d61276520a15c66a9b7253bea58f6a937
4
- data.tar.gz: 71d74f88d184c2a1f520ca1f41177146582a5b4bdc0c0e21ce1974d6ae9cd35c
3
+ metadata.gz: 54a541ca6c9a0271b7c8fb89e5ad76340509b929f0d72374607aaca714aeb1d4
4
+ data.tar.gz: b3651b785f26c7302be74b741e881c53471b443166c82f032bce02bc17314551
5
5
  SHA512:
6
- metadata.gz: 4c5a6296896480e5d3219082418e92c0277a82c3e24ee275511f1e5deb8d205165d1fe9daf43aef535be7a6be3d7aa0d2a7fbb55944916699d7e15606827a329
7
- data.tar.gz: d52544f2c504334e6b04220bd9687b30c91b932d3057e92ecf9044fd109504a2773000f1621b185fb2137f685a93c1c8f94641f1f4701e6d121f6026c06ff20e
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.2"
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 "enum_render/version"
2
- require "enum_render/railtie"
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, values|
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 "" if self.send(name).nil?
29
+ return '' if send(name).nil?
21
30
 
22
- I18n.t("#{locale_prefix}.#{name}.#{self.send(name)}", raise: true)
23
- rescue I18n::MissingTranslationData
24
- self[name].titleize
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 self.send(name).nil?
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 self.send(name).nil?
47
+ return nil if send(name).nil?
37
48
 
38
49
  label = klass.new(name => self[name]).send("#{name}_name")
39
50
  {
40
- "key" => self[name],
41
- "value" => label
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
- self.send(name.to_s.pluralize).map do |k, _|
48
- label = self.new(name => k).send("#{name}_name")
49
- key = self.new(name => k).send("#{name}")
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
- "key" => key,
52
- "value" => label
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
- self.send(name.to_s.pluralize).map do |k, _|
60
- label = self.new(name => k).send("#{name}_name")
61
- key = self.new(name => k).send("#{name}")
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
@@ -1,3 +1,3 @@
1
1
  module EnumRender
2
- VERSION = "0.2.0"
2
+ VERSION = "1.0"
3
3
  end
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: 0.2.0
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-03-30 00:00:00.000000000 Z
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