active_module 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: 743570de05b5e510d10408fe3b95eaab2789e4432311538bda978bf52d893355
4
- data.tar.gz: 72057e516212b80260b45fe9b2bd5c97530fc5f6ceaab42c0578d48581bf3b50
3
+ metadata.gz: e84ab7b0e8dd2d33b4eb6dc9ade177bb57361eb23bd62aa774d5e57fab95b831
4
+ data.tar.gz: 02d82ee773888a155453d8765044661bffa180fc0aedf5465a034cc5b34ad03e
5
5
  SHA512:
6
- metadata.gz: 7c4ee2bc7ae24fb246f9744f161088222af6c02d85c99d62e39f196257b90d24abcea21de0217ea578d8755acfd61bf4d078d9f7290f3cc0cc28110bca893cd9
7
- data.tar.gz: '02582a7cbe08a616e35828e0537bacf41714cd4cfae0d5272188fb9feb8aa970c44670391b1cef6926781ebe53f28ce966a0eeda46d32e2149be22370cf19daf'
6
+ metadata.gz: 28f2e81b006c7928e176f8ff91491601fb21ac77223c5096905d703cb54b695ea5e463972d4102f3dd6ca119b2e4df032cfc3531f191d109fd1e6270436d93f9
7
+ data.tar.gz: e06b59e2b248d106e4928cd9d69a6c665d6022d11bba45c258a708b8e4e1a48d7fb29db934fc57ee32f7aaf65491fa6db9aa552c7ccda578b6a7167339e8c05d
data/README.md CHANGED
@@ -1,6 +1,12 @@
1
1
 
2
- # active_module
3
- ![alt text](https://img.shields.io/badge/coverage-100%25-brightgreen)
2
+ # active_module
3
+ [![Gem Version](https://img.shields.io/gem/v/active_module)](https://rubygems.org/gems/active_module)
4
+ [![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](https://opensource.org/licenses/MIT)
5
+ [![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/pedrorolo/active_module/main.yml)](https://github.com/pedrorolo/active_module/blob/main/Rakefile)
6
+ [![100% Coverage](https://img.shields.io/badge/coverage-100%25-brightgreen)](https://github.com/pedrorolo/active_module/blob/main/spec/spec_helper.rb)
7
+ [![Gem Total Downloads](https://img.shields.io/gem/dt/active_module?style=flat)](https://bestgems.org/gems/active_module)
8
+
9
+
4
10
 
5
11
  #### *Modules and Classes as first-class active record values!*
6
12
 
@@ -64,7 +70,7 @@ end
64
70
  Add to your gemfile - and if you are using rails - that's all you need:
65
71
 
66
72
  ```ruby
67
- gem 'active_module', "~> 0.2"
73
+ gem 'active_module', "~> 0.3"
68
74
  ```
69
75
 
70
76
  If you are not using rails, just issue this command after loading active record
@@ -7,24 +7,20 @@ module ActiveModule
7
7
  class Base < ActiveModel::Type::Value
8
8
  attr_reader :possible_modules, :mapping
9
9
 
10
- def initialize(possible_modules_or_mapping = nil,
10
+ def initialize(possible_modules_or_mapping = [],
11
11
  possible_modules: [],
12
12
  mapping: {})
13
- @possible_modules =
14
- if possible_modules_or_mapping.is_a?(Array)
15
- possible_modules_or_mapping + possible_modules
16
- else
17
- possible_modules
18
- end
19
- mapping_arg = if possible_modules_or_mapping.is_a?(Hash)
20
- possible_modules_or_mapping.merge(mapping)
21
- else
22
- mapping
23
- end
24
- @mapping =
25
- @possible_modules.each_with_object(mapping_arg.dup) do |mod, result|
26
- result[mod] ||= mod.name
27
- end
13
+ if possible_modules_or_mapping.is_a?(Array)
14
+ @possible_modules =
15
+ (possible_modules_or_mapping + possible_modules + mapping.keys).uniq
16
+ @mapping = default_mapping.merge(mapping)
17
+ else
18
+ @possible_modules =
19
+ (possible_modules_or_mapping.keys + possible_modules + mapping.keys)
20
+ .uniq
21
+ @mapping = default_mapping.merge(possible_modules_or_mapping)
22
+ .merge(mapping)
23
+ end
28
24
  super()
29
25
  end
30
26
 
@@ -104,5 +100,9 @@ module ActiveModule
104
100
  def from_db
105
101
  @from_db ||= mapping.invert
106
102
  end
103
+
104
+ def default_mapping
105
+ @possible_modules.index_by(&:name).invert
106
+ end
107
107
  end
108
108
  end
@@ -6,6 +6,8 @@ module ActiveModule
6
6
 
7
7
  def call(type_symbol = :active_module)
8
8
  ActiveModel::Type.register(type_symbol, ActiveModule::Base)
9
+ return unless defined?(ActiveRecord::Type)
10
+
9
11
  ActiveRecord::Type.register(type_symbol, ActiveModule::Base)
10
12
  end
11
13
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActiveModule
4
- VERSION = "0.2.0"
4
+ VERSION = "0.3.0"
5
5
  end
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_module
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
  - Pedro Rolo
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-12-22 00:00:00.000000000 Z
11
+ date: 2024-12-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: activerecord
14
+ name: activemodel
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "<"