Class: Hivemind::UniversalAST::Attribute

Inherits:
Element
  • Object
show all
Defined in:
lib/hivemind/universal_ast.rb,
lib/hivemind/vm.rb

Instance Method Summary collapse

Methods inherited from Element

fields, #offset

Instance Method Details

#render(depth = 0) ⇒ Object



47
48
49
# File 'lib/hivemind/universal_ast.rb', line 47

def render(depth = 0)
  "#{offset(depth)}Attribute : #{@object.render} #{@label.render}"
end

#run(env) ⇒ Object



92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# File 'lib/hivemind/vm.rb', line 92

def run(env)
  obj = @object.run(env)
  env.current_self = obj

  if obj.respond_to?(:data) 
    if obj.data.key? @label.value
      obj.data[@label.value]
    else
      method = obj.klass.dispatch_method(@label.value)
      if method
        method
      else
        raise HivemindAccessError.new("No #{@label.value} in obj")
      end
    end
  else
    obj.methods[@label.value]
  end
end