|
|
@@ -3,27 +3,26 @@ module Docs
|
|
|
class CleanHtmlFilter < Filter
|
|
|
def call
|
|
|
# First extract the main content
|
|
|
- @doc = at_css('main')
|
|
|
+ @doc = at_css('#main_content_wrap', 'main')
|
|
|
return doc if @doc.nil?
|
|
|
|
|
|
+ doc.prepend_child at_css('.title').remove
|
|
|
+ at_css('.title').name = 'h1'
|
|
|
+
|
|
|
# Remove navigation and header elements
|
|
|
- css('.headerline', '.landingmenu', '.search_icon', '#sidebar', '.pagemeta', '.toc_menu', '.section-nav').remove
|
|
|
+ css('.headerline', '.headlinebar', '.landingmenu', '.search_icon', '#sidebar', '.pagemeta', '.toc_menu', '.section-nav').remove
|
|
|
|
|
|
# Clean up code blocks
|
|
|
- css('pre').each do |node|
|
|
|
- # Detect language from class or parent div
|
|
|
- if node['class']&.include?('sql') || node.at_css('code.sql')
|
|
|
- node['data-language'] = 'sql'
|
|
|
- elsif node['class']&.include?('language-sql')
|
|
|
- node['data-language'] = 'sql'
|
|
|
- end
|
|
|
+ css('div.highlighter-rouge').each do |node|
|
|
|
+ node['data-language'] = node['class'][/language-(\w+)/, 1] if node['class']
|
|
|
node.content = node.content.strip
|
|
|
+ node.name = 'pre'
|
|
|
end
|
|
|
|
|
|
- # Remove unnecessary attributes but keep essential ones
|
|
|
+ # Remove unnecessary attributes
|
|
|
css('div, span, p').each do |node|
|
|
|
node.remove_attribute('style')
|
|
|
- node.remove_attribute('class') unless node['class'] =~ /highlight/
|
|
|
+ node.remove_attribute('class')
|
|
|
end
|
|
|
|
|
|
# Remove empty elements
|