from os.path import splitext from pygments import highlight from pygments.lexers import guess_lexer_for_filename, get_lexer_by_name from reviewboard.extensions.base import get_extension_manager from reviewboard.diffviewer.diffutils import split_line_endings from reviewboard.diffviewer.chunk_generator import ( get_diff_chunk_generator_class, NoWrapperHtmlFormatter ) logger = logging.getLogger(__name__) DiffChunkGenerator = get_diff_chunk_generator_class() class OverridableDiffChunkGenerator(DiffChunkGenerator): """A chunk generator which overrides syntax highlighting.""" def _apply_pygments(self, data, filename): """Applies Pygments syntax-highlighting to a file's contents. Syntax highlight obeys a explicitly provided list of preferences by extension or it is derived from the contents of the file. The resulting HTML will be returned as a list of lines. """ lexer = self._get_preferred_lexer( filename, stripln=False, encoding='utf-8')
def initialize(self): self._original_chunk_generator_class = get_diff_chunk_generator_class() set_diff_chunk_generator_class(OverridableDiffChunkGenerator)
import logging from os.path import splitext from pygments import highlight from pygments.lexers import guess_lexer_for_filename, get_lexer_by_name from reviewboard.extensions.base import get_extension_manager from reviewboard.diffviewer.diffutils import split_line_endings from reviewboard.diffviewer.chunk_generator import ( get_diff_chunk_generator_class, NoWrapperHtmlFormatter) logger = logging.getLogger(__name__) DiffChunkGenerator = get_diff_chunk_generator_class() class OverridableDiffChunkGenerator(DiffChunkGenerator): """A chunk generator which overrides syntax highlighting.""" def _apply_pygments(self, data, filename): """Applies Pygments syntax-highlighting to a file's contents. Syntax highlight obeys a explicitly provided list of preferences by extension or it is derived from the contents of the file. The resulting HTML will be returned as a list of lines. """ lexer = self._get_preferred_lexer(filename, stripln=False, encoding='utf-8') logger.debug('preferred lexer for %s: %s' % (filename, lexer)) if not lexer:
def initialize(self): self._original_chunk_generator_class = get_diff_chunk_generator_class() set_diff_chunk_generator_class(OverridableDiffChunkGenerator) logger.info('overridable diff chunk generator class set!')