mirror of https://github.com/freeCodeCamp/devdocs
parent
23ebf25bcb
commit
8469d7148c
@ -0,0 +1,14 @@
|
||||
.REFBODY {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
.REFBODY+p {
|
||||
margin-top: 30px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
.function-name {
|
||||
font-family: $monoFont;
|
||||
display: block;
|
||||
margin: 0;
|
||||
min-height: none;
|
||||
font-weight: bold;
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
module Docs
|
||||
class Erlang
|
||||
class AttributionFilter < Docs::AttributionFilter
|
||||
def attribution_link
|
||||
%(<a href="#{base_url}" class="_attribution-link">#{base_url}</a>)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
@ -0,0 +1,13 @@
|
||||
module Docs
|
||||
class Erlang
|
||||
class CleanHtmlFilter < Filter
|
||||
def call
|
||||
css('#leftnav').remove
|
||||
css('#content .innertube center:last-child').remove
|
||||
css('.function-name+br').remove
|
||||
css('#content .footer').remove
|
||||
doc
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
@ -0,0 +1,43 @@
|
||||
module Docs
|
||||
class Erlang
|
||||
class EntriesFilter < Docs::EntriesFilter
|
||||
|
||||
def get_name
|
||||
at_css('h1').try(:content).try(:strip)
|
||||
end
|
||||
|
||||
def get_type
|
||||
return nil if 'STDLIB Reference Manual' == name
|
||||
name
|
||||
end
|
||||
|
||||
def additional_entries
|
||||
css('div.REFBODY+p > a').map do |node|
|
||||
|
||||
id = node.attribute('name').value
|
||||
|
||||
# Here, "node" represents an empty <a> tag. It will later be removed
|
||||
# by CleanTextFilter.
|
||||
# We need to pass its id attribute to another element in order to
|
||||
# make the function anchors in the sidebar work properly.
|
||||
node.next_sibling['id'] = id
|
||||
node.next_sibling['class'] = 'function-name'
|
||||
|
||||
if id == name
|
||||
# Module index page
|
||||
[name, id, name]
|
||||
else
|
||||
# Erlang functions are identified
|
||||
# by name + arity (no. of parameters).
|
||||
# The notation is func_name/arity
|
||||
|
||||
# Replaces the last hyphen with a slash.
|
||||
# E.g: to_string-3 becomes to_string/3
|
||||
function_name = id.gsub(/\-(?<arity>.*)$/, '/\k<arity>')
|
||||
["#{name}:" + function_name, id, name]
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
@ -0,0 +1,40 @@
|
||||
module Docs
|
||||
class Erlang < FileScraper
|
||||
self.version = '18.1'
|
||||
self.type = 'erlang'
|
||||
self.dir = File.expand_path('~/devdocs/erlang')
|
||||
self.base_url = 'http://www.erlang.org/doc/'
|
||||
self.root_path = 'doc/index.html'
|
||||
self.links = {
|
||||
home: 'http://erlang.org/'
|
||||
}
|
||||
|
||||
html_filters.push 'erlang/entries', 'erlang/clean_html'
|
||||
|
||||
# The folder structure of the offline documentation
|
||||
# differs from the online structure. We need
|
||||
# to replace the attribution filter to generate the
|
||||
# right attribution_link
|
||||
text_filters.replace 'attribution', 'erlang/attribution'
|
||||
|
||||
# Do not scrape these unnecessary links
|
||||
options[:skip_patterns] = [
|
||||
/\.pdf$/,
|
||||
/users_guide\.html$/,
|
||||
/release_notes\.html$/,
|
||||
/\/html\/.*_app\.html$/,
|
||||
/\/html\/unicode_usage\.html$/,
|
||||
/\/html\/io_protocol\.html$/
|
||||
]
|
||||
|
||||
options[:title] = false
|
||||
|
||||
# Scrape stdlib documentation only
|
||||
options[:only_patterns] = [/stdlib/]
|
||||
|
||||
options[:attribution] = <<-HTML
|
||||
Copyright © 1999-2015 Ericsson AB<br>
|
||||
Licensed under the Apache License, Version 2.0.
|
||||
HTML
|
||||
end
|
||||
end
|
After Width: | Height: | Size: 637 B |
After Width: | Height: | Size: 1.8 KiB |
@ -0,0 +1,2 @@
|
||||
http://www.pixelstech.net/images/icons/article_type/Erlang_logo.png
|
||||
https://s3.amazonaws.com/cloud.ohloh.net/attachments/1364/erlang2_small.png
|
Loading…
Reference in new issue