From c4f6937d41f57aa6f486743f748400e4726933ed Mon Sep 17 00:00:00 2001 From: MasterEnoc Date: Sun, 6 Dec 2020 19:38:25 -0600 Subject: [PATCH] Update Nim to 1.4.2 --- .../templates/pages/about_tmpl.coffee | 2 +- lib/docs/filters/nim/clean_html.rb | 18 ++++---- lib/docs/filters/nim/entries.rb | 46 +++++++++++-------- lib/docs/scrapers/nim.rb | 6 +-- 4 files changed, 39 insertions(+), 33 deletions(-) diff --git a/assets/javascripts/templates/pages/about_tmpl.coffee b/assets/javascripts/templates/pages/about_tmpl.coffee index afaf37a3..4a8838b7 100644 --- a/assets/javascripts/templates/pages/about_tmpl.coffee +++ b/assets/javascripts/templates/pages/about_tmpl.coffee @@ -533,7 +533,7 @@ credits = [ 'https://github.com/openresty/lua-nginx-module#copyright-and-license' ], [ 'Nim', - '2006-2017 Andreas Rumpf', + '2006-2020 Andreas Rumpf', 'MIT', 'https://github.com/nim-lang/Nim#license' ], [ diff --git a/lib/docs/filters/nim/clean_html.rb b/lib/docs/filters/nim/clean_html.rb index 50b3e504..57eeb6ee 100644 --- a/lib/docs/filters/nim/clean_html.rb +++ b/lib/docs/filters/nim/clean_html.rb @@ -4,6 +4,15 @@ module Docs def call @doc = at_css('#documentId .container') + # add id to each proc, template and macro + css('dl > dt > pre').each do |node| + next if !(node.at_css('a')) + node.remove_attribute('id') + nodeId = node.at_css('a')['href'] + nodeId.gsub!(/.*\#/, '') + node['id'] = nodeId + end + css('.docinfo', '.footer', 'blockquote > p:empty', '.link-seesrc').remove css('h1:not(.title), h2, h3, h4').each do |node| @@ -15,20 +24,11 @@ module Docs @doc = content end - if root_page? - at_css('h1').content = 'Nim Documentation' - end - css('h1 > a', 'h2 > a', 'h3 > a', 'h4 > a').each do |node| node.parent['id'] = node['id'] if node['id'] node.before(node.children).remove end - css('a[name]').each do |node| - node.next_element['id'] = node['name'] - node.remove - end - css('pre').each do |node| node.content = node.content.strip node['data-language'] = 'nim' unless node.content =~ /\A[\w\-\_\:\=\ ]+\z/ diff --git a/lib/docs/filters/nim/entries.rb b/lib/docs/filters/nim/entries.rb index 2176727b..8c43cccf 100644 --- a/lib/docs/filters/nim/entries.rb +++ b/lib/docs/filters/nim/entries.rb @@ -1,6 +1,15 @@ module Docs class Nim class EntriesFilter < Docs::EntriesFilter + + REFERENCE = [ + 'API naming design', 'Internals of the Nim Compiler', 'Nim Backend Integration', + 'Nim Compiler', 'Nim Destructors and Move Semantics', 'Nim Enhancement Proposal #1', + 'Nim Experimental Features', 'Nim IDE Integration Guide', + 'Nim maintenance script', 'Nim Standard Library', "Nim's Memory Management", + 'NimScript', 'Packaging Nim', 'segfaults', 'Source Code Filters' + ] + def get_name name = at_css('h1').content name.remove! 'Module ' @@ -12,35 +21,20 @@ module Docs end def get_type - if name.include?('Tutorial') - 'Tutorial' - elsif slug == 'manual' + if slug == 'manual' 'Manual' - elsif at_css('h1').content.include?('Module ') - name - else + elsif REFERENCE.include?(name) 'Reference' + else + name end end def additional_entries entries = [] - if at_css('h1').content.include?('Module ') - css('#toc-list > li > .simple-toc-section').each do |node| - type = node.previous_element.content.strip + if slug == 'manual' - node.css('a.reference:not(.reference-toplevel)').each do |n| - n.css('span').remove - name = n.content.strip - name << '()' if (type == 'Procs' || type == 'Templates') && !name.include?('`') - name.remove! '`' - name.prepend "#{self.name}." - id = n['href'].remove('#') - entries << [name, id] unless entries.any? { |e| e[0] == name } - end - end - elsif slug == 'manual' css('#toc-list > li > a').each do |node| name = node.content.strip next if name.start_with?('About') @@ -54,11 +48,23 @@ module Docs node.css('> li > a').each do |n| entries << [n.content.strip, n['href'].remove('#'), "Manual: #{type}"] end + + end + + else + + css('.simple-toc-section a').each do |node| + entry_name = node.content + entry_name.gsub!(/,.*/, '') + entry_id = slug + node['href'] + entries << [entry_name, entry_id, name] end + end entries end + end end end diff --git a/lib/docs/scrapers/nim.rb b/lib/docs/scrapers/nim.rb index a927605d..6f17c4fb 100644 --- a/lib/docs/scrapers/nim.rb +++ b/lib/docs/scrapers/nim.rb @@ -1,7 +1,7 @@ module Docs class Nim < UrlScraper self.type = 'simple' - self.release = '0.19.0' + self.release = '1.4.2' self.base_url = 'https://nim-lang.org/docs/' self.root_path = 'overview.html' self.links = { @@ -11,10 +11,10 @@ module Docs html_filters.push 'nim/entries', 'nim/clean_html' - options[:skip] = %w(theindex.html docgen.txt) + options[:skip] = %w(theindex.html docgen.html tut1.html tut2.html tut3.html tools.html) options[:attribution] = <<-HTML - © 2006–2018 Andreas Rumpf
+ © 2006–2020 Andreas Rumpf
Licensed under the MIT License. HTML