Sha256: 6bbd6fde87c504cb3bbf188f19c8508b9ca1532470b8b3c72522e085c1fb790b

Contents?: true

Size: 641 Bytes

Versions: 3

Compression:

Stored size: 641 Bytes

Contents

require_relative '../function'
require_relative '../../exceptions'

Dentaku::AST::Function.register(:or, :logical, lambda { |*args|
  if args.empty?
    raise Dentaku::ArgumentError.for(
      :too_few_arguments,
      function_name: 'OR()', at_least: 1, given: 0
    ), 'OR() requires at least one argument'
  end

  args.any? do |arg|
    case arg
    when TrueClass, nil
      true
    when FalseClass
      false
    else
      raise Dentaku::ArgumentError.for(
        :incompatible_type,
        function_name: 'AND()', expect: :logical, actual: arg.class
      ), 'AND() requires arguments to be logical expressions'
    end
  end
})

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
dentaku-3.2.0 lib/dentaku/ast/functions/or.rb
dentaku-3.1.0 lib/dentaku/ast/functions/or.rb
dentaku-3.0.0 lib/dentaku/ast/functions/or.rb