When writing a Wiki in Trac, for example, you may want to add a note like this.

The way to write this kind of thing is to prepare a style sheet in advance and
style.css
div[class|="msg"] {
background-repeat: no-repeat;
background-position: 5px 10px;
border-top: solid 1px;
border-left: solid 10px;
padding: 3px 45px;
}
div.msg-devil {
background-image: url("face-devilish.png ");
border-color: red;
}
It uses a div processor.
{{{
#!div class="msg-devil"
'''I'm going to take the exam! !! !!'''
}}}
···Troublesome
It's not that bulky, but I want to write it in one line with something like this [[div (devil,'''I'm going to take the exam !!!''')].
So I made a simple plugin.
DivHelperPlugin
web_ui.py
# -*- coding:utf8 -*-
from trac.core import *
from trac.config import ConfigSection
from trac.wiki import IWikiMacroProvider
from trac.wiki.formatter import system_message
from trac.wiki.formatter import WikiProcessor
from trac.wiki.parser import parse_processor_args
class DivHelperPlugin(Component):
"undocumented"
implements (IWikiMacroProvider)
_section = ConfigSection('divhelper', 'undocumented')
_prefixes = {"div": "div-alias.", "span": "span-alias."}
def get_macros(self):
yield "cdiv"
yield "cspan"
for name, value in self._section.options():
for pname, prefix in self._prefixes.items():
if name.startswith(prefix):
yield pname + '_' + name[len(prefix):]
def get_macro_description(self, name):
return 'undocumented : %s' % name
def expand_macro(self, formatter, name, content, args = None):
if name in ("cdiv", "cspan"):
try:
clsname, content = content.split(",", 1)
pname = name[1:]
pargs = {"class": clsname}
content = content.strip()
except:
return system_message("%s: invalid args (%s)" % (name, content))
else:
pname, alias = name.split("_", 1)
key = self._prefixes[pname] + alias
pargs = parse_processor_args(self._section.get(key))
p = WikiProcessor(formatter, pname, pargs)
return p.processor(content)
I'm afraid that there are a lot of omissions around get_macro_description ...
The source is here, so you can either hg clone and python setup.py bdist_egg or python setup.py install.
https://bitbucket.org/iwata0303/tracdivhelper
Then follow the general Trac plugin installation instructions.
It only works with Trac 1.0. I think it will work if it is 0.12 series, but how about it?
Once installed, you will be able to use the macro cdev. With this, you can write the above.
[[cdev(msg-devil, '''I'm going to take the exam! !! !!''')]]
Also, if you write such settings in trac.ini in advance,
trac.ini
[divhelper]
div-alias.devil = class="msg-devil"
You will be able to write shorter.
[[div_devil('''I'm going to take the exam! !! !!''')]]
span-alias.xxx.For example, if you want to make the text color red, you can usually install ColorMacro or use the span macro.
[[Color(none, red,It's a red letter)]]
[[span(It's a red letter, style=color:red)]]
I do something like this, but this is also this plug-in,
trac.ini
[divhelper]
span-alias.red = style="color:red"
You will be able to write more simply.
[[span_red(It's a red letter)]]
It's a plug-in with about 30 lines, and it doesn't take much time, but it's quite convenient :) (Self-praise)