[devdocsgjs/main: 221/239] Improve code fragment, fixed space problems.
- From: Andy Holmes <andyholmes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [devdocsgjs/main: 221/239] Improve code fragment, fixed space problems.
- Date: Fri, 8 Apr 2022 07:47:43 +0000 (UTC)
commit 6448e19c1285c50e0356648a22eda0a909ed7f40
Author: xjkdev <xjk2008 gmail com>
Date: Fri Mar 11 02:22:37 2022 +0800
Improve code fragment, fixed space problems.
lib/docs/filters/eigen3/clean_html.rb | 10 ----------
lib/docs/scrapers/eigen3.rb | 24 ++++++++++++++++++++++++
2 files changed, 24 insertions(+), 10 deletions(-)
---
diff --git a/lib/docs/filters/eigen3/clean_html.rb b/lib/docs/filters/eigen3/clean_html.rb
index 0542507e..3cbe6bb2 100644
--- a/lib/docs/filters/eigen3/clean_html.rb
+++ b/lib/docs/filters/eigen3/clean_html.rb
@@ -12,16 +12,6 @@ module Docs
css('.top').remove
css('.dynheader.closed').remove
css('.permalink').remove
-
- css("div.fragment").each do |node|
- node.name = 'pre'
- node['data-language'] = 'cpp'
- node_content = ""
- node.css('div').each do |inner_node|
- node_content += inner_node.text + "\n"
- end
- node.content = node_content
- end
doc
end
end
diff --git a/lib/docs/scrapers/eigen3.rb b/lib/docs/scrapers/eigen3.rb
index c7ed97a6..30722b2e 100644
--- a/lib/docs/scrapers/eigen3.rb
+++ b/lib/docs/scrapers/eigen3.rb
@@ -41,5 +41,29 @@ module Docs
# TODO: replace cppreference
# options[:replace_urls] = { 'http://en.cppreference.com/w/cpp/' => 'cpp/' }
+ def parse(response) # Hook here because Nokogori removes whitespace from code fragments
+ last_idx = 0
+ # Process nested <div>s inside code fragment div.
+ while not (last_idx = response.body.index('<div class="fragment">', last_idx)).nil?
+ # enter code fragment <div>
+ level = 1
+ while not (last_idx = response.body.index(/<\/?div/, last_idx+1)).nil?
+ # skip nested divs inside.
+ if response.body[last_idx..last_idx+3] == '<div'
+ level += 1
+ else
+ level -= 1
+ end
+ break if level == 0 # exit code fragment
+ end
+ if not last_idx.nil? and response.body[last_idx..last_idx+5] == '</div>'
+ response.body[last_idx..last_idx+5] = '</pre>'
+ end
+ end
+ response.body.gsub! /[\r\n\s]*<div class="ttc"[^>]*>.*<\/div>[\r\n\s]*/, ""
+ response.body.gsub! /<div class="line">(.*?)<\/div>/m, "\\1"
+ response.body.gsub! '<div class="fragment">', '<pre class="fragment" data-language="cpp">'
+ super
+ end
end
end
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]