Sha256: 66b664983f24656d6d6264e5e61c136a68bdd56767e403ddfede4488252057dd
Contents?: true
Size: 1.39 KB
Versions: 4
Compression:
Stored size: 1.39 KB
Contents
class Code class Node class Name < Node def initialize(name) @name = name end 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 elsif name == "print" arguments.each { |argument| io.print argument.value } ::Code::Object::Nothing.new elsif name == "context" return ::Code::Object::Nothing.new if arguments.size != 1 context[arguments.first&.value] || ::Code::Object::Nothing.new else raise ::Code::Error::Undefined.new("#{name} undefined") end end private def name ::Code::Object::String.new(@name.to_s) end end end end
Version data entries
4 entries across 4 versions & 2 rubygems
Version | Path |
---|---|
template-ruby-0.3.1 | lib/code/node/name.rb |
code-ruby-0.3.1 | lib/code/node/name.rb |
template-ruby-0.3.0 | lib/code/node/name.rb |
code-ruby-0.3.0 | lib/code/node/name.rb |