/usr/lib/ruby/1.8/mechanize/history.rb is in libwww-mechanize-ruby1.8 1.0.0-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | class Mechanize
##
# This class manages history for your mechanize object.
class History < Array
attr_accessor :max_size
def initialize(max_size = nil)
@max_size = max_size
@history_index = {}
end
def initialize_copy(orig)
super
@history_index = orig.instance_variable_get(:@history_index).dup
end
def push(page, uri = nil)
super(page)
@history_index[(uri ? uri : page.uri).to_s] = page
if @max_size && self.length > @max_size
while self.length > @max_size
self.shift
end
end
self
end
alias :<< :push
def visited?(url)
! visited_page(url).nil?
end
def visited_page(url)
@history_index[(url.respond_to?(:uri) ? url.uri : url).to_s]
end
def clear
@history_index.clear
super
end
def shift
return nil if length == 0
page = self[0]
self[0] = nil
super
remove_from_index(page)
page
end
def pop
return nil if length == 0
page = super
remove_from_index(page)
page
end
private
def remove_from_index(page)
@history_index.each do |k,v|
@history_index.delete(k) if v == page
end
end
end
end
|