active_module 0.1.5 → 0.1.6
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/README.md +34 -3
- data/lib/active_module/comparison.rb +1 -5
- data/lib/active_module/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1473d88ff3d53e8948747dc7827ad2836478a0c6db139c54e11f2a96df58e758
|
4
|
+
data.tar.gz: 045e7b7689734cf7c98654ec1283a747063d1defba78c47e3efbd115c5046675
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 67321659d14a0aff48e5917e2242d42773dbc6f86a8fa8cef935956bbda4717858128a405264ff39cde9bd06e223ee266b08a4f4b07a62f600ee3b6de8c54714
|
7
|
+
data.tar.gz: bf7305eabb2c4d81e0514542c7172e440aaf5b17ea5d4bf732705100f8a92cc01f772aae9b3ba0f864c575f1040626d7730f5831d7d7889aec0ed88980f5271a
|
data/README.md
CHANGED
@@ -17,6 +17,35 @@ This is a very generic mechanism that enables many possible utilizations, for in
|
|
17
17
|
|
18
18
|
You can find examples of these in [Usage -> Examples :](#Examples)
|
19
19
|
|
20
|
+
## TL;DR
|
21
|
+
|
22
|
+
Declare module attributes like this:
|
23
|
+
```ruby
|
24
|
+
class MyARObject < ActiveRecord::Base
|
25
|
+
attribute :module_field,
|
26
|
+
:active_module,
|
27
|
+
possible_modules: [MyModule1, MyClass, Nested::Module]
|
28
|
+
end
|
29
|
+
```
|
30
|
+
|
31
|
+
Assign them like this:
|
32
|
+
```ruby
|
33
|
+
object.module_field = Nested::Module
|
34
|
+
object.module_field = :Module
|
35
|
+
object.module_field = "Module"
|
36
|
+
object.module_field #=> Nested::Module:Module
|
37
|
+
```
|
38
|
+
|
39
|
+
And compare them like this (optional):
|
40
|
+
```ruby
|
41
|
+
module MyNameSpace
|
42
|
+
using ActiveModule::Comparison
|
43
|
+
|
44
|
+
object.module_field =~ :Module1
|
45
|
+
object.module_field =~ "Module1"
|
46
|
+
end
|
47
|
+
```
|
48
|
+
|
20
49
|
## Installation
|
21
50
|
|
22
51
|
Add to your gemfile - and if you are using rails - that's all you need:
|
@@ -54,7 +83,7 @@ class MyARObject < ActiveRecord::Base
|
|
54
83
|
module MyModule1; end
|
55
84
|
module MyModule2; end
|
56
85
|
class MyClass;
|
57
|
-
module
|
86
|
+
module MyModule1; end
|
58
87
|
end
|
59
88
|
end
|
60
89
|
```
|
@@ -63,13 +92,13 @@ You can make the field refer to one of these modules/classes like this:
|
|
63
92
|
class MyARObject < ActiveRecord::Base
|
64
93
|
attribute :module_field,
|
65
94
|
:active_module,
|
66
|
-
possible_modules: [MyModule1, MyModule2, MyClass, MyClass::
|
95
|
+
possible_modules: [MyModule1, MyModule2, MyClass, MyClass::MyModule1]
|
67
96
|
end
|
68
97
|
```
|
69
98
|
And this is it! Easy!<br>
|
70
99
|
|
71
100
|
### Assigning and querying module attributes
|
72
|
-
Now you can use this attribute in many handy ways
|
101
|
+
Now you can use this attribute in many handy ways!
|
73
102
|
<br>
|
74
103
|
<br>
|
75
104
|
For instance, you may refer to it using module literals:
|
@@ -118,10 +147,12 @@ only available within the namespace that includes the refinement.
|
|
118
147
|
```ruby
|
119
148
|
module YourClassOrModuleThatWantsToCompare
|
120
149
|
using ActiveModule::Comparison
|
150
|
+
|
121
151
|
def method_that_compares
|
122
152
|
my_ar_object.module_field =~ :MyModule1
|
123
153
|
end
|
124
154
|
end
|
155
|
+
```
|
125
156
|
|
126
157
|
## Examples
|
127
158
|
|
@@ -7,16 +7,12 @@ module ActiveModule
|
|
7
7
|
|
8
8
|
def =~(other)
|
9
9
|
case other
|
10
|
-
when nil
|
11
|
-
false
|
12
|
-
when ::Module
|
13
|
-
super(other)
|
14
10
|
when ::String
|
15
11
|
(@possible_names ||= possible_names).include?(other)
|
16
12
|
when ::Symbol
|
17
13
|
(@possible_names ||= possible_names).include?(other.to_s)
|
18
14
|
else
|
19
|
-
|
15
|
+
self == other
|
20
16
|
end
|
21
17
|
end
|
22
18
|
end
|