diff --git a/assets/javascripts/templates/pages/about_tmpl.coffee b/assets/javascripts/templates/pages/about_tmpl.coffee index b86236b0..3138546a 100644 --- a/assets/javascripts/templates/pages/about_tmpl.coffee +++ b/assets/javascripts/templates/pages/about_tmpl.coffee @@ -676,6 +676,11 @@ credits = [ '2012-2018 The Qt Company Ltd', 'GFDL', 'https://doc.qt.io/qt-5/licensing.html' + ], [ + 'R', + '1999--2012 R Foundation for Statistical Computing', + 'GPL', + 'https://svn.r-project.org/R/trunk/COPYING' ], [ 'Ramda', '2013-2020 Scott Sauyet and Michael Hurley', diff --git a/lib/docs/filters/r/clean_html.rb b/lib/docs/filters/r/clean_html.rb new file mode 100644 index 00000000..28ea571d --- /dev/null +++ b/lib/docs/filters/r/clean_html.rb @@ -0,0 +1,34 @@ +module Docs + class R + class CleanHtmlFilter < Filter + def call + slug_parts = slug.split('/') + if slug_parts[0] == 'library' + title = at_css('h2') + title.inner_html = "#{slug_parts[3]} #{title.content}" + + summary = at_css('table[summary]') + summary.remove if summary + + elsif slug_parts[-2] == 'manual' + css('span[id] + h1, span[id] + h2, span[id] + h3, span[id] + h4, span[id] + h5, span[id] + h6').each do |node| + id = node.previous['id'] + node.previous.remove + node['id'] = id.sub(/-1$/, '') if id + end + css('table.menu, div.header, hr').remove + + css('.footnote h5').each do |node| + anchor = node.at_css('a[id]') + footnote = node.next_sibling + footnote.inner_html = "#{anchor.text} #{footnote.inner_html}" + footnote['id'] = anchor['id'] + node.remove + end + end + + doc + end + end + end +end diff --git a/lib/docs/filters/r/entries.rb b/lib/docs/filters/r/entries.rb new file mode 100644 index 00000000..b54c2c21 --- /dev/null +++ b/lib/docs/filters/r/entries.rb @@ -0,0 +1,59 @@ +module Docs + class R + class EntriesFilter < Docs::EntriesFilter + + @@include_manual = false + @@include_misc = false + + def initialize(*) + super + end + + def slug_parts + slug.split('/') + end + + def is_package? + slug_parts[0] == 'library' + end + + def is_manual? + slug_parts[-2] == 'manual' + end + + def get_name + return slug_parts[3] + ' − ' + at_css('h2').content if is_package? + title = at_css('h1.settitle') + title ? title.content : at_css('h1, h2').content + end + + def get_type + return slug_parts[1] if is_package? + return at_css('h1.settitle').content if is_manual? + 'Miscellaneous' + end + + def include_default_entry? + if is_manual? or slug_parts[-1] == '00Index' or slug_parts[-1] == 'index' + return false + end + is_package? or self.include_misc + end + + def additional_entries + return [] unless is_manual? and self.include_manual + + entries = [] + css('div.contents > ul > li').each do |node| + node.css('a').each do |link| + link_name = link.content.sub /^[0-9A-Z]+(\.[0-9]+)* /, '' + entries << [link_name, link['href'].split('#')[1], name] + end + end + return entries + end + + private + end + end +end diff --git a/lib/docs/scrapers/r.rb b/lib/docs/scrapers/r.rb new file mode 100644 index 00000000..7c577d5a --- /dev/null +++ b/lib/docs/scrapers/r.rb @@ -0,0 +1,31 @@ +module Docs + class R < FileScraper + self.name = 'R' + self.slug = 'r' + self.type = 'simple' + self.release = '4.1.0' + self.links = { + home: 'https://www.r-project.org/', + code: 'https://svn.r-project.org/R/' + } + + self.root_path = 'doc/html/packages.html' + + html_filters.push 'r/entries', 'r/clean_html' + + options[:skip_links] = false + + options[:attribution] = <<-HTML + Copyright (©) 1999--2012 R Foundation for Statistical Computing.
+ Licensed under the GNU General Public License. + HTML + + # Never want those + options[:skip] = %w( + doc/html/packages-head-utf8.html + doc/html/SearchOn.html + doc/html/Search.html + ) + + end +end diff --git a/public/icons/docs/r/16.png b/public/icons/docs/r/16.png new file mode 100644 index 00000000..2b0c75da Binary files /dev/null and b/public/icons/docs/r/16.png differ diff --git a/public/icons/docs/r/16@2x.png b/public/icons/docs/r/16@2x.png new file mode 100644 index 00000000..51854fc2 Binary files /dev/null and b/public/icons/docs/r/16@2x.png differ diff --git a/public/icons/docs/r/SOURCE b/public/icons/docs/r/SOURCE new file mode 100644 index 00000000..c02c1e37 --- /dev/null +++ b/public/icons/docs/r/SOURCE @@ -0,0 +1 @@ +https://svn.r-project.org/R/trunk/doc/html/Rlogo.svg