class Snapshotify::Rewriter
Attributes
emitter[RW]
resource[RW]
Public Class Methods
new(resource)
click to toggle source
# File lib/snapshotify/rewriter.rb, line 5 def initialize resource self.resource = resource end
Public Instance Methods
rewrite()
click to toggle source
# File lib/snapshotify/rewriter.rb, line 9 def rewrite rewrite_linked_resources rewrite_links end
Private Instance Methods
rewrite_linked_resources()
click to toggle source
# File lib/snapshotify/rewriter.rb, line 16 def rewrite_linked_resources write_css write_js write_images end
rewrite_links()
click to toggle source
# File lib/snapshotify/rewriter.rb, line 51 def rewrite_links resource.doc.xpath('//a').each do |element| return unless element.attribute('href') href = element.attribute('href').value url = Snapshotify::Url.new(href, resource.url) if url.valid new_url = url.absolute_path_or_external_url else new_url = href end emitter.log("# Rewriting #{href} => #{new_url}") if href != new_url element.attribute('href').value = new_url end end
write_css()
click to toggle source
# File lib/snapshotify/rewriter.rb, line 22 def write_css resource.doc.xpath('//link[@rel="stylesheet"]').each do |element| write_element(element, 'href', replace: true) end end
write_element(element, key, options = {})
click to toggle source
# File lib/snapshotify/rewriter.rb, line 40 def write_element element, key, options = {} return unless element.attribute(key) url = element.attribute(key).value _resource = Snapshotify::Resource.new(url, resource.url) _resource.emitter = emitter _resource.write!(options[:replace]) emitter.log("# Rewriting #{url} => #{_resource.filename}") if url != _resource.filename element.attribute(key).value = _resource.filename end
write_images()
click to toggle source
# File lib/snapshotify/rewriter.rb, line 28 def write_images resource.doc.xpath('//img').each do |element| write_element(element, 'src', replace: false) end end
write_js()
click to toggle source
# File lib/snapshotify/rewriter.rb, line 34 def write_js resource.doc.xpath('//script').each do |element| write_element(element, 'src', replace: false) end end