definiere ich im config.php die custom markup dop mit
- Markup('tstDop', 'fulltext','/{dop\+(\w+)}/','{tstDoppelt + + und }');
bekomme ich folgende Ersetzung:
so {tstDop+wert} oder so | so {tstDoppelt + wert + wert und wert} oder so |
Syntaxdefinitionen
- Definition:
- Markup('def', '_begin','/{def\+(\w+)}/',"[[#]] ''' ='''");
- und link mit anchor:
- Markup('lia', '_begin','/{lia\+(([\w.]*)#)?(\w*)}/', "[[# | ]]");
{def+eins} = definition von eins |
benutzung von {lia+eins} | benutzung von eins |
benutzung von {lia+Markup#eins} | benutzung von eins |
benutzung von {lia+My.Markup#eins} | benutzung von eins |
{def+zwei} = besteht aus {lia+eins} und {lia+#zwei} oder? |
mit Link auf LitD
mit anchor und gleichnamige pageTextVariable für Link auf Dokument
(:pageVar1: valueOfPageVar1:) ll {$:pageVar1} | ll valueOfPageVar1 |
def+(:defName: LitD:AKS02.pdf:) anchor [[#defName | anc]], {$:defName} {ref+Markup#defName} | defName↗ ⊥ anchor anc, LitD:AKS02.pdf {ref+Markup#defName} |
{ref+defName} {ref+Markup#defName} {ref+blabla} | defName↗ ⊥ {ref+Markup#defName} {ref+ textvar My.Markup$:blabla is undefined or empty} |
{ref+Lit.Lit#AKS02} {lit+AKS02} | {ref+Lit.Lit#AKS02} AKS02↗ ⊥ |
/e
früher konnte man mit der /e Option kann ich auch php eingeben, aber heute muss man ein (anonyme) Funktion einfüllen für preg_replace_callback:
Markup('tstPhp', 'fulltext','/{tstPhp\+(\w+)}/' , function ($ma) { return '(**tstPhp + ' . $ma[1] . ' version={$Version} , FullName={$FullName} ' . ' + nachher**)'; } );
also {tstPhp+quarkMitSosse} oder? | also (**tstPhp + quarkMitSosse version=pmwiki-2.3.34 , FullName=My.Markup resolve "" Main.HomePage xyz Xyz.Xyz abc/xyz Abc.Xyz + nachher**) oder? |
Speziell praktisch ist die /e Option wenn ich Entscheidungen treffen will, da kann ich den PHP ? : (triple) Operator benutzen - wenn's noch komplizierter wird muss ich halt eine Funktion definieren. Z.B. Einen DatasetNamen mit Apostropen umrahmen, fehlende schliessende Klammer nach mbr ergänzen und durch html entities ersetzen
- Markup('tstDsn', '_begin', '/{tstDsn\+\'?([\w.@#]+)(\(([\w.@#]*)\)?)?\'?}/e', "'\'' . ('' == '' ? '' : '()') . '\''");
{tstDsn+a.b.c} | {tstDsn+a.b.c} |
{tstDsn+'a.b.c(mbr} | {tstDsn+'a.b.c(mbr} |
{tstDsn+a.b.c(mbr'} | {tstDsn+a.b.c(mbr'} |
{tstDsn+'a.b.c(mbr)'} | {tstDsn+'a.b.c(mbr)'} |
Die Versionierten BuchReferenzen
das markup ref (reference) der Name springt in die Seite des Buchs, das Plus auf die Definition:
- Markup('ref', '_begin','/{ref\+(((\w)+\.)?((\w+)#))?(\w+)}/', '[[{$:ref}#{$:} | ]] [[# | \'\'\'+\'\'\' ]]');
eine Textvariable mit der ref auf das Buch definieren:
::ref: MyPdf:petriNetsForREv9.pdf |
irgendwo in dieser Seite eine Textvariable und einen Anker mit demselben Namen definieren
[[#ref80]] (:ref80: page=80:) |
Benutzung lokal {ref+ref80} | Benutzung lokal ref80↗ ⊥ |
Benutzung aus group {ref+Markup#ref80} | Benutzung aus group {ref+Markup#ref80} |
Benutzung ausserhalb {ref+My.Markup#ref80} | Benutzung ausserhalb {ref+My.Markup#ref80} |
Mit red (reference definition) kann ich die Textvariable, den Anker und die Aneige mit einem einzigen Markup erledigen:
- Markup('red', '_begin','/{red\+}?((\(: *(\w[-\w]*) *:(?!\))\s?)(.*?)(:\)))/s', '[[#]] {ref+} ');
{red+}(:ref90: page=90:) | {red+} |
Benutzung ausserhalb {ref+My.Markup#ref90} | Benutzung ausserhalb {ref+My.Markup#ref90} |
und funktioniert's auch aus einer anderen Seite My.MarkupRef