active_module 0.1.4 → 0.1.5

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: 6a8c9cd4a4af05550d638422b06fe34b22d88511fb899c0cb6385177c1ba38a3
4
- data.tar.gz: 11cbe4422096b9a3f961d401872d79e9bea9b4e2f3d60432ecb261284c1578e6
3
+ metadata.gz: 31dff5b0baa89fa4624fc7b974f5261d483cdaf48f7b7fe9a5d1f0a7f256d7fa
4
+ data.tar.gz: fbb6655e9de6c118ee99e199ed4ce78441cd55d151d839f7bf0040fa48519df5
5
5
  SHA512:
6
- metadata.gz: e565d8b750e9841d6cbd3dd266f70644be738c4dbe04a5bf02812ce4a038bca852a80b1c1e0ddbb5c936e938b5aaac818c01ecaea77b949be42c7941e97317ec
7
- data.tar.gz: 2612bcb5734b38aeb4182a1c46c1f9e50234a96ea2dab4acb6411b59a4d036a3fd287a3721d73232dcbd1b4c64ad369e3f4c74bfcb81be40cdf7d1524c77e0c5
6
+ metadata.gz: 0ed009054605141713db46f3d768dc044f42d5bc8ac479ae8004408eaa9ad4657694d661299ba600868975bf7f254da00315d64564d1dfcd96a942ad6622dada
7
+ data.tar.gz: 4053a0f71c9b2b8db76c1f7637a989646c7b8ad531fa5da680c9795e61ec967fe9db13c74b566350039c13cdaf16d1a0c80f58e04944650e5e2c2f78d73a017f
data/README.md CHANGED
@@ -109,6 +109,20 @@ my_ar_object.module_field = "MyClass::MyModule1"
109
109
  my_ar_object.module_field #=> MyARObject::MyClass::MyModule::Module
110
110
  ```
111
111
 
112
+ ### Comparing modules with strings and symbols
113
+
114
+ In order to compare modules with Strings or Symbols you'll have to use the `ActiveModule::Comparison`
115
+ refinement. This refinement adds the method `Module#=~` to the `Module` class, but this change is
116
+ only available within the namespace that includes the refinement.
117
+
118
+ ```ruby
119
+ module YourClassOrModuleThatWantsToCompare
120
+ using ActiveModule::Comparison
121
+ def method_that_compares
122
+ my_ar_object.module_field =~ :MyModule1
123
+ end
124
+ end
125
+
112
126
  ## Examples
113
127
 
114
128
  ### Strategy Pattern (composition-based polymorphism)
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActiveModule
4
+ module Comparison
5
+ refine ::Module do
6
+ using ActiveModule::ModuleRefinement
7
+
8
+ def =~(other)
9
+ case other
10
+ when nil
11
+ false
12
+ when ::Module
13
+ super(other)
14
+ when ::String
15
+ (@possible_names ||= possible_names).include?(other)
16
+ when ::Symbol
17
+ (@possible_names ||= possible_names).include?(other.to_s)
18
+ else
19
+ false
20
+ end
21
+ end
22
+ end
23
+
24
+ using self
25
+
26
+ def self.compare(module1, module2)
27
+ module1 =~ module2
28
+ end
29
+ end
30
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActiveModule
4
- VERSION = "0.1.4"
4
+ VERSION = "0.1.5"
5
5
  end
data/lib/active_module.rb CHANGED
@@ -4,6 +4,7 @@ require_relative "active_module/version"
4
4
  require_relative "active_module/base"
5
5
  require_relative "active_module/invalid_module_value"
6
6
  require_relative "active_module/register"
7
+ require_relative "active_module/comparison"
7
8
  require "active_module/railtie" if defined?(Rails::Railtie)
8
9
 
9
10
  module ActiveModule
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_module
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pedro Rolo
@@ -58,6 +58,7 @@ files:
58
58
  - Rakefile
59
59
  - lib/active_module.rb
60
60
  - lib/active_module/base.rb
61
+ - lib/active_module/comparison.rb
61
62
  - lib/active_module/invalid_module_value.rb
62
63
  - lib/active_module/module_refinement.rb
63
64
  - lib/active_module/modules_index.rb