readable_enums 1.2.2 → 1.4.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.
Files changed (3) hide show
  1. checksums.yaml +5 -5
  2. data/lib/readable_enums.rb +19 -2
  3. metadata +6 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 8b036c0d242c8f4e0d4f02f35392371e3dc78167
4
- data.tar.gz: 47f86b1f0248fb06d2f9e8e536ae8be7852eb64f
2
+ SHA256:
3
+ metadata.gz: 9852d5d4bbfc443efb1c4c56f266e48c812e5ba539d35471834043b528257e4e
4
+ data.tar.gz: ecb90d1baae1bc510645bc8fa6197cea4a6b75e6e976dcc7187669d1ebce1ff2
5
5
  SHA512:
6
- metadata.gz: 2bae286df66df2644cc7b0fcf3029af150bc409adb6c8489ea11951d0f01b7648a51511ed6e53d3cc177eac517b44dd082677186951b914d1c7bddcc44839b92
7
- data.tar.gz: 15c1f75808c9c1cf5546e56b79784b039de8e29735311d722aa3e9d54d3d32365aa45e079c082adcb4e56542206cb68e5b169da312bb0c38368570cc05751cb2
6
+ metadata.gz: 0f4436cd534701be8f41cfd2c578b39ca21c5547e2f984fdb643b5586a16d1441d7326fa75ee9ced784c8a98fc6e9e0e42aeaf657478c50babdf4583fdf04d74
7
+ data.tar.gz: 9d1751082cfefa5a9946beff985d498ab3ca6f117dccbbecc9d7a608d6d7f8259bc2c6bdf7b97e1c0f4cac7fb732a066ee108f5521797056e797285f52bf45e8
@@ -1,17 +1,34 @@
1
1
  module ReadableEnums
2
2
  extend ActiveSupport::Concern
3
3
 
4
+ included do
5
+ class_attribute(:defined_readable_enums, instance_writer: false, default: {})
6
+ end
7
+
4
8
  module ClassMethods
5
9
  def readable_enum(name, values, **args)
6
10
  validates_args = args.slice(:allow_nil, :if).compact
7
11
 
8
12
  validates name.to_sym, inclusion: { in: values, message: "%{value} is not a valid #{name}" }, **validates_args
9
13
 
14
+ defined_values = []
15
+
10
16
  values.each do |enum|
11
- define_method(:"#{enum}?") { send(name.to_s) == enum }
12
- define_method(:"#{enum}!") { update(name.to_s => enum) }
17
+ unless args[:with_methods] == false
18
+ prefix = args[:prefix] == true ? "#{name}" : args[:prefix]
19
+ suffix = args[:suffix] == true ? "#{name}" : args[:suffix]
20
+ method_name = [prefix, enum, suffix].compact.join('_')
21
+
22
+ define_method(:"#{method_name}?") { send(name.to_s) == enum }
23
+ define_method(:"#{method_name}!") { update(name.to_s => enum) }
24
+
25
+ defined_values << method_name
26
+ end
27
+
13
28
  define_singleton_method(:"#{enum}") { where(name.to_s => enum) } unless args[:with_scopes] == false
14
29
  end
30
+
31
+ defined_readable_enums[name] = defined_values
15
32
  end
16
33
  end
17
34
  end
metadata CHANGED
@@ -1,16 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: readable_enums
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.2
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
- - Tyler Karuzis
7
+ - Joy Smith
8
8
  - Raynor Kuang
9
9
  - Austin Fisher
10
+ - Willy Unterkoefler
11
+ - Neal Griffith
10
12
  autorequire:
11
13
  bindir: bin
12
14
  cert_chain: []
13
- date: 2018-03-14 00:00:00.000000000 Z
15
+ date: 2025-03-18 00:00:00.000000000 Z
14
16
  dependencies: []
15
17
  description: Validation and helper methods for string based enums in rails
16
18
  email:
@@ -38,8 +40,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
38
40
  - !ruby/object:Gem::Version
39
41
  version: '0'
40
42
  requirements: []
41
- rubyforge_project:
42
- rubygems_version: 2.5.2
43
+ rubygems_version: 3.0.3.1
43
44
  signing_key:
44
45
  specification_version: 4
45
46
  summary: Create readable enums in your database!