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')
Example #2
0
 def initialize(self):
     self._original_chunk_generator_class = get_diff_chunk_generator_class()
     set_diff_chunk_generator_class(OverridableDiffChunkGenerator)
 def initialize(self):
     self._original_chunk_generator_class = get_diff_chunk_generator_class()
     set_diff_chunk_generator_class(OverridableDiffChunkGenerator)
Example #4
0
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:
Example #5
0
 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!')