From a00e45e829b409f5db6fcc9e263a7ee02b99fd1c Mon Sep 17 00:00:00 2001 From: Constantine Kim Date: Sun, 5 Jul 2015 20:32:37 +0900 Subject: [PATCH] Add Q.js documentation --- assets/javascripts/views/pages/q.coffee | 6 +++ assets/stylesheets/application-dark.css.scss | 1 + assets/stylesheets/application.css.scss | 1 + assets/stylesheets/pages/_q.scss | 5 +++ lib/docs/filters/q/clean_html.rb | 16 +++++++ lib/docs/filters/q/entries.rb | 42 +++++++++++++++++++ lib/docs/scrapers/q.rb | 22 ++++++++++ public/icons/docs/q/16.png | Bin 0 -> 3603 bytes public/icons/docs/q/16@2x.png | Bin 0 -> 5100 bytes public/icons/docs/q/SOURCE | 1 + 10 files changed, 94 insertions(+) create mode 100644 assets/javascripts/views/pages/q.coffee create mode 100644 assets/stylesheets/pages/_q.scss create mode 100644 lib/docs/filters/q/clean_html.rb create mode 100644 lib/docs/filters/q/entries.rb create mode 100644 lib/docs/scrapers/q.rb create mode 100644 public/icons/docs/q/16.png create mode 100644 public/icons/docs/q/16@2x.png create mode 100644 public/icons/docs/q/SOURCE diff --git a/assets/javascripts/views/pages/q.coffee b/assets/javascripts/views/pages/q.coffee new file mode 100644 index 00000000..67637560 --- /dev/null +++ b/assets/javascripts/views/pages/q.coffee @@ -0,0 +1,6 @@ +#= require views/pages/base + +class app.views.QPage extends app.views.BasePage + afterRender: -> + @highlightCode @findAll('.highlight-js > pre'), 'javascript' + return diff --git a/assets/stylesheets/application-dark.css.scss b/assets/stylesheets/application-dark.css.scss index dd9de3d5..20c2fc1e 100644 --- a/assets/stylesheets/application-dark.css.scss +++ b/assets/stylesheets/application-dark.css.scss @@ -59,6 +59,7 @@ 'pages/php', 'pages/phpunit', 'pages/postgres', + 'pages/q', 'pages/rdoc', 'pages/react', 'pages/redis', diff --git a/assets/stylesheets/application.css.scss b/assets/stylesheets/application.css.scss index 1045542e..dcb6b623 100644 --- a/assets/stylesheets/application.css.scss +++ b/assets/stylesheets/application.css.scss @@ -59,6 +59,7 @@ 'pages/php', 'pages/phpunit', 'pages/postgres', + 'pages/q', 'pages/rdoc', 'pages/react', 'pages/redis', diff --git a/assets/stylesheets/pages/_q.scss b/assets/stylesheets/pages/_q.scss new file mode 100644 index 00000000..7b0af99c --- /dev/null +++ b/assets/stylesheets/pages/_q.scss @@ -0,0 +1,5 @@ +._q { + > h3 { @extend %block-heading; } + > h4 { @extend %block-label, %label-blue; } + code { @extend %label; } +} diff --git a/lib/docs/filters/q/clean_html.rb b/lib/docs/filters/q/clean_html.rb new file mode 100644 index 00000000..54d45564 --- /dev/null +++ b/lib/docs/filters/q/clean_html.rb @@ -0,0 +1,16 @@ +module Docs + class Q + class CleanHtmlFilter < Filter + def call + @doc = at_css('.markdown-body') + + css('h3 > a, h4 > a').each do |node| + node.parent['id'] = node['href'].remove('#') + node.remove + end + + doc + end + end + end +end diff --git a/lib/docs/filters/q/entries.rb b/lib/docs/filters/q/entries.rb new file mode 100644 index 00000000..35b861ac --- /dev/null +++ b/lib/docs/filters/q/entries.rb @@ -0,0 +1,42 @@ +module Docs + class Q + class EntriesFilter < Docs::EntriesFilter + def additional_entries + entries = [] + + type = '' + entry = [] + css('h3, h4, em:contains("Alias")').each do |node| + + if node.name == 'h3' + type = node.content.strip + + if type == "Q.defer()" # Q.defer() is a method, but it also plays a section title role. + entries << ['Q.defer', 'qdefer', 'Q.defer()'] + end + next + end + + if node.name == 'h4' + name = node.content.strip.remove(/\(.*?\).*/) + link = node['id'] + entry = [name, link, type] + + entries << entry + next + end + + if node.name == 'em' # for the aliases + aliasEntry = entry.clone + aliasEntry[0] = node.parent.at_css('code').content + entries << aliasEntry + next + end + + end + + entries + end + end + end +end diff --git a/lib/docs/scrapers/q.rb b/lib/docs/scrapers/q.rb new file mode 100644 index 00000000..78de5b1b --- /dev/null +++ b/lib/docs/scrapers/q.rb @@ -0,0 +1,22 @@ +module Docs + class Q < UrlScraper + self.name = 'Q' + self.slug = 'Q' + self.type = 'Q' + self.version = '1.4.1' + self.base_url = "https://github.com/kriskowal/q/wiki/API-Reference" + self.links = { + home: 'https://github.com/kriskowal/q/', + code: 'https://github.com/kriskowal/q/' + } + + html_filters.push 'q/clean_html', 'q/entries', 'title' + + options[:title] = 'Q' + options[:skip_links] = true + + options[:attribution] = <<-HTML + Licensed under the MIT License. + HTML + end +end diff --git a/public/icons/docs/q/16.png b/public/icons/docs/q/16.png new file mode 100644 index 0000000000000000000000000000000000000000..9568cd73071a3c02e1950bf8cc3f4926c6ef3bbd GIT binary patch literal 3603 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 O0000