Module: OnboardOnRails::Concerns::UrlMatchable

Extended by:
ActiveSupport::Concern
Included in:
Tour
Defined in:
app/models/onboard_on_rails/concerns/url_matchable.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.pattern_matches?(url, pattern) ⇒ Boolean

Returns:

  • (Boolean)


13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'app/models/onboard_on_rails/concerns/url_matchable.rb', line 13

def self.pattern_matches?(url, pattern)
  return true if pattern.blank?

  if pattern.include?("\\")
    Regexp.new("\\A#{pattern}\\z").match?(url)
  else
    escaped = Regexp.escape(pattern)
    escaped = escaped.gsub("\\*\\*", "DOUBLE_STAR")
    escaped = escaped.gsub("\\*", "[^/]*")
    escaped = escaped.gsub("DOUBLE_STAR", ".*")
    Regexp.new("\\A#{escaped}\\z").match?(url)
  end
end

Instance Method Details

#matches_url?(url) ⇒ Boolean

Returns:

  • (Boolean)


6
7
8
9
10
11
# File 'app/models/onboard_on_rails/concerns/url_matchable.rb', line 6

def matches_url?(url)
  patterns = url_pattern.is_a?(Array) ? url_pattern : [url_pattern]
  return true if patterns.empty?

  patterns.any? { |pattern| url_matches_pattern?(url, pattern.to_s) }
end