@@ -2,26 +2,38 @@ module Docs
2
2
class Tailwindcss
3
3
class CleanHtmlFilter < Filter
4
4
def call
5
+ # Move h1 out of wrapper.
6
+ css ( 'h1' ) . each do |node |
7
+ doc . prepend_child ( node )
8
+ end
9
+
5
10
# Remove main page headers (top level sticky)
6
- css ( '#__next > .sticky' ) . remove
11
+ css ( '#__next > .sticky' , 'div.fixed.inset-x-0.top-0' ) . remove
7
12
# And anything absolutely positioned (fancy floating navigation elements we don't care about)
8
- css ( '#__next .absolute' ) . remove
13
+ css ( '#__next .absolute' , '.fixed' ) . remove
9
14
# Remove the left-navigation we scraped
10
15
css ( 'nav' ) . remove
11
16
12
17
css ( 'svg' ) . remove if root_page?
13
18
14
- # Remove the duplicate category name at the top of the page - redundant
15
- at_css ( 'header#header > div:first-child > p:first-child' ) . remove
16
-
17
19
# Remove the right navigation sidebar
18
- at_css ( 'header#header' ) . parent . css ( '> div:has(h5:contains("On this page"))' ) . remove
20
+ css ( 'header#header' , 'p[data-section]' ) . each do |node |
21
+ node . parent . css ( '> div:has(h5:contains("On this page"))' ) . remove # v3
22
+
23
+ node . parent . parent . css ( 'div.max-xl\\:hidden' ) . remove # v4
24
+ end
25
+
26
+ # Remove the duplicate category name at the top of the page - redundant
27
+ css (
28
+ 'header#header > div:first-child > p:first-child' , # v3
29
+ 'p[data-section]' # v4
30
+ ) . remove
19
31
20
32
# Remove footer + prev/next navigation
21
- at_css ( 'footer' ) . remove
33
+ css ( 'footer' , '.row-start-5 ') . remove
22
34
23
35
# Handle long lists of class reference that otherwise span several scrolled pages
24
- if class_reference = at_css ( '#class-reference' )
36
+ if class_reference = at_css ( '#class-reference' , '#quick-reference' )
25
37
reference_container = class_reference . parent
26
38
classes_container = reference_container . children . reject { |child | child == class_reference } . first
27
39
@@ -33,7 +45,7 @@ def call
33
45
end
34
46
35
47
# Remove border color preview column as it isn't displayed anyway
36
- if result [ :path ] == "border-color" and class_reference = at_css ( '#class-reference' )
48
+ if result [ :path ] == "border-color" and class_reference = at_css ( '#class-reference' , '#quick-reference' )
37
49
class_reference . parent . css ( "thead th:nth-child(3)" ) . remove
38
50
class_reference . parent . css ( "tbody td:nth-child(3)" ) . remove
39
51
end
@@ -59,29 +71,48 @@ def call
59
71
end
60
72
61
73
# Remove buttons to expand lists - those are already expanded and the button is useless
62
- css ( 'div > button:contains("Show all classes")' ) . each do |node |
74
+ css (
75
+ 'div > button:contains("Show all classes")' ,
76
+ 'div > button:contains("Show more")'
77
+ ) . each do |node |
63
78
node . parent . remove
64
79
end
65
80
66
81
# Remove class examples - not part of devdocs styleguide? (similar to bootstrap)
67
82
# Refer to https://github.com/freeCodeCamp/devdocs/pull/1534#pullrequestreview-649818936
68
- css ( '.not-prose' ) . each do |node |
69
- if node . parent . children . length == 1
70
- node . parent . remove
71
- else
72
- node . remove
73
- end
74
- end
83
+ css ( '.mt-4.-mb-3' , 'figure' , 'svg' , '.flex.space-x-2' ) . remove
75
84
76
- # Properly format code examples
85
+ # Properly format code examples.
77
86
css ( 'pre > code:first-child' ) . each do |node |
78
- node . parent [ 'data-language' ] = node [ 'class' ] [ /language-(\w +)/ , 1 ] if node [ 'class' ] and node [ 'class' ] [ /language-(\w +)/ ]
79
- node . parent . content = node . parent . content
87
+ # v4 doesn't provide language context, so it must be inferred imperfectly.
88
+ node . parent [ 'data-language' ] =
89
+ if node . content . include? ( 'function' )
90
+ 'jsx'
91
+ elsif node . content . include? ( "</" )
92
+ 'html'
93
+ else
94
+ 'css'
95
+ end
96
+
97
+ node . parent . content =
98
+ if version == '3'
99
+ node . parent . content
100
+ else
101
+ node . css ( '.line' ) . map ( &:content ) . join ( "\n " )
102
+ end
103
+ end
104
+
105
+ # Remove headers some code examples have.
106
+ css ( '.flex.text-slate-400.text-xs.leading-6' , '.px-3.pt-0\\.5.pb-1\\.5' ) . remove
107
+
108
+ # Strip anchor from headers
109
+ css ( 'h2' , 'h3' ) . each do |node |
110
+ node . content = node . inner_text
80
111
end
81
112
82
113
@doc . traverse { |node | cleanup_tailwind_classes ( node ) }
83
114
84
- #remove weird <hr> (https://github.com/damms005/devdocs/commit/8c9fbd859b71a2525b94a35ea994393ce2b6fedb#commitcomment-50091018)
115
+ # Remove weird <hr> (https://github.com/damms005/devdocs/commit/8c9fbd859b71a2525b94a35ea994393ce2b6fedb#commitcomment-50091018)
85
116
css ( 'hr' ) . remove
86
117
87
118
doc
0 commit comments