Bearbeiten von „Text butler“

Zur Navigation springen Zur Suche springen

Warnung: Du bist nicht angemeldet. Deine IP-Adresse wird bei Bearbeitungen öffentlich sichtbar. Melde dich an oder erstelle ein Benutzerkonto, damit Bearbeitungen deinem Benutzernamen zugeordnet werden.

Die Bearbeitung kann rückgängig gemacht werden. Bitte prüfe den Vergleich unten, um sicherzustellen, dass du dies tun möchtest, und veröffentliche dann unten deine Änderungen, um die Bearbeitung rückgängig zu machen.

Aktuelle Version Dein Text
Zeile 3: Zeile 3:
= Links =
= Links =
* [[Flutter-Apps]]
* [[Flutter-Apps]]
* [[text_slave EN]]


= Zielsetzung =
= Zielsetzung =
Zeile 54: Zeile 53:


=== Parameter ===
=== Parameter ===
{| class="wikitable"
* '''output''': spezifiziert den Puffer, der gelöscht wird. Voreinstellung: "output"
! Name
! Typ
! Beschreibung
! Beispiel
|-
| '''output'''
| Puffername
| Das Ergebnis wir in diesen Puffer geschrieben. Voreinstellung: output
| output=result
|}


=== Beispiel ===
=== Beispiel ===
Zeile 72: Zeile 61:


== copy ==
== copy ==
Kopiert einen Puffer in einen anderen, oder einen gegebenen Text in einen Puffer.
Kopiert einen Puffer in einen anderen, oder einen festen Text in einen Puffer.


=== Parameter ===
=== Parameter ===
{| class="wikitable"
* '''append''': wenn angeben, wird die Vorlage an das Ziel angehängt.
! Name
* '''input''': Puffer, der kopiert wird. Voreinstellung: input
! Typ
* '''output''': Ziel der Kopieraktion. Voreinstellung: output
! Beschreibung
* '''text''': kann alternativ zu '''input''' angegeben werden. Dann wird dieser Text ins Ziel kopiert.
! Beispiel
|-
| '''append'''
|boolean
| Das Ergebnis wird im Zielpuffer angehängt
| append
|-
| '''input'''
| Puffername
| Puffer, der kopiert wird. Voreinstellung: input
| input=examples
|-
| '''output'''
| Puffername
| Das Ergebnis wird in diesen Puffer geschrieben. Voreinstellung: output
| output=result
|-
| '''text'''
| string
| Kann alternativ zu '''input''' angegeben werden. Dann wird dieser Text ins Ziel kopiert.  
Kann auch ein '''interpolierter Text''' sein, dann steht vor dem Delimiter i und das Esc-Zeichen.
| text="Hello" text=i%"First line%nSecond line"
|}


=== Beispiele ===
=== Beispiele ===
Im Puffer "input" steht:
Im Puffer "input" steht "Hello World", im Puffer "todo" steht "Greetings\n".
<pre>Hello World
</pre>
Im Puffer "todo" steht:
<pre>Greetings
</pre>
Kommando:
<pre>copy out=todo append
<pre>copy out=todo append
</pre>
</pre>
Danach steht in "todo"
Danach steht in "todo": "Greetings\nHello World".
<pre>Greetings
Hello World
</pre>
Kommando:
<pre>copy text="Hi Jonny!"
<pre>copy text="Hi Jonny!"
</pre>
</pre>
Danach steht in Puffer "output":
Danach steht in Puffer "output" der Wert "Hi Jonny!".
<pre>Hi Jonny!
</pre>


== count ==
== count ==
Zeile 128: Zeile 82:


=== Parameter ===
=== Parameter ===
 
