Markup

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

  1. Definition:
    • Markup('def', '_begin','/{def\+(\w+)}/',"[[#]] ''' ='''");
  2. und link mit anchor:
    • Markup('lia', '_begin','/{lia\+(([\w.]*)#)?(\w*)}/', "[[# | ]]");
{def+eins} = definition von eins

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?

zwei = besteht aus eins und 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
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