class Medusa::PageStore

Public Class Methods

new(storage = {}) click to toggle source
# File lib/medusa/page_store.rb, line 9
def initialize(storage = {})
  @storage = storage
end

Public Instance Methods

[](index) click to toggle source

We typically index the hash with a URI, but convert it to a String for easier retrieval

# File lib/medusa/page_store.rb, line 15
def [](index)
  @storage[index.to_s]
end
[]=(index, other) click to toggle source
# File lib/medusa/page_store.rb, line 19
def []=(index, other)
  @storage[index.to_s] = other
end
delete(key) click to toggle source
# File lib/medusa/page_store.rb, line 23
def delete(key)
  @storage.delete key.to_s
end
each_value() { |value| ... } click to toggle source
# File lib/medusa/page_store.rb, line 31
def each_value
  each { |key, value| yield value }
end
has_key?(key) click to toggle source
# File lib/medusa/page_store.rb, line 27
def has_key?(key)
  @storage.has_key? key.to_s
end
has_page?(url) click to toggle source

Does this PageStore contain the specified URL? HTTP and HTTPS versions of a URL are considered to be the same page.

# File lib/medusa/page_store.rb, line 51
def has_page?(url)
  schemes = %w(http https)
  if schemes.include? url.scheme
    u = url.dup
    return schemes.any? { |s| u.scheme = s; has_key?(u) }
  end

  has_key? url
end
touch_key(key) click to toggle source
# File lib/medusa/page_store.rb, line 41
def touch_key(key)
  self[key] = Page.new(key)
end
touch_keys(keys) click to toggle source
# File lib/medusa/page_store.rb, line 45
def touch_keys(keys)
  @storage.merge! keys.inject({}) { |h, k| h[k.to_s] = Page.new(k); h }
end
uniq!() click to toggle source

Removes all Pages from storage where redirect? is true

# File lib/medusa/page_store.rb, line 64
def uniq!
  each_value { |page| delete page.url if page.redirect? }
  self
end
values() click to toggle source
# File lib/medusa/page_store.rb, line 35
def values
  result = []
  each { |key, value| result << value }
  result
end