lib/nyny/route_signature.rb in nyny-1.0.2 vs lib/nyny/route_signature.rb in nyny-2.0.0
- old
+ new
@@ -5,40 +5,31 @@
attr_reader :pattern
def initialize signature
@pattern = pattern_for signature
end
- def pattern_for string
- return string if string.is_a? Regexp
- return string unless string.include? ':'
-
- signature = string.start_with?('/') ? string : "/#{string}"
- build_regex signature
+ def pattern_for signature
+ return signature if signature.is_a? Regexp
+ build_regex(signature.start_with?('/') ? signature : "/#{signature}")
end
def build_regex signature
+ return %r(^#{signature}$) unless signature.include?(':')
+
groups = signature.split('/').map do |part|
next part if part.empty?
next part unless part.start_with? ':'
name = NAME_PATTERN.match(part)[1]
%Q{(?<#{name}>\\S+)}
end.select {|s| !s.empty? }.join('\/')
- %r(\/#{groups})
+ %r(^\/#{groups}$)
end
def match path
- return (pattern == path ? {} : nil) if pattern.is_a?(String)
data = pattern.match path
-
if data
- if pattern.respond_to? :names
- Hash[data.names.map {|n| [n.to_sym, URI.unescape(data[n])]}]
- else
- {}
- end
- else
- nil
+ Hash[data.names.map {|n| [n.to_sym, URI.unescape(data[n])]}]
end
end
end
end