def write_html_content(content_type, content, formatter, html):
# dedent content but still keeps empty lines
old_class = formatter.cssclass
nlines = len(content)
content = dedent('\n'.join(content))
# ' ' to keep pygments from removing empty lines
# split, merge by \n can introduce one additional line
content = [' \n' if x == '' else x + '\n' for x in content.split('\n')][:nlines]
#
if content_type == 'COMMENT':
formatter.cssclass = 'source blob-code sos-comment'
html.write('\n'.join(highlight(x, SoS_Lexer(), formatter) for x in content))
elif content_type in ('REPORT', 'report'):
formatter.cssclass = 'source blob-code sos-report'
html.write('{}\n'.format(highlight(''.join(content),
TextLexer(), formatter)))
elif content_type == 'SECTION':
formatter.cssclass = 'source blob-code sos-header'
html.write('{}\n'.format(highlight(''.join(content),
SoS_Lexer(), formatter)))
elif content_type == 'DIRECTIVE':
formatter.cssclass = 'source blob-code sos-directive'
html.write('{}\n'.format(highlight(''.join(content),
SoS_Lexer(), formatter)))
elif content_type == 'STATEMENT':
formatter.cssclass = 'source blob-code sos-statement'
html.write('{}\n'.format(highlight(''.join(content),
SoS_Lexer(), formatter)))
elif content_type == 'ERROR':
formatter.cssclass = 'source blob-code sos-error '
html.write('{}\n'.format(highlight(''.join(content),
SoS_Lexer(), formatter)))
else:
formatter.cssclass = 'source blob-code sos-script '
if content_type == 'run':
content_type = 'bash'
elif content_type == 'node':
content_type = 'JavaScript'
elif content_type == 'report':
content_type = 'text'
try:
lexer = get_lexer_by_name(content_type)
except Exception:
try:
lexer = guess_lexer(''.join(content))
except Exception:
lexer = TextLexer()
html.write('{}\n'.format(highlight((''.join(content)),
lexer, formatter)))
formatter.cssclass = old_class
#
# utility function
#
评论列表
文章目录