diff --git a/lib/docs/filters/odin/clean_html.rb b/lib/docs/filters/odin/clean_html.rb new file mode 100644 index 0000000000..8ff3c4dff8 --- /dev/null +++ b/lib/docs/filters/odin/clean_html.rb @@ -0,0 +1,20 @@ +module Docs + class Odin + class CleanHtmlFilter < Filter + def call + @doc = at_css('#pkg') || doc + + css('nav').remove + css('.pkg-breadcrumb').remove + css('.a-hidden').remove + css('.doc-source').remove + css('.odin-search-wrapper').remove + css('#pkg-sidebar').remove + css('#odin-search-info').remove + css('#odin-search-results').remove + + doc + end + end + end +end diff --git a/lib/docs/filters/odin/entries.rb b/lib/docs/filters/odin/entries.rb new file mode 100644 index 0000000000..070104bc89 --- /dev/null +++ b/lib/docs/filters/odin/entries.rb @@ -0,0 +1,47 @@ +module Docs + class Odin + class EntriesFilter < Docs::EntriesFilter + def get_name + if base_url.host == 'odin-lang.org' + title = context[:html_title].gsub(/ \| Odin Programming Language/, "") + title + else + breadcrumbs = css(".pkg-breadcrumb > ol > li") + if breadcrumbs + if breadcrumbs[1] + breadcrumbs[1].content + elsif breadcrumbs[0] + breadcrumbs[0].content + end + end + + title = context[:html_title].gsub(/ - pkg.odin-lang.org/, "") + title = title.gsub(/^package /, "") + + # For the package index page, use the angle bracket + # to propel the entry to the top + if title and title.end_with?("library") + "- package index" + else + title + end + end + end + + def get_type + if base_url.host == 'odin-lang.org' + "Documentation" + elsif base_url.host == 'pkg.odin-lang.org' + base_package_name = subpath.gsub(/\/.*/, "") + "Packages / " + base_package_name + end + end + + def additional_entries + entries = [] + entries + end + end + end +end + diff --git a/lib/docs/scrapers/odin.rb b/lib/docs/scrapers/odin.rb new file mode 100644 index 0000000000..f6b3db25fe --- /dev/null +++ b/lib/docs/scrapers/odin.rb @@ -0,0 +1,58 @@ +module Docs + class Odin < UrlScraper + include MultipleBaseUrls + self.name = 'Odin' + self.slug = 'odin' + self.type = 'odin' + self.release = 'latest' + self.base_urls = [ + 'https://odin-lang.org/', + 'https://pkg.odin-lang.org/' + ] + + def initial_urls + [ + 'https://odin-lang.org/docs', + 'https://odin-lang.org/spec', + 'https://pkg.odin-lang.org/base', + 'https://pkg.odin-lang.org/core', + 'https://pkg.odin-lang.org/vendor' + ] + end + + self.root_path = 'https://odin-lang.org/' + self.initial_paths = %w(base core vendor) + + self.links = { + home: 'https://odin-lang.org/', + code: 'https://github.com/odin-lang/Odin' + } + + html_filters.push 'odin/entries', 'odin/clean_html' + options[:download_images] = false + + options[:container] = '.odin-main' + + options[:only_patterns] = [ + /docs/, + /spec/, + /base/, + /core/, + /vendor/ + ] + options[:trailing_slash] = false + options[:skip] = %w( + docs/examples + docs/nightly + docs/odin-book + docs/spec + docs/packages + ) + + options[:attribution] = <<-HTML + © 2016-#{Date.today.year} Ginger Bill
+ Licensed under the zlib License. + HTML + + end +end diff --git a/public/icons/docs/odin/16.png b/public/icons/docs/odin/16.png new file mode 100644 index 0000000000..038d7d801b Binary files /dev/null and b/public/icons/docs/odin/16.png differ diff --git a/public/icons/docs/odin/16@2x.png b/public/icons/docs/odin/16@2x.png new file mode 100644 index 0000000000..d4a3e83320 Binary files /dev/null and b/public/icons/docs/odin/16@2x.png differ diff --git a/public/icons/docs/odin/SOURCE b/public/icons/docs/odin/SOURCE new file mode 100644 index 0000000000..167c103d26 --- /dev/null +++ b/public/icons/docs/odin/SOURCE @@ -0,0 +1 @@ +https://github.com/odin-lang/odin-lang.org/blob/master/static/favicon.svg \ No newline at end of file diff --git a/public/icons/docs/odin_packages/16.png b/public/icons/docs/odin_packages/16.png new file mode 100644 index 0000000000..038d7d801b Binary files /dev/null and b/public/icons/docs/odin_packages/16.png differ diff --git a/public/icons/docs/odin_packages/16@2x.png b/public/icons/docs/odin_packages/16@2x.png new file mode 100644 index 0000000000..d4a3e83320 Binary files /dev/null and b/public/icons/docs/odin_packages/16@2x.png differ diff --git a/public/icons/docs/odin_packages/SOURCE b/public/icons/docs/odin_packages/SOURCE new file mode 100644 index 0000000000..167c103d26 --- /dev/null +++ b/public/icons/docs/odin_packages/SOURCE @@ -0,0 +1 @@ +https://github.com/odin-lang/odin-lang.org/blob/master/static/favicon.svg \ No newline at end of file