diff options
author | Daniel Hahler <git@thequod.de> | 2019-07-29 04:43:28 +0200 |
---|---|---|
committer | Daniel Hahler <git@thequod.de> | 2019-07-29 22:14:23 +0200 |
commit | 97ce776e7ba68d1966fddba475b11e85a6c53420 (patch) | |
tree | 4497a57464593e468d152eb7272717f6039f35a3 /scripts/gen_help_html.py | |
parent | bae02eb3968be1c9677283d030fbbe6dd02cb180 (diff) | |
download | rneovim-97ce776e7ba68d1966fddba475b11e85a6c53420.tar.gz rneovim-97ce776e7ba68d1966fddba475b11e85a6c53420.tar.bz2 rneovim-97ce776e7ba68d1966fddba475b11e85a6c53420.zip |
scripts: autopep8
Diffstat (limited to 'scripts/gen_help_html.py')
-rw-r--r-- | scripts/gen_help_html.py | 156 |
1 files changed, 87 insertions, 69 deletions
diff --git a/scripts/gen_help_html.py b/scripts/gen_help_html.py index dbdeb3c162..a319cde64e 100644 --- a/scripts/gen_help_html.py +++ b/scripts/gen_help_html.py @@ -81,8 +81,8 @@ SITENAVI_PLAIN = '<p>' + SITENAVI_LINKS_PLAIN + '</p>' SITENAVI_WEB = '<p>' + SITENAVI_LINKS_WEB + '</p>' SITENAVI_SEARCH = '<table width="100%"><tbody><tr><td>' + SITENAVI_LINKS_WEB + \ -'</td><td style="text-align: right; max-width: 25vw"><div class="gcse-searchbox">' \ -'</div></td></tr></tbody></table><div class="gcse-searchresults"></div>' + '</td><td style="text-align: right; max-width: 25vw"><div class="gcse-searchbox">' \ + '</div></td></tr></tbody></table><div class="gcse-searchresults"></div>' TEXTSTART = """ <div id="d1"> @@ -100,74 +100,76 @@ FOOTER2 = """ </body> </html> """.format( - generated_date='{0:%Y-%m-%d %H:%M:%S}'.format(datetime.datetime.now()), - commit='?') + generated_date='{0:%Y-%m-%d %H:%M:%S}'.format(datetime.datetime.now()), + commit='?') RE_TAGLINE = re.compile(r'(\S+)\s+(\S+)') PAT_WORDCHAR = '[!#-)+-{}~\xC0-\xFF]' -PAT_HEADER = r'(^.*~$)' -PAT_GRAPHIC = r'(^.* `$)' +PAT_HEADER = r'(^.*~$)' +PAT_GRAPHIC = r'(^.* `$)' PAT_PIPEWORD = r'(?<!\\)\|([#-)!+-~]+)\|' PAT_STARWORD = r'\*([#-)!+-~]+)\*(?:(?=\s)|$)' -PAT_COMMAND = r'`([^` ]+)`' -PAT_OPTWORD = r"('(?:[a-z]{2,}|t_..)')" -PAT_CTRL = r'(CTRL-(?:W_)?(?:\{char\}|<[A-Za-z]+?>|.)?)' -PAT_SPECIAL = r'(<.+?>|\{.+?}|' \ - r'\[(?:range|line|count|offset|\+?cmd|[-+]?num|\+\+opt|' \ - r'arg|arguments|ident|addr|group)]|' \ - r'(?<=\s)\[[-a-z^A-Z0-9_]{2,}])' -PAT_TITLE = r'(Vim version [0-9.a-z]+|VIM REFERENCE.*)' -PAT_NOTE = r'((?<!' + PAT_WORDCHAR + r')(?:note|NOTE|Notes?):?' \ - r'(?!' + PAT_WORDCHAR + r'))' -PAT_URL = r'((?:https?|ftp)://[^\'"<> \t]+[a-zA-Z0-9/])' -PAT_WORD = r'((?<!' + PAT_WORDCHAR + r')' + PAT_WORDCHAR + r'+' \ - r'(?!' + PAT_WORDCHAR + r'))' +PAT_COMMAND = r'`([^` ]+)`' +PAT_OPTWORD = r"('(?:[a-z]{2,}|t_..)')" +PAT_CTRL = r'(CTRL-(?:W_)?(?:\{char\}|<[A-Za-z]+?>|.)?)' +PAT_SPECIAL = r'(<.+?>|\{.+?}|' \ + r'\[(?:range|line|count|offset|\+?cmd|[-+]?num|\+\+opt|' \ + r'arg|arguments|ident|addr|group)]|' \ + r'(?<=\s)\[[-a-z^A-Z0-9_]{2,}])' +PAT_TITLE = r'(Vim version [0-9.a-z]+|VIM REFERENCE.*)' +PAT_NOTE = r'((?<!' + PAT_WORDCHAR + r')(?:note|NOTE|Notes?):?' \ + r'(?!' + PAT_WORDCHAR + r'))' +PAT_URL = r'((?:https?|ftp)://[^\'"<> \t]+[a-zA-Z0-9/])' +PAT_WORD = r'((?<!' + PAT_WORDCHAR + r')' + PAT_WORDCHAR + r'+' \ + r'(?!' + PAT_WORDCHAR + r'))' RE_LINKWORD = re.compile( - PAT_OPTWORD + '|' + - PAT_CTRL + '|' + - PAT_SPECIAL) + PAT_OPTWORD + '|' + + PAT_CTRL + '|' + + PAT_SPECIAL) RE_TAGWORD = re.compile( - PAT_HEADER + '|' + - PAT_GRAPHIC + '|' + - PAT_PIPEWORD + '|' + - PAT_STARWORD + '|' + - PAT_COMMAND + '|' + - PAT_OPTWORD + '|' + - PAT_CTRL + '|' + - PAT_SPECIAL + '|' + - PAT_TITLE + '|' + - PAT_NOTE + '|' + - PAT_URL + '|' + - PAT_WORD) -RE_NEWLINE = re.compile(r'[\r\n]') + PAT_HEADER + '|' + + PAT_GRAPHIC + '|' + + PAT_PIPEWORD + '|' + + PAT_STARWORD + '|' + + PAT_COMMAND + '|' + + PAT_OPTWORD + '|' + + PAT_CTRL + '|' + + PAT_SPECIAL + '|' + + PAT_TITLE + '|' + + PAT_NOTE + '|' + + PAT_URL + '|' + + PAT_WORD) +RE_NEWLINE = re.compile(r'[\r\n]') # H1 header "=====…" # H2 header "-----…" -RE_HRULE = re.compile(r'[-=]{3,}.*[-=]{3,3}$') -RE_EG_START = re.compile(r'(?:.* )?>$') -RE_EG_END = re.compile(r'\S') -RE_SECTION = re.compile(r'[-A-Z .][-A-Z0-9 .()]*(?=\s+\*)') -RE_STARTAG = re.compile(r'\s\*([^ \t|]+)\*(?:\s|$)') +RE_HRULE = re.compile(r'[-=]{3,}.*[-=]{3,3}$') +RE_EG_START = re.compile(r'(?:.* )?>$') +RE_EG_END = re.compile(r'\S') +RE_SECTION = re.compile(r'[-A-Z .][-A-Z0-9 .()]*(?=\s+\*)') +RE_STARTAG = re.compile(r'\s\*([^ \t|]+)\*(?:\s|$)') RE_LOCAL_ADD = re.compile(r'LOCAL ADDITIONS:\s+\*local-additions\*$') + class Link(object): __slots__ = 'link_plain_same', 'link_pipe_same', \ 'link_plain_foreign', 'link_pipe_foreign', \ 'filename' def __init__(self, link_plain_same, link_plain_foreign, - link_pipe_same, link_pipe_foreign, filename): - self.link_plain_same = link_plain_same + link_pipe_same, link_pipe_foreign, filename): + self.link_plain_same = link_plain_same self.link_plain_foreign = link_plain_foreign - self.link_pipe_same = link_pipe_same - self.link_pipe_foreign = link_pipe_foreign - self.filename = filename + self.link_pipe_same = link_pipe_same + self.link_pipe_foreign = link_pipe_foreign + self.filename = filename + class VimH2H(object): def __init__(self, tags, version=None, is_web_version=True): - self._urls = { } + self._urls = {} self._version = version self._is_web_version = is_web_version for line in RE_NEWLINE.split(tags): @@ -183,6 +185,7 @@ class VimH2H(object): def do_add_tag(self, filename, tag): tag_quoted = urllib.parse.quote_plus(tag) + def mkpart1(doc): return '<a href="' + doc + '#' + tag_quoted + '" class="' part1_same = mkpart1('') @@ -192,16 +195,20 @@ class VimH2H(object): doc = filename + '.html' part1_foreign = mkpart1(doc) part2 = '">' + html_escape[tag] + '</a>' + def mklinks(cssclass): - return (part1_same + cssclass + part2, + return (part1_same + cssclass + part2, part1_foreign + cssclass + part2) cssclass_plain = 'd' m = RE_LINKWORD.match(tag) if m: opt, ctrl, special = m.groups() - if opt is not None: cssclass_plain = 'o' - elif ctrl is not None: cssclass_plain = 'k' - elif special is not None: cssclass_plain = 's' + if opt is not None: + cssclass_plain = 'o' + elif ctrl is not None: + cssclass_plain = 'k' + elif special is not None: + cssclass_plain = 's' links_plain = mklinks(cssclass_plain) links_pipe = mklinks('l') self._urls[tag] = Link( @@ -213,18 +220,23 @@ class VimH2H(object): links = self._urls.get(tag) if links is not None: if links.filename == curr_filename: - if css_class == 'l': return links.link_pipe_same - else: return links.link_plain_same + if css_class == 'l': + return links.link_pipe_same + else: + return links.link_plain_same else: - if css_class == 'l': return links.link_pipe_foreign - else: return links.link_plain_foreign + if css_class == 'l': + return links.link_pipe_foreign + else: + return links.link_plain_foreign elif css_class is not None: return '<span class="' + css_class + '">' + html_escape[tag] + \ - '</span>' - else: return html_escape[tag] + '</span>' + else: + return html_escape[tag] def to_html(self, filename, contents, encoding): - out = [ ] + out = [] inexample = 0 filename = str(filename) @@ -247,10 +259,11 @@ class VimH2H(object): if inexample == 2: if RE_EG_END.match(line): inexample = 0 - if line[0] == '<': line = line[1:] + if line[0] == '<': + line = line[1:] else: out.extend(('<span class="e">', html_escape[line], - '</span>\n')) + '</span>\n')) continue if RE_EG_START.match(line_tabs): inexample = 1 @@ -266,12 +279,12 @@ class VimH2H(object): out.append(html_escape[line[lastpos:pos]]) lastpos = match.end() header, graphic, pipeword, starword, command, opt, ctrl, \ - special, title, note, url, word = match.groups() + special, title, note, url, word = match.groups() if pipeword is not None: out.append(self.maplink(pipeword, filename, 'l')) elif starword is not None: out.extend(('<a name="', urllib.parse.quote_plus(starword), - '" class="t">', html_escape[starword], '</a>')) + '" class="t">', html_escape[starword], '</a>')) elif command is not None: out.extend(('<span class="e">', html_escape[command], '</span>')) @@ -300,14 +313,15 @@ class VimH2H(object): if lastpos < len(line): out.append(html_escape[line[lastpos:]]) out.append('\n') - if inexample == 1: inexample = 2 + if inexample == 1: + inexample = 2 header = [] header.append(HEAD.format(encoding=encoding, filename=filename)) header.append(HEAD_END) if self._is_web_version and is_help_txt: vers_note = VERSION_NOTE.replace('{version}', self._version) \ - if self._version else '' + if self._version else '' header.append(INTRO.replace('{vers-note}', vers_note)) if self._is_web_version: header.append(SITENAVI_SEARCH) @@ -318,6 +332,7 @@ class VimH2H(object): header.append(TEXTSTART) return ''.join(chain(header, out, (FOOTER, sitenavi_footer, FOOTER2))) + class HtmlEscCache(dict): def __missing__(self, key): r = key.replace('&', '&') \ @@ -326,9 +341,8 @@ class HtmlEscCache(dict): self[key] = r return r -html_escape = HtmlEscCache() - +html_escape = HtmlEscCache() def slurp(filename): @@ -340,17 +354,20 @@ def slurp(filename): with open(filename, encoding='latin-1') as f: return f.read(), 'latin-1' + def usage(): return "usage: " + sys.argv[0] + " IN_DIR OUT_DIR [BASENAMES...]" + def main(): - if len(sys.argv) < 3: sys.exit(usage()) + if len(sys.argv) < 3: + sys.exit(usage()) in_dir = sys.argv[1] out_dir = sys.argv[2] basenames = sys.argv[3:] - print( "Processing tags...") + print("Processing tags...") h2h = VimH2H(slurp(os.path.join(in_dir, 'tags'))[0], is_web_version=False) if len(basenames) == 0: @@ -358,9 +375,9 @@ def main(): for basename in basenames: if os.path.splitext(basename)[1] != '.txt' and basename != 'tags': - print( "Ignoring " + basename) + print("Ignoring " + basename) continue - print( "Processing " + basename + "...") + print("Processing " + basename + "...") path = os.path.join(in_dir, basename) text, encoding = slurp(path) outpath = os.path.join(out_dir, basename + '.html') @@ -368,4 +385,5 @@ def main(): of.write(h2h.to_html(basename, text, encoding)) of.close() + main() |