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
Also aliased as: notempty?, noempty?, full?, unempty?
full?()
Alias for: filled?
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
noempty?()
Alias for: filled?
notempty?()
Alias for: filled?
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
unempty?()
Alias for: filled?