lib/usher/route/variable.rb in usher-0.6.2 vs lib/usher/route/variable.rb in usher-0.6.3
- old
+ new
@@ -1,43 +1,44 @@
class Usher
class Route
class Variable
+
+ module ProcValidator
+ def valid!(val)
+ begin
+ @validator.call(val)
+ rescue Exception => e
+ raise ValidationException.new("#{val} does not conform to #{@validator}, root cause #{e.inspect}")
+ end
+ end
+ end
+
+ module CaseEqualsValidator
+ def valid!(val)
+ @validator === val or raise(ValidationException.new("#{val} does not conform to #{@validator}"))
+ end
+ end
+
attr_reader :type, :name, :validator, :regex_matcher
attr_accessor :look_ahead, :default_value, :look_ahead_priority
def initialize(name, regex_matcher = nil, validator = nil)
@name = name.to_s.to_sym
@validator = validator || regex_matcher
@regex_matcher = regex_matcher
case @validator
- when Proc
- self.extend(ProcValidator)
when nil
# do nothing
+ when Proc
+ extend(ProcValidator)
else
- self.extend(CaseEqualsValidator)
+ extend(CaseEqualsValidator)
end
end
private :initialize
def valid!(val)
- end
-
- module ProcValidator
- def valid!(val)
- begin
- @validator.call(val)
- rescue Exception => e
- raise ValidationException.new("#{val} does not conform to #{@validator}, root cause #{e.inspect}")
- end
- end
- end
-
- module CaseEqualsValidator
- def valid!(val)
- @validator === val or raise(ValidationException.new("#{val} does not conform to #{@validator}"))
- end
end
def ==(o)
o && (o.class == self.class && o.name == @name && o.validator == @validator)
end
\ No newline at end of file