@@ -2,9 +2,75 @@ module Docs
22 class D
33 class CleanHtmlFilter < Filter
44 def call
5- css ( '.d_decl > div > span.def-anchor' ) . each do |node |
6- node . parent . parent [ 'id' ] = node [ 'id' ]
5+ @doc = at_css ( "#content" )
6+
7+ css ( '#tools' , '#copyright' ) . remove
8+
9+ css ( 'td > b' , 'h1 > span' ) . each do |node |
10+ node . before ( node . children ) . remove
711 end
12+
13+ css ( 'span.d_inlinecode' ) . each do |node |
14+ node . name = 'code'
15+ node . remove_attribute ( 'class' )
16+ end
17+
18+ css ( '.keyval' ) . each do |node |
19+ key = node . at_css ( '.key' )
20+ dt = key . inner_html
21+ dd = if val = node . at_css ( '.val' )
22+ val . inner_html
23+ else
24+ siblings = [ ]
25+ siblings << key while key = key . next
26+ siblings . map ( &:to_html ) . join
27+ end
28+ node . replace ( "<dl><dt>#{ dt } </dt><dd>#{ dd } </dd></dl>" )
29+ end
30+
31+ css ( 'div.summary' , 'div.description' ) . each do |node |
32+ node . name = 'p' unless node . at_css ( 'p' )
33+ node . css ( '.blankline' ) . each { |n | n . replace ( '<br><br>' ) }
34+ end
35+
36+ css ( '.d_decl' ) . each do |node |
37+ node [ 'id' ] = node . at_css ( '.def-anchor' ) [ 'id' ] . remove ( /\A \. / )
38+ constraints = node . css ( '.constraint' ) . remove
39+ node . content = node . content . strip
40+ node . inner_html = node . inner_html . gsub ( /;\s */ , '<br>' ) . remove ( /<br>\z / )
41+ node << "<br><br> Constraints:<br> #{ constraints . map ( &:content ) . join ( '<br> ' ) } " unless constraints . empty?
42+ end
43+
44+ css ( 'pre' ) . each do |node |
45+ node . content = node . content
46+ node [ 'data-language' ] = 'd' if node [ 'class' ] && node [ 'class' ] . include? ( 'd_code' )
47+ end
48+
49+ css ( 'div' , 'code > a > code' , 'code > code' ) . each do |node |
50+ node . before ( node . children ) . remove
51+ end
52+
53+ css ( 'a[href*="#."]' ) . each do |node |
54+ node [ 'href' ] = node [ 'href' ] . sub ( '#.' , '#' )
55+ end
56+
57+ css ( 'tr' , 'td' , 'code' , 'pre' , 'p' , 'table' ) . remove_attr ( 'class' )
58+ css ( 'table' ) . remove_attr ( 'border' ) . remove_attr ( 'cellpadding' ) . remove_attr ( 'cellspacing' )
59+
60+ if base_url . path == '/spec/'
61+ css ( 'a.anchor' ) . each do |node |
62+ node . parent [ 'id' ] ||= node [ 'id' ]
63+ node . before ( node . children ) . remove
64+ end
65+
66+ css ( 'center' ) . each do |node |
67+ node . before ( node . children ) . remove
68+ end
69+
70+ css ( '.fa-angle-left + a' ) . remove
71+ css ( 'a + .fa-angle-right' ) . each { |node | node . previous_element . remove }
72+ end
73+
874 doc
975 end
1076 end
0 commit comments