Skip to content

Commit

Permalink
Relative urls are handled proper
Browse files Browse the repository at this point in the history
  • Loading branch information
peric committed Oct 1, 2015
1 parent d9aa57a commit ef2ea2e
Showing 1 changed file with 5 additions and 4 deletions.
9 changes: 5 additions & 4 deletions lib/content_link_parser.rb
Expand Up @@ -8,12 +8,11 @@ class ContentLinkParser
def initialize(url, content, options = {})
@options = {}.merge(options)
@url = url
@base_url = ''
@doc = Nokogiri::HTML(content)

base_url = @url.to_s
if @doc.at("base[href]")
base_url = @doc.at("base[href]").attr("href").to_s
@url = base_url if base_url
@base_url = @doc.at("base[href]").attr("href").to_s if @doc.at("base[href]").attr("href").to_s.present?
end

@options[:tags] = {}
Expand Down Expand Up @@ -46,7 +45,9 @@ def all_links(options = {})
options[:valid_schemes] = [:http, :https] unless options.has_key? :valid_schemes
data = link_data
links = data.keys.map{|key| data[key]}.flatten.uniq
links = links.map{|link| UriHelper.join_no_fragment(@url, link).to_s }
links = links.map{|link| UriHelper.join_no_fragment(@url, UriHelper.join_no_fragment(@base_url, link))}
.reject(&:nil?)
.map(&:to_s)
links = links.reject{|link| link =~ /\/([^\/]+?)\/\1\// }
links = links.reject{|link| link =~ /([^\/]+?)\/([^\/]+?)\/.*?\1\/\2/ }
links = links.select{|link| options[:valid_schemes].include? link.split(':')[0].to_sym}
Expand Down

0 comments on commit ef2ea2e

Please sign in to comment.