Sha256: 036d4c7eacce35ee23cd9bb5bfd7f2ba9c17114dabf035000eeecacb51e13d26
Contents?: true
Size: 1.1 KB
Versions: 1
Compression:
Stored size: 1.1 KB
Contents
# frozen_string_literal: true module Grumlin module P module P class Predicate < TypedValue def initialize(name, args:, arg_type: nil) super(type: "P") @name = name @args = args @arg_type = arg_type end def value @value ||= { predicate: @name, value: TypedValue.new(type: @arg_type, value: @args).to_bytecode } end end # TODO: support more predicates %w[eq neq].each do |predicate| define_method predicate do |*args| Predicate.new(predicate, args: args[0]) end end %w[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(predicate, args: args, arg_type: "List") end end end extend P end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
grumlin-0.11.0 | lib/grumlin/p.rb |