Commit 240ea67c authored by Aymeric Augustin's avatar Aymeric Augustin
Browse files

Move compile_string into the Engine class.

parent 5b1bb402
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -69,7 +69,7 @@ from django.template.base import (Context, FilterExpression, Lexer, Node, # NOQ
    filter_raw_string)

# Compiling templates
from django.template.base import (compile_string, resolve_variable,  # NOQA
from django.template.base import (resolve_variable,  # NOQA
    unescape_string_literal, generic_tag_compiler)

# Library management
@@ -77,4 +77,4 @@ from django.template.base import (Library, add_to_builtins, builtins, # NOQA
    get_library, get_templatetags_modules, get_text_list, import_library,
    libraries)

__all__ = ('Template', 'Context', 'RequestContext', 'compile_string')
__all__ = ('Template', 'Context', 'RequestContext')
+1 −13
Original line number Diff line number Diff line
@@ -135,7 +135,7 @@ class Template(object):
        if engine is None:
            from .engine import Engine
            engine = Engine.get_default()
        self.nodelist = compile_string(template_string, origin)
        self.nodelist = engine.compile_string(template_string, origin)
        self.name = name
        self.origin = origin
        self.engine = engine
@@ -165,18 +165,6 @@ class Template(object):
                context.engine = None


def compile_string(template_string, origin):
    "Compiles template_string into NodeList ready for rendering"
    if settings.TEMPLATE_DEBUG:
        from django.template.debug import DebugLexer, DebugParser
        lexer_class, parser_class = DebugLexer, DebugParser
    else:
        lexer_class, parser_class = Lexer, Parser
    lexer = lexer_class(template_string, origin)
    parser = parser_class(lexer.tokenize())
    return parser.parse()


class Token(object):
    def __init__(self, token_type, contents):
        # token_type must be TOKEN_TEXT, TOKEN_VAR, TOKEN_BLOCK or
+15 −1
Original line number Diff line number Diff line
@@ -8,7 +8,7 @@ from django.utils.deprecation import RemovedInDjango20Warning
from django.utils.functional import cached_property
from django.utils.module_loading import import_string

from .base import Context, Template, TemplateDoesNotExist
from .base import Context, Lexer, Parser, Template, TemplateDoesNotExist


_dirs_undefined = object()
@@ -200,3 +200,17 @@ class Engine(object):
                continue
        # If we get here, none of the templates could be loaded
        raise TemplateDoesNotExist(', '.join(not_found))

    def compile_string(self, template_string, origin):
        """
        Compiles template_string into a NodeList ready for rendering.
        """
        if settings.TEMPLATE_DEBUG:
            from .debug import DebugLexer, DebugParser
            lexer_class, parser_class = DebugLexer, DebugParser
        else:
            lexer_class, parser_class = Lexer, Parser
        lexer = lexer_class(template_string, origin)
        tokens = lexer.tokenize()
        parser = parser_class(tokens)
        return parser.parse()
+2 −0
Original line number Diff line number Diff line
@@ -772,6 +772,8 @@ Miscellaneous
  delete a key if ``set()`` fails. This is necessary to ensure the ``cache_db``
  session store always fetches the most current session data.

* Private API ``django.template.compile_string`` was removed.

* Private APIs ``override_template_loaders`` and ``override_with_test_loader``
  in ``django.test.utils`` were removed. Override ``TEMPLATE_LOADERS`` with
  ``override_settings`` instead.