Sha256: 73630de52b91441b00b3b25ffd90efb9bc25cec2520719f6067c0b8390a45a39
Contents?: true
Size: 1.16 KB
Versions: 6
Compression:
Stored size: 1.16 KB
Contents
# frozen_string_literal: true module Grumlin module Tools module P class << self 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 %i[eq neq].each do |predicate| define_method predicate do |*args| Predicate.new(predicate, args: 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(predicate, args: args, arg_type: "List") end end end end end end
Version data entries
6 entries across 6 versions & 1 rubygems