Changes between Version 20 and Version 21 of skripte-als-webservice
- Timestamp:
- Aug 9, 2011, 12:34:07 PM (13 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
skripte-als-webservice
v20 v21 10 10 Im Webservice sollen die Skripte ohne Expertenwissen verwendbar sein. 11 11 12 == Input und Output 12 == Schnittstelle zwischen Skripten und Webservice 13 14 === Input und Output 13 15 14 16 Input 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. … … 16 18 Falls zusammenfassende Skripte, die intern eine Unix-pipe verwenden, nicht direkt in einen Webservice übertragbar sind, brauchen wir einen Mechanismus, der Unix-Pipes nachbildet. 17 19 18 == Parameter-Typen20 === Parameter-Typen 19 21 20 22 Die Skript-Parameter sollen direkt auf den Webservice abbildbar sein. Parameter-Typen: … … 25 27 * einzelne Regelergänzungen wie --addWordlistEntry="opꝫ = opportet", --removeWordlistEntry="opꝫ" ? (eventuell ersetzbar durch eine kurze zusätzliche Datei) 26 28 * Ä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 27 31 28 == Interaktives Arbeiten 29 30 Zusätzliche Features in den webservices: 32 Nachbilden von Texteditor-Funktionen: 31 33 * 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?35 34 * Ausschnitt bearbeiten wie beim Textfilter nachbilden 36 35 36 Interaktives 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") 37 39 38 == BBEdit 10.0 40 Sonstiges: 41 * Service für PND, zusätzlich zu unserer eigenen Liste? 42 43 == Anpassungen in den Skripten 44 45 === BBEdit 10.0 39 46 40 47 In 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. … … 46 53 BBedit 10.0 ist immer noch kein reines Cocoa, aber sie haben sich viel Mühe gegeben, dass man das praktisch nicht mehr merkt. 47 54 48 == Getopt55 === Getopt 49 56 50 57 Ich 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: … … 81 88 Error 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. 82 89 83 == Wo nach Optionen gesucht wird90 === Wo nach Optionen gesucht wird 84 91 85 92 Das Skript versucht, Optionen an folgenden Stellen zu finden: … … 99 106 Die Dateien `reg-wordlist-lat-alvarus.txt` etc. würde man dann wohl nicht mehr in `trunk/texts/aux`, sondern in `Filter_parameters` haben. 100 107 101 == Unterschiedliche Parameter-Formate108 === Unterschiedliche Parameter-Formate 102 109 103 110 Der 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. … … 107 114 Vorschlag also: <parameters> kann mehrfach verwendet werden, mit obligatorischem @script. Darin das gleiche Optionen-Format wie auf der Commandline, einlesen mit `GetOptionsFromString`. 108 115 109 == Commandline versus Textfilter116 === Commandline versus Textfilter 110 117 111 118 Ob 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.