Class: Gemfile2opml::Converter
- Inherits:
-
Object
- Object
- Gemfile2opml::Converter
- Defined in:
- lib/gemfile2opml/converter.rb
Instance Method Summary collapse
Instance Method Details
#convert(file) ⇒ Object
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 |
# 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|#string body.outline(title: target) {|outline| targets[target].uniq.sort.map {|name|#string outline.outline( title: name, htmlUrl: "https://rubygems.org/gems/#{name}", xmlUrl: "https://rubygems.org/gems/#{name}/versions.atom", ) } } } } } } opml.to_xml end |
#generate_targets(dependencies) ⇒ Object
45 46 47 48 49 50 51 52 53 54 |
# File 'lib/gemfile2opml/converter.rb', line 45 def generate_targets(dependencies) targets = {} dependencies.each{|dependency| targets[dependency.type] ||= [] targets[dependency.type] << dependency.name } targets end |
#generate_title(file) ⇒ Object
39 40 41 42 43 |
# File 'lib/gemfile2opml/converter.rb', line 39 def generate_title(file) application = File.basename File.dirname File. file filename = File.basename file "#{application}/#{filename}" end |