* '''append''': Ergebnis wird an vorhandenen Text im Zielpuffer angehängt.
{| class="wikitable"
* '''ignore''': Groß-/Kleinschreibung spielt keine Rolle.
! Name
* '''input''': in diesem Puffer wird gesucht. Voreinstellung: input
! Typ
* '''output''': Das Ergebnis wird in diesem Puffer ausgegeben. Voreinstellung: output
! Beschreibung
* '''marker''': definiert einen Platzhalter für die Ergebniszahl in '''template'''. Voreinstellung: '#'
! Beispiel
* '''template''': Vorlage, wie die Ergebnismeldung aussieht. Muss '''marker''' enthalten. Voreinstellung: der Wert von '''marker'''
|-
* '''regexpr''': Suchmuster als regulärer Ausdruck.
| '''append'''
* '''what''': Suchmuster als String ohne Metazeichen.  
|boolean
Hinweis: Es darf nur entweder '''regexpr''' oder '''what''' angegeben werden, nicht beide oder keiner.
| Das Ergebnis wird im Zielpuffer angehängt.
| append
|-
| '''ignore'''
|boolean
| Groß-/Kleinschreibung spielt keine Rolle.
| ignore
|-
| '''input'''
| Puffername
| In diesem Puffer wird gezählt. Voreinstellung: input
| input=adresses
|-
| '''output'''
| Puffername
| Das Ergebnis wir in diesen Puffer geschrieben. Voreinstellung: output
| output=result
|-
| '''marker'''
| character
| Definiert einen Platzhalter für die Ergebniszahl in '''template'''. Voreinstellung: '#'
| marker=*
|-
| '''template'''
| string
| Vorlage, wie die Ergebnismeldung aussieht. Muss '''marker''' enthalten. Voreinstellung: der Wert von '''marker'''
| template="# hits: *"
|-
| '''regexpr'''
| regulärer Ausdruck
| Suchmuster als regulärer Ausdruck.
| regexpr=/(\d+)/
|-
| '''what'''
| string
| Suchmuster als String ohne Metazeichen.  
| what="address"
|}
 
'''Hinweis:''' Es muss genau einer von '''regexpr''' oder '''what''' angegeben werden, nicht beide oder keiner.


=== Beispiele ===
=== Beispiele ===
Zeile 183: Zeile 97:
Hic Rhodos, Hic salta!
Hic Rhodos, Hic salta!
</pre>
</pre>
Kommando:
* Kommando: <code>count what="e"</code>
<pre>count what="e"
</pre>
Danach steht in "output":
Danach steht in "output":
<pre>4
<pre>4
</pre>
</pre>
Kommandos:
* Kommandos:
<pre>count regex=/\S+/ template="# Wörter" output=statistic
<pre>count regex=/\S+/ template="# Wörter" output=statistic
count regexpr=/[.;!?]/ t=', # Sätze' o=statistic append
count regexpr=/[.;!?]/ t=', # Sätze' o=statistic append
Zeile 204: Zeile 116:


