module TogoStanza::Stanza::ExpressionMap::Macro

Public Instance Methods

define_expression_map(name) click to toggle source
# File lib/togostanza/stanza/expression_map.rb, line 9
def define_expression_map(name)
  class_attribute name

  __send__ "#{name}=", ExpressionMap.new

  define_singleton_method name.to_s.singularize do |key, val = nil, &block|
    raise ArgumentError, 'You must specify exactly one of either a value or block' unless [val, block].one?(&:nil?)

    __send__ "#{name}=", __send__(name).merge(key => block || val)
  end
end