Browse Source

Adding Erlang docs.

Jairo S 10 years ago
parent
commit
8469d7148c

+ 1 - 0
assets/stylesheets/application-dark.css.scss

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

+ 1 - 0
assets/stylesheets/application.css.scss

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

+ 14 - 0
assets/stylesheets/pages/_erlang.scss

@@ -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;
+}

+ 9 - 0
lib/docs/filters/erlang/attribution.rb

@@ -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

+ 13 - 0
lib/docs/filters/erlang/clean_html.rb

@@ -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

+ 43 - 0
lib/docs/filters/erlang/entries.rb

@@ -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

+ 40 - 0
lib/docs/scrapers/erlang.rb

@@ -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

BIN
public/icons/docs/erlang/16.png


BIN
public/icons/docs/erlang/16@2x.png


+ 2 - 0
public/icons/docs/erlang/SOURCE

@@ -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