kawaz.apps.kfm.templatetags.kfm のソースコード

# coding=utf-8
"""
"""

from functools import wraps
from django import template
from django.utils.safestring import mark_safe
from django.template.loader_tags import do_include
from ..parser import parse_kfm


register = template.Library()


@register.tag('include_kfm')
[ドキュメント]def do_include_kfm(parser, token): """ テンプレートフォルダに存在する Kawaz Flavored Markdown ファイルを読み込み レンダリングするテンプレートタグ Usage: {% include_kfm "markdown/about.md" %} """ def parse_kfm_decorator(fn): @wraps(fn) def render(*args, **kwargs): rendered = fn(*args, **kwargs) return parse_kfm(rendered) return render node = do_include(parser, token) node.render = parse_kfm_decorator(node.render) return node
@register.filter('kfm') @template.defaultfilters.stringfilter
[ドキュメント]def filter_kfm(value): """ 指定されたテキストを Kawaz Flavored Markdown として HTML 展開するフィルタ Usage: {{ object.body | kfm }} """ value = parse_kfm(value) return mark_safe(value)
@register.tag('kfm')
[ドキュメント]def do_kfm(parser, token): """ ブロックで囲まれたテキストを Kawaz Flavored Markdown として HTML展開するタグ Usage: {% kfm %} **Kawaz Flavored Markdown** {% endkfm %} """ ENDMARKER = "end" + token.split_contents()[0] nodelist = parser.parse(ENDMARKER) parser.delete_first_token() return KFMNode(nodelist)
[ドキュメント]class KFMNode(template.Node): def __init__(self, nodelist): self.nodelist = nodelist
[ドキュメント] def render(self, context): value = self.nodelist.render(context) value = parse_kfm(value) return mark_safe(value)