Class: Slimmer::UrlRewriter

Inherits:
Object
  • Object
show all
Defined in:
lib/slimmer.rb

Instance Method Summary collapse

Constructor Details

#initialize(request) ⇒ UrlRewriter

Returns a new instance of UrlRewriter.



99
100
101
# File 'lib/slimmer.rb', line 99

def initialize(request)
  @request = request
end

Instance Method Details

#filter(src, dest) ⇒ Object



103
104
105
# File 'lib/slimmer.rb', line 103

def filter(src,dest)
  rewrite_document src
end

#rewrite_document(doc) ⇒ Object



107
108
109
110
111
# File 'lib/slimmer.rb', line 107

def rewrite_document(doc)
  rewrite_nodes doc.css('body img'),'src'
  rewrite_nodes doc.css('script'),'src'
  rewrite_nodes doc.css('link'),'href'
end

#rewrite_nodes(nodes, attr) ⇒ Object



113
114
115
116
117
118
119
# File 'lib/slimmer.rb', line 113

def rewrite_nodes(nodes,attr)
  nodes.each do |node|
    next unless node.attr(attr)
    node_uri = URI.parse(node.attr(attr))
    node.attribute(attr).value = rewrite_url(node_uri).to_s
  end
end

#rewrite_url(uri) ⇒ Object



121
122
123
124
125
126
127
128
129
130
131
132
133
134
# File 'lib/slimmer.rb', line 121

def rewrite_url(uri)
  unless uri.absolute?
    uri.scheme = @request.scheme
    if @request.host =~ /:/
      host,port = @request.host.split(":")
      uri.host = host
      uri.port = port
    else
      uri.host =   @request.host
      uri.port =   @request.port
    end
  end
  uri
end