Adding Erlang docs.

pull/337/merge
Jairo S 9 years ago committed by Thibaut Courouble
parent 23ebf25bcb
commit 8469d7148c

@ -41,6 +41,7 @@
'pages/drupal',
'pages/elixir',
'pages/ember',
'pages/erlang',
'pages/express',
'pages/git',
'pages/go',

@ -41,6 +41,7 @@
'pages/drupal',
'pages/elixir',
'pages/ember',
'pages/erlang',
'pages/express',
'pages/git',
'pages/go',

@ -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 &copy; 1999-2015 Ericsson AB<br>
Licensed under the Apache License, Version 2.0.
HTML
end
end

Binary file not shown.

After

Width:  |  Height:  |  Size: 637 B

Binary file not shown.

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…
Cancel
Save