Sha256: 16a9559e91eede89a1d5f6b92ad448ba5702dd4f53599d806a8b61bf88abe73b

Contents?: true

Size: 1.68 KB

Versions: 2

Compression:

Stored size: 1.68 KB

Contents

# we won't deal with the non-Darkfish RDoc in older rubies, it has frames :<
if (!defined?(RUBY_ENGINE) || RUBY_ENGINE == "ruby") && \
   RUBY_VERSION.to_f <= 1.8
  require 'rubygems'
end

# we never want the rdoc 2.5.x from Ruby 1.9.2
gem 'rdoc', '~> 3.1'
require 'rdoc/rdoc'

class Wrongdoc::Rdoc
  include Wrongdoc::RdocOptions
  include Wrongdoc::ParseXML

  def initialize(opts)
    @rdoc_uri = URI.parse(opts[:rdoc_url])
    @cgit_uri = URI.parse(opts[:cgit_url])
  end

  def run(argv = [])
    rdoc(argv)
    add_atom("doc/ChangeLog.html", cgit_atom_uri)
    add_atom("doc/NEWS.html", news_atom_uri)
    add_atom("doc/README.html", news_atom_uri)

    # the stock RDoc index page layout lacks a vertical sidebar full of links
    rdoc_index = "doc/rdoc_index.html"
    File.exist?(rdoc_index) and File.unlink(rdoc_index)
    File.rename("doc/index.html", rdoc_index)
    File.link("doc/README.html", "doc/index.html")
  end

  def rdoc(argv)
    r = RDoc::RDoc.new
    r.document(rdoc_options.concat(argv))
  end

  def add_atom(path, atom_uri)
    File.open(path, "a+") do |fp|
      doc = parse_xml(fp.read)
      doc.search("title").each { |t|
        t.add_next_sibling(atom_node(doc, atom_uri))
      }
      fp.truncate 0
      fp.write doc.to_xhtml
    end
  end

  def cgit_atom_uri
    uri = @cgit_uri.dup
    uri.path += "/atom/"
    uri.query = "h=master"
    uri
  end

  def news_atom_uri
    uri = @rdoc_uri.dup
    uri.path += "NEWS.atom.xml"
    uri
  end

  def atom_node(doc, uri, title = 'Atom feed')
    link = Nokogiri::XML::Node.new('link', doc)
    link['rel'] = 'alternate'
    link['title'] = title
    link['href'] = uri.to_s
    link['type'] = 'application/atom+xml'
    link
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
wrongdoc-1.1.1 lib/wrongdoc/rdoc.rb
wrongdoc-1.1.0 lib/wrongdoc/rdoc.rb