Changes between Version 20 and Version 21 of skripte-als-webservice


Ignore:
Timestamp:
Aug 9, 2011, 12:34:07 PM (13 years ago)
Author:
Wolfgang Schmidle
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • skripte-als-webservice

    v20 v21  
    1010Im Webservice sollen die Skripte ohne Expertenwissen verwendbar sein.
    1111
    12 == Input und Output
     12== Schnittstelle zwischen Skripten und Webservice
     13
     14=== Input und Output
    1315
    1416Input der Skripte ist eine Datei oder STDIN. Output geht nach STDOUT bzw. STDERR (bei Fehlern) für textverändernde Skripte und STDERR für informierende Skripte.
     
    1618Falls zusammenfassende Skripte, die intern eine Unix-pipe verwenden, nicht direkt in einen Webservice übertragbar sind, brauchen wir einen Mechanismus, der Unix-Pipes nachbildet.
    1719
    18 == Parameter-Typen
     20=== Parameter-Typen
    1921
    2022Die Skript-Parameter sollen direkt auf den Webservice abbildbar sein. Parameter-Typen:
     
    2527 * einzelne Regelergänzungen wie --addWordlistEntry="opꝫ = opportet", --removeWordlistEntry="opꝫ" ? (eventuell ersetzbar durch eine kurze zusätzliche Datei)
    2628 * Änderungen von Zeichenlisten, zum Beispiel --addWordseparator="/", --removeWordseparator="/" ? Ein vergleichbarer Parameter könnte auch im Anzeigesystem verwendbar sein, siehe [https://it-dev.mpiwg-berlin.mpg.de/tracs/mpdl-project-software/ticket/176 #176].
     29
     30== Zusätzlich im Webservice
    2731 
    28  == Interaktives Arbeiten
    29  
    30 Zusätzliche Features in den webservices:
     32Nachbilden von Texteditor-Funktionen:
    3133* zufrieden? anwenden oder nicht
    32 * interaktives Arbeiten: zum Beispiel minimale Interaktivität: diff anzeigen, einzeln durchgehen.
    33 * Mechanismus, dass sich das System die nachträglichen Korrekturen allgemein merkt: Benutzer kann weitere Liste anlegen mit Positiv-Formen und Negativ-Formen (d.h. "nein, diese Form soll nicht verändert werden")
    34 * Service für PND, zusätzlich zu unserer eigenen Liste?
    3534* Ausschnitt bearbeiten wie beim Textfilter nachbilden
    3635
     36Interaktives Arbeiten:
     37* zum Beispiel minimale Interaktivität: diff anzeigen, einzeln durchgehen.
     38* Mechanismus, dass sich das System die nachträglichen Korrekturen allgemein merkt: Benutzer kann weitere Liste anlegen mit Positiv-Formen und Negativ-Formen (d.h. "nein, diese Form soll nicht verändert werden")
    3739
    38 == BBEdit 10.0
     40Sonstiges:
     41* Service für PND, zusätzlich zu unserer eigenen Liste?
     42
     43== Anpassungen in den Skripten
     44
     45=== BBEdit 10.0
    3946
    4047In BBEdit 10.0 gibt es eine Änderung für Textfilter: der input ist nicht mehr eine temporäre Datei, sondern kommt via STDIN. Konkret hat das wenig Auswirkungen für die Programmierung der Skripte.
     
    4653BBedit 10.0 ist immer noch kein reines Cocoa, aber sie haben sich viel Mühe gegeben, dass man das praktisch nicht mehr merkt.
    4754
    48 == Getopt
     55=== Getopt
    4956
    5057Ich verwende jetzt das Perl-Modul [http://perldoc.perl.org/Getopt/Long.html Getopt::Long] für das Einlesen der Optionen (und [http://perldoc.perl.org/Pod/Usage.html Pod::Usage] für die Dokumentation der Optionen). Dadurch ergibt sich recht natürlich folgendes Format, das auch für Textfilter funktioniert:
     
    8188Error conditions: Wenn ein Skript nach STDERR schreibt, wird die Verarbeitung des Skripts oder der pipe abgebrochen. Falls nötig, kann ich in die Fehlermeldungen auch noch Fehler-Codes hineinschreiben.
    8289
    83 == Wo nach Optionen gesucht wird
     90=== Wo nach Optionen gesucht wird
    8491
    8592Das Skript versucht, Optionen an folgenden Stellen zu finden:
     
    99106Die Dateien `reg-wordlist-lat-alvarus.txt` etc. würde man dann wohl nicht mehr in `trunk/texts/aux`, sondern in `Filter_parameters` haben.
    100107
    101 == Unterschiedliche Parameter-Formate
     108=== Unterschiedliche Parameter-Formate
    102109
    103110Der Parameter "wordlist" heißt "reg.wordlist" in <parameters>, etc. Wenn man das nicht will, muss man auf namespaces verzichten und hoffen, dass die Skript-Parameter-Namen sich nicht beißen. Und es gibt (wenige) Parameter, die zu mehr als einem Skript gehören. Unterelemente von <parameters> finde ich übertrieben. Oder <parameters skript="Filter_insert-reg">, etc.? Dann kann man die namespaces weglassen.
     
    107114Vorschlag also: <parameters> kann mehrfach verwendet werden, mit obligatorischem @script. Darin das gleiche Optionen-Format wie auf der Commandline, einlesen mit `GetOptionsFromString`.
    108115
    109 == Commandline versus Textfilter
     116=== Commandline versus Textfilter
    110117
    111118Ob das Skript als Textfilter als Textfilter aufgerufen wird, erkennt es daran, dass die runtime environment variable $ENV{'BB_DOC_NAME'} existiert. Das ist BBEdit-spezifisch. Für Textwrangler oder andere Editoren wäre es anders.