History

Add the trio documentation (#1002)

Add the trio documentation

Jasper van Merle committed 7 years ago

Commit 5e23f642 parents a625ae1 3a6a1587 files · +141 −-2Browse files

Unified · Split

7 files
  1. assets/javascripts/templates/pages/about_tmpl.coffee +5 −0
  2. lib/docs/filters/trio/clean_html.rb +58 −0
  3. lib/docs/filters/trio/entries.rb +48 −0
  4. lib/docs/scrapers/trio.rb +31 −0
  5. public/icons/docs/trio/16.png +0 −0
  6. public/icons/docs/trio/16@2x.png +0 −0
  7. public/icons/docs/trio/SOURCE +1 −0
assets/javascripts/templates/pages/about_tmpl.coffee+5−0
@@ -721,6 +721,11 @@ credits = [ · 720 unmodified lines
721721 '2018 HashiCorp',
722722 'MPL',
723723 'https://raw.githubusercontent.com/hashicorp/terraform-website/master/LICENSE.md'
724+ ], [
725+ 'Trio',
726+ '2017 Nathaniel J. Smith',
727+ 'MIT',
728+ 'https://raw.githubusercontent.com/python-trio/trio/master/LICENSE.MIT'
724729 ], [
725730 'Twig',
726731 '2009-2018 The Twig Team',
lib/docs/filters/trio/clean_html.rb+58−0
@@ -0,0 +1,58 @@
1+module Docs
2+ class Trio
3+ class CleanHtmlFilter < Filter
4+ def call
5+ @doc = at_css('div[role="main"]')
6+
7+ css('.section, [itemprop=articleBody]').each do |node|
8+ node.replace node.children
9+ end
10+
11+ css('.headerlink').remove
12+
13+ css('dt').each do |node|
14+ node.name = 'h3'
15+
16+ if node.parent.classes.include? 'field-list'
17+ node.name = 'h4'
18+ node['style'] = 'margin: 0'
19+
20+ if node.text == 'Parameters' or node.text == 'Raises'
21+ node.next_element.css('strong').each do |n|
22+ n.name = 'code'
23+ end
24+ end
25+ else
26+ code = doc.document.create_element 'code'
27+
28+ if em = node.at_css('.property')
29+ code.inner_html = "<em>#{em.text.strip}</em> "
30+ em.remove
31+ end
32+
33+ code.inner_html += node.inner_text.strip
34+ node.inner_html = code
35+ end
36+ end
37+
38+ css('pre').each do |node|
39+ node.content = node.content.strip
40+
41+ classes = node.parent.parent.classes
42+ if classes.include? 'highlight-python3'
43+ node['data-language'] = 'python'
44+ end
45+
46+ node.parent.parent.replace(node)
47+ end
48+
49+ css('.admonition').each do |node|
50+ node.name = 'blockquote'
51+ node.at_css('.admonition-title').name = 'h4'
52+ end
53+
54+ doc
55+ end
56+ end
57+ end
58+end
lib/docs/filters/trio/entries.rb+48−0
@@ -0,0 +1,48 @@
1+module Docs
2+ class Trio
3+ class EntriesFilter < Docs::EntriesFilter
4+ def get_name
5+ at_css('h1').text[0...-1]
6+ end
7+
8+ def get_type
9+ at_css('h1').text[0...-1]
10+ end
11+
12+ def additional_entries
13+ css('.descname').each_with_object [] do |node, entries|
14+ name = node.text
15+ if node.previous.classes.include? 'descclassname'
16+ name = node.previous.text + name
17+ end
18+ name.strip!
19+
20+ dl = node.parent.parent
21+
22+ if dl.classes.include?('attribute') \
23+ or dl.classes.include?('method') \
24+ or dl.classes.include?('data')
25+ parent = dl.parent.previous_element
26+ cls = ''
27+
28+ if n = parent.at_css('.descclassname')
29+ cls += n.text
30+ end
31+
32+ if n = parent.at_css('.descname')
33+ if n.text == "The nursery interface"
34+ cls += "Nursery."
35+ else
36+ cls += n.text + '.'
37+ end
38+ end
39+
40+ name = cls + name
41+ end
42+
43+ entries << [name, node.parent['id']]
44+ end
45+ end
46+ end
47+ end
48+end
lib/docs/scrapers/trio.rb+31−0
@@ -0,0 +1,31 @@
1+module Docs
2+ class Trio < UrlScraper
3+ self.type = 'simple'
4+ self.release = '0.12.1'
5+ self.base_url = 'https://trio.readthedocs.io/en/v0.12.1/'
6+ self.root_path = 'index.html'
7+ self.links = {
8+ home: 'https://trio.readthedocs.io/',
9+ code: 'https://github.com/python-trio/trio'
10+ }
11+
12+ html_filters.push 'trio/entries', 'trio/clean_html'
13+
14+ options[:only_patterns] = [
15+ /reference-core/,
16+ /reference-io/,
17+ /reference-testing/,
18+ /reference-hazmat/,
19+ ]
20+
21+ options[:attribution] = <<-HTML
22+ &copy; 2017 Nathaniel J. Smith<br>
23+ Licensed under the MIT License.
24+ HTML
25+
26+ def get_latest_version(opts)
27+ doc = fetch_doc('https://trio.readthedocs.io/en/stable/', opts)
28+ doc.at_css('.rst-other-versions a[href^="/en/v"]').content[1..-1]
29+ end
30+ end
31+end
public/icons/docs/trio/16.png+0−0

Binary file not shown.

public/icons/docs/trio/16@2x.png+0−0

Binary file not shown.

public/icons/docs/trio/SOURCE+1−0
@@ -0,0 +1 @@
1+https://github.com/python-trio/trio/blob/37de153f858e29df3a19db9fffcd0fb3f2308951/logo/logo-transparent-no-text.svg