mobj 1.7.3 → 1.7.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.
Files changed (2) hide show
  1. data/lib/mobj.rb +29 -1
  2. metadata +3 -2
data/lib/mobj.rb CHANGED
@@ -7,6 +7,7 @@ module Mobj
7
7
  end
8
8
  def null!() self end
9
9
  def nil!() self end
10
+ def itself() self end
10
11
  end
11
12
 
12
13
  class ::Fixnum
@@ -41,7 +42,7 @@ module Mobj
41
42
  end
42
43
  def attempt(value=:root)
43
44
  Forwarder.new do |name, *args, &block|
44
- if self.methods(true).include? name
45
+ if self.methods(true).include? name ##//use respond to?
45
46
  self.__send__(name, *args, &block)
46
47
  elsif value.is_a?(Proc)
47
48
  value.call([name] + args, &block)
@@ -172,6 +173,33 @@ module Mobj
172
173
  end
173
174
 
174
175
  module HashEx
176
+
177
+ def symvert(key_converter = :itself, value_converter = key_converter)
178
+ each.with_object({}) do |(k,v),o|
179
+ key = if key_converter.is_a?(Proc)
180
+ key_converter.call(k, v)
181
+ elsif k.respond_to?(key_converter.sym)
182
+ k.__send__(key_converter.sym)
183
+ else
184
+ k
185
+ end
186
+
187
+ value = if value_converter.is_a?(Proc)
188
+ value_converter.arity == 1 ? value_converter.call(v) : value_converter.call(k, v)
189
+ elsif v.respond_to?(value_converter.sym)
190
+ v.__send__(value_converter.sym)
191
+ else
192
+ v
193
+ end
194
+
195
+ o[key] = value
196
+ end
197
+ end
198
+
199
+ def symvert!(key_converter = :itself, value_converter = key_converter)
200
+ replace(symvert(key_converter, value_converter))
201
+ end
202
+
175
203
  def method_missing(name, *args, &block)
176
204
  if name[-1] == '=' && args.size == 1
177
205
  key = name[0...-1].sym
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mobj
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.3
4
+ version: 1.7.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-07 00:00:00.000000000 Z
12
+ date: 2012-12-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
@@ -92,3 +92,4 @@ signing_key:
92
92
  specification_version: 3
93
93
  summary: Helpful utils and extentions
94
94
  test_files: []
95
+ has_rdoc: