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
|
# File 'lib/microformats2/parser.rb', line 10
def parse(html, base: nil, headers:{})
= {}
@items = []
@rels = {}
@rel_urls = {}
@alternates = []
@base = base
html = read_html(html, headers: )
document = Nokogiri::HTML(html)
found_base = parse_base(document)
@base = found_base unless found_base.nil?
document.traverse do |node|
if not node.attribute('src').nil?
absolute_url = Microformats2::AbsoluteUri.new(node.attribute('src').value.to_s, base: @base).absolutize
node.attribute('src').value = absolute_url
elsif not node.attribute('href').nil?
absolute_url = Microformats2::AbsoluteUri.new(node.attribute('href').value.to_s, base: @base).absolutize
node.attribute('href').value = absolute_url
end
end
parse_node(document)
parse_rels(document)
Collection.new({'items' => @items, 'rels' => @rels, 'rel-urls' => @rel_urls})
end
|