~netlandish/django-wiki

365793db612f0832e66af8d5b733c3bcff5a0975 — benjaoming 11 years ago 0751cc8 + 22486f5
Merge pull request #107 from SacNaturalFoods/master

added kwargs logic to macros plugin and depth kwarg to article_list macro
M wiki/plugins/macros/markdown_extensions.py => wiki/plugins/macros/markdown_extensions.py +11 -10
@@ 4,7 4,8 @@ import re
from django.template.loader import render_to_string
from django.template import Context

MACRO_RE = re.compile(r'.*(\[(?P<macro>\w+)(\:(?P<arg>\w+))?\]).*', re.IGNORECASE)
MACRO_RE = re.compile(r'.*(\[(?P<macro>\w+)(?P<kwargs>\s\w+\:.+)*\]).*', re.IGNORECASE)
KWARG_RE = re.compile(r'([^ |:]+):([^ |$]+)', re.IGNORECASE)


class MacroExtension(markdown.Extension):


@@ 17,7 18,7 @@ class MacroExtension(markdown.Extension):

class MacroPreprocessor(markdown.preprocessors.Preprocessor):
    """django-wiki macro preprocessor - parse text for various [some_macro] and 
    [some_macro:arg] references. """
    [some_macro (kw:arg)*] references. """
    
    allowed_methods = ('article_list',)
    


@@ 29,22 30,22 @@ class MacroPreprocessor(markdown.preprocessors.Preprocessor):
                macro = m.group('macro').strip()
                if not macro in MacroPreprocessor.allowed_methods:
                    continue
                arg = m.group('arg')
                if arg:
                    arg = arg.strip()
                try:
                    line = getattr(self, macro)(arg)
                except AttributeError:
                    pass       
                kwargs = m.group('kwargs')
                if kwargs:
                    kwargs = eval('{' + KWARG_RE.sub(r'"\1":"\2",', kwargs) + '}')
                    line = getattr(self, macro)(**kwargs)
                else:
                    line = getattr(self, macro)()
            if not line is None:
                new_text.append(line)
        return new_text

    def article_list(self, arg=None):
    def article_list(self, depth=2):
        html = render_to_string(
            "wiki/plugins/macros/article_list.html",
            Context({
                'article_children': self.markdown.article.get_children,
                'depth': int(depth) + 1,
            })
        )
        return self.markdown.htmlStash.store(html, safe=True)

M wiki/plugins/macros/templates/wiki/plugins/macros/article_list.html => wiki/plugins/macros/templates/wiki/plugins/macros/article_list.html +1 -1
@@ 5,7 5,7 @@
        <h3>{% trans "Articles" %}</h3>
        <br/>
            {% for child in article_children %}
                {% article_list child %}
                {% article_list child depth %}
            {% endfor %}
    </div>
{% endif %}

M wiki/plugins/macros/templates/wiki/plugins/templatetags/article_list.html => wiki/plugins/macros/templates/wiki/plugins/templatetags/article_list.html +2 -2
@@ 2,11 2,11 @@
{% load url from future %}

<p><a href="{% url 'wiki:get' path=parent.path article_id=parent.article.id %}">{{ parent.article }}</a></p>
{% if parent.children.count %}
{% if parent.children.count and parent.level < depth %}
    <div class="wiki-article-sublist"> 
        <ul>
            {% for child in parent.children.all %}
                <li>{% article_list child %}</li>
                <li>{% article_list child depth %}</li>
            {% endfor %}
        </ul>
    </div>

M wiki/plugins/macros/templatetags/wiki_macro_tags.py => wiki/plugins/macros/templatetags/wiki_macro_tags.py +2 -1
@@ 7,8 7,9 @@ register = template.Library()
    'wiki/plugins/templatetags/article_list.html',
    takes_context=True
)
def article_list(context, urlpath):
def article_list(context, urlpath, depth):
    context['parent'] = urlpath 
    context['depth'] = depth 
    return context