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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 964991441bfdd0056de0e262ff27a7f5e4515eb3745f5f54934b1c181ef830dd
4
- data.tar.gz: 04bb3a8efe106f6ea21237ad7a4f6de941cf86962ef121afab3c46e52b961346
3
+ metadata.gz: cf685498d632a17623a83b61d929a4fb8c43174d9552724bf9af878f801be60d
4
+ data.tar.gz: 303c0cca432f49647129331358e4505f05d249ec105cc2121b2fa85cd998730f
5
5
  SHA512:
6
- metadata.gz: 65b4a563f9dac4243bd3cb8d022ee30ea51f7336f41b4fd021733bb188f789de91819c81d0431de6d856d6049cb5a6550dd9192cfb03851c4471d73598426a47
7
- data.tar.gz: 244779b142c1ab079dfe5b41db6234c451ede8ebadeff7b31589c80a049a2bd70626bba314f684a6acc045e66f6c62dae6db0d2e939d6444b0908b480bdacdbc
6
+ metadata.gz: d0197ec642136e88cbf918684a34ec69b61e431a0625f0d32ffc404e55519b9db0090b0adc53462673bdd7b9de2c011eb220b1c9ca3141e6c31df65397ec9c1d
7
+ data.tar.gz: 889128831bcc45b2221202062530d5b37b2a1c4d1b2821ed5fafd4f0c5d5d8785c57e5faa47c24a5720131ddbdc88921c5158f88c1ab02af543d71f86cdeb91b
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Enumize
2
2
 
3
- [![Build Status](https://travis-ci.org/huacnlee/enumize.svg?branch=master)](https://travis-ci.org/huacnlee/enumize)
3
+ [![build](https://github.com/huacnlee/enumize/actions/workflows/build.yml/badge.svg)](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: "#999999"
39
- published: "green"
40
- archived: "red"
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 = "Enumize"
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
- def enum(opts)
9
- super(opts)
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
- opts.each do |name, values|
16
- # def status_name; I18n.t("activerecord.enums.book.status.#{status}"); end
17
- detect_enum_conflict!(name, "#{name}_name")
18
- define_method("#{name}_name") do
19
- return "" if self.send(name).nil?
20
- I18n.t("#{locale_prefix}.#{name}.#{self.send(name)}")
21
- rescue I18n::MissingTranslationData
22
- self[field].titleize
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
- # def status_color; I18n.t("activerecord.enums.book.status_color.#{status}"); end
26
- detect_enum_conflict!(name, "#{name}_color")
27
- define_method("#{name}_color") do
28
- return "black" if self.send(name).nil?
29
- I18n.t("#{locale_prefix}.#{name}_color.#{self.send(name)}", raise: true)
30
- rescue I18n::MissingTranslationData
31
- return "black"
32
- end
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
- # def status_value; Book.statuses[self.status]; end
35
- detect_enum_conflict!(name, "#{name}_value")
36
- define_method("#{name}_value") do
37
- return nil if self.send(name).nil?
38
- klass.send(name.to_s.pluralize)[self[name]]
39
- end
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
- # Book.state_options # => [["Draft", "draft"], ["Published", "published"], ["Archived", "archived"]]
42
- detect_enum_conflict!(name, "#{name}_options", true)
43
- define_singleton_method("#{name}_options") do
44
- self.send(name.to_s.pluralize).map do |k, _|
45
- label = self.new(name => k).send("#{name}_name")
46
- [label, k]
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Enumize
4
- VERSION = "0.2.0"
4
+ VERSION = "0.2.1"
5
5
  end
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.0
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: 2019-06-24 00:00:00.000000000 Z
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: mysql2
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.0.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: []