Sha256: 123f3fb6b4ce166002f53b9850aee84d214692bf9aefd368dc54d71b58b8e9bb

Contents?: true

Size: 716 Bytes

Versions: 3

Compression:

Stored size: 716 Bytes

Contents

module Wukong
  module AndPig
    PIG_SYMBOLS = { }
    mattr_accessor :anon_var_idx
    self.anon_var_idx = 0
  end
end


Symbol.class_eval do
  def << relation
    case
    when relation.is_a?(Wukong::AndPig::PigVar)
      Wukong::AndPig::PigVar.new_relation(self, relation)
    when relation.is_a?(Symbol) && (pig_var = Wukong::AndPig::PIG_SYMBOLS[relation])
      Wukong::AndPig::PigVar.new_relation(self, pig_var)
    else raise "Don't know how to pigify RHS #{relation.inspect}"
    end
  end

  def method_missing method, *args
    pig_var = Wukong::AndPig::PIG_SYMBOLS[self]
    if pig_var && pig_var.respond_to?(method)
      pig_var.send(method, *args)
    else
      super method, *args
    end
  end
end

Version data entries

3 entries across 3 versions & 2 rubygems

Version Path
mrflip-wukong-0.1.0 lib/wukong/and_pig/symbol.rb
wukong-0.1.4 lib/wukong/and_pig/symbol.rb
wukong-0.1.1 lib/wukong/and_pig/symbol.rb