=== Parameter ===
=== Parameter ===
{| class="wikitable"
* '''append''': das Ergebnis wird im Zielpuffer angehängt.
! Name
* '''baseChar''': Basis für laufende Zeichenfolge.
! Typ
* '''BaseChars''': wie baseChar, nur eine Liste, wenn mehrere fortlaufende Elemente verwendet werden.
! Beschreibung
* '''count''': so oft wird der Text kopiert.
! Beispiel
* '''ListValues''': eine Liste von Textlisten, wenn mehrere fortlaufende Elemente verwendet werden.
|-
* '''offset''': Basis für laufende Elemente. Voreinstellung: 0
| '''append'''
* '''Offsets''': eine Liste von Offsets, wenn mehrere fortlaufende Elemente verwendet werden.
| boolean
* '''output''': das Ergebnis wir in diesen Puffer geschrieben. Voreinstellung: output
| Das Ergebnis wird im Zielpuffer angehängt.
* '''meta''': Delimiter für die Platzhalter in '''input'''.
| append
* '''step''': Abstand zwischen zwei fortlaufenden Elementen.
|-
* '''Steps''': eine Liste von '''step'''-Angaben, wenn mehrere fortlaufende Elemente verwendet werden
| '''baseChar'''
* '''Values''': eine Liste von Texten, die fortlaufend eingefügt werden.
| character
| Basis für laufende Zeichenfolge.
| baseChar=a
|-
| '''count'''
| int
| So oft wird der Text kopiert.
| count=3
|-
| '''input'''
| Puffername
| Der Text aus diesem Puffer wird vervielfacht. Voreinstellung: input
| input=data
|-
| '''ListValues'''
| stringList
| eine Liste von Textlisten, wenn mehrere fortlaufende Elemente verwendet werden. Verschachtelte Auto-Separatoren:
Einer zum Trennen der "Bereiche", im Beispiel ";", je Bereich einer zum Trennen der Werte, im Beispiel "," und "/".
| ListValues=";,adam,berta,charly;/male/female/diverse;,41,23,59"
|-
| '''meta'''
| character
| Delimiter für die Platzhalter innerhalb von '''input'''. Voreinstellung: %
| meta=%
|-
| '''offset'''
| int
| Basis für laufende Elemente. Voreinstellung: 0
| offset=100
|-
| '''Offsets'''
| intList
| Eine Liste von Offsets, wenn mehrere fortlaufende Elemente verwendet werden.
| Offsets=10,1,100
|-
| '''output'''
| Puffername
| das Ergebnis wird in diesen Puffer geschrieben. Voreinstellung: output
| output=result
|-
| '''step'''
| int
| Abstand zwischen zwei fortlaufenden Elementen.
| step=2
|-
| '''Steps'''
| intList
| Eine Liste von '''step'''-Angaben, wenn mehrere fortlaufende Elemente verwendet werden.
| Steps=2,1,10
|-
| '''Values'''
| stringList
| Eine Liste von Texten, die fortlaufend eingefügt werden. Auto-Separator. Kann auch interpolierter Text sein.
| Values=",bob,eva"
Values=i%",%tone%n,%ttwo%n,%tthree%n"
|}


=== Platzhalter ===
=== Platzhalter ===
Zeile 296: Zeile 152:
<pre>= List:
<pre>= List:
</pre>
</pre>
Kommando:
* Kommando: <code>duplicate count=2 offset=100 step=10 baseChar=Q append</code>
<pre>duplicate count=2 offset=100 step=10 baseChar=Q append
</pre>
Danach steht im Puffer output:
Danach steht im Puffer output:
<pre>= List:
<pre>= List:
Zeile 308: Zeile 162:
<pre>no: !index! id: !number0! place !char0! key: !char1!!char1!!char1!
<pre>no: !index! id: !number0! place !char0! key: !char1!!char1!!char1!
</pre>
</pre>
Kommando:
* Kommando: <code>duplicate count=3 Offsets=10,0 Steps=5,1 BaseChar="Ak" meta=! out=list</code>
<pre>duplicate count=3 Offsets=10,0 Steps=5,1 BaseChar="Ak" meta=! out=list
</pre>
</pre>
Danach steht im Puffer "list":
Danach steht im Puffer "list":
Zeile 320: Zeile 173:
<pre>animal %number%: %value%
<pre>animal %number%: %value%
</pre>
</pre>
Kommando:
* Kommando: <code>duplicate count=2 offset=1 Values=",cat,dog"</code>
<pre>duplicate count=2 offset=1 Values=",cat,dog"
</pre>


Danach steht im Puffer "output":
Danach steht im Puffer "output":
Zeile 332: Zeile 183:
<pre>animal %value0% named %value1% comes from %value2%.
<pre>animal %value0% named %value1% comes from %value2%.
</pre>
</pre>
Kommando:
* Kommando: <code>duplicate count=2 ListValues=";,cat,dog;,Mia,Harro;,London,Rome"</code>
<pre>duplicate count=2 ListValues=";,cat,dog;,Mia,Harro;,London,Rome"
</pre>


