コード例 #1
0
ファイル: conf.py プロジェクト: pridkett/engineer
    def JINJA_ENV(self):
        from engineer.filters import format_datetime, markdown_filter, localtime, naturaltime, compress
        from engineer.processors import preprocess_less
        from engineer.themes import ThemeManager

        # Configure Jinja2 environment
        logger.debug("Configuring the Jinja environment.")

        # Helper function to look up a URL by name
        def urlname(name, *args):
            url = settings.URLS.get(name, settings.HOME_URL)
            if isfunction(url):
                return url(*args)
            else:
                return url

        env = Environment(
            loader=ChoiceLoader([
                FileSystemLoader([self.TEMPLATE_DIR]),
                ThemeManager.current_theme().template_loader,
                #self.ENGINEER.THEMES_DIR / 'base_templates',
                FileSystemLoader([self.ENGINEER.TEMPLATE_DIR])
            ]),
            extensions=[
                'jinja2.ext.with_',
            ],
            #'compressinja.html.HtmlCompressor'],
            bytecode_cache=FileSystemBytecodeCache(
                directory=self.JINJA_CACHE_DIR),
            trim_blocks=True)

        # Filters
        env.filters['compress'] = compress
        env.filters['date'] = format_datetime
        env.filters['localtime'] = localtime
        env.filters['naturaltime'] = naturaltime
        env.filters['markdown'] = markdown_filter
        env.filters['typogrify_no_widont'] = typogrify_no_widont
        register(env)  # register typogrify filters

        # Globals
        env.globals['theme'] = ThemeManager.current_theme()
        env.globals['urlname'] = urlname
        env.globals['preprocess_less'] = preprocess_less
        #        env.globals['url'] = url
        env.globals['STATIC_URL'] = self.STATIC_URL
        env.globals['DEBUG'] = self.DEBUG
        env.globals['settings'] = self
        return env
コード例 #2
0
ファイル: conf.py プロジェクト: pridkett/engineer
    def JINJA_ENV(self):
        from engineer.filters import format_datetime, markdown_filter, localtime, naturaltime, compress
        from engineer.processors import preprocess_less
        from engineer.themes import ThemeManager

        # Configure Jinja2 environment
        logger.debug("Configuring the Jinja environment.")

        # Helper function to look up a URL by name
        def urlname(name, *args):
            url = settings.URLS.get(name, settings.HOME_URL)
            if isfunction(url):
                return url(*args)
            else:
                return url

        env = Environment(
            loader=ChoiceLoader(
                [FileSystemLoader([self.TEMPLATE_DIR]),
                 ThemeManager.current_theme().template_loader,
                 #self.ENGINEER.THEMES_DIR / 'base_templates',
                 FileSystemLoader([self.ENGINEER.TEMPLATE_DIR])]
            ),
            extensions=['jinja2.ext.with_', ],
            #'compressinja.html.HtmlCompressor'],
            bytecode_cache=FileSystemBytecodeCache(directory=self.JINJA_CACHE_DIR),
            trim_blocks=True)

        # Filters
        env.filters['compress'] = compress
        env.filters['date'] = format_datetime
        env.filters['localtime'] = localtime
        env.filters['naturaltime'] = naturaltime
        env.filters['markdown'] = markdown_filter
        env.filters['typogrify_no_widont'] = typogrify_no_widont
        register(env) # register typogrify filters

        # Globals
        env.globals['theme'] = ThemeManager.current_theme()
        env.globals['urlname'] = urlname
        env.globals['preprocess_less'] = preprocess_less
        #        env.globals['url'] = url
        env.globals['STATIC_URL'] = self.STATIC_URL
        env.globals['DEBUG'] = self.DEBUG
        env.globals['settings'] = self
        return env
コード例 #3
0
ファイル: jinja.py プロジェクト: philips/hyde
    def configure(self, site, engine=None):
        """
        Uses the site object to initialize the jinja environment.
        """
        self.site = site
        self.engine = engine
        self.preprocessor = (engine.preprocessor
                            if hasattr(engine, 'preprocessor') else None)

        self.loader = HydeLoader(self.sitepath, site, self.preprocessor)
        self.env = Environment(loader=self.loader,
                                undefined=SilentUndefined,
                                trim_blocks=True,
                                extensions=[IncludeText,
                                            Markdown,
                                            Syntax,
                                            Reference,
                                            Refer,
                                            YamlVar,
                                            'jinja2.ext.do',
                                            'jinja2.ext.loopcontrols',
                                            'jinja2.ext.with_'])
        self.env.globals['media_url'] = media_url
        self.env.globals['content_url'] = content_url
        self.env.globals['engine'] = engine
        self.env.globals['deps'] = {}
        self.env.filters['markdown'] = markdown
        self.env.filters['syntax'] = syntax

        config = {}
        if hasattr(site, 'config'):
            config = site.config

        self.env.extend(config=config)

        try:
            from typogrify.templatetags import jinja2_filters
        except ImportError:
            jinja2_filters = False

        if jinja2_filters:
            jinja2_filters.register(self.env)
