Sha256: 54ac1a1aae37c863672b1b9e47ee145be5adc2b5c9e6174887f665d43a49c122

Contents?: true

Size: 693 Bytes

Versions: 12

Compression:

Stored size: 693 Bytes

Contents

require_relative '../function'

module Dentaku
  module AST
    class If < Function
      attr_reader :predicate, :left, :right

      def initialize(predicate, left, right)
        @predicate = predicate
        @left      = left
        @right     = right
      end

      def value(context={})
        predicate.value(context) ? left.value(context) : right.value(context)
      end

      def type
        left.type
      end

      def dependencies(context={})
        # TODO : short-circuit?
        (predicate.dependencies(context) + left.dependencies(context) + right.dependencies(context)).uniq
      end
    end
  end
end

Dentaku::AST::Function.register_class(:if, Dentaku::AST::If)

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
dentaku-3.0.0 lib/dentaku/ast/functions/if.rb
dentaku-2.0.11 lib/dentaku/ast/functions/if.rb
dentaku-2.0.10 lib/dentaku/ast/functions/if.rb
dentaku-2.0.9 lib/dentaku/ast/functions/if.rb
dentaku-2.0.8 lib/dentaku/ast/functions/if.rb
dentaku-2.0.7 lib/dentaku/ast/functions/if.rb
dentaku-2.0.6 lib/dentaku/ast/functions/if.rb
dentaku-2.0.5 lib/dentaku/ast/functions/if.rb
dentaku-2.0.4 lib/dentaku/ast/functions/if.rb
dentaku-2.0.3 lib/dentaku/ast/functions/if.rb
dentaku-2.0.2 lib/dentaku/ast/functions/if.rb
dentaku-2.0.1 lib/dentaku/ast/functions/if.rb