Sha256: 025c9d9471ae206800ca2e7eea6266925713029b8f8cb10808846ef631db50a0
Contents?: true
Size: 1.35 KB
Versions: 2
Compression:
Stored size: 1.35 KB
Contents
module Alf module Types # # Specialization of TupleExpression to boolean expressions # specifically # class TuplePredicate < TupleExpression # # Coerces `arg` to a TuplePredicate # def self.coerce(arg) case arg when TuplePredicate arg when TupleExpression TuplePredicate.new arg.expr_lambda, arg.source when TrueClass, FalseClass TuplePredicate.new lambda{ arg }, arg.to_s when Proc TuplePredicate.new arg, nil when String, Symbol l = eval("lambda{ #{arg} }") TuplePredicate.new l, arg.to_s when Hash h = Tools.tuple_collect(arg){|k,v| (AttrName === k) ? [k,v] : [Tools.coerce(k, AttrName), Kernel.eval(v)] } source = h.each_pair.collect{|k,v| "(self.#{k} == #{Tools.to_ruby_literal(v)})" }.join(" && ") coerce(source.empty? ? true : source) when Array (arg.size <= 1) ? coerce(arg.first || true) : coerce(Hash[*arg]) else raise ArgumentError, "Invalid argument `#{arg}` for TupleExpression()" end end def self.from_argv(argv) coerce(argv) end end # class TuplePredicate end # module Types end # module Alf
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
alf-0.10.1 | lib/alf/types/tuple_predicate.rb |
alf-0.10.0 | lib/alf/types/tuple_predicate.rb |