rich_enums 0.1.3 → 0.1.4
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/.github/workflows/ci.yml +54 -0
- data/.ruby-version +1 -0
- data/Gemfile.lock +28 -1
- data/gemfiles/activerecord_6.1.gemfile +8 -0
- data/gemfiles/activerecord_7.0.gemfile +8 -0
- data/gemfiles/activerecord_7.1.gemfile +8 -0
- data/lib/rich_enums/version.rb +1 -1
- data/lib/rich_enums.rb +12 -4
- data/rich_enums.gemspec +3 -0
- metadata +56 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 15ff8f1970f8dfcea0ea54020b43e39e9a2107978e1cc432e38797698e8b5262
|
4
|
+
data.tar.gz: d1f1cfd235a02224c8b92d9847daf799512ea9c34d5cf847e128d6a9473b8322
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 61f4cd02dab095f81082e66daafb43709edb159a7dbbd906362e5d31458fef82064855b8ebe1e32eed8143818b0cf96974aa571012d53e9fac80539b3b6653e8
|
7
|
+
data.tar.gz: 50305e6f7e0377be49cb7289dd52aaf0c00263bf5d45f472a8d4e86b9f67789613740c2359d411ae6d6f51932530fd6049bd408a2082353af9b1e18311ca6372
|
@@ -0,0 +1,54 @@
|
|
1
|
+
env:
|
2
|
+
RUBY_VERSION: 3.2.2
|
3
|
+
|
4
|
+
name: RichEnums CI
|
5
|
+
on:
|
6
|
+
pull_request:
|
7
|
+
paths-ignore:
|
8
|
+
- .gitignore
|
9
|
+
- CHANGELOG.md
|
10
|
+
- CONTRIBUTING.md
|
11
|
+
- README.md
|
12
|
+
push:
|
13
|
+
paths-ignore:
|
14
|
+
- .gitignore
|
15
|
+
- CHANGELOG.md
|
16
|
+
- CONTRIBUTING.md
|
17
|
+
- README.md
|
18
|
+
|
19
|
+
jobs:
|
20
|
+
rspec-test:
|
21
|
+
name: Run tests (ruby ${{ matrix.ruby }}, rails ${{ matrix.rails }})
|
22
|
+
runs-on: ubuntu-22.04
|
23
|
+
strategy:
|
24
|
+
matrix:
|
25
|
+
include:
|
26
|
+
- ruby: '3.2'
|
27
|
+
rails: '7.1'
|
28
|
+
- ruby: '3.2'
|
29
|
+
rails: '7.0'
|
30
|
+
- ruby: '3.2'
|
31
|
+
rails: '6.1'
|
32
|
+
- ruby: '3.1'
|
33
|
+
rails: '6.1'
|
34
|
+
env:
|
35
|
+
BUNDLE_GEMFILE: gemfiles/activerecord_${{ matrix.rails }}.gemfile
|
36
|
+
steps:
|
37
|
+
- name: Checkout
|
38
|
+
uses: actions/checkout@v4
|
39
|
+
- name: Install Ruby
|
40
|
+
uses: ruby/setup-ruby@v1
|
41
|
+
with:
|
42
|
+
ruby-version: ${{ matrix.ruby }}
|
43
|
+
- name: Gem cache
|
44
|
+
uses: actions/cache@v4
|
45
|
+
with:
|
46
|
+
path: vendor/bundle
|
47
|
+
key: ${{ runner.os }}-gem-use-ruby-${{ hashFiles('**/Gemfile.lock') }}
|
48
|
+
- name: Install dependencies
|
49
|
+
run: |
|
50
|
+
gem install bundler --version 2.3.25 --no-document
|
51
|
+
bundle config path vendor/bundle
|
52
|
+
bundle install --jobs 4 --retry 3
|
53
|
+
- name: Run tests
|
54
|
+
run: bundle exec rake spec
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
3.1.1
|
data/Gemfile.lock
CHANGED
@@ -1,12 +1,29 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
rich_enums (0.1.
|
4
|
+
rich_enums (0.1.4)
|
5
|
+
activerecord (>= 6.1, < 8.0)
|
5
6
|
|
6
7
|
GEM
|
7
8
|
remote: https://rubygems.org/
|
8
9
|
specs:
|
10
|
+
activemodel (6.1.7.7)
|
11
|
+
activesupport (= 6.1.7.7)
|
12
|
+
activerecord (6.1.7.7)
|
13
|
+
activemodel (= 6.1.7.7)
|
14
|
+
activesupport (= 6.1.7.7)
|
15
|
+
activesupport (6.1.7.7)
|
16
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
17
|
+
i18n (>= 1.6, < 2)
|
18
|
+
minitest (>= 5.1)
|
19
|
+
tzinfo (~> 2.0)
|
20
|
+
zeitwerk (~> 2.3)
|
21
|
+
concurrent-ruby (1.2.3)
|
9
22
|
diff-lcs (1.5.0)
|
23
|
+
i18n (1.14.4)
|
24
|
+
concurrent-ruby (~> 1.0)
|
25
|
+
mini_portile2 (2.8.6)
|
26
|
+
minitest (5.22.3)
|
10
27
|
rake (12.3.3)
|
11
28
|
rspec (3.11.0)
|
12
29
|
rspec-core (~> 3.11.0)
|
@@ -21,6 +38,14 @@ GEM
|
|
21
38
|
diff-lcs (>= 1.2.0, < 2.0)
|
22
39
|
rspec-support (~> 3.11.0)
|
23
40
|
rspec-support (3.11.0)
|
41
|
+
sqlite3 (1.7.3)
|
42
|
+
mini_portile2 (~> 2.8.0)
|
43
|
+
temping (4.1.1)
|
44
|
+
activerecord (>= 6.0, < 7.2)
|
45
|
+
activesupport (>= 6.0, < 7.2)
|
46
|
+
tzinfo (2.0.6)
|
47
|
+
concurrent-ruby (~> 1.0)
|
48
|
+
zeitwerk (2.6.13)
|
24
49
|
|
25
50
|
PLATFORMS
|
26
51
|
ruby
|
@@ -29,6 +54,8 @@ DEPENDENCIES
|
|
29
54
|
rake (~> 12.0)
|
30
55
|
rich_enums!
|
31
56
|
rspec (~> 3.0)
|
57
|
+
sqlite3 (~> 1.4)
|
58
|
+
temping (~> 4.1)
|
32
59
|
|
33
60
|
BUNDLED WITH
|
34
61
|
2.4.15
|
data/lib/rich_enums/version.rb
CHANGED
data/lib/rich_enums.rb
CHANGED
@@ -38,22 +38,30 @@ module RichEnums
|
|
38
38
|
# e.learner_payment_path_name --> "P.O. / Check" -> our custom method that returns the string/description
|
39
39
|
# TODO: explore if enum options in Array format instead of Hash format will need to be handled
|
40
40
|
|
41
|
-
|
41
|
+
unless column_symbol_value_string_options.is_a? Hash
|
42
|
+
raise RichEnums::Error
|
43
|
+
end
|
44
|
+
if column_symbol_value_string_options.keys.count.zero?
|
45
|
+
raise RichEnums::Error
|
46
|
+
end
|
42
47
|
|
43
48
|
# extract out the column
|
44
49
|
column = column_symbol_value_string_options.keys.first
|
45
50
|
|
46
51
|
# extract the Enum options for the column which may be in standard enum hash format or our custom format
|
47
52
|
symbol_value_string = column_symbol_value_string_options.delete(column)
|
53
|
+
|
54
|
+
raise RichEnums::Error unless symbol_value_string.is_a? Hash
|
55
|
+
|
48
56
|
# at this point, only the enum options like _prefix etc. are present in the original argument
|
49
57
|
options = column_symbol_value_string_options
|
50
58
|
# we allow for an option called alt: to allow the users to tag the alternate mapping. Defaults to 'alt_name'
|
51
|
-
alt = options.delete(:alt) || 'alt_name'
|
59
|
+
alt = options.delete(:alt).to_s || 'alt_name'
|
52
60
|
|
53
61
|
# create two hashes from the provided input - 1 to be used to define the enum and the other for the name map
|
54
62
|
split_hash = symbol_value_string.each_with_object({ for_enum: {}, for_display: {} }) do |(symbol, value_string), obj|
|
55
|
-
obj[:for_enum][symbol] = value_string.is_a?(Array) ? value_string
|
56
|
-
obj[:for_display][symbol.to_s] = value_string.is_a?(Array) ? value_string
|
63
|
+
obj[:for_enum][symbol] = value_string.is_a?(Array) ? value_string[0] : value_string
|
64
|
+
obj[:for_display][symbol.to_s] = value_string.is_a?(Array) ? value_string[1] : symbol.to_s
|
57
65
|
end
|
58
66
|
|
59
67
|
# 1. Define the Enum
|
data/rich_enums.gemspec
CHANGED
@@ -22,6 +22,9 @@ DESC
|
|
22
22
|
spec.metadata['source_code_uri'] = 'https://github.com/betacraft/rich_enums'
|
23
23
|
spec.metadata['changelog_uri'] = 'https://github.com/betacraft/rich_enums/README.md'
|
24
24
|
|
25
|
+
spec.add_development_dependency 'sqlite3', '~> 1.4'
|
26
|
+
spec.add_development_dependency 'temping', '~> 4.1'
|
27
|
+
spec.add_runtime_dependency 'activerecord', '>= 6.1', '< 8.0'
|
25
28
|
# Specify which files should be added to the gem when it is released.
|
26
29
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
27
30
|
spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rich_enums
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- harunkumars
|
@@ -9,8 +9,56 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
13
|
-
dependencies:
|
12
|
+
date: 2024-04-29 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: sqlite3
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - "~>"
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '1.4'
|
21
|
+
type: :development
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - "~>"
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '1.4'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: temping
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - "~>"
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '4.1'
|
35
|
+
type: :development
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - "~>"
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '4.1'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: activerecord
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ">="
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '6.1'
|
49
|
+
- - "<"
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
version: '8.0'
|
52
|
+
type: :runtime
|
53
|
+
prerelease: false
|
54
|
+
version_requirements: !ruby/object:Gem::Requirement
|
55
|
+
requirements:
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
version: '6.1'
|
59
|
+
- - "<"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '8.0'
|
14
62
|
description: "With Enums we are able to map a label to a value on the database. \nUse
|
15
63
|
Rich Enum if you need to maintain an additional mapping at the point of enum definition,
|
16
64
|
\nfor e.g. for presentation purposes or for mapping to a different value on a different
|
@@ -22,8 +70,10 @@ executables: []
|
|
22
70
|
extensions: []
|
23
71
|
extra_rdoc_files: []
|
24
72
|
files:
|
73
|
+
- ".github/workflows/ci.yml"
|
25
74
|
- ".gitignore"
|
26
75
|
- ".rspec"
|
76
|
+
- ".ruby-version"
|
27
77
|
- ".travis.yml"
|
28
78
|
- CODE_OF_CONDUCT.md
|
29
79
|
- Gemfile
|
@@ -33,6 +83,9 @@ files:
|
|
33
83
|
- Rakefile
|
34
84
|
- bin/console
|
35
85
|
- bin/setup
|
86
|
+
- gemfiles/activerecord_6.1.gemfile
|
87
|
+
- gemfiles/activerecord_7.0.gemfile
|
88
|
+
- gemfiles/activerecord_7.1.gemfile
|
36
89
|
- lib/rich_enums.rb
|
37
90
|
- lib/rich_enums/version.rb
|
38
91
|
- rich_enums.gemspec
|