power_converter 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/power_converter.rb +37 -4
- data/lib/power_converter/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 231f3bafb26ecf2efc70db2d2338e588507e3b5e
|
4
|
+
data.tar.gz: 23559b89538e7c97be6c0e236195ed0ff10dec2b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f1d69e2b8ec68a7a1243a859275f27fee157d9f2ebf6c917aba19917cb9fb3a918084787a7f118bbaa6ff9388ee44765a1351585cf35a3fff1bea9c174f249e2
|
7
|
+
data.tar.gz: 405afa509040219845f92b70f3830d75714651c2fd2c4e559684967df4ddc188c97fd5252394f6217dc5b19d437a2b4fdebe746bb52a7eae019877457e38a8e4
|
data/lib/power_converter.rb
CHANGED
@@ -96,6 +96,26 @@ module PowerConverter
|
|
96
96
|
@defined_conversions[named_conversion.to_s] = converter
|
97
97
|
end
|
98
98
|
|
99
|
+
# @api public
|
100
|
+
# @since 0.0.4
|
101
|
+
#
|
102
|
+
# You may define an alias of a defined (or to be defined) power converter.
|
103
|
+
#
|
104
|
+
# @param aliased_named_conversion [String,Symbol] the name of the conversion that you
|
105
|
+
# are declaring.
|
106
|
+
# @param [Hash] options the options used to perform the conversion
|
107
|
+
# @option options [Symbol] :is_alias_of the aliased_named_conversion that we
|
108
|
+
# will be using for to perform the conversion.
|
109
|
+
#
|
110
|
+
# @return void
|
111
|
+
#
|
112
|
+
# @example
|
113
|
+
# PowerConverter.define_alias(:true_or_false, is_alias_of: :boolean)
|
114
|
+
def define_alias(aliased_named_conversion, options = {})
|
115
|
+
@aliased_conversions ||= {}
|
116
|
+
@aliased_conversions[aliased_named_conversion.to_s] = options.fetch(:is_alias_of)
|
117
|
+
end
|
118
|
+
|
99
119
|
# @api public
|
100
120
|
# @since 0.0.1
|
101
121
|
#
|
@@ -187,10 +207,13 @@ module PowerConverter
|
|
187
207
|
#
|
188
208
|
# @example
|
189
209
|
# PowerConverter.converter_for(:boolean).call(value)
|
210
|
+
#
|
211
|
+
# @note There are no protections for infinite alias loops.
|
190
212
|
def converter_for(named_conversion)
|
191
|
-
|
192
|
-
|
193
|
-
|
213
|
+
key = named_conversion.to_s
|
214
|
+
return defined_conversions[key] if defined_conversions.key?(key)
|
215
|
+
return converter_for(aliased_conversions[key]) if aliased_conversions.key?(key)
|
216
|
+
fail ConverterNotFoundError.new(named_conversion, defined_converter_names)
|
194
217
|
end
|
195
218
|
|
196
219
|
# @api public
|
@@ -201,7 +224,7 @@ module PowerConverter
|
|
201
224
|
#
|
202
225
|
# @return [Array] of the defined converter's names
|
203
226
|
def defined_converter_names
|
204
|
-
|
227
|
+
defined_conversions.keys + aliased_conversions.keys
|
205
228
|
end
|
206
229
|
|
207
230
|
# Useful for when you want to know if a method name is a valid conversion
|
@@ -273,4 +296,14 @@ module PowerConverter
|
|
273
296
|
end
|
274
297
|
end
|
275
298
|
private_class_method :respond_to_missing?
|
299
|
+
|
300
|
+
def defined_conversions
|
301
|
+
@defined_conversions || {}
|
302
|
+
end
|
303
|
+
private_class_method :defined_conversions
|
304
|
+
|
305
|
+
def aliased_conversions
|
306
|
+
@aliased_conversions || {}
|
307
|
+
end
|
308
|
+
private_class_method :aliased_conversions
|
276
309
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: power_converter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Friesen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-04-
|
11
|
+
date: 2015-04-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -126,8 +126,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
126
126
|
version: '0'
|
127
127
|
requirements: []
|
128
128
|
rubyforge_project:
|
129
|
-
rubygems_version: 2.4.
|
129
|
+
rubygems_version: 2.4.6
|
130
130
|
signing_key:
|
131
131
|
specification_version: 4
|
132
132
|
summary: A lightweight library to define object conversion methods/modules.
|
133
133
|
test_files: []
|
134
|
+
has_rdoc:
|