5
6
7
8
9
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
|
# File 'lib/gemfile2opml/converter.rb', line 5
def convert(file)
gemfile = Gemnasium::Parser.gemfile(open(file).read)
gemspec = Gemnasium::Parser.gemspec(open(file).read)
dependencies = [*gemfile.dependencies, *gemspec.dependencies]
targets = generate_targets(dependencies)
opml = Nokogiri::XML::Builder.new {|xml|
xml.opml(:version => '2.0') {
xml.head {|head|
head.title generate_title(file)
}
xml.body {|body|
targets.keys.map {|target| body.outline(title: target) {|outline|
targets[target].uniq.sort.map {|name| outline.outline(
title: name,
type: 'rss',
htmlUrl: "https://rubygems.org/gems/#{name}",
xmlUrl: "https://rubygems.org/gems/#{name}/versions.atom",
)
}
}
}
}
}
}
opml.to_xml
end
|