History

Update DuckDB documentation (1.1.3)

Simon Legner committed 1 year ago

Commit deedda31 parent 58002165 files · +34 −46Browse files

Unified · Split

5 files
  1. assets/javascripts/news.json +4 −0
  2. lib/docs/filters/duckdb/attribution.rb +12 −0
  3. lib/docs/filters/duckdb/clean_html.rb +10 −11
  4. lib/docs/filters/duckdb/entries.rb +1 −1
  5. lib/docs/scrapers/duckdb.rb +7 −34
assets/javascripts/news.json+4−0
@@ -1,4 +1,8 @@
11 [
2+ [
3+ "2024-11-23",
4+ "New documentation: <a href=\"/duckdb/\">DuckDB</a>"
5+ ],
26 [
37 "2024-08-20",
48 "New documentation: <a href=\"/man/\">Linux man pages</a>"
lib/docs/filters/duckdb/attribution.rb+12−0
@@ -0,0 +1,12 @@
1+# frozen_string_literal: true
2+
3+module Docs
4+ class Duckdb
5+ class AttributionFilter < Docs::AttributionFilter
6+ def attribution_link
7+ url = current_url.to_s.sub! 'http://localhost:8000', 'https://duckdb.org'
8+ %(<a href="#{url}" class="_attribution-link">#{url}</a>)
9+ end
10+ end
11+ end
12+end
lib/docs/filters/duckdb/clean_html.rb+10−11
@@ -3,27 +3,26 @@ module Docs · 2 unmodified lines
33 class CleanHtmlFilter < Filter
44 def call
55 # First extract the main content
6− @doc = at_css('main')
6+ @doc = at_css('#main_content_wrap', 'main')
77 return doc if @doc.nil?
88
9+ doc.prepend_child at_css('.title').remove
10+ at_css('.title').name = 'h1'
11+
912 # Remove navigation and header elements
10− css('.headerline', '.landingmenu', '.search_icon', '#sidebar', '.pagemeta', '.toc_menu', '.section-nav').remove
13+ css('.headerline', '.headlinebar', '.landingmenu', '.search_icon', '#sidebar', '.pagemeta', '.toc_menu', '.section-nav').remove
1114
1215 # Clean up code blocks
13− css('pre').each do |node|
14− # Detect language from class or parent div
15− if node['class']&.include?('sql') || node.at_css('code.sql')
16− node['data-language'] = 'sql'
17− elsif node['class']&.include?('language-sql')
18− node['data-language'] = 'sql'
19− end
16+ css('div.highlighter-rouge').each do |node|
17+ node['data-language'] = node['class'][/language-(\w+)/, 1] if node['class']
2018 node.content = node.content.strip
19+ node.name = 'pre'
2120 end
2221
23− # Remove unnecessary attributes but keep essential ones
22+ # Remove unnecessary attributes
2423 css('div, span, p').each do |node|
2524 node.remove_attribute('style')
26− node.remove_attribute('class') unless node['class'] =~ /highlight/
25+ node.remove_attribute('class')
2726 end
2827
2928 # Remove empty elements
lib/docs/filters/duckdb/entries.rb+1−1
@@ -2,7 +2,7 @@ module Docs · 1 unmodified line
22 class Duckdb
33 class EntriesFilter < Docs::EntriesFilter
44 def get_name
5− at_css('h1')&.content || 'DuckDB'
5+ at_css('h1', '.title').content
66 end
77
88 def get_type
lib/docs/scrapers/duckdb.rb+7−34
@@ -8,7 +8,13 @@ module Docs · 7 unmodified lines
88 code: 'https://github.com/duckdb/duckdb'
99 }
1010
11+ # https://duckdb.org/docs/guides/offline-copy.html
12+ # curl -O https://duckdb.org/duckdb-docs.zip; bsdtar xf duckdb-docs.zip; cd duckdb-docs; python -m http.server
13+ self.release = '1.1.3'
14+ self.base_url = 'http://localhost:8000/docs/'
15+
1116 html_filters.push 'duckdb/entries', 'duckdb/clean_html'
17+ text_filters.replace 'attribution', 'duckdb/attribution'
1218
1319 options[:container] = '.documentation'
1420
@@ -29,41 +35,8 @@ module Docs · 14 unmodified lines
2935 Licensed under the MIT License.
3036 HTML
3137
32− version '1.1' do
33− self.release = '1.1.x'
34− self.base_url = 'http://localhost:8000/docs/'
35− end
36−
37− # version '1.0' do
38− # self.release = '1.0.x'
39− # self.base_url = "https://duckdb.org/docs/archive/#{self.version}/"
40−
41− # html_filters.push 'duckdb/clean_html'
42− # end
43−
44− # version '0.9' do
45− # self.release = '0.9.x'
46− # self.base_url = "https://duckdb.org/docs/archive/#{self.version}/"
47−
48− # html_filters.push 'duckdb/clean_html'
49− # end
50−
51− # version '0.8' do
52− # self.release = '0.8.x'
53− # self.base_url = "https://duckdb.org/docs/archive/#{self.version}/"
54−
55− # html_filters.push 'duckdb/clean_html'
56− # end
57−
58− # version '0.7' do
59− # self.release = '0.7.x'
60− # self.base_url = "https://duckdb.org/docs/archive/#{self.version}/"
61−
62− # html_filters.push 'duckdb/clean_html'
63− # end
64−
6538 def get_latest_version(opts)
66− get_github_tags('duckdb', 'duckdb', opts)
39+ get_github_tags('duckdb', 'duckdb', opts)[0]['name']
6740 end
6841 end
6942 end