Class: Code::Node::Name
- Inherits:
-
Code::Node
- Object
- Code::Node
- Code::Node::Name
- Defined in:
- lib/code/node/name.rb
Instance Method Summary collapse
- #evaluate(**args) ⇒ Object
-
#initialize(name) ⇒ Name
constructor
A new instance of Name.
Constructor Details
#initialize(name) ⇒ Name
Returns a new instance of Name.
4 5 6 |
# File 'lib/code/node/name.rb', line 4 def initialize(name) @name = name end |
Instance Method Details
#evaluate(**args) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/code/node/name.rb', line 8 def evaluate(**args) context = args.fetch(:context) arguments = args.fetch(:arguments, []) object = args.fetch(:object, nil) io = args.fetch(:io) if object object.call( context: context, operator: name, arguments: arguments, io: io, ) elsif context.key?(name) object = context[name] if object.is_a?(::Code::Object::Function) object.call( context: context, operator: nil, arguments: arguments, io: io, ) else object end elsif name == "puts" arguments.each { |argument| io.puts argument.value } ::Code::Object::Nothing.new else raise ::Code::Error::Undefined.new("#{name} undefined") end end |