module Urlmatch
Public Class Methods
urlmatch(pattern, url)
click to toggle source
# File lib/urlmatch.rb, line 6 def self.urlmatch(pattern, url) # (scheme)://(domain)/(path) regex = /\A(\*|https|http):\/\/(\*|\*\.[^\*\/]+|[^\*\/]+)\/(.*)\z/ @@pattern_match = regex.match(pattern) raise Error, "Invalid Match Pattern: #{pattern}" unless @@pattern_match url_regex = /\A#{scheme}:\/\/#{domain}\/#{path}\z/ !!url_regex.match(url) end
Private Class Methods
domain()
click to toggle source
# File lib/urlmatch.rb, line 22 def self.domain domain_pattern = @@pattern_match[2] return (/#{Regexp.quote(domain_pattern)}/) unless domain_pattern.start_with?('*') return (/[^\/]+/) if domain_pattern == '*' non_wild_domain = domain_pattern[2..-1] /([^\/]+\.)?#{Regexp.quote(non_wild_domain)}/ end
path()
click to toggle source
# File lib/urlmatch.rb, line 30 def self.path path_pattern = @@pattern_match[3] path_pattern.sub('*', '.*') end
scheme()
click to toggle source
# File lib/urlmatch.rb, line 17 def self.scheme scheme_pattern = @@pattern_match[1] scheme_pattern == '*' ? /https?/ : scheme_pattern end