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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d9d8952fea1c21107106addd2a2dc5f7d02348d2c0c3d99210d892c08e5b9b5b
4
- data.tar.gz: 48ce6bb0b1b97a0fba166605469c0247143ea0f217ed2e5348c1757d124719d2
3
+ metadata.gz: 52a056fc46a1cb6934d9dc11ab2717f4babb8b32ee2ccf6a85ab97b147517152
4
+ data.tar.gz: b1d671075bbebd910032795752b42da8a94123c7f245f8c7f4cfb99a874eae1c
5
5
  SHA512:
6
- metadata.gz: cb50aeafc28d33cc7cb09a69ec946581b0bd9a6560c29f08511846dc88050ddbb69bcc12a0fc0841881d2b46c6ff2afd04cd4962ccb00dabf303eafe78ebdf74
7
- data.tar.gz: cea3d418bbc42e7789c025f2400c67a6587898282360b8673aefa716e6d2331b0d224e8dffbdb91b385bda5165828804704525d0bc56ffb7ca326dca39714060
6
+ metadata.gz: 76715e583a3cff76e5cd00da9c88060a0fe38d9d46e8899ba987014483a968ac8a678ac66f3847263021c7851d51e45e709a349fe6650fb369f5d347f8f2e0f6
7
+ data.tar.gz: 3ffce4b7a7830e2744cc1aed9f80c908646658733eea38ae312188262713b0ac9ef37fe868dd2d1cbc5f0572c1a096aab90d55b467457b0b16875d03d463f0f5
data/___release.md ADDED
@@ -0,0 +1,9 @@
1
+ Enum Fields
2
+
3
+ 1. Update version.rb
4
+ 2. Commit "Bump version to 0.0.X"
5
+ 3. `rake release`
6
+ Even if API error comes, just do:
7
+ 4. And then just `gem push pkg/enum_fields-0.0.5.gem`
8
+
9
+ gem push pkg/enum_fields-0.2.0.gem
@@ -37,23 +37,46 @@ module EnumFields
37
37
  when Hash
38
38
  input.with_indifferent_access
39
39
  when Array
40
- input.to_h do |value|
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) }
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EnumFields
4
- VERSION = "0.2.0"
4
+ VERSION = "0.2.1"
5
5
  end
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.0
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.3
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