diff --git a/lib/docs/filters/odin/clean_html.rb b/lib/docs/filters/odin/clean_html.rb new file mode 100644 index 0000000000..92eff0ade2 --- /dev/null +++ b/lib/docs/filters/odin/clean_html.rb @@ -0,0 +1,12 @@ +module Docs + class Odin + class CleanHtmlFilter < Filter + def call + @doc = at_css('#pkg') || doc + + css('nav').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..081c182306 --- /dev/null +++ b/lib/docs/filters/odin/entries.rb @@ -0,0 +1,24 @@ +module Docs + class Odin + class EntriesFilter < Docs::EntriesFilter + def get_name + title = context[:html_title].gsub(/ \| Odin Programming Language/, "") + title + end + + def get_type + if subpath.start_with?('docs') + "Documentation" + elsif subpath.start_with?('spec') + "Specifications" + end + end + + def additional_entries + entries = [] + entries + end + end + end +end + diff --git a/lib/docs/filters/odin_packages/clean_html.rb b/lib/docs/filters/odin_packages/clean_html.rb new file mode 100644 index 0000000000..929ab8b339 --- /dev/null +++ b/lib/docs/filters/odin_packages/clean_html.rb @@ -0,0 +1,19 @@ +module Docs + class OdinPackages + class CleanHtmlFilter < Filter + def call + @doc = at_css('#pkg') || doc + + 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_packages/entries.rb b/lib/docs/filters/odin_packages/entries.rb new file mode 100644 index 0000000000..adc8b7ebb8 --- /dev/null +++ b/lib/docs/filters/odin_packages/entries.rb @@ -0,0 +1,40 @@ +module Docs + class OdinPackages + class EntriesFilter < Docs::EntriesFilter + def get_name + 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 /, "") + title + end + + def get_type + breadcrumb_base = css(".pkg-breadcrumb > ol > li") + doc_directory = css(".doc-directory") + if breadcrumb_base[0] + breadcrumb_base[0].content + elsif doc_directory + title = context[:html_title].gsub(/ library - pkg.odin-lang.org/, "") + title + elsif context[:html_title].starts_with?('package') + 'Packages' + else + 'Docs' + 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..b180b6356e --- /dev/null +++ b/lib/docs/scrapers/odin.rb @@ -0,0 +1,38 @@ +module Docs + class Odin < UrlScraper + self.name = 'Odin' + self.slug = 'odin' + self.type = 'odin' + self.release = 'latest' + self.base_url = 'https://odin-lang.org/' + self.root_path = 'https://odin-lang.org/' + self.initial_paths = %w(docs spec) + + 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/] + 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 3-clause BSD License. + HTML + + end +end diff --git a/lib/docs/scrapers/odin_packages.rb b/lib/docs/scrapers/odin_packages.rb new file mode 100644 index 0000000000..3047c5cc55 --- /dev/null +++ b/lib/docs/scrapers/odin_packages.rb @@ -0,0 +1,28 @@ +module Docs + class OdinPackages < UrlScraper + self.name = 'Odin Packages' + self.slug = 'odin_packages' + self.type = 'odin_packages' + self.release = 'latest' + self.base_url = 'https://pkg.odin-lang.org/' + self.initial_paths = %w(base core vendor) + + options[:trailing_slash] = false + + self.links = { + home: 'https://odin-lang.org/', + code: 'https://github.com/odin-lang/Odin' + } + + html_filters.push 'odin_packages/entries', 'odin_packages/clean_html' + + options[:download_images] = false + options[:container] = '.odin-main' + + options[:attribution] = <<-HTML + © 2016-#{Date.today.year} Ginger Bill
+ Licensed under the 3-clause BSD 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