power_converter 0.0.3 → 0.0.4
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/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:
|