Sha256: 3dc01e476950736444abd1a35ae6b3ee12cbe07be02998b5311d36d8f0a5fe9c

Contents?: true

Size: 1.03 KB

Versions: 12

Compression:

Stored size: 1.03 KB

Contents

# frozen_string_literal: true

module Grumlin
  module Expressions
    class P
      class Predicate
        attr_reader :namespace, :name, :value, :type

        def initialize(namespace, name, value:, type: nil)
          @namespace = namespace
          @name = name
          @value = value
          @type = type
        end
      end

      class << self
        # TODO: support more predicates
        %i[eq neq].each do |predicate|
          define_method predicate do |*args|
            Predicate.new("P", predicate, value: args[0])
          end
        end

        %i[within without].each do |predicate|
          define_method predicate do |*args|
            args = if args.count == 1 && args[0].is_a?(Array)
                     args[0]
                   elsif args.count == 1 && args[0].is_a?(Set)
                     args[0].to_a
                   else
                     args.to_a
                   end
            Predicate.new("P", predicate, value: args, type: "List")
          end
        end
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
grumlin-0.19.6 lib/grumlin/expressions/p.rb
grumlin-0.19.5 lib/grumlin/expressions/p.rb
grumlin-0.19.4 lib/grumlin/expressions/p.rb
grumlin-0.19.3 lib/grumlin/expressions/p.rb
grumlin-0.19.2 lib/grumlin/expressions/p.rb
grumlin-0.19.1 lib/grumlin/expressions/p.rb
grumlin-0.19.0 lib/grumlin/expressions/p.rb
grumlin-0.18.1 lib/grumlin/expressions/p.rb
grumlin-0.18.0 lib/grumlin/expressions/p.rb
grumlin-0.17.0 lib/grumlin/expressions/p.rb
grumlin-0.16.1 lib/grumlin/expressions/p.rb
grumlin-0.16.0 lib/grumlin/expressions/p.rb