class Emfrp::Syntax

Public Class Methods

new(hash, hash2 = {}) click to toggle source
# File lib/emfrp/syntax.rb, line 3
def initialize(hash, hash2 = {})
  self[:class] = self.class
  self.merge!(hash)
  self.merge!(hash2)
  self[:class] = self.class
end

Public Instance Methods

[](key) click to toggle source
# File lib/emfrp/syntax.rb, line 10
def [](key)
  if self.has_key?(key)
    self.fetch(key)
  else
    pp self
    raise "unexist key #{key}"
  end
end
deep_copy(x=self) click to toggle source
# File lib/emfrp/syntax.rb, line 29
def deep_copy(x=self)
  case x
  when Syntax
    x.class.new(Hash[x.map{|k, v| [k, deep_copy(v)]}])
  when Array
    x.map{|x| deep_copy(x)}
  else
    x
  end
end
traverse_all_syntax(target=self, &block) click to toggle source
# File lib/emfrp/syntax.rb, line 19
def traverse_all_syntax(target=self, &block)
  case target
  when Syntax
    block.call(target)
    traverse_all_syntax(target.values, &block)
  when Array
    target.each{|e| traverse_all_syntax(e, &block)}
  end
end