コード例 #4
0
ファイル: jinja.py プロジェクト: DaveRichmond/hyde
    def configure(self, site, engine=None):
        """
        Uses the site object to initialize the jinja environment.
        """
        self.site = site
        self.engine = engine
        self.preprocessor = (engine.preprocessor
                            if hasattr(engine, 'preprocessor') else None)

        self.loader = HydeLoader(self.sitepath, site, self.preprocessor)

        default_extensions = [
                IncludeText,
                Spaceless,
                Asciidoc,
                Markdown,
                restructuredText,
                Syntax,
                Reference,
                Refer,
                YamlVar,
                'jinja2.ext.do',
                'jinja2.ext.loopcontrols',
                'jinja2.ext.with_'
        ]

        defaults = {
            'line_statement_prefix': '$$$',
            'trim_blocks': True,
        }

        settings = dict()
        settings.update(defaults)
        settings['extensions'] = list()
        settings['extensions'].extend(default_extensions)

        conf = {}

        try:
            conf = attrgetter('config.jinja2')(site).to_dict()
        except AttributeError:
            pass

        settings.update(
            dict([(key, conf[key]) for key in defaults if key in conf]))

        extensions = conf.get('extensions', [])
        if isinstance(extensions, list):
            settings['extensions'].extend(extensions)
        else:
            settings['extensions'].append(extensions)

        self.env = Environment(
                    loader=self.loader,
                    undefined=SilentUndefined,
                    line_statement_prefix=settings['line_statement_prefix'],
                    trim_blocks=True,
                    bytecode_cache=FileSystemBytecodeCache(),
                    extensions=settings['extensions'])
        self.env.globals['media_url'] = media_url
        self.env.globals['content_url'] = content_url
        self.env.globals['full_url'] = full_url
        self.env.globals['engine'] = engine
        self.env.globals['deps'] = {}
        self.env.filters['urlencode'] = urlencode
        self.env.filters['urldecode'] = urldecode
        self.env.filters['asciidoc'] = asciidoc
        self.env.filters['markdown'] = markdown
        self.env.filters['restructuredtext'] = restructuredtext
        self.env.filters['syntax'] = syntax
        self.env.filters['date_format'] = date_format
        self.env.filters['xmldatetime'] = xmldatetime
        self.env.filters['islice'] = islice
        self.env.filters['top'] = top

        config = {}
        if hasattr(site, 'config'):
            config = site.config

        self.env.extend(config=config)

        try:
            from typogrify.templatetags import jinja2_filters
        except ImportError:
            jinja2_filters = False

        if jinja2_filters:
            jinja2_filters.register(self.env)
コード例 #5
0
ファイル: jinja.py プロジェクト: wilsoniya/hyde
    def configure(self, site, engine=None):
        """
        Uses the site object to initialize the jinja environment.
        """
        self.site = site
        self.engine = engine
        self.preprocessor = (engine.preprocessor if hasattr(
            engine, 'preprocessor') else None)

        self.loader = HydeLoader(self.sitepath, site, self.preprocessor)

        default_extensions = [
            IncludeText, Spaceless, Asciidoc, Markdown, restructuredText,
            Syntax, Reference, Refer, YamlVar, 'jinja2.ext.do',
            'jinja2.ext.loopcontrols', 'jinja2.ext.with_'
        ]

        defaults = {
            'line_statement_prefix': '$$$',
            'trim_blocks': True,
        }

        settings = dict()
        settings.update(defaults)
        settings['extensions'] = list()
        settings['extensions'].extend(default_extensions)

        conf = {}

        try:
            conf = attrgetter('config.jinja2')(site).to_dict()
        except AttributeError:
            pass

        settings.update(
            dict([(key, conf[key]) for key in defaults if key in conf]))

        extensions = conf.get('extensions', [])
        if isinstance(extensions, list):
            settings['extensions'].extend(extensions)
        else:
            settings['extensions'].append(extensions)

        self.env = Environment(
            loader=self.loader,
            undefined=SilentUndefined,
            line_statement_prefix=settings['line_statement_prefix'],
            trim_blocks=True,
            bytecode_cache=FileSystemBytecodeCache(),
            extensions=settings['extensions'])
        self.env.globals['media_url'] = media_url
        self.env.globals['content_url'] = content_url
        self.env.globals['full_url'] = full_url
        self.env.globals['engine'] = engine
        self.env.globals['deps'] = {}
        self.env.filters['urlencode'] = urlencode
        self.env.filters['urldecode'] = urldecode
        self.env.filters['asciidoc'] = asciidoc
        self.env.filters['markdown'] = markdown
        self.env.filters['restructuredtext'] = restructuredtext
        self.env.filters['syntax'] = syntax
        self.env.filters['date_format'] = date_format
        self.env.filters['xmldatetime'] = xmldatetime
        self.env.filters['islice'] = islice
        self.env.filters['top'] = top

        config = {}
        if hasattr(site, 'config'):
            config = site.config

        self.env.extend(config=config)

        try:
            from typogrify.templatetags import jinja2_filters
        except ImportError:
            jinja2_filters = False

        if jinja2_filters:
            jinja2_filters.register(self.env)
