module Mobj::HashEx
Public Instance Methods
apply!(obj)
click to toggle source
# File lib/ext/hash.rb, line 14 def apply!(obj) map do |key, value| obj.send(key, *value) end end
filled?()
click to toggle source
# File lib/ext/hash.rb, line 7 def filled?() !mt? end
ki(name)
click to toggle source
# File lib/ext/hash.rb, line 20 def ki(name) name.to_s[/(.*?)[?!=]?$/, 1] end
ki?(name)
click to toggle source
# File lib/ext/hash.rb, line 24 def ki?(name) [name.sym, name.to_s, ki(name).sym, ki(name).to_s].any? { |k| key?(k) } end
method_missing(name, *args, &block)
click to toggle source
Calls superclass method
# File lib/ext/hash.rb, line 54 def method_missing(name, *args, &block) value = if name[-1] == '=' && args.size == 1 key = name[0...-1].sym key = key.to_s if key?(key.to_s) self[key] = args.sequester! elsif name[-1] == '?' key = name[0...-1].sym !!self[key, key.to_s] elsif name[-1] == '!' key = name[0...-1].sym val = self[key.sym] || self[key.to_s] if !val && (block || args.unempty?) self[key] = val = (block ? block.call(*args) : args.sequester!) end super unless val else self[name.sym] || self[name.to_s] end value ||= args.sequester! unless args.empty? return block ? block[value] : value end
symvert(key_converter = :itself, value_converter = key_converter)
click to toggle source
# File lib/ext/hash.rb, line 28 def symvert(key_converter = :itself, value_converter = key_converter) each.with_object({}) do |(k, v), o| key = if key_converter.p? key_converter.call(k, v) elsif k.respond_to?(key_converter.sym) k.__send__(key_converter.sym) else k end value = if value_converter.p? value_converter.arity == 1 ? value_converter.call(v) : value_converter.call(k, v) elsif v.respond_to?(value_converter.sym) v.__send__(value_converter.sym) else v end o[key] = value end end
symvert!(key_converter = :itself, value_converter = key_converter)
click to toggle source
# File lib/ext/hash.rb, line 50 def symvert!(key_converter = :itself, value_converter = key_converter) replace(symvert(key_converter, value_converter)) end