[PYTHON] Balises div plus faciles sur le wiki Trac

Utilisation de la balise div

Lors de l'écriture d'un Wiki avec Trac, par exemple, vous souhaiterez peut-être inclure une note comme celle-ci. div-msg

La façon d'écrire ce genre de chose est de préparer une feuille de style à l'avance et

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

Il utilise un processeur div.

{{{
#!div class="msg-devil"
'''Je vais passer l'examen! !! !!'''
}}}

···Gênant

Ce n'est pas si encombrant, mais je veux l'écrire en une seule ligne avec quelque chose comme ceci [[div (diable, '' 'je vais passer l'examen !!!' '')]. J'ai donc fait un simple plug-in.

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)

J'ai peur qu'il y ait beaucoup d'omissions autour de get_macro_description ...

Installation

La source est ici, vous pouvez donc soit hg clone et python setup.py bdist_egg ou python setup.py install. https://bitbucket.org/iwata0303/tracdivhelper

Suivez ensuite les instructions générales d'installation du plug-in Trac.

Cela ne fonctionne qu'avec Trac 1.0. Je pense que cela fonctionnera si c'est une série 0.12, mais qu'en est-il?

Comment utiliser

Une fois installé, vous pourrez utiliser la macro cdev. Avec cela, vous pouvez écrire ce qui précède.

[[cdev(msg-devil, '''Je vais passer l'examen! !! !!''')]]

De plus, si vous écrivez de tels paramètres dans trac.ini à l'avance,

trac.ini


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

Vous pourrez écrire plus court.

[[div_devil('''Je vais passer l'examen! !! !!''')]]

application

Par exemple, si vous souhaitez que la couleur du texte soit rouge, vous pouvez généralement installer ColorMacro ou utiliser la macro span.

[[Color(none, red,C'est des lettres rouges)]]
[[span(C'est des lettres rouges, style=color:red)]]

Je fais quelque chose comme ça, mais c'est aussi ce plug-in

trac.ini


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

Vous pourrez écrire plus simplement.

[[span_red(C'est des lettres rouges)]]

C'est un plug-in avec environ 30 lignes, et cela ne prend pas beaucoup de temps, mais c'est assez pratique :) (Auto-louange)

Recommended Posts

Balises div plus faciles sur le wiki Trac
Le problème devient plus facile à résoudre en fonction de la méthode de formulation