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