| @@ -0,0 +1,83 @@ |
| | 1 | module Docs |
| | 2 | class Prettier |
| | 3 | class CleanHtmlFilter < Filter |
| | 4 | def call |
| | 5 | @doc = at_css('.post') |
| | 6 | |
| | 7 | if root_page? |
| | 8 | at_css('h1').content = 'React Native Documentation' |
| | 9 | css('h1 ~ *').remove |
| | 10 | end |
| | 11 | |
| | 12 | css('.docs-prevnext', '.hash-link', '.edit-page-link', '.edit-github', 'a.hash', '.edit-page-block', 'a.show', 'a.hide', 'hr').remove |
| | 13 | |
| | 14 | css('table h1', 'table h2', 'table h3').each do |node| |
| | 15 | table = node |
| | 16 | table = table.parent until table.name == 'table' |
| | 17 | table.replace(node) |
| | 18 | end |
| | 19 | |
| | 20 | css('a.anchor', 'a.hashref').each do |node| |
| | 21 | node.parent['id'] ||= node['name'] || node['id'] |
| | 22 | end |
| | 23 | |
| | 24 | css('.highlight').each do |node| |
| | 25 | node.name = 'pre' |
| | 26 | node.css('.gutter').remove |
| | 27 | node['data-language'] = node.at_css('[data-lang]').try(:[], 'data-lang') || 'js' |
| | 28 | node.content = node.content.strip |
| | 29 | end |
| | 30 | |
| | 31 | css('table.highlighttable').each do |node| |
| | 32 | node.replace(node.at_css('pre.highlight')) |
| | 33 | end |
| | 34 | |
| | 35 | css('.prism').each do |node| |
| | 36 | node.name = 'pre' |
| | 37 | node['data-language'] = node['class'][/(?<=language\-)(\w+)/] |
| | 38 | node.content = node.content |
| | 39 | end |
| | 40 | |
| | 41 | css('pre > code.hljs').each do |node| |
| | 42 | node.parent['data-language'] = 'jsx' |
| | 43 | node.before(node.children).remove |
| | 44 | end |
| | 45 | |
| | 46 | css('blockquote > p:first-child').each do |node| |
| | 47 | node.remove if node.content.strip == 'Note:' |
| | 48 | end |
| | 49 | |
| | 50 | css('h3#props', 'h3#methods').each { |node| node.name = 'h2' } |
| | 51 | css('h4.propTitle').each { |node| node.name = 'h3' } |
| | 52 | |
| | 53 | css('> div > div', '> div', 'div > span', '.props', '.prop', '> article', '.postHeader', '.web-player').each do |node| |
| | 54 | node.before(node.children).remove |
| | 55 | end |
| | 56 | |
| | 57 | css('a pre', 'h3 .propType').each do |node| |
| | 58 | node.name = 'code' |
| | 59 | end |
| | 60 | |
| | 61 | css('a[target]').each do |node| |
| | 62 | node.remove_attribute('target') |
| | 63 | end |
| | 64 | |
| | 65 | css('center > .button', 'p:contains("short survey")', 'iframe', '.embedded-simulator', '.deprecatedIcon').remove |
| | 66 | |
| | 67 | css('h4.methodTitle').each do |node| |
| | 68 | node.name = 'h3' |
| | 69 | end |
| | 70 | |
| | 71 | css('div:not([class])', 'span:not([class])').each do |node| |
| | 72 | node.before(node.children).remove |
| | 73 | end |
| | 74 | |
| | 75 | css('ul').each do |node| |
| | 76 | node.before(node.children).remove if node.at_css('> p', '> h2') |
| | 77 | end |
| | 78 | |
| | 79 | doc |
| | 80 | end |
| | 81 | end |
| | 82 | end |
| | 83 | end |