[devdocsgjs/main: 1355/1867] Update Pygame documentation (2.0.0)
- From: Andy Holmes <andyholmes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [devdocsgjs/main: 1355/1867] Update Pygame documentation (2.0.0)
- Date: Fri, 19 Nov 2021 23:47:54 +0000 (UTC)
commit d6756ce24fc0e6135e9baeeb0ce9eccc16ac1ef6
Author: Phil Scherer <pnscher evoforge org>
Date: Tue Dec 8 03:18:34 2020 -0500
Update Pygame documentation (2.0.0)
assets/stylesheets/application.css.scss | 1 +
assets/stylesheets/pages/_pygame.scss | 12 ++++
lib/docs/filters/pygame/clean_html.rb | 112 ++++++++----------------------
lib/docs/filters/pygame/entries.rb | 21 ++----
lib/docs/filters/pygame/pre_clean_html.rb | 11 +++
lib/docs/scrapers/pygame.rb | 6 +-
6 files changed, 63 insertions(+), 100 deletions(-)
---
diff --git a/assets/stylesheets/application.css.scss b/assets/stylesheets/application.css.scss
index 41fa4c1b..97347da6 100644
--- a/assets/stylesheets/application.css.scss
+++ b/assets/stylesheets/application.css.scss
@@ -92,6 +92,7 @@
'pages/phpunit',
'pages/postgres',
'pages/pug',
+ 'pages/pygame',
'pages/python',
'pages/qt',
'pages/ramda',
diff --git a/assets/stylesheets/pages/_pygame.scss b/assets/stylesheets/pages/_pygame.scss
new file mode 100644
index 00000000..10add41b
--- /dev/null
+++ b/assets/stylesheets/pages/_pygame.scss
@@ -0,0 +1,12 @@
+._pygame {
+ @extend %simple;
+
+ dl.class > dt { @extend %block-label, %label-orange; }
+ dl.function > dt, dl.method > dt { @extend %block-label, %label-blue; }
+ dl.attribute > dt, dl.exception > dt , dl.data > dt { @extend %block-label, %label-green; }
+
+ .line-block { @extend %note; }
+ .line-block > .line:first-child { margin-bottom: 1em; }
+ .line-block > .line:only-child { margin-bottom: 0em; }
+ span.signature { font-family: monospace; }
+}
diff --git a/lib/docs/filters/pygame/clean_html.rb b/lib/docs/filters/pygame/clean_html.rb
index 956807b8..af01f2d0 100644
--- a/lib/docs/filters/pygame/clean_html.rb
+++ b/lib/docs/filters/pygame/clean_html.rb
@@ -2,100 +2,46 @@ module Docs
class Pygame
class CleanHtmlFilter < Filter
def call
- @doc = at_css '.body'
-
- if root_page?
- # remove unneeded stuff
- at_css('.modindex-jumpbox').remove
- css('[role="navigation"],.pcap, .cap, .footer').remove
- # table -> list
- list = at_css('table')
- list.replace(list.children)
- list.name = 'ul'
- css('tr').each do |row|
- row.name = 'li'
- row.remove_attribute('class')
- end
- at_css('h1').content = 'Pygame'
- return doc
- end
+ @doc = at_css('.body')
+ root_page? ? root : other
+ doc
+ end
- # remove unwanted stuff
- # .headerlink => ¶ after links
- # .toc => table of content
- # .tooltip-content => tooltips after links to functions
- css('table.toc.docutils, .headerlink, .tooltip-content').remove
+ def root
+ at_css('h1').content = 'Pygame'
- # Remove wrapper .section
- section = at_css('.section')
- definition = at_css('.definition')
- definition['id'] = section['id']
- section.replace(section.children)
+ # remove unneeded stuff
+ at_css('.modindex-jumpbox').remove
+ css('[role="navigation"], .pcap, .cap, .footer').remove
+ css('tr > td:first-child').remove
- # Format code for it be highlighted
- css('.highlight-default.notranslate').each do |node|
- pre = node.at_css('pre')
- node.replace(pre)
- # gets rid of the already existing syntax highlighting
- pre.content = pre.content
- pre['class'] = 'language-python'
- pre['data-language'] = "python"
- end
-
- # change descriptions of functions/attributes to blockquote
- css('.line-block').each do |node|
- node.name = 'blockquote'
+ # Unitalicize package descriptions
+ css('td > em').each do |node|
+ node.parent.content = node.content
end
+ end
- # change functions
- css('.definition').each do |d|
+ def other
+ css('> :not(.section), table.toc.docutils, .tooltip-content').remove
- # the header is the function/attribute name. It might look something like
- # this:
- # pygame.image.load()
- # It'll end up being something like this:
- # pygame.image.load(filename) -> Surface
- # pygame.image.load(fileobj, namehint="") -> Surface
+ # Remove code tag from function, class, method, module, etc.
+ css('dl > dt').each do |node|
+ node.content = node.content
+ end
- header = d.at_css('dt.title')
- if d['class'].include?('class') or d['class'].include?('module')
- header.name = 'h1'
- @section = header.content.strip
- else
- header.name = 'h3'
- end
- # save the original header
- initial_header = header.content.strip
- # save the real name for the entries
- header['data-name'] = initial_header
- # empty the header
- if header.name == 'h3'
- header.inner_html = ''
- end
- # to replace it with the signatures
- next_el = header.next_element
- signatures = next_el.css('.signature')
- signatures.each do |sig|
- sig.name = 'code'
- if header.name == 'h3'
- sig.parent = header
- # the signature don't contain pygame.module. I think it's better
- # to display them, as it avoids confusion with methods (have a
- # look at the pygame.Rect page)
- if initial_header.start_with?(@section)
- sig.content = @section + '.' + sig.text
- end
- # separate the signatures on different lines.
- header.add_child "<br>"
- end
- end
+ css('> .section > dl > dt').each do |node|
+ node.name = 'h1'
+ node.parent.parent.before(node)
end
- css('> dl', '> dl > dd', 'h1 code').each do |node|
- node.before(node.children).remove
+ # Format code for it be highlighted
+ css('.highlight-default.notranslate').each do |node|
+ node.name = 'pre'
+ node.content = node.content.strip
+ node['class'] = 'language-python'
+ node['data-language'] = 'python'
end
- doc
end
end
end
diff --git a/lib/docs/filters/pygame/entries.rb b/lib/docs/filters/pygame/entries.rb
index 94c171b6..08ebda88 100644
--- a/lib/docs/filters/pygame/entries.rb
+++ b/lib/docs/filters/pygame/entries.rb
@@ -2,26 +2,19 @@ module Docs
class Pygame
class EntriesFilter < Docs::EntriesFilter
def get_name
- at_css('h1').content.remove('pygame.')
+ at_css('.title').content.remove('pygame.').strip
end
def get_type
- at_css('h1').content
+ at_css('.title').content.strip
end
def additional_entries
- return [] if root_page?
-
- css('h1, h2, h3').each_with_object [] do |node, entries|
- name = node['id'] || node['data-name']
-
- if node.parent['class'].include?('function') or node.parent['class'].include?('method')
- name << '()'
- end
-
- name.remove!('pygame.')
-
- entries << [name, node['id']] unless name == self.name
+ css('dl.definition > dt.title').each_with_object [] do |node, entries|
+ name = node['id'] || node.parent.parent['id']
+ name.remove! 'pygame.'
+ id = node['id']
+ entries << [name, id] unless name == self.name
end
end
end
diff --git a/lib/docs/filters/pygame/pre_clean_html.rb b/lib/docs/filters/pygame/pre_clean_html.rb
new file mode 100644
index 00000000..4cf71095
--- /dev/null
+++ b/lib/docs/filters/pygame/pre_clean_html.rb
@@ -0,0 +1,11 @@
+module Docs
+ class Pygame
+ class PreCleanHtmlFilter < Filter
+ def call
+ # Remove ¶ character from tag w/ name & type
+ css('.headerlink').remove
+ doc
+ end
+ end
+ end
+end
diff --git a/lib/docs/scrapers/pygame.rb b/lib/docs/scrapers/pygame.rb
index f77ddbc7..75bcb198 100644
--- a/lib/docs/scrapers/pygame.rb
+++ b/lib/docs/scrapers/pygame.rb
@@ -1,7 +1,7 @@
module Docs
class Pygame < UrlScraper
- self.type = 'simple'
- self.release = '1.9.6'
+ self.type = 'pygame'
+ self.release = '2.0.0'
self.base_url = 'https://www.pygame.org/docs/'
self.root_path = 'py-modindex.html'
self.links = {
@@ -9,7 +9,7 @@ module Docs
code: 'https://github.com/pygame/pygame'
}
- html_filters.push 'pygame/clean_html', 'pygame/entries'
+ html_filters.push 'pygame/pre_clean_html', 'pygame/entries', 'pygame/clean_html'
options[:only_patterns] = [/ref\//]
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]