History

Addd WebExtensions

Cimbali committed 6 years ago

Commit 21443dc1 parent cce7c493 files · +68 −0Browse files

Unified · Split

3 files
  1. lib/docs/filters/web_extensions/clean_html.rb +14 −0
  2. lib/docs/filters/web_extensions/entries.rb +28 −0
  3. lib/docs/scrapers/web_extensions.rb +26 −0
lib/docs/filters/web_extensions/clean_html.rb+14−0
@@ -0,0 +1,14 @@
1+module Docs
2+ class WebExtensions
3+ class CleanHtmlFilter < Filter
4+ def call
5+
6+ # Remove all the cruft.
7+ content = at_css('main#content')
8+ content.at_css('aside.metadata').remove
9+
10+ content
11+ end
12+ end
13+ end
14+end
lib/docs/filters/web_extensions/entries.rb+28−0
@@ -0,0 +1,28 @@
1+module Docs
2+ class WebExtensions
3+ class EntriesFilter < Docs::EntriesFilter
4+ def get_name
5+ at_css('main#content h1').text
6+ end
7+
8+ def get_type
9+ slug_parts = slug.split('/')
10+ if slug_parts[0] == 'API' and slug_parts.length() > 1
11+ if slug_parts[1] == 'WebRequest'
12+ return 'webRequest'
13+ else
14+ return slug_parts[1]
15+ end
16+ elsif slug_parts[0] == 'manifest.json'
17+ return slug_parts[0]
18+ elsif slug_parts[0] == 'user_interface'
19+ return 'User Interface'
20+ elsif slug_parts.length() > 1
21+ return slug_parts[0]
22+ else
23+ return 'Miscellaneous'
24+ end
25+ end
26+ end
27+ end
28+end
lib/docs/scrapers/web_extensions.rb+26−0
@@ -0,0 +1,26 @@
1+module Docs
2+ class WebExtensions < UrlScraper
3+ self.name = 'Web Extensions'
4+ self.slug = 'web_extensions'
5+ self.type = 'simple'
6+ self.links = {
7+ home: 'https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions'
8+ }
9+
10+ self.base_url = 'https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions'
11+
12+ html_filters.push 'web_extensions/entries', 'web_extensions/clean_html'
13+
14+ options[:skip_patterns] = [
15+ /\/contributors\.txt$/
16+ ]
17+
18+ options[:attribution] = -> (filter) {
19+ <<-HTML
20+ <a href="#{filter.current_url}">#{filter.result()[:entries][0].name}</a> &copy; 2005-2021 Mozilla and individual contributors.<br>
21+ Licensed under the <a href="https://creativecommons.org/licenses/by-sa/2.5/">Creative Commons Attribution-ShareAlike license</a>
22+ HTML
23+ }
24+
25+ end
26+end