enum_fields 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/___release.md +9 -0
- data/lib/enum_fields/definition.rb +27 -4
- data/lib/enum_fields/version.rb +1 -1
- metadata +3 -3
- data/CHANGELOG.md +0 -21
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 52a056fc46a1cb6934d9dc11ab2717f4babb8b32ee2ccf6a85ab97b147517152
|
|
4
|
+
data.tar.gz: b1d671075bbebd910032795752b42da8a94123c7f245f8c7f4cfb99a874eae1c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 76715e583a3cff76e5cd00da9c88060a0fe38d9d46e8899ba987014483a968ac8a678ac66f3847263021c7851d51e45e709a349fe6650fb369f5d347f8f2e0f6
|
|
7
|
+
data.tar.gz: 3ffce4b7a7830e2744cc1aed9f80c908646658733eea38ae312188262713b0ac9ef37fe868dd2d1cbc5f0572c1a096aab90d55b467457b0b16875d03d463f0f5
|
data/___release.md
ADDED
|
@@ -37,23 +37,46 @@ module EnumFields
|
|
|
37
37
|
when Hash
|
|
38
38
|
input.with_indifferent_access
|
|
39
39
|
when Array
|
|
40
|
-
input
|
|
41
|
-
[value, { value: value }]
|
|
42
|
-
end.with_indifferent_access
|
|
40
|
+
build_from_array(input)
|
|
43
41
|
else
|
|
44
42
|
raise InvalidDefinitionsError, "Invalid definitions format: #{input.class}"
|
|
45
43
|
end
|
|
46
44
|
end
|
|
47
45
|
|
|
48
46
|
output.transform_values do |metadata|
|
|
47
|
+
metadata = metadata.with_indifferent_access
|
|
48
|
+
|
|
49
49
|
if metadata.key?(:label)
|
|
50
50
|
metadata
|
|
51
51
|
else
|
|
52
|
-
metadata.merge(label: metadata[:value])
|
|
52
|
+
metadata.merge(label: metadata[:value].to_s)
|
|
53
53
|
end
|
|
54
54
|
end
|
|
55
55
|
end
|
|
56
56
|
|
|
57
|
+
def build_from_array(input)
|
|
58
|
+
input.to_h do |element|
|
|
59
|
+
metadata = normalize_item(element)
|
|
60
|
+
|
|
61
|
+
[normalize_key(metadata[:value]), metadata]
|
|
62
|
+
end.with_indifferent_access
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def normalize_item(item)
|
|
66
|
+
if item.is_a?(Hash)
|
|
67
|
+
item.with_indifferent_access
|
|
68
|
+
else
|
|
69
|
+
{
|
|
70
|
+
value: item,
|
|
71
|
+
label: item.to_s,
|
|
72
|
+
}
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def normalize_key(value)
|
|
77
|
+
value.to_s.to_sym
|
|
78
|
+
end
|
|
79
|
+
|
|
57
80
|
def valid_hash?(data)
|
|
58
81
|
return false unless data.is_a?(HashWithIndifferentAccess)
|
|
59
82
|
return false unless data.values.all? { |metadata| metadata.key?(:value) }
|
data/lib/enum_fields/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: enum_fields
|
|
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
|
- Kinnell Shah
|
|
@@ -60,9 +60,9 @@ executables: []
|
|
|
60
60
|
extensions: []
|
|
61
61
|
extra_rdoc_files: []
|
|
62
62
|
files:
|
|
63
|
-
- CHANGELOG.md
|
|
64
63
|
- LICENSE
|
|
65
64
|
- README.md
|
|
65
|
+
- ___release.md
|
|
66
66
|
- lib/enum_fields.rb
|
|
67
67
|
- lib/enum_fields/base.rb
|
|
68
68
|
- lib/enum_fields/definition.rb
|
|
@@ -95,7 +95,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
95
95
|
- !ruby/object:Gem::Version
|
|
96
96
|
version: '2.0'
|
|
97
97
|
requirements: []
|
|
98
|
-
rubygems_version: 4.0.
|
|
98
|
+
rubygems_version: 4.0.7
|
|
99
99
|
specification_version: 4
|
|
100
100
|
summary: Enhanced enum-like fields for ActiveRecord models with metadata support
|
|
101
101
|
test_files: []
|
data/CHANGELOG.md
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
## [0.0.1] - 2025-11-17
|
|
4
|
-
|
|
5
|
-
### Added
|
|
6
|
-
|
|
7
|
-
- Initial release of EnumFields gem
|
|
8
|
-
- Support for enum-like fields with metadata properties
|
|
9
|
-
- Array and Hash definition formats
|
|
10
|
-
- Automatic generation of:
|
|
11
|
-
- Class methods (`<accessor>s`, `<accessor>s_count`, `<accessor>_values`, `<accessor>_options`)
|
|
12
|
-
- Instance getter/setter methods (when accessor differs from column)
|
|
13
|
-
- Metadata accessor methods (`<accessor>_metadata`)
|
|
14
|
-
- Property accessor methods for all defined properties (`<accessor>_<property>`)
|
|
15
|
-
- Inquiry methods (`<key>_<accessor>?`)
|
|
16
|
-
- Scopes (`<key>_<accessor>`)
|
|
17
|
-
- Validations (inclusion with `allow_nil: true`)
|
|
18
|
-
- Custom column mapping support via `column:` option
|
|
19
|
-
- Dynamic property method generation for custom properties
|
|
20
|
-
|
|
21
|
-
[0.0.1]: https://github.com/kinnell/enum_fields/releases/tag/v0.0.1
|