Text butler

Aus Info-Theke
Zur Navigation springen Zur Suche springen


Links

Zielsetzung

Der Textbutler ist eine Flutter-App. Diese erlaubt die "Wandlung von Text", wobei ein Eingabetext in einen Ausgabetext gewandelt wird, aber auch "Informationen" über einen Text.

Als Wandlung gibt es:

  • "Multiplizierung": ein Text erscheint mehrfach, wobei Teile sich ändern, beispielsweise eine laufende Nummer.
  • Filterung: Durch Angabe von Suchmuster werden nur Teile der Vorlage übernommen
  • Löschungen: Durch Angabe von Suchmuster werden Teile der Vorlage entfernt
  • Ersetzungen: Durch Angabe eines Suchmusters und eines Ersatzes werden Teile gewandelt. Im Ersatztext können Referenzen auf die Trefferstelle enthalten sein.

Als Informationen gibt es:

  • Die Anzahl eines Suchmusters

Aufbau

Die Aktionen werden mit "Kommandos" in einer Eingabezeile spezifiziert. Jedes Kommando hat Parameter.

Das Programm verwaltet beliebig viele Textpuffer, die mit Namen gekennzeichnet sind. Es gibt vordefinierte Puffer:

  • input: wird standardmäßig als Vorlage der Wandlung benutzt.
  • output: wird standardmäßig als Ziel der Wandlung benutzt.
  • history: dort werden die Kommandos hinterlegt. Fehlerhafte Kommandos werden mit führendem "#" gekennzeichnet.
  • examples: zu jedem Kommando gib es dort mindestens ein Beispiel, es werden die wichtigsten Parameter aufgeführt.

Das Programm bietet vier Textbereiche, für jeden Bereich kann mit einer Combobox bestimmt werden, welcher Puffer dort angezeigt wird. Jeder Puffer kann nur einmal angezeigt werden. Stellt man einen Puffer ein, der schon eine andere Anzeige hat, wird dieser Anzeige ein anderer noch nicht angezeigter Puffer zugeordnet.

Kommandos können so lange verkürzt werden, wie die Eingabe eindeutig ist, ebenso die Parameter: Beispielsweise gibt es die Kommandos "clear", "copy" und "count". "cl" ist also eindeutig, oder "cop" oder "cou", nicht aber "c" oder "co".

Kommandos

Kommandos bestehen aus dem Kommandonamen und Parametern, die mit parameter=wert angegeben werden, außer bei boolschen Parameter, da entfällt die "Zuweisung". Die Reihenfolge der Parameter ist unerheblich.

Konvention für Parameter im Plural: Existiert ein Parameter im Singular und Plural, wird der Parameter im Plural groß geschrieben: Beispiel: value und Values. Grund: Damit können beide Namen abgekürzt werden.

Parameter mit Texten benötigen Delimiter. Jedes Zeichen außer Buchstaben und Ziffern darf als Delimiter benutzt werden, wichtig ist nur, dass der gewählte Delimiter am vor und nach dem String stehen. Zulässige Beispiele sind regexpr=!<a href="#">(.*?)</a>!, what="super" oder text=?Delimiter sind " oder '?.

Es gibt Parameter, die keinen Delimiter brauche, weil sie ein Zeichen lang sind, oder keine Blanks enthalten können (Puffernamen).

Parameter mit Listen benötigen einen Separator, der die Listenelemente trennt. Enthält die Liste Texte, so wird ein "Auto-Separator" benutzt: das ist das erste Zeichen der Liste, beispielsweise Values=;a;b;c.

clear

Es kann ein Puffer gelöscht werden. Existiert der Puffer noch nicht, wird er angelegt.

Parameter

  • output: spezifiziert den Puffer, der gelöscht wird. Voreinstellung: "output"

Beispiel

clear o=history

Danach ist die Historie leer.

copy

Kopiert einen Puffer in einen anderen, oder einen festen Text in einen Puffer.

Parameter

  • append: wenn angeben, wird die Vorlage an das Ziel angehängt.
  • input: Puffer, der kopiert wird. Voreinstellung: input
  • output: Ziel der Kopieraktion. Voreinstellung: output
  • text: kann alternativ zu input angegeben werden. Dann wird dieser Text ins Ziel kopiert.

Beispiele

Im Puffer "input" steht "Hello World", im Puffer "todo" steht "Greetings\n".

copy out=todo append

Danach steht in "todo": "Greetings\nHello World".

copy text="Hi Jonny!"

Danach steht in Puffer "output" der Wert "Hi Jonny!".

count

Zählt das Vorkommen eines Suchmusters in einem Puffer.

Parameter

  • append: Ergebnis wird an vorhandenen Text im Zielpuffer angehängt.
  • ignore: Groß-/Kleinschreibung spielt keine Rolle.
  • input: in diesem Puffer wird gesucht. Voreinstellung: input
  • output: Das Ergebnis wird in diesem Puffer ausgegeben. Voreinstellung: output
  • marker: definiert einen Platzhalter für die Ergebniszahl in template. Voreinstellung: '#'
  • template: Vorlage, wie die Ergebnismeldung aussieht. Muss marker enthalten. Voreinstellung: der Wert von marker
  • regexpr: Suchmuster als regulärer Ausdruck.
  • what: Suchmuster als String ohne Metazeichen.

