enumize 0.2.0 → 0.2.1
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 +9 -8
- data/Rakefile +5 -1
- data/lib/enumize/model.rb +44 -32
- data/lib/enumize/version.rb +1 -1
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cf685498d632a17623a83b61d929a4fb8c43174d9552724bf9af878f801be60d
|
4
|
+
data.tar.gz: 303c0cca432f49647129331358e4505f05d249ec105cc2121b2fa85cd998730f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d0197ec642136e88cbf918684a34ec69b61e431a0625f0d32ffc404e55519b9db0090b0adc53462673bdd7b9de2c011eb220b1c9ca3141e6c31df65397ec9c1d
|
7
|
+
data.tar.gz: 889128831bcc45b2221202062530d5b37b2a1c4d1b2821ed5fafd4f0c5d5d8785c57e5faa47c24a5720131ddbdc88921c5158f88c1ab02af543d71f86cdeb91b
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Enumize
|
2
2
|
|
3
|
-
[](https://github.com/huacnlee/enumize/actions/workflows/build.yml)
|
4
4
|
|
5
5
|
Extend [ActiveRecord::Enum](https://api.rubyonrails.org/classes/ActiveRecord/Enum.html) for add more helpful methods, from [rails/rails#36503](https://github.com/rails/rails/pull/36503).
|
6
6
|
|
@@ -35,18 +35,18 @@ en:
|
|
35
35
|
published: Published
|
36
36
|
archived: Archived
|
37
37
|
status_color:
|
38
|
-
draft:
|
39
|
-
published:
|
40
|
-
archived:
|
38
|
+
draft: '#999999'
|
39
|
+
published: 'green'
|
40
|
+
archived: 'red'
|
41
41
|
|
42
42
|
zh-CN:
|
43
43
|
activerecord:
|
44
44
|
enums:
|
45
45
|
book:
|
46
46
|
status:
|
47
|
-
draft:
|
48
|
-
published:
|
49
|
-
archived:
|
47
|
+
draft: '草稿'
|
48
|
+
published: '已发布'
|
49
|
+
archived: '归档'
|
50
50
|
```
|
51
51
|
|
52
52
|
use the methods:
|
@@ -90,6 +90,7 @@ gem 'enumize'
|
|
90
90
|
```
|
91
91
|
|
92
92
|
And then execute:
|
93
|
+
|
93
94
|
```bash
|
94
95
|
$ bundle
|
95
96
|
```
|
@@ -109,7 +110,7 @@ module Dummy
|
|
109
110
|
config.i18n.fallbacks = true
|
110
111
|
end
|
111
112
|
end
|
112
|
-
|
113
|
+
```
|
113
114
|
|
114
115
|
## License
|
115
116
|
|
data/Rakefile
CHANGED
@@ -10,12 +10,16 @@ require "rdoc/task"
|
|
10
10
|
|
11
11
|
RDoc::Task.new(:rdoc) do |rdoc|
|
12
12
|
rdoc.rdoc_dir = "rdoc"
|
13
|
-
rdoc.title
|
13
|
+
rdoc.title = "Enumize"
|
14
14
|
rdoc.options << "--line-numbers"
|
15
15
|
rdoc.rdoc_files.include("README.md")
|
16
16
|
rdoc.rdoc_files.include("lib/**/*.rb")
|
17
17
|
end
|
18
18
|
|
19
|
+
APP_RAKEFILE = File.expand_path("test/dummy/Rakefile", __dir__)
|
20
|
+
load "rails/tasks/engine.rake"
|
21
|
+
load "rails/tasks/statistics.rake"
|
22
|
+
|
19
23
|
require "bundler/gem_tasks"
|
20
24
|
|
21
25
|
require "rake/testtask"
|
data/lib/enumize/model.rb
CHANGED
@@ -5,46 +5,58 @@ module Enumize
|
|
5
5
|
extend ActiveSupport::Concern
|
6
6
|
|
7
7
|
class_methods do
|
8
|
-
|
9
|
-
|
8
|
+
if Rails.version.to_f < 7.0
|
9
|
+
def enum(opts)
|
10
|
+
super(opts)
|
10
11
|
|
12
|
+
opts.each do |name, values|
|
13
|
+
_enumize(name, values)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def _enum(name, values, **options)
|
19
|
+
super(name, values, **options)
|
20
|
+
|
21
|
+
_enumize(name, values, **options)
|
22
|
+
end
|
23
|
+
|
24
|
+
def _enumize(name, values, **options)
|
11
25
|
klass = self
|
12
26
|
singular_model_name = klass.name.singularize.underscore
|
13
27
|
locale_prefix = "activerecord.enums.#{singular_model_name}"
|
14
28
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
end
|
29
|
+
# def status_name; I18n.t("activerecord.enums.book.status.#{status}"); end
|
30
|
+
detect_enum_conflict!(name, "#{name}_name")
|
31
|
+
define_method("#{name}_name") do
|
32
|
+
return "" if send(name).nil?
|
33
|
+
I18n.t("#{locale_prefix}.#{name}.#{send(name)}")
|
34
|
+
rescue I18n::MissingTranslationData
|
35
|
+
self[field].titleize
|
36
|
+
end
|
24
37
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
38
|
+
# def status_color; I18n.t("activerecord.enums.book.status_color.#{status}"); end
|
39
|
+
detect_enum_conflict!(name, "#{name}_color")
|
40
|
+
define_method("#{name}_color") do
|
41
|
+
return "black" if send(name).nil?
|
42
|
+
I18n.t("#{locale_prefix}.#{name}_color.#{send(name)}", raise: true)
|
43
|
+
rescue I18n::MissingTranslationData
|
44
|
+
return "black"
|
45
|
+
end
|
33
46
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
47
|
+
# def status_value; Book.statuses[self.status]; end
|
48
|
+
detect_enum_conflict!(name, "#{name}_value")
|
49
|
+
define_method("#{name}_value") do
|
50
|
+
return nil if send(name).nil?
|
51
|
+
klass.send(name.to_s.pluralize)[self[name]]
|
52
|
+
end
|
40
53
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
end
|
54
|
+
# Book.state_options # => [["Draft", "draft"], ["Published", "published"], ["Archived", "archived"]]
|
55
|
+
detect_enum_conflict!(name, "#{name}_options", true)
|
56
|
+
define_singleton_method("#{name}_options") do
|
57
|
+
send(name.to_s.pluralize).map do |k, _|
|
58
|
+
label = new(name => k).send("#{name}_name")
|
59
|
+
[label, k]
|
48
60
|
end
|
49
61
|
end
|
50
62
|
end
|
data/lib/enumize/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: enumize
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jason Lee
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-12-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -25,7 +25,7 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 5.0.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: pg
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
@@ -56,7 +56,7 @@ homepage: https://github.com/huacnlee/enumize
|
|
56
56
|
licenses:
|
57
57
|
- MIT
|
58
58
|
metadata: {}
|
59
|
-
post_install_message:
|
59
|
+
post_install_message:
|
60
60
|
rdoc_options: []
|
61
61
|
require_paths:
|
62
62
|
- lib
|
@@ -71,8 +71,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
71
71
|
- !ruby/object:Gem::Version
|
72
72
|
version: '0'
|
73
73
|
requirements: []
|
74
|
-
rubygems_version: 3.
|
75
|
-
signing_key:
|
74
|
+
rubygems_version: 3.2.3
|
75
|
+
signing_key:
|
76
76
|
specification_version: 4
|
77
77
|
summary: Extend ActiveRecord::Enum for add more helpful methods.
|
78
78
|
test_files: []
|