Index: README
===================================================================
--- README (revision 3275)
+++ README (revision 3276)
@@ -66,7 +66,7 @@
-------------------
Copyright 2005-2006, Bernhard Haumacher (haui at haumacher.de)
-Copyright 2005-2008, Thomas Moschny (thomas.moschny at gmx.de)
+Copyright 2005-2010, Thomas Moschny (thomas.moschny at gmx.de)
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
Index: tracnav/tracnav.py
===================================================================
--- tracnav/tracnav.py (revision 3275)
+++ tracnav/tracnav.py (revision 3276)
@@ -34,7 +34,7 @@
== Author and License ==
* Copyright 2005-2006, Bernhard Haumacher (haui at haumacher.de)
- * Copyright 2005-2008, Thomas Moschny (thomas.moschny at gmx.de)
+ * Copyright 2005-2010, Thomas Moschny (thomas.moschny at gmx.de)
{{{
This program is free software; you can redistribute it and/or modify
@@ -63,6 +63,7 @@
from trac.wiki.model import WikiPage
from trac.wiki.formatter import Formatter, OneLinerFormatter
from trac.util.html import Markup
+from trac.util import arity
from genshi.builder import tag
from StringIO import StringIO
@@ -87,6 +88,7 @@
OneLinerFormatter.__init__(self, env, ctx)
self.lastlink = None
self.allowed_macros = allowed_macros
+ self.mf_argcount = arity(OneLinerFormatter._macro_formatter)
def format_toc(self, wikitext):
self.lastlink = None
@@ -100,14 +102,20 @@
return OneLinerFormatter._make_link(
self, namespace, target, *args)
- def _macro_formatter(self, match, fullmatch):
+ def _macro_formatter(self, match, fullmatch, macro=None):
name = fullmatch.group('macroname')
if name in self.allowed_macros:
# leapfrog the OneLinerFormatter
- return Formatter._macro_formatter(self, match, fullmatch)
+ if self.mf_argcount == 4:
+ return Formatter._macro_formatter(self, match, fullmatch, macro)
+ else:
+ return Formatter._macro_formatter(self, match, fullmatch)
else:
# use the OneLinerFormatter
- return OneLinerFormatter._macro_formatter(self, match, fullmatch)
+ if self.mf_argcount == 4:
+ return OneLinerFormatter._macro_formatter(self, match, fullmatch, macro)
+ else:
+ return OneLinerFormatter._macro_formatter(self, match, fullmatch)
# FIXME: what about _make_relative_link() ?
# FIXME: CamelCase links are special and not handled by the Formatter...