[PYTHON] Einfachere Div-Tags im Trac-Wiki

Verwendung des div-Tags

Wenn Sie beispielsweise ein Wiki mit Trac schreiben, möchten Sie möglicherweise eine solche Notiz einfügen. div-msg

Der Weg, um so etwas zu schreiben, besteht darin, im Voraus ein Stylesheet vorzubereiten und

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;
}

Es verwendet einen Div-Prozessor.

{{{
#!div class="msg-devil"
'''Ich werde die Prüfung ablegen! !! !!'''
}}}

** ··· störend **

Es ist nicht so sperrig, aber ich möchte es in einer Zeile mit so etwas wie "[[div (Teufel", "Ich werde die Prüfung ablegen !!!") "schreiben. Also habe ich ein einfaches Plug-In gemacht.

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)

Ich befürchte, dass get_macro_description viele Auslassungen aufweist ...

Installation

Die Quelle ist hier, also können Sie entweder "hg clone" und "python setup.py bdist_egg" oder "python setup.py install". https://bitbucket.org/iwata0303/tracdivhelper

Befolgen Sie dann die allgemeinen Installationsanweisungen für das Trac-Plug-In.

Es funktioniert nur mit Trac 1.0. Ich denke, es wird funktionieren, wenn es sich um eine 0.12-Serie handelt, aber wie wäre es damit?

Wie benutzt man

Nach der Installation können Sie das Makro "cdev" verwenden. Damit können Sie das Obige schreiben.

[[cdev(msg-devil, '''Ich werde die Prüfung ablegen! !! !!''')]]

Wenn Sie solche Einstellungen im Voraus in trac.ini schreiben,

trac.ini


[divhelper]
div-alias.devil = class="msg-devil"

Sie können kürzer schreiben.

[[div_devil('''Ich werde die Prüfung ablegen! !! !!''')]]

Anwendung

Wenn Sie beispielsweise möchten, dass die Textfarbe rot ist, können Sie normalerweise ColorMacro installieren oder das span-Makro verwenden.

[[Color(none, red,Es ist ein roter Buchstabe)]]
[[span(Es ist ein roter Buchstabe, style=color:red)]]

Ich mache so etwas, aber das ist auch dieses Plug-In

trac.ini


[divhelper]
span-alias.red = style="color:red"

Sie können einfacher schreiben.

[[span_red(Es ist ein roter Buchstabe)]]

Es ist ein Plug-In mit ungefähr 30 Zeilen und es braucht nicht viel Zeit, aber es ist ziemlich praktisch :) (Selbstlob)

Recommended Posts

Einfachere Div-Tags im Trac-Wiki
Das Problem wird je nach Formulierungsmethode leichter zu lösen