'''Hinweis:''' die Liste der Listen benutzt den Separator ";", die Textlisten den Separator ",".
'''Hinweis:''' die Liste der Listen benutzt den Separator ";", die Textlisten den Separator ",".
Zeile 341: Zeile 190:
<pre>animal cat named Mia comes from London.
<pre>animal cat named Mia comes from London.
animal dog named Harro comes from Rome.
animal dog named Harro comes from Rome.
</pre>
== Execute ==
Ausführen von Kommandos in einem Puffer.
=== Parameter ===
{| class="wikitable"
! Name
! Typ
! Beschreibung
! Beispiel
|-
| '''input'''
| Puffername
| Pro Zeile steht hier ein Kommando. Diese werden der Reihe nach ausgeführt.
| execute input=script
|}
=== Beispiel ===
Im Puffer "script" steht:
<pre>copy text=i~"%index%: Id: id%number% Name: %char%%char%%char%~n" output=template
duplicate input=template count=3 offset=1 baseChar=A
</pre>
Kommando:
<pre>execute input=script
</pre>
Danach steht in Puffer "output":
<pre>0: Id: id1 Name: AAA
1: Id: id2 Name: BBB
2: Id: id3 Name: CCC
</pre>
</pre>


Zeile 379: Zeile 197:
=== Parameter ===
=== Parameter ===


{| class="wikitable"
* '''append''': Das Ergebnis wird an das Ziel angehängt.
! Name
* '''end''': Es werden nur Zeilen untersucht, die vor einer Zeile stehen, die auf diesen regulären Ausdruck passt.
! Typ
* '''filter''': Passt eine Zeile auf diesen regulärer Ausdruck, wird sie ins Ziel übernommen.
! Beschreibung
* '''Filters''': Eine Liste von regulären Ausdrücken: Passte eine auf eine Zeile, wird diese ins Ziel übernommen.
! Beispiel
* '''input''': Puffer mit dem Inhalt, der gefiltert wird. Voreinstellung: input
|-
* '''meta''': Delimiter der Platzhalter in '''template''' oder '''Templates'''. Voreinstellung: '%'
| '''append'''
* '''output''': Puffer, in den die gefilterten Zeilen landen. Voreinstellung: output
|boolean
* '''repeat''': Ist diese Zahl größer 1, wird der Bereich '''start''' und '''end''' entsprechend oft gesucht. 0:  beliebig oft suchen. Nur sinnvoll, wenn sowohl '''start''' als auch '''end''' definiert sind. Voreinstellung: 1
| das Ergebnis wird im Zielpuffer angehängt
* '''start''': Es werden nur Zeilen untersucht, die hinter einer Zeile stehen, die auf diesen regulären Ausdruck passt.
| app
* '''template''': Für jeden Treffer wird diese Vorlage ausgegeben, nachdem dort die Platzhalter ersetzt wurden.
|-
* '''Templates''': Es werden nur Zeilen untersucht, die hinter einer Zeile stehen, die auf diesen regulären Ausdruck passt.
| '''end'''
| regulärer Ausdruck
| Es werden nur Zeilen untersucht, die vor einer Zeile stehen, die auf diesen regulären Ausdruck passt.
| end="</address>"
|-
| '''filter'''
| regulärer Ausdruck
| Passt eine Zeile auf diesen regulärer Ausdruck, wird sie ins Ziel übernommen.
| filter=/2021\.\d+.\d+/
|-
| '''Filters'''
| stringList
| Eine Liste von regulären Ausdrücken: Passte eine auf eine Zeile, wird diese ins Ziel übernommen. Auto-Separator.
| Filters=";/Hello /;/[hH]i /"
|-
| '''input'''
| Puffername
| Der Text aus diesem Puffer wird vervielfacht. Voreinstellung: input
| input=data
|-
| '''meta'''
| character
| Delimiter für die Platzhalter innerhalb von '''input'''. Voreinstellung: %
| meta=%
|-
| '''output'''
| Puffername
| das Ergebnis wird in diesen Puffer geschrieben. Voreinstellung: output
| output=result
|-
| '''repeat'''
| int
| Ist diese Zahl größer 1, wird der Bereich '''start''' und '''end''' entsprechend oft gesucht. 0:  beliebig oft suchen.  
Nur sinnvoll, wenn sowohl '''start''' und '''end''' definiert sind. Voreinstellung: 1
| repeat=0
|-
| '''start'''
| regulärer Ausdruck
| Es werden nur Zeilen untersucht, die hinter einer Zeile stehen, die auf diesen regulären Ausdruck passt.
| start=/<address>/
|-
| '''template'''
| string
| Für jeden Treffer wird diese Vorlage ausgegeben, nachdem dort die Platzhalter ersetzt wurden.
Wird kein '''template''' angegeben, wird die ganze Zeile mit dem Treffer ausgegeben. Kann interpolierten Text enthalten.
| template=i~"Name: %1%~n"
|-
| '''Templates'''
| stringList
| Das Analogon zu '''template''', wenn '''Filters''' statt '''filter''' angegeben wurde.
Der erste Eintrag in 'Templates' ist dem ersten Eintrag in '''Filters''' zugeordnet, usw.
Wird kein '''Templates''' angegeben, wird die ganze Zeile mit dem Treffer ausgegeben. Kann interpolierten Text enthalten.
| Templates=i~";Name: %1%~n;Id: %1%~n"
|}
 
