From b04bf3e8bbb95c0ff28f1b0b36e97b7882ae12a7 Mon Sep 17 00:00:00 2001 From: Julien Desgats Date: Fri, 29 Jan 2016 00:02:45 +0100 Subject: [PATCH] Added Lua Nginx Module documentation Only the Nginx directives and the Lua API are relevant for devdocs, all the rest has been filtered out for now. --- .../views/pages/lua_nginx_module.coffee | 8 +++++++ .../filters/lua_nginx_module/clean_html.rb | 22 +++++++++++++++++++ lib/docs/filters/lua_nginx_module/entries.rb | 17 ++++++++++++++ lib/docs/scrapers/lua_nginx_module.rb | 19 ++++++++++++++++ 4 files changed, 66 insertions(+) create mode 100644 assets/javascripts/views/pages/lua_nginx_module.coffee create mode 100644 lib/docs/filters/lua_nginx_module/clean_html.rb create mode 100644 lib/docs/filters/lua_nginx_module/entries.rb create mode 100644 lib/docs/scrapers/lua_nginx_module.rb diff --git a/assets/javascripts/views/pages/lua_nginx_module.coffee b/assets/javascripts/views/pages/lua_nginx_module.coffee new file mode 100644 index 00000000..16a0bac2 --- /dev/null +++ b/assets/javascripts/views/pages/lua_nginx_module.coffee @@ -0,0 +1,8 @@ +#= require views/pages/base + +# this may be used for all GitHub pages + +class app.views.LuaNginxModulePage extends app.views.BasePage + prepare: -> + @highlightCode @findAll('div.highlight-source-lua pre'), 'lua' + return diff --git a/lib/docs/filters/lua_nginx_module/clean_html.rb b/lib/docs/filters/lua_nginx_module/clean_html.rb new file mode 100644 index 00000000..7f82c98f --- /dev/null +++ b/lib/docs/filters/lua_nginx_module/clean_html.rb @@ -0,0 +1,22 @@ +module Docs + class LuaNginxModule + class CleanHtmlFilter < Filter + def call + type = nil + doc.children.each do |node| + if node.name == 'h1' + section = node.content.strip + type = section.in?(['Directives', 'Nginx API for Lua']) ? section : nil + end + + if type == nil || (node.name == 'ul' && node.previous_element.name == 'h1') || node.content.strip == 'Back to TOC' + node.remove() + elsif node.name == 'h2' + node["id"] = /^user-content-(.+)/.match(node.css('a.anchor').first["id"])[1] + end + end + doc + end + end + end +end diff --git a/lib/docs/filters/lua_nginx_module/entries.rb b/lib/docs/filters/lua_nginx_module/entries.rb new file mode 100644 index 00000000..24d9725b --- /dev/null +++ b/lib/docs/filters/lua_nginx_module/entries.rb @@ -0,0 +1,17 @@ +module Docs + class LuaNginxModule + class EntriesFilter < Docs::EntriesFilter + def additional_entries + type = nil + + doc.children.each_with_object [] do |node, entries| + if node.name == 'h1' + type = node.content.strip + elsif node.name == 'h2' + entries << [ node.content, node["id"], type ] + end + end + end + end + end +end diff --git a/lib/docs/scrapers/lua_nginx_module.rb b/lib/docs/scrapers/lua_nginx_module.rb new file mode 100644 index 00000000..a1094d9e --- /dev/null +++ b/lib/docs/scrapers/lua_nginx_module.rb @@ -0,0 +1,19 @@ +module Docs + class LuaNginxModule < UrlScraper + self.type = 'LuaNginxModule' + self.root_path = 'README.markdown' + + html_filters.push 'lua_nginx_module/clean_html', 'lua_nginx_module/entries' + + options[:container] = '#readme > article' + + options[:attribution] = <<-HTML + Copyright (C) 2009-2015, by Xiaozhe Wang (chaoslawful) chaoslawful@gmail.com.
+ Copyright (C) 2009-2015, by Yichun "agentzh" Zhang (章亦春) agentzh@gmail.com, CloudFlare Inc.
+ Licensed under the BSD License. + HTML + + self.release = '0.10.0' + self.base_url = 'https://github.com/openresty/lua-nginx-module/tree/v0.10.0/' + end +end