Commit 580bdb0e authored by Tal Einat's avatar Tal Einat Committed by Terry Jan Reedy

bpo-38022: IDLE: upgrade help.html to sphinx 2.x HTML5 output (GH-15664)

The HTML5 output from Sphinx 2.x adds  '<p>' tags within list elements.  Using a new prevtag attribute, ignore these instead of emitting unwanted '\n\n'.

Also stop looking for 'first' classes on tags (no longer present) and fix the bug of double-spacing instead of single spacing after <pre> blocks.
parent 993ac924
This diff is collapsed.
...@@ -62,6 +62,7 @@ class HelpParser(HTMLParser): ...@@ -62,6 +62,7 @@ class HelpParser(HTMLParser):
self.simplelist = False # simple list (no double spacing) self.simplelist = False # simple list (no double spacing)
self.toc = [] # pair headers with text indexes for toc self.toc = [] # pair headers with text indexes for toc
self.header = '' # text within header tags for toc self.header = '' # text within header tags for toc
self.prevtag = None # info about previous tag (was opener, tag)
def indent(self, amt=1): def indent(self, amt=1):
self.level += amt self.level += amt
...@@ -78,8 +79,11 @@ class HelpParser(HTMLParser): ...@@ -78,8 +79,11 @@ class HelpParser(HTMLParser):
self.show = True # start of main content self.show = True # start of main content
elif tag == 'div' and class_ == 'sphinxsidebar': elif tag == 'div' and class_ == 'sphinxsidebar':
self.show = False # end of main content self.show = False # end of main content
elif tag == 'p' and class_ != 'first': elif tag == 'p' and self.prevtag and not self.prevtag[0]:
s = '\n\n' # begin a new block for <p> tags after a closed tag
# avoid extra lines, e.g. after <pre> tags
lastline = self.text.get('end-1c linestart', 'end-1c')
s = '\n\n' if lastline and not lastline.isspace() else '\n'
elif tag == 'span' and class_ == 'pre': elif tag == 'span' and class_ == 'pre':
self.chartags = 'pre' self.chartags = 'pre'
elif tag == 'span' and class_ == 'versionmodified': elif tag == 'span' and class_ == 'versionmodified':
...@@ -120,6 +124,7 @@ class HelpParser(HTMLParser): ...@@ -120,6 +124,7 @@ class HelpParser(HTMLParser):
self.tags = tag self.tags = tag
if self.show: if self.show:
self.text.insert('end', s, (self.tags, self.chartags)) self.text.insert('end', s, (self.tags, self.chartags))
self.prevtag = (True, tag)
def handle_endtag(self, tag): def handle_endtag(self, tag):
"Handle endtags in help.html." "Handle endtags in help.html."
...@@ -139,6 +144,7 @@ class HelpParser(HTMLParser): ...@@ -139,6 +144,7 @@ class HelpParser(HTMLParser):
self.tags = '' self.tags = ''
elif tag in ['ul', 'dd', 'ol']: elif tag in ['ul', 'dd', 'ol']:
self.indent(amt=-1) self.indent(amt=-1)
self.prevtag = (False, tag)
def handle_data(self, data): def handle_data(self, data):
"Handle date segments in help.html." "Handle date segments in help.html."
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment