Sha256: b1ed39538d10846147a6b5cb70fd17fbac440f713f0aa253e827bd972197c924
Contents?: true
Size: 990 Bytes
Versions: 17
Compression:
Stored size: 990 Bytes
Contents
require_relative './operation' module Dentaku module AST class Combinator < Operation def initialize(*) super unless valid_node?(left) raise NodeError.new(:logical, left.type, :left), "#{self.class} requires logical operands" end unless valid_node?(right) raise NodeError.new(:logical, right.type, :right), "#{self.class} requires logical operands" end end def type :logical end private def valid_node?(node) node && (node.dependencies.any? || node.type == :logical) end end class And < Combinator def operator :and end def value(context = {}) left.value(context) && right.value(context) end end class Or < Combinator def operator :or end def value(context = {}) left.value(context) || right.value(context) end end end end
Version data entries
17 entries across 17 versions & 2 rubygems