Hinweis: Es darf nur entweder regexpr oder what angegeben werden, nicht beide oder keiner.

Beispiele

Im Puffer "input" steht:

Be or not to be, that's the question!
Hic Rhodos, Hic salta!
  • Kommando: count what="e"

Danach steht in "output":

4
  • Kommandos:
count regex=/\S+/ template="# Wörter" output=statistic
count regexpr=/[.;!?]/ t=', # Sätze' o=statistic append
count regexpr=/./ t=', # Zeichen' o=statistic append

Danach steht im Puffer "statistic":

12 Wörter, 2 Sätze, 59 Zeichen

duplicate

"Vervielfachen" eines Textes, wobei mit Platzhaltern laufende Nummern, laufende Zeichenfolgen oder spezifizierte Einzelwerte enthalten sein können.

Diese Platzhalter werden im Vorlagetext eingefügt und bei der Duplizierung durch konkrete Werte ersetzt.

Parameter

  • append: das Ergebnis wird im Zielpuffer angehängt.
  • baseChar: Basis für laufende Zeichenfolge.
  • BaseChars: wie baseChar, nur eine Liste, wenn mehrere fortlaufende Elemente verwendet werden.
  • count: so oft wird der Text kopiert.
  • ListValues: eine Liste von Textlisten, wenn mehrere fortlaufende Elemente verwendet werden.
  • offset: Basis für laufende Elemente. Voreinstellung: 0
  • Offsets: eine Liste von Offsets, wenn mehrere fortlaufende Elemente verwendet werden.
  • output: das Ergebnis wir in diesen Puffer geschrieben. Voreinstellung: output
  • meta: Delimiter für die Platzhalter in input.
  • step: Abstand zwischen zwei fortlaufenden Elementen.
  • Steps: eine Liste von step-Angaben, wenn mehrere fortlaufende Elemente verwendet werden
  • Values: eine Liste von Texten, die fortlaufend eingefügt werden.

Platzhalter

Hinweis: die Delimiter der Platzhalter sind frei wählbar (Parameter meta), im Beispiel wird % verwendet.

  • %index: eine fortlaufende Zahl, beginnend mit 0.
  • %number: eine fortlaufende Zahl, beginnend mit Parameter offset und Abstand step.
  • %char%: ein fortlaufendes Zeichen, beginnend mit baseChar.
  • %value%: ein Element aus der Liste von Values.

Werden mehrere fortlaufende Elemente benötigt, so helfen:

  • %number0%: fortlaufende Zahl, beginnend mit dem ersten Elemement von Offsets und dem Abstand des ersten Elements von Steps.
  • %number1%: fortlaufende Zahl, beginnend mit dem zweiten Elemement von Offsets und dem Abstand des zweiten Elements von Steps.

und so weiter

  • %char0%: ein fortlaufendes Zeichen, beginnend mit dem ersten Element von BaseChars.
  • %char1%: ein fortlaufendes Zeichen, beginnend mit dem zweiten Element von BaseChars.

und so weiter

Beispiele

Im Puffer input steht:

no: %index% id: %number% place: %char%
  • Kommando: duplicate count=2 offset=100 step=10 baseChar=Q

Danach steht im Puffer output:

no: 0 id: 100 place: Q
no: 1 id: 110 place: R

Im Puffer input steht:

no: !index! id: !number0! place !char0! key: !char1!!char1!!char1!
  • Kommando: duplicate count=3 Offsets=10,0 Steps=5,1 BaseChar="Ak" meta=! out=list

Danach steht im Puffer "list":

no: 0 id: 10 place A key: kkk
no: 1 id: 15 place B key: lll
no: 2 id: 20 place C key: mmm

Im Puffer "input" steht:

animal %number%: %value%
  • Kommando: duplicate count=2 offset=1 Values=,cat,dog

Danach steht im Puffer "output":

animal 1: cat
animal 2: dog

Im Puffer "input" steht:

animal %value0% named %value1% comes from %value2%.
  • Kommando: duplicate count=2 ListValues=";,cat,dog;,Mia,Harro;,London,Rome"

Hinweis: die Liste der Listen benutzt den Separator ";", die Textlisten den Separator ",".

Danach steht im Puffer "output":

animal cat named Mia comes from London.
animal dog named Harro comes from Rome.

replace

Damit können Suchmuster ersetzt werden. Als Suchmuster sind Strings oder reguläre Ausdrücke möglich.

Bei regulären Suchmustern kann ein Teil des Treffers im Ersatz verwendet werden.

Parameter

     'input': paramBufferName,
     'output': paramBufferName,
     'meta': paramMeta,
     'regexpr': paramRegExpr,
     'value': paramValue,
     'with': paramWith,
     'what': paramWhat,