Sha256: a91b82ef29fb054711a9430599f078bd558e2b4dda701c95a607b85a5dd26438
Contents?: true
Size: 866 Bytes
Versions: 1
Compression:
Stored size: 866 Bytes
Contents
module NYNY class RouteSignature NAME_PATTERN = /:(\S+)/ attr_reader :pattern def initialize signature @pattern = pattern_for signature end 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}$) end def match path data = pattern.match path if data Hash[data.names.map {|n| [n.to_sym, URI.unescape(data[n])]}] end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
nyny-2.0.0 | lib/nyny/route_signature.rb |