コード例 #6
0
ファイル: jinja.py プロジェクト: daredevildave/hyde
    def configure(self, site, engine=None):
        """
        Uses the site object to initialize the jinja environment.
        """
        self.site = site
        self.engine = engine
        self.preprocessor = engine.preprocessor if hasattr(engine, "preprocessor") else None

        self.loader = HydeLoader(self.sitepath, site, self.preprocessor)

        default_extensions = [
            IncludeText,
            Spaceless,
            Asciidoc,
            Markdown,
            restructuredText,
            Syntax,
            Reference,
            Refer,
            YamlVar,
            "jinja2.ext.do",
            "jinja2.ext.loopcontrols",
            "jinja2.ext.with_",
        ]

        defaults = {"line_statement_prefix": "$$$", "trim_blocks": True}

        settings = dict()
        settings.update(defaults)
        settings["extensions"] = list()
        settings["extensions"].extend(default_extensions)

        conf = {}

        try:
            conf = attrgetter("config.jinja2")(site).to_dict()
        except AttributeError:
            pass

        settings.update(dict([(key, conf[key]) for key in defaults if key in conf]))

        extensions = conf.get("extensions", [])
        if isinstance(extensions, list):
            settings["extensions"].extend(extensions)
        else:
            settings["extensions"].append(extensions)

        self.env = Environment(
            loader=self.loader,
            undefined=SilentUndefined,
            line_statement_prefix=settings["line_statement_prefix"],
            trim_blocks=True,
            bytecode_cache=FileSystemBytecodeCache(),
            extensions=settings["extensions"],
        )
        self.env.globals["media_url"] = media_url
        self.env.globals["content_url"] = content_url
        self.env.globals["full_url"] = full_url
        self.env.globals["engine"] = engine
        self.env.globals["deps"] = {}
        self.env.filters["urlencode"] = urlencode
        self.env.filters["urldecode"] = urldecode
        self.env.filters["asciidoc"] = asciidoc
        self.env.filters["markdown"] = markdown
        self.env.filters["restructuredtext"] = restructuredtext
        self.env.filters["syntax"] = syntax
        self.env.filters["date_format"] = date_format
        self.env.filters["xmldatetime"] = xmldatetime
        self.env.filters["islice"] = islice
        self.env.filters["top"] = top

        config = {}
        if hasattr(site, "config"):
            config = site.config

        self.env.extend(config=config)

        try:
            from typogrify.templatetags import jinja2_filters
        except ImportError:
            jinja2_filters = False

        if jinja2_filters:
            jinja2_filters.register(self.env)
コード例 #7
0
ファイル: helpers.py プロジェクト: liamcurry/grabbag
"""
Some of these are lifted from Mozilla's Funfactory.
"""
import jingo
import jinja2
from django.conf import settings
from django.core.urlresolvers import reverse
from django.template import defaultfilters
from django.utils import html, encoding, formats, timesince
from typogrify.templatetags import jinja2_filters


jinja2_filters.register(jingo.env)


jingo.register.filter(html.linebreaks)
jingo.register.filter(timesince.timesince)
jingo.register.filter(timesince.timeuntil)
jingo.register.filter(defaultfilters.timesince)
jingo.register.filter(defaultfilters.truncatewords)


@jingo.register.filter
def iriencode(value):
    return encoding.force_unicode(encoding.iri_to_uri(value))


@jingo.register.filter
def date(value, arg=None):
    """Formats a date according to the given format."""
    if not value: