Sha256: 982cbb1c17305b1b2e965b0ad303c6da1c11e075f38b8695e939fb14ee0607e0
Contents?: true
Size: 866 Bytes
Versions: 12
Compression:
Stored size: 866 Bytes
Contents
class Code class Node class OrKeyword < Node OR_KEYWORD = "or" AND_KEYWORD = "and" def initialize(or_keyword) @first = ::Code::Node::Statement.new(or_keyword.fetch(:first)) @rest = or_keyword.fetch(:rest) @rest.map! do |operation| ::Code::Node::Operation::Operation.new(operation) end end def evaluate(**args) object = @first.evaluate(**args) @rest.each do |operation| if operation.operator == OR_KEYWORD return object if object.truthy? elsif operation.operator == AND_KEYWORD return object unless object.truthy? else raise NotImplementedError.new(operation.operator.inspect) end object = operation.statement.evaluate(**args) end object end end end end
Version data entries
12 entries across 12 versions & 2 rubygems