class Filters::Util

Public Class Methods

apply_filters(uris, index, base_uri, filters) click to toggle source

Public: Apply URI Filters to a Hash.

uris - Set (Array|Hash) of URIs to be filtered. index - Current index base_uri - Base URI to test against filters - Filters to reduce set of uris

Returns a filtered uris Hash

# File lib/sitemap/filters/filters.rb, line 68
def self.apply_filters(uris, index, base_uri, filters)

  # Clone filters so we retain the 'functional' style of no side-effects
  filters_clone = filters.clone

  # Check for terminating case
  if (!uris.nil? && uris.length > 0)

    if !filters_clone.nil? && filters_clone.length > 0

      # Pop a filter and apply it recursively to the result of the next filter
      f = filters_clone.shift
      uris = apply_filters(uris, index, base_uri, filters_clone)

      uris = uris.select do |k,v|
        f.filter(index, k, base_uri)
      end
    end
  end

  uris
end
create_absolute_uri(link, base_uri) click to toggle source

Public: Create an absolute link provided a link and base URI.

# File lib/sitemap/filters/filters.rb, line 38
def self.create_absolute_uri(link, base_uri)
  link = Filters::Util.make_URI(link)
  base_uri = Filters::Util.make_URI(base_uri)

  # Remove path from base
  base_uri.path = ''

  # Append Path to base_uri if relative
  if !link.path.nil? && link.path.start_with?('/')
    return base_uri + link
  end

  return link
end
get_all_filters() click to toggle source

Public: Get all known filters

# File lib/sitemap/filters/filters.rb, line 56
def self.get_all_filters
  return [Filters::ValidURIFilter.new, Filters::LocalFilter.new, Filters::ResourcesFilter.new, Filters::URIFragmentFilter.new]
end
make_URI(uri) click to toggle source

Idempotently make a string a URI

# File lib/sitemap/filters/filters.rb, line 12
def self.make_URI(uri)
  begin
    if !uri.is_a? URI
      uri = URI::parse(uri)
    end
    uri
  rescue
    nil
  end
end
remove_fragment_from_uri(uri) click to toggle source

Public: Remove fragments from a URI

# File lib/sitemap/filters/filters.rb, line 26
def self.remove_fragment_from_uri(uri)
  parsed_href = Filters::Util.make_URI(uri)
  if parsed_href.nil?
    return nil
  end
  parsed_href.fragment = nil
  parsed_href.to_s
end