class Elsmore::Rewriter

Attributes

emitter[RW]
resource[RW]

Public Class Methods

new(resource) click to toggle source
# File lib/elsmore/rewriter.rb, line 5
def initialize resource
  self.resource = resource
end

Public Instance Methods

rewrite() click to toggle source
# File lib/elsmore/rewriter.rb, line 9
def rewrite
  rewrite_linked_resources
  rewrite_links
end

Private Instance Methods

rewrite_linked_resources() click to toggle source
# File lib/elsmore/rewriter.rb, line 16
def rewrite_linked_resources
  write_css
  write_js
  write_images
end
write_css() click to toggle source
# File lib/elsmore/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/elsmore/rewriter.rb, line 40
def write_element element, key, options = {}
  return unless element.attribute(key)
  url = element.attribute(key).value
  _resource = Elsmore::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/elsmore/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/elsmore/rewriter.rb, line 34
def write_js
  resource.doc.xpath('//script').each do |element|
    write_element(element, 'src', replace: false)
  end
end