lib/rio/matchrecord.rb in rio-0.3.4 vs lib/rio/matchrecord.rb in rio-0.3.6

- old
+ new

@@ -82,11 +82,12 @@ super(arg) @therio = therio end def match?(val,recno) #p "match?(#{val},#{recno}) select_arg=#{@select_arg}" - @select_arg.call(val,recno,@therio) + args = [val,recno,@therio] + @select_arg.call(*args[0,@select_arg.arity]) end end class Symbol < Base def match?(val,recno) #p "match?(#{val},#{recno}) select_arg=#{@select_arg}" @@ -105,10 +106,16 @@ def match?(val,recno) #p "match?(#{val},#{recno}) select_arg=#{@select_arg}" @select_arg.all? { |sel| sel.match?(val,recno) } end end + class Case < Base + def match?(val,recno) + #p "match?(#{val},#{recno}) select_arg=#{@select_arg}" + @select_arg === val + end + end def create(therio,arg) case arg when ::Regexp Match::Record::RegExp.new(arg) when ::Range @@ -120,10 +127,10 @@ when ::Fixnum Match::Record::Fixnum.new(arg) when ::Array Match::Record::And.new(arg,therio) else - raise ArgumentError,"Argument must be a Regexp,Range,Fixnum,Proc, or Symbol" + Match::Record::Case.new(arg) end end module_function :create end end