def render_block_code(self, token): code = token.children[0].content try: # default to 'lean' if no language is specified lexer = get_lexer( token.language) if token.language else get_lexer('lean') except: lexer = get_lexer('text') return highlight(code, lexer, self.formatter)
def render_block_code(self, token): # replace math before highlighting code = replace_math(token.children[0].content, self.math) try: # default to 'lean' if no language is specified lexer = get_lexer( token.language) if token.language else get_lexer('lean') except: lexer = get_lexer('text') return highlight(code, lexer, self.formatter)
def render_block_code(self, token): code = token.children[0].content if token.language: lexer = get_lexer(token.language) else: lexer = guess_lexer(code) return highlight(code, lexer, self.formatter)
def render_lowrisc_code(self, token, directive): code = token.children[0].content # parser seems to get confused (eg by `~`) and makes empty calls if len(code) == 0: log.warn('Unexpected empty code block. Check for `~`') return "" # waveforms look like embedded code in the markdown # but the WaveDrom javascript wants it in a script tag if token.language == "wavejson": if self.wavejs: return '<script type="WaveDrom">' + code + '</script>' else: try: wvobj = hjson.loads(code, use_decimal=True) except ValueError as err: log.warn('wavejson parse failed at line ' + str(err.lineno) + ': ' + err.msg) return '<pre>Error line ' + str(err.lineno) + \ ': ' + err.msg + " in:\n" + code[:err.pos] + \ '</pre><pre style="color:red">' + \ code[err.pos:] + '</pre>' self.num_svg += 1 return wavesvg.convert(wvobj, self.num_svg - 1) else: # pygments.util.ClassNotFound subclass of ValueError lexer = None if (token.language): if token.language == 'hjson': lexer = HjsonLexer() else: try: lexer = get_lexer(token.language) except ValueError: log.info('Failed to get lexer for language=' + token.language) lexer = None if lexer == None: try: lexer = guess_lexer(code) log.info('Guess lexer as ' + lexer.name) except ValueError: log.info('Failed to guess lexer for code=' + code) lexer = None if lexer: if directive == '.good': self.formatter.cssstyles='background:#e0ffe0; ' \ 'border-left-color: #108040;' elif directive == '.bad': self.formatter.cssstyles='background:#ffe0e0; ' \ 'border-left-color: #c04030' else: self.formatter.cssstyles = '' return highlight(code, lexer, self.formatter) else: return super().render_block_code(token)