diff --git a/lib/docs/filters/core/rouge.rb b/lib/docs/filters/core/rouge.rb new file mode 100644 index 00000000..87c9b58b --- /dev/null +++ b/lib/docs/filters/core/rouge.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +module Docs + class RougeFilter < Filter + def call + 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 + + css('.highlighter-rouge').remove_attr('class') + + doc + end + end +end diff --git a/lib/docs/filters/electron/clean_html.rb b/lib/docs/filters/electron/clean_html.rb index 8699763c..2fb7563e 100644 --- a/lib/docs/filters/electron/clean_html.rb +++ b/lib/docs/filters/electron/clean_html.rb @@ -22,14 +22,6 @@ module Docs node.name = node.name.sub(/\d/) { |i| i.to_i - 1 } unless node.name == 'h3' && node.at_css('code') end if !at_css('h2') && at_css('h4') - 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 - - css('.highlighter-rouge').remove_attr('class') - css('pre').each do |node| node.content = node.content end diff --git a/lib/docs/filters/flow/clean_html.rb b/lib/docs/filters/flow/clean_html.rb index 50269f8a..3381ca5a 100644 --- a/lib/docs/filters/flow/clean_html.rb +++ b/lib/docs/filters/flow/clean_html.rb @@ -52,13 +52,6 @@ module Docs node.replace(pre) 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 - - css('.highlighter-rouge').remove_attr('class') end end end diff --git a/lib/docs/filters/yarn/clean_html.rb b/lib/docs/filters/yarn/clean_html.rb index 6aceb70a..c7932840 100644 --- a/lib/docs/filters/yarn/clean_html.rb +++ b/lib/docs/filters/yarn/clean_html.rb @@ -42,14 +42,6 @@ module Docs node.name = node.name.sub(/\d/) { |i| i.to_i - 1 } end 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 - - css('.highlighter-rouge').remove_attr('class') end end end diff --git a/lib/docs/scrapers/electron.rb b/lib/docs/scrapers/electron.rb index 7e16ef58..30b3d1e5 100644 --- a/lib/docs/scrapers/electron.rb +++ b/lib/docs/scrapers/electron.rb @@ -8,7 +8,7 @@ module Docs code: 'https://github.com/electron/electron' } - html_filters.push 'electron/clean_html', 'electron/entries' + html_filters.push 'electron/clean_html', 'electron/entries', 'rouge' options[:trailing_slash] = true options[:container] = '.page-section > .container, .page-section > .container-narrow' diff --git a/lib/docs/scrapers/flow.rb b/lib/docs/scrapers/flow.rb index 95a7adb7..3f71b97c 100644 --- a/lib/docs/scrapers/flow.rb +++ b/lib/docs/scrapers/flow.rb @@ -8,7 +8,7 @@ module Docs code: 'https://github.com/facebook/flow' } - html_filters.push 'flow/entries', 'flow/clean_html', 'title', 'parse_cf_email' + html_filters.push 'flow/entries', 'flow/clean_html', 'title', 'parse_cf_email', 'rouge' options[:trailing_slash] = false options[:root_title] = 'Flow' diff --git a/lib/docs/scrapers/yarn.rb b/lib/docs/scrapers/yarn.rb index 7f34b8bc..b1029de8 100644 --- a/lib/docs/scrapers/yarn.rb +++ b/lib/docs/scrapers/yarn.rb @@ -8,7 +8,7 @@ module Docs code: 'https://github.com/yarnpkg/yarn' } - html_filters.push 'yarn/entries', 'yarn/clean_html', 'title', 'parse_cf_email' + html_filters.push 'yarn/entries', 'yarn/clean_html', 'title', 'parse_cf_email', 'rouge' options[:root_title] = 'Yarn' options[:trailing_slash] = false