From 220198af69482d3d6fa40e0e5d85ba4f07993d09 Mon Sep 17 00:00:00 2001 From: Wojciech Maciejak Date: Thu, 15 Dec 2016 12:26:51 +0100 Subject: [PATCH] [WIP] First exportable version of sequel MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit For quick export and generate sequel devdocs you need to execute thor docs:generate sequel --force --debug Docs don't look so nice, but the main part of exporting is done. Now it’s the time for analyze rdoc source code and rewrite actual filters. --- lib/docs/filters/sequel/clean_html.rb | 60 +++++++++++++++++++++++++++ lib/docs/filters/sequel/entries.rb | 29 +++++++++++++ lib/docs/scrapers/sequel.rb | 17 ++++++++ public/docs/docs.json | 2 +- 4 files changed, 107 insertions(+), 1 deletion(-) create mode 100644 lib/docs/filters/sequel/clean_html.rb create mode 100644 lib/docs/filters/sequel/entries.rb create mode 100644 lib/docs/scrapers/sequel.rb diff --git a/lib/docs/filters/sequel/clean_html.rb b/lib/docs/filters/sequel/clean_html.rb new file mode 100644 index 00000000..f36b4814 --- /dev/null +++ b/lib/docs/filters/sequel/clean_html.rb @@ -0,0 +1,60 @@ +module Docs + class Sequel + class CleanHtmlFilter < Filter + def call + # css('.summary_toggle', '.inheritanceTree', 'h1 .note', '.source_code', '.box_info dl:last-child').remove + # css('a[href*="travis"]', 'a[href*="gemnasium"]', 'a[href*="codeclimate"]', 'a[href*="gitter"]').remove if root_page? + # + # css('.signature').each do |node| + # node.name = 'h3' + # end + # + # css('.permalink', 'div.docstring', 'div.discussion', '.method_details_list', '.attr_details', + # 'h3 strong', 'h3 a', 'h3 tt', 'h3 span', 'div.inline p', 'div.inline').each do |node| + # node.before(node.children).remove + # end + # + # css('.tag_title').each do |node| + # node.name = 'h4' + # end + # + # css('span.summary_signature', 'tt', '.tags span.name').each do |node| + # node.name = 'code' + # node.inner_html = node.inner_html.strip + # end + # + # css('code > a').each do |node| + # node.inner_html = node.inner_html.strip + # end + # + # css('pre.code').each do |node| + # node.content = node.content + # node['data-language'] = 'ruby' + # end + css('hr').remove + + # Remove paragraph/up links + css('h1 > span', 'h2 > span', 'h3 > span', 'h4 > span', 'h5 > span', 'h6 > span').remove + + # Move id attributes to headings, TODO: Probably doesn't work + css('.method-detail').each do |node| + next unless heading = node.at_css('.method-heading') + heading['id'] = node['id'] + node.remove_attribute 'id' + end + + # Convert "click to toggle source" into a link + css('.source-toggle').each do |node| + node.name = 'a' + node.content = 'Show source' + end + + # Remove code highlighting + css('pre').each do |node| + node.content = node.content + end + doc + end + end + end +end diff --git a/lib/docs/filters/sequel/entries.rb b/lib/docs/filters/sequel/entries.rb new file mode 100644 index 00000000..71275b9d --- /dev/null +++ b/lib/docs/filters/sequel/entries.rb @@ -0,0 +1,29 @@ +module Docs + class Sequel + class EntriesFilter < Docs::Rdoc::EntriesFilter + def get_name + at_css('h1').content.split(' ').last.split('::')[1] + end + + def get_type + at_css('h1').content.split(' ').last.sub("Sequel::","") + end + + def additional_entries + return [] if initial_page? + + css('.signature').each_with_object [] do |node, entries| # Doesn't work, problems with css class + next if node.ancestors('.overload').present? + name = node.content.strip + name.remove! %r{[\s\(].*} + name.prepend(self.name) + entries << [name, node['id']] + end + end + + def include_default_entry? + !initial_page? + end + end + end +end diff --git a/lib/docs/scrapers/sequel.rb b/lib/docs/scrapers/sequel.rb new file mode 100644 index 00000000..83a1da64 --- /dev/null +++ b/lib/docs/scrapers/sequel.rb @@ -0,0 +1,17 @@ +module Docs + class Sequel < UrlScraper + self.slug = 'sequel' + self.type = 'rdoc' + self.release = '4.41.0' + self.base_url = 'http://sequel.jeremyevans.net/rdoc/classes/' + self.root_path = 'Sequel.html' + + + html_filters.push 'sequel/clean_html', 'sequel/entries' + options[:container] = '#wrapper' + + options[:attribution] = <<-HTML + Copyright © 2007-2008 Sharon Rosner Copyright © 2008-2016 Jeremy Evans + HTML + end +end diff --git a/public/docs/docs.json b/public/docs/docs.json index 0637a088..c7d27f17 100644 --- a/public/docs/docs.json +++ b/public/docs/docs.json @@ -1 +1 @@ -[] \ No newline at end of file +[{"name":"Sequel","slug":"sequel","type":"rdoc","release":"4.41.0","mtime":1481800882,"db_size":1254035}] \ No newline at end of file