Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 96 KiB After Width: | Height: | Size: 96 KiB |
@ -1,14 +1,8 @@
|
||||
.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;
|
||||
._erlang {
|
||||
@extend %simple;
|
||||
|
||||
h3.code { @extend %code; }
|
||||
.note { @extend %note; }
|
||||
.warning { @extend %note, %note-red; }
|
||||
.note .label, .warning .label { font-weight: bold; }
|
||||
}
|
||||
|
@ -1,9 +0,0 @@
|
||||
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
|
@ -1,43 +1,35 @@
|
||||
module Docs
|
||||
class Erlang
|
||||
class EntriesFilter < Docs::EntriesFilter
|
||||
|
||||
def get_name
|
||||
at_css('h1').try(:content).try(:strip)
|
||||
name = at_css('h1').content.strip
|
||||
name.prepend 'Guide: ' if doc.inner_html.include?('<strong>User\'s Guide</strong>')
|
||||
name
|
||||
end
|
||||
|
||||
def get_type
|
||||
return nil if 'STDLIB Reference Manual' == name
|
||||
name
|
||||
type = subpath[/lib\/(.+?)[\-\/]/, 1]
|
||||
type << "/#{name}" if type == 'stdlib' && entry_nodes.length >= 10
|
||||
type
|
||||
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
|
||||
def include_default_entry?
|
||||
!at_css('.frontpage')
|
||||
end
|
||||
|
||||
# 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
|
||||
def additional_entries
|
||||
entry_nodes.map do |node|
|
||||
id = node['name']
|
||||
name = id.gsub %r{\-(?<arity>.*)\z}, '/\k<arity>'
|
||||
name.remove! 'Module:'
|
||||
name.prepend "#{self.name}:"
|
||||
[name, id]
|
||||
end
|
||||
end
|
||||
|
||||
def entry_nodes
|
||||
@entry_nodes ||= css('div.REFBODY + p > a')
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -0,0 +1,10 @@
|
||||
module Docs
|
||||
class Erlang
|
||||
class PreCleanHtmlFilter < Filter
|
||||
def call
|
||||
css('.flipMenu li[title] > a').remove
|
||||
doc
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
@ -1,40 +1,43 @@
|
||||
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/'
|
||||
home: 'https://www.erlang.org/',
|
||||
code: 'https://github.com/erlang/otp'
|
||||
}
|
||||
|
||||
html_filters.insert_after 'container', 'erlang/pre_clean_html'
|
||||
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'
|
||||
options[:only_patterns] = [/\Alib/]
|
||||
|
||||
# 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$/
|
||||
/pdf/,
|
||||
/release_notes/,
|
||||
/result/,
|
||||
/java/,
|
||||
/\/html\/.*_app\.html\z/,
|
||||
/_examples\.html\z/,
|
||||
/\Alib\/edoc/,
|
||||
/\Alib\/erl_docgen/,
|
||||
/\Alib\/hipe/,
|
||||
/\Alib\/ose/,
|
||||
/\Alib\/test_server/,
|
||||
/\Alib\/jinterface/,
|
||||
/\Alib\/wx/,
|
||||
/\Alib\/ic/,
|
||||
/\Alib\/Cos/i
|
||||
]
|
||||
|
||||
options[:title] = false
|
||||
|
||||
# Scrape stdlib documentation only
|
||||
options[:only_patterns] = [/stdlib/]
|
||||
|
||||
options[:attribution] = <<-HTML
|
||||
Copyright © 1999-2015 Ericsson AB<br>
|
||||
© 1999–2015 Ericsson AB<br>
|
||||
Licensed under the Apache License, Version 2.0.
|
||||
HTML
|
||||
|
||||
version '18' do
|
||||
self.release = '18.2'
|
||||
self.dir = '/Users/Thibaut/DevDocs/Docs/Erlang18'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Before Width: | Height: | Size: 637 B After Width: | Height: | Size: 407 B |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 725 B |
@ -1,2 +1 @@
|
||||
http://www.pixelstech.net/images/icons/article_type/Erlang_logo.png
|
||||
https://s3.amazonaws.com/cloud.ohloh.net/attachments/1364/erlang2_small.png
|
||||
https://github.com/Kapeli/Dash-X-Platform-Resources
|