enumy 0.2.0 → 0.3.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: 8967f465fedf7db2ebaed2f024a942ed580d4ace8fac502a8a144d9720685d99
4
- data.tar.gz: 708184decf1b1f474735792e53c4ec529a3317e3b824c2a7889b26f2eb0e6884
3
+ metadata.gz: 48c034d7276e26bde26c3ab1af9042e7965f60e6aaf049e30dedb0ed8d288b3e
4
+ data.tar.gz: 9aa548c28f86f7ae8f2ef0cf994ac989c705665a06212f37cd2fdd56d1228f38
5
5
  SHA512:
6
- metadata.gz: 7e9bcf100b39f8f84363f9932b9785f6d208e16af94b455991eff8eb5092350de31457368769f496c71837381bf7749d9e15f61001d8bcf43aa430a635482a72
7
- data.tar.gz: 7b4052eb2852bd40cc9aefed3afeb398b6b5e832f4a1aa66d77342eca8439170b3737e4d0df2f571e1ce085d512a8437ca4de90d049fa7e0cfaf28935c308e15
6
+ metadata.gz: 90eb307fa980e73ee36f56fa64ddc98f99d2774d6e7998a80381d84ca94d308b97dc848dac41f5fc91007841374c5b039b53e581f5b5abe164ad7708556c9e30
7
+ data.tar.gz: 49b0b61bffe6f652cd92f02f7ae940c82ad7c0ee0f16a8923647b1a4a2c85f2496df10f0c13b641ce56da97e8a36523a4244949e2d24533e1a647cf2f01d14c1
@@ -0,0 +1,24 @@
1
+ require 'enumy/base.rb'
2
+
3
+ module Enumy
4
+ module ActiveJob
5
+ module Serializers
6
+ class EnumSerializer < ::ActiveJob::Serializers::ObjectSerializer
7
+
8
+ def serialize(enum)
9
+ super({ class: enum.class.name, key: enum.key })
10
+ end
11
+
12
+ def deserialize(hash)
13
+ hash['class'].constantize.find(hash['key'])
14
+ end
15
+
16
+ private
17
+
18
+ def klass
19
+ Enumy::Base
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,28 @@
1
+ module Enumy
2
+ module ActiveModel
3
+ module Type
4
+ class Enum < ::ActiveModel::Type::Value
5
+ def initialize(enum_class)
6
+ @enum_class = enum_class
7
+ super()
8
+ end
9
+
10
+ def cast(value)
11
+ value.is_a?(@enum_class) ? value : @enum_class.find_by_key(value&.to_sym)
12
+ end
13
+
14
+ def serialize(value)
15
+ value.is_a?(@enum_class) ? value.key : value&.to_s
16
+ end
17
+
18
+ def deserialize(value)
19
+ value.is_a?(@enum_class) ? value : @enum_class.find_by_key(value&.to_sym)
20
+ end
21
+
22
+ def type
23
+ :enum
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
data/lib/enumy/base.rb CHANGED
@@ -18,6 +18,10 @@ module Enumy
18
18
  I18n.t("#{self.class.i18n_scope}.attributes.models.#{self.class.model_name.i18n_key}/#{self.key}.#{attribute}")
19
19
  end
20
20
 
21
+ def name
22
+ self.key.to_s
23
+ end
24
+
21
25
  def to_s
22
26
  self.key.to_s
23
27
  end
@@ -45,6 +49,7 @@ module Enumy
45
49
  end
46
50
 
47
51
  def find_by_key(key)
52
+ key = key.to_sym if key.is_a?(String)
48
53
  instances[key]
49
54
  end
50
55
 
@@ -0,0 +1,9 @@
1
+ require 'enumy/active_job/serializers/enum_serializer'
2
+
3
+ module Enumy
4
+ class Railtie < Rails::Railtie
5
+ initializer "enumy.register_active_job_serializer" do |app|
6
+ app.config.active_job.custom_serializers << Enumy::ActiveJob::Serializers::EnumSerializer
7
+ end
8
+ end
9
+ end
data/lib/enumy/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Enumy
4
- VERSION = "0.2.0"
4
+ VERSION = "0.3.0"
5
5
  end
data/lib/enumy.rb CHANGED
@@ -1,4 +1,13 @@
1
- require 'enumy/base'
2
- require 'enumy/model'
3
- require 'generators/enumy/install/install_generator'
4
- require 'active_model/type/enum'
1
+ if defined?(ActiveModel)
2
+ require 'enumy/base'
3
+ end
4
+
5
+ if defined?(Rails)
6
+ require 'enumy/generators/enumy/install/install_generator'
7
+ require 'enumy/active_model/type/enum'
8
+ require 'enumy/model'
9
+
10
+ if defined?(Rails::Railtie)
11
+ require 'enumy/railtie'
12
+ end
13
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: enumy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bevan Holborn
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-03-21 00:00:00.000000000 Z
10
+ date: 2025-03-26 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: rake
@@ -42,14 +42,16 @@ executables: []
42
42
  extensions: []
43
43
  extra_rdoc_files: []
44
44
  files:
45
- - lib/active_model/type/enum.rb
46
45
  - lib/enumy.rb
46
+ - lib/enumy/active_job/serializers/enum_serializer.rb
47
+ - lib/enumy/active_model/type/enum.rb
47
48
  - lib/enumy/base.rb
48
49
  - lib/enumy/errors.rb
50
+ - lib/enumy/generators/enumy/install/install_generator.rb
51
+ - lib/enumy/generators/enumy/install/templates/app/enums/application_enum.rb
49
52
  - lib/enumy/model.rb
53
+ - lib/enumy/railtie.rb
50
54
  - lib/enumy/version.rb
51
- - lib/generators/enumy/install/install_generator.rb
52
- - lib/generators/enumy/install/templates/app/enums/application_enum.rb
53
55
  homepage: https://rubygems.org/gems/enumy
54
56
  licenses:
55
57
  - MIT
@@ -1,26 +0,0 @@
1
- module ActiveModel
2
- module Type
3
- class Enum < ActiveModel::Type::Value
4
- def initialize(enum_class)
5
- @enum_class = enum_class
6
- super()
7
- end
8
-
9
- def cast(value)
10
- value.is_a?(@enum_class) ? value : @enum_class.find_by_key(value&.to_sym)
11
- end
12
-
13
- def serialize(value)
14
- value.is_a?(@enum_class) ? value.key : value&.to_s
15
- end
16
-
17
- def deserialize(value)
18
- value.is_a?(@enum_class) ? value : @enum_class.find_by_key(value&.to_sym)
19
- end
20
-
21
- def type
22
- :enum
23
- end
24
- end
25
- end
26
- end