Changes between Version 3 and Version 4 of Wiki Macros
- Timestamp:
- Jun 21, 2015, 12:16:11 PM (9 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Wiki Macros
v3 v4 3 3 [[PageOutline]] 4 4 5 Trac macros are plugins to extend the Trac engine with custom 'functions' written in Python. A macro inserts dynamic HTML data in any context supporting WikiFormatting. 5 Trac macros are plugins to extend the Trac engine with custom 'functions' written in Python. A macro inserts dynamic HTML data in any context supporting WikiFormatting. Its syntax is `[[macro-name(optional-arguments)]]`. 6 6 7 Another kind of macros are WikiProcessors. They typically deal with alternate markup formats and representation of larger blocks of information (like source code highlighting).7 The WikiProcessors are another kind of macros. They typically deal with alternate markup formats and transformation of larger "blocks" of information (like source code highlighting). They are used for processing the multiline `{{{#!wiki-processor-name ... }}}` blocks. 8 8 9 9 == Using Macros == … … 14 14 The list of available macros and the full help can be obtained using the !MacroList macro, as seen [#AvailableMacros below]. 15 15 16 A brief list can be obtained via ![[MacroList(*)]] or ![[?]].16 A brief list can be obtained via `[[MacroList(*)]]` or `[[?]]`. 17 17 18 Detailed help on a specific macro can be obtained by passing it as an argument to !MacroList, e.g. ![[MacroList(MacroList)]], or, more conveniently, by appending a question mark (?) to the macro's name, like in ![[MacroList?]].18 Detailed help on a specific macro can be obtained by passing it as an argument to !MacroList, e.g. `[[MacroList(MacroList)]]`, or, more conveniently, by appending a question mark (`?`) to the macro's name, like in `[[MacroList?]]`. 19 19 20 20 … … 48 48 }}} 49 49 }}} 50 {{{#!td style="padding-left: 2em; font-size: 80%" 51 [[?]] 50 {{{#!td style="padding-left: 2em" 51 {{{#!html 52 <div style="font-size: 80%" class="trac-macrolist"> 53 <h3><code>[[Image]]</code></h3>Embed an image in wiki-formatted text. 54 55 The first argument is the file … 56 <h3><code>[[InterTrac]]</code></h3>Provide a list of known <a class="wiki" href="/wiki/InterTrac">InterTrac</a> prefixes. 57 <h3><code>[[InterWiki]]</code></h3>Provide a description list for the known <a class="wiki" href="/wiki/InterWiki">InterWiki</a> prefixes. 58 <h3><code>[[KnownMimeTypes]]</code></h3>List all known mime-types which can be used as <a class="wiki" href="/wiki/WikiProcessors">WikiProcessors</a>. 59 Can be …</div> 60 }}} 61 etc. 52 62 }}} 53 63 … … 92 102 def expand_macro(self, formatter, name, text): 93 103 t = datetime.now(utc) 94 return tag. b(format_datetime(t, '%c'))104 return tag.strong(format_datetime(t, '%c')) 95 105 }}} 96 106 … … 138 148 For example, when writing: 139 149 {{{ 140 {{{#!HelloWorld style="polite" 150 {{{#!HelloWorld style="polite" -silent verbose 141 151 <Hello World!> 142 152 }}} … … 150 160 One should get: 151 161 {{{ 152 Hello World, text = <Hello World!> , args = {'style': u'polite' }162 Hello World, text = <Hello World!> , args = {'style': u'polite', 'silent': False, 'verbose': True} 153 163 Hello World, text = <Hello World!> , args = {} 154 164 Hello World, text = <Hello World!> , args = None … … 161 171 {{{ 162 172 #!python 163 text = "whatever wiki markup you want, even containing other macros" 164 # Convert Wiki markup to HTML, new style 165 out = StringIO() 166 Formatter(self.env, formatter.context).format(text, out) 167 return Markup(out.getvalue()) 173 from genshi.core import Markup 174 from trac.wiki.macros import WikiMacroBase 175 from trac.wiki import Formatter 176 import StringIO 177 178 class HelloWorldMacro(WikiMacroBase): 179 def expand_macro(self, formatter, name, text, args): 180 text = "whatever '''wiki''' markup you want, even containing other macros" 181 # Convert Wiki markup to HTML, new style 182 out = StringIO.StringIO() 183 Formatter(self.env, formatter.context).format(text, out) 184 return Markup(out.getvalue()) 168 185 }}}