'''Hinweis''': Von den Parametern '''filter''' und '''Filters''' muss genau einer angegeben werden, also nicht keiner
'''Hinweis''': Von den Parametern '''filter''' und '''Filters''' muss genau einer angegeben werden, also nicht keiner
und nicht beide.
und nicht beide.
Zeile 460: Zeile 223:
'''Hinweis:''' Die Delimiter "%" der Platzhalter kann über den Parameter '''meta''' geändert werden.
'''Hinweis:''' Die Delimiter "%" der Platzhalter kann über den Parameter '''meta''' geändert werden.


=== Beispiele ===
=== Beispiel ===


Gilt für alle Beispiele: In Puffer input steht:
Gilt für alle Beispiele: In Puffer input steht:
Zeile 482: Zeile 245:
</staff>
</staff>
</pre>
</pre>
Kommando:
* Kommando <code>filter fi=/name/</code>
<pre>filter fi=/name/
</pre>
In Puffer output steht:
In Puffer output steht:
<pre>    <name>Easy Rider</name>
<pre>    <name>Easy Rider</name>
Zeile 491: Zeile 252:
     <name>Charly</name>
     <name>Charly</name>
</pre>
</pre>
Kommando:
* Kommando <code>filter start=/<person/ end=</person/ fi=/name/ repeat=2</code>
<pre>filter start=/<person/ end=!</person! fi=/name/ repeat=2
</pre>
In Puffer output steht:
In Puffer output steht:
<pre>    <name>Adam</name>
<pre>    <name>Adam</name>
     <name>Berta</name>
     <name>Berta</name>
</pre>
</pre>
Kommando:
* Kommando <code>filter start=/<person/ end=</person/ fi=/<(name|id)>(.*?)</ repeat=2 template="%group1%: %group2%</code>
<pre>filter start=/<person/ end=!</person! fi=/<(name|id)>(.*?)</ repeat=2 template="%group1%: %group2%
</pre>
In Puffer output steht:
In Puffer output steht:
<pre>id: 1
<pre>id: 1
Zeile 507: Zeile 264:
name Berta
name Berta
</pre>
</pre>
Kommando:
* Kommando <code>filter start=/<person/ end=</person/ Filters=";/<name/;/<id" repeat=2</code>
<pre>filter start=/<person/ end=!</person! Filters=";<name;<id" repeat=2
</pre>
In Puffer output:
<pre>    <id>1</id>     
<pre>    <id>1</id>     
     <name>Adam</name>
     <name>Adam</name>
Zeile 516: Zeile 270:
     <name>Berta</name>
     <name>Berta</name>
</pre>
</pre>
Kommando:
* Kommando <code>filter start=/<person/ end=</person/ Filters=";/<(name)>(.?*)</;/<id>(.?*)</" repeat=2 Templates=";%1%: %2%;no: %1%</code>
<pre>filter start=/<person/ end=!</person! Filters=";<(name)>(.?*)<;<id>(.?*)<" repeat=2 Templates=";%1%: %2%;no: %1%"
</pre>
In Puffer output:
<pre>no: 1
<pre>no: 1
name: Adam
name: Adam
Zeile 532: Zeile 283:


