mirror of https://github.com/freeCodeCamp/devdocs
Merge pull request #1547 from Cimbali/R
commit
e9c854c9e9
@ -0,0 +1,61 @@
|
|||||||
|
module Docs
|
||||||
|
class R
|
||||||
|
class CleanHtmlFilter < Filter
|
||||||
|
def call
|
||||||
|
slug_parts = slug.split('/')
|
||||||
|
|
||||||
|
if root_page?
|
||||||
|
css('a[href$="/00index"]').each do |pkg|
|
||||||
|
pkg['href'] = "/r-#{pkg['href'].split('/')[1]}/"
|
||||||
|
end
|
||||||
|
|
||||||
|
elsif slug_parts[0] == 'library'
|
||||||
|
title = at_css('h2')
|
||||||
|
title.inner_html = "<code>#{slug_parts[3]}</code> #{title.content}"
|
||||||
|
|
||||||
|
summary = at_css('table[summary]')
|
||||||
|
summary.remove if summary
|
||||||
|
|
||||||
|
css('hr ~ *, hr').remove
|
||||||
|
|
||||||
|
elsif slug_parts[-2] == 'manual'
|
||||||
|
css('table.menu, div.header, hr, h2.contents-heading, div.contents, table.index-cp, table.index-vr, table[summary]').remove
|
||||||
|
|
||||||
|
css('h2').each do |node|
|
||||||
|
node.remove if node.content.end_with? ' index'
|
||||||
|
end
|
||||||
|
|
||||||
|
css('span[id] + h1, span[id] + h2, span[id] + h3, span[id] + h4, span[id] + h5, span[id] + h6').each do |node|
|
||||||
|
# We need the first of the series of span with ids
|
||||||
|
span = node.previous_element
|
||||||
|
while span.previous
|
||||||
|
prev = span.previous_element
|
||||||
|
break unless prev.name == 'span' and prev['id']
|
||||||
|
span.remove
|
||||||
|
span = prev
|
||||||
|
end
|
||||||
|
|
||||||
|
node['id'] = span['id']
|
||||||
|
span.remove
|
||||||
|
|
||||||
|
css('div.example').each do |node|
|
||||||
|
node.replace(node.children)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
css('h1 + h1').remove
|
||||||
|
|
||||||
|
css('.footnote h5').each do |node|
|
||||||
|
anchor = node.at_css('a[id]')
|
||||||
|
footnote = node.next_sibling
|
||||||
|
footnote.inner_html = "<strong>#{anchor.text}</strong> #{footnote.inner_html}"
|
||||||
|
footnote['id'] = anchor['id']
|
||||||
|
node.remove
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
doc
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
@ -0,0 +1,84 @@
|
|||||||
|
module Docs
|
||||||
|
class R
|
||||||
|
class EntriesFilter < Docs::EntriesFilter
|
||||||
|
|
||||||
|
PKG_INDEX_ENTRIES = Hash.new []
|
||||||
|
|
||||||
|
def call
|
||||||
|
if slug_parts[-1] == '00Index'
|
||||||
|
dir = File.dirname(result[:subpath])
|
||||||
|
css('tr a').each do |link|
|
||||||
|
PKG_INDEX_ENTRIES[link['href']] += [link.text]
|
||||||
|
next if link['href'] == link.text
|
||||||
|
context[:replace_paths][File.join(dir, "#{link.text}.html")] = File.join(dir, "#{link['href']}.html")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
super
|
||||||
|
end
|
||||||
|
|
||||||
|
def slug_parts
|
||||||
|
slug.split('/')
|
||||||
|
end
|
||||||
|
|
||||||
|
def is_package?
|
||||||
|
slug_parts[0] == 'library'
|
||||||
|
end
|
||||||
|
|
||||||
|
def is_manual?
|
||||||
|
slug_parts[1] == 'manual'
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_name
|
||||||
|
return 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?
|
||||||
|
end
|
||||||
|
|
||||||
|
def include_default_entry?
|
||||||
|
is_package? and not slug_parts[-1] == '00Index'
|
||||||
|
end
|
||||||
|
|
||||||
|
def manual_section(node)
|
||||||
|
title = node.content.sub /^((Appendix )?[A-Z]|[0-9]+)(\.[0-9]+)* /, ''
|
||||||
|
title unless ['References', 'Preface', 'Acknowledgements'].include?(title) or title.end_with?(' index')
|
||||||
|
end
|
||||||
|
|
||||||
|
def additional_entries
|
||||||
|
if is_package? and slug_parts[-1] != '00Index'
|
||||||
|
page = slug_parts[-1]
|
||||||
|
return [page] + PKG_INDEX_ENTRIES.fetch(page, [])
|
||||||
|
end
|
||||||
|
|
||||||
|
return [] unless is_manual?
|
||||||
|
|
||||||
|
entries = []
|
||||||
|
unless slug_parts[-1].downcase == 'r-intro'
|
||||||
|
# Single top-level category
|
||||||
|
css('div.contents > ul a').each do |link|
|
||||||
|
link_name = manual_section(link)
|
||||||
|
entries << [link_name, link['href'].split('#')[1], name] unless link_name.nil?
|
||||||
|
end
|
||||||
|
else
|
||||||
|
# Split 1st level of manual into different categories
|
||||||
|
css('div.contents > ul > li').each do |node|
|
||||||
|
type = manual_section(node.at_css('a'))
|
||||||
|
next if type.nil?
|
||||||
|
node.css('> ul a').each do |link|
|
||||||
|
link_name = link.content.sub /^[0-9A-Z]+(\.[0-9]+)* /, ''
|
||||||
|
entries << [link_name, link['href'].split('#')[1], type]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return entries
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
After Width: | Height: | Size: 716 B |
After Width: | Height: | Size: 1.4 KiB |
@ -0,0 +1 @@
|
|||||||
|
https://svn.r-project.org/R/trunk/doc/html/Rlogo.svg
|
Loading…
Reference in new issue