=== Parameter ===
=== Parameter ===
 
      'input': paramBufferName,
{| class="wikitable"
      'output': paramBufferName,
! Name
      'meta': paramMeta,
! Typ
      'regexpr': paramRegExpr,
! Beschreibung
      'value': paramValue,
! Beispiel
      'with': paramWith,
|-
      'what': paramWhat,
| '''append'''
|boolean
| das Ergebnis wird im Zielpuffer angehängt
| app
|-
| '''input'''
| Puffername
| Der Text aus diesem Puffer wird untersucht. Voreinstellung: input
| input=data
|-
| '''output'''
| Puffername
| das Ergebnis wird in diesen Puffer geschrieben. Voreinstellung: output
| output=result
|-
| '''meta'''
| character
| Delimiter für die Platzhalter innerhalb von '''input'''. Voreinstellung: %
| meta=%
|-
| '''regexpr'''
| regulärer Ausdruck
| Dieser reguläre Ausdruck wird gesucht.
| regexpr=/name\s+([A-Z]\w*)/
|-
| '''with'''
| string
| Ersatztext. Kann Bezüge zum Suchtext enthalten, wenn '''regexpr''' verwendet wird.
| with=i~"Name: %group1%~n"
|-
| '''what'''
| string
| Ein Suchmuster ohne Metazeichen ("reiner Text"). Alternative zu '''regexpr'''.
| what="Hello "
|}


== show ==
== show ==
Zeile 580: Zeile 296:
=== Parameter ===
=== Parameter ===
        
        
{| class="wikitable"
* '''output''': In diesen Puffer wird die Info ausgegeben. Voreinstellung: output
! Name
* '''what''': Spezifiziert, was ausgegeben werden soll:
! Typ
** "buffers": Listet die Namen der Puffer aus, einen je Ausgabezeile
! Beschreibung
! Beispiel
|-
| '''append'''
| boolean
| Das Ergebnis wird im Zielpuffer angehängt.
| append
|-
| '''output'''
| Puffername
| das Ergebnis wird in diesen Puffer geschrieben. Voreinstellung: output
| output=result
|-
| '''what'''
| string ohne Delimiter
| Spezifiziert, was ausgegeben werden soll. Möglich sind: buffers Voreinstellung: buffers
| what=buffers
|}


=== Beispiel ===
=== Beispiel ===
Kommando:
* Kommando <code>show what=buffers</code>
<pre>show what=buffers
</pre>
Danach steht im Puffer "output":
Danach steht im Puffer "output":
<pre>examples
<pre>examples
Zeile 617: Zeile 313:


=== Parameter ===
=== Parameter ===
{| class="wikitable"
     
! Name
* '''a''': Name des ersten Puffers
! Typ
* '''b''': Name des zweiten Puffers
! Beschreibung
! Beispiel
|-
| '''a'''
| Puffername
| Erster Tauschpuffer.
| a=result
|-
| '''b'''
| Puffername
| Zweiter Tauschpuffer.
| b=input
|}
Ist kein Parameter angegeben, wird Puffer input und output vertauscht.
Ist kein Parameter angegeben, wird Puffer input und output vertauscht.


Bitte kopiere keine Webseiten, die nicht deine eigenen sind, benutze keine urheberrechtlich geschützten Werke ohne Erlaubnis des Urhebers!
Du gibst uns hiermit deine Zusage, dass du den Text selbst verfasst hast, dass der Text Allgemeingut (public domain) ist, oder dass der Urheber seine Zustimmung gegeben hat. Falls dieser Text bereits woanders veröffentlicht wurde, weise bitte auf der Diskussionsseite darauf hin. Bitte beachte, dass alle Info-Theke-Beiträge automatisch unter der „Gemeinfreiheit“ stehen (siehe Info-Theke:Urheberrechte für Einzelheiten). Falls du nicht möchtest, dass deine Arbeit hier von anderen verändert und verbreitet wird, dann klicke nicht auf „Seite speichern“.

Abbrechen Bearbeitungshilfe (wird in einem neuen Fenster geöffnet)