Project: Raw2Ent ARexx : Raw2Ent.rexx Version: 1.4.1 (14.07.96) Program: Raw2Ent Version: 1.5 (10.11.96) Author : Tamio Patrick Honma Files : CWISENV Raw2Ent Raw2Ent.doc Raw2Ent.rexx Raw2Ent.rexx.old INHALT: 0. VORWORT 1. EINFÜHRUNG 1.1. SYSTEMVORAUSSETZUNG 2. GEBRAUCH 2.1. Raw2Ent VER: 1.5 (10.11.96) 2.2. Raw2Ent.rexx VER: 1.4.1 (14.07.96) 2.3. CWISENV 2.4. ARGUMENT-PRIORITÄT 3. EINSCHRÄNKUNGEN 4. INSTALLATION 5. BEISPIELE 6. TSCHÜSS! 7. LETZTER KOMMENTAR 8. FEHLERMELDUNGEN 9. GESCHICHTE 0. VORWORT Diese Anleitung wurde vom Englischen ins Deutsche übersetzt. Umständliche Formulierungen sind bitte zu übersehen. Danke. 1. EINFÜHRUNG Raw2Ent kovertiert 8-Bit-breiten ASCII-Text in 7-Bit-breiten ASCII-Text mit "Entity-Codes" und umgekehrt. Das ASCII-Format ist ein standardisiertes Format zum Informationsaustausch, aber es ist nur 7-Bit-breit definiert, was bedeutet, daß 128 Kodierungen definiert sind. Ein Byte besteht aus acht Bits und kann 256 verschiedene Bit-Kombinationen repräsentieren. Deswegen können die letzten 128 Kodierungen von jedem OS frei definiert werden. Das Problem ist, daß Akzent-Buchstaben und andere spezielle Zeichen nicht standardisiert sind, weil sie (wo wohl?) im freien Bereich des ASCII-Formates von den OS-Entwicklern definiert wurden. Das Ziel der "World-Wide-Web"-Entwickler war, daß es auf jedem wichtigen Betriebssystem ge-/benutzt werden kann. So war es klar, daß der auf ASCII-basierte HTML-Quelltext Zeichen im standardisierten Sieben-Bit-Bereich vom ASCII-Format enthalten muß. Um Akzent-Buchstaben oder spezielle Zeichen im sieben-Bit-Code repräsentieren zu können, mußte etwas erfunden werden. Und das war der "Entity-Code" - eine Art "Escape-Code". Ein "Entity-Code" besteht aus einem einführenden "&" und einem ";" am Ende. Zwischen diesen Symbolen befindet sich der Name des Zeichens, den der "Browser" interpretieren kann. Es ist eine sehr schwierige und dumme Aufgabe den ASCII-Text von Hand zu konvertieren. Also benutze einfach Raw2Ent! Raw2Ent produziert echten "7-Bit-ASCII-Code". Alle druckbaren Amiga-Zeichen im 8-Bit-Bereich werden in "Entity-Codes" umgewandelt, ohne eine einzige Ausnahme. Der Gebrauch von Namen anstelle von Code-Nummern wird es Menschen einfacher machen, die "Entity-Codes" zu lesen. 1.1. SYSTEMVORAUSSETZUNG - AmigaOS 2.0 oder größer - optional: ARexx 2. GEBRAUCH Raw2Ent besteht aus drei Teilen: einem Assembler-Programm, einem ARexx-Script und einer Batch-Datei. Wenn Du einen Text bloß einmal konvertieren willst, brauchst Du das Assembler-Programm. Falls Du einen Text mehr als einmal konvertieren willst, weil Du an einem Projekt arbeitest, wie eine Web-Seite mit aktuellen Informationen, ist das ARexx-Script vielleicht nützlich. 2.1. Raw2Ent VER: 1.5 (10.11.96) Argumente: FROM/A - Die Quelldatei (acht Bit breit) TO/A - Die Zieldatei (mit "Entity-Codes") [Pfad ohne Dateinamen ist nicht akzeptiert] TAG/S - aktiviert den TAG-Modus HTML/S - aktiviert den HTML-Mode ENT/S - voreingestellter Modus UML=NOENT/S - entfernt 8-Bit-Zeichen mit Zeichen und Worten CODE/S - konvertiert alle "Entity-Codes" mit Code-Nummern (ausgenommen den vier "Spezial-Entities") TOTALCODE/S - konvertiert ALLE Zeichen mit Entity-Code-Nummern SMART/S - aktiviert den SMART-Modus INVERSE=ENT2RAW/S - kehrt die Funktion von Raw2Ent in Ent2Raw um Modi: >TAG-Modus< wird die vier Zeichen: & < > " nicht konvertieren. Dies ist für ASCII-Text brauchbar, der schon "Entity-Codes" oder "HTML-Tags" enthält, die eingeführt und beendet sind mit "<" und ">" und welche Anführungszeichen enthalten können. Das Zeichen "&" leitet gewöhnlich die "Entity-Codes" ein. Wenn Du den TAG-Modus benutzt, wird die Quelldatei nicht ein zweites Mal auf eine falsche Weise konvertiert, aber unberührte "Spezial-Zeichen" werden konvertiert. Desshalb solltest Du diesen Modus verwenden, wannimmer Du einen Text zum zweiten Mal umwandelst. >HTML-Modus< wird einfach die Quelldatei in die Zieldatei kopieren. Diese Funktion ist implementiert, um das Program in Script-Dateien einsetzen zu können. (siehe z.B. Raw2Ent.rexx) >ENT-Modus< ist der voreingestellte Modus und wandelt alle bekannten Zeichen in ihre "Entity-Codes" um. >NOENT-Modus< oder >UML-Modus< ist ein Modus, welcher jedes 8-Bit-Zeichen durch Zeichen im 7-Bit-Bereich ersetzt, ohne "Character-Entity-Codes" zu verwenden. Z.B.: "ü" wird in "ue" übersetzt und "£" wird in "pound" übersetzt und "©" wird in "(C)" übersetzt usw.. Es ist empfohlen dieses Argument in Verbindung mit dem "TAG"-Argument zu gebrauchen. Optional kannst Du >UML< (wie: Umlaute) benutzen, welches ein Synonym zu >NOENT< ist. [Dieser Modus wurde inspiriert durch Andreas Bais] >CODE-Modus< wird alle "Entity-Codes" nicht mit "Entity-Namen" konvertieren, aber mit den "Entity-Code-Zahlen". Dies mag brauchbar sein, wenn ein "Browser" nicht alle "Entity-Namen" unterstützt, jedoch die Zahlen. Merke: Auf der einen Seite sind die Code-Zahlen für Menschen schlecht zu lesen, doch auf der anderen Seite ist die Zieldatei vielleicht kürzer. [Die kleinsten Dateien werden wohl im "TAG NOENT"-Modus erzeugt.] >TOTALCODE-Modus< oder >TOTCODE-Modus< wird JEDES Zeichen mit seiner Code-Zahl umwandeln. Der einzigste Grund für diesen Modus ist es den Menschen das Lesen der Textdatei schwer zu machen. Dieser Text wird nur von einem "HTML-Browser" lesbar angezeigt. Dieser Modus wird sicher die größte Zieldatei erzeugen! >SMART-Modus< ist eine Kombination aus dem >ENT<-Modus und dem >TAG<-Modus. HTML-Dateien z.B. werden ohne Zerstörung von HTML-Tags und "Character-Entity-Codes" konvertiert - wie im >TAG<-Modus. Der Unterschied ist, daß die Zeichen: < > & " werden konvertiert, wenn Raw2Ent "denkt", daß diese Zeichen keine Elemente von den "Character-Entity-Codes" oder HTML-Tags sind. Dies funktioniert am Besten, wenn die HTML-Datei "guten" Code enthält. Ich kann keine korrekte Interpreation von Raw2Ent garantieren, aber ich denke es funktioniert in 95% von HTML-Dateien ohne Fehler. >INVERSE-Mode< or >ENT2RAW-Mode< konvertiert alle "Character-Entity-Codes" (Namen und Nummern) in das Amiga-ASCII - dem Latin-1-Standard. So kannst Du Raw2Ent als ein Ent2Raw benutzen. Wenn Du den >TAG<-Modus setzt, wird dieser Modus die Zeichen nicht berühren: > < & und ". Rückgabewerte: $RC=0 (OK) -> alles in Ordnung! $RC=5 (WARN) -> falscher Gebrauch $RC=10 (ERROR) -> Fehler (Speicher) $RC=20 (FAIL) -> Fehler (Ein-/Ausgabe) 2.2. Raw2Ent.rexx VER: 1.4.1 (14.07.96) Argumente: FROM/A - Die Quelldatei (acht Bit breit) TO/A - Die Zieldatei (mit "Entity-Codes") [Pfad ohne Dateinamen ist nicht akzeptiert] TAG/S - aktiviert den TAG-Modus HTML/S - aktiviert den HTML-Mode ENT/S - voreingestellter Modus Modi: siehe Raw2Ent-Gebrauch (2.1.) Raw2Ent.rexx behandelt: - Zielpfad ohne Dateinamen - Suffix-Handhabung (Zieldatei hat das Suffix ".ent") - Fortschrittsanzeige - Umgebungsvariablen für Automation ohne Fehler 2.3. CWISENV Benutze CWISENV um die Umgebungsvariablen für eine spezifische Datei zu setzen, wenn Du nicht die Raw2Ent.rexx-Argumente gebrauchen willst - z.B. in Batch-Dateien. Argumente: FILENAME/A - ist der Dateinamen für die Eingabedatei für Raw2Ent. Merke: Benutze keine Pfadnamen! Du mußt den "cd"-Befehl mit dem Pfadnamen benutzen, wo deine Textdatei (Eingabe) gefunden werden kann. MODE/A - wählt den Modus aus. Du kannst wählen: ENT, TAG, HTML Modi: siehe Raw2Ent-Gebrauch (2.1.) 2.4. ARGUMENT-PRIORITÄT höchste Priorität FROM/A - Muß benutzt werden! ^ TO/A - Muß benutzt werden! | | INVERSE/S - macht den Rest der Schalter unbrauchbar | außer: "TAG" | HTML/S - macht alle anderen Schalter unbrauchbar | TOTALCODE/S - macht den Rest der Schalter unbrauchbar | CODE/S - macht die Schalter unbrauchbar: "NOENT" | und "ENT" | NOENT/S - macht den Schalter unbrauchbar: "ENT" | und "SMART" | TAG/S - macht den Schalter unbrauchbar: "ENT" | und "SMART" v SMART/S - macht den Schalter unbrauchbar: "ENT" niedrigste Priorität ENT/S - berührt keine anderen Schalter 3. EINSCHRÄNKUNGEN - Ein Text kann nur in einem Stück konvertiert werden. Keine Markierung möglich. - Die Umgebungsvariablen besitzen keine Information zu Pfaden. So z.B. haben alle "index.html"-Dateien die selbe Variable. Die Variablen werden ignoriert, wenn Du selbst den "TAG"- oder "HTML"- oder "ENT"-Schalter benutzt. Bitte merke, daß nur das ARexx-Script Variablen unterstützt - NICHT das Assembler-Programm! - Keine Konvertierungs-Fortschritts-Anzeige implementiert. Wenn Du das haben willst, kannst Du das alte ARexx-Script Raw2Ent.rexx v1.3 benutzen. - Das alte ARexx-Script [1.3] ist nicht kompatibel zum Assembler-Programm. - Raw2Ent kann nicht mit "Break"-Signalen gestoppt werden. - Raw2Ent unterstützt nur das Amiga-8-Bit-ASCII-Format [ISO-8859-1], doch das ist in Ordnung, weil es viele Möglichkeiten gibt Texte vom PC, Mac, Unix oder anderen Systemen zu konvertieren: - Benutze das CrossDOS-Commodity. (Dies ist der beste Weg, weil jeder AmigaOS 2.1+-Benutzer dieses Programm im "Tools/Commodities"-Verzeichnis hat!) - Es gibt viele Konverter im AmiNet oder anderen Freeware-Quellen. Z.B.: - "CharConv" von Johan Billing [v1.6 von 1994] - Wenn Du einen guten HTML zu TXT Konverter suchst, dann versuche dieses: - "HTTX" von Gabriele Favrin [v1.0 von 1996] 4. INSTALLATION 4.1. Kopiere "Raw2Ent" und "Raw2Ent.rexx" in das selbe Verzeichnis. 4.2. Ändere den Pfadnamen im "Raw2Ent.rexx"-Script. 4.3. "makedir ENVARC:cwis/" 5. BEISPIELE 5.1. "Raw2Ent Text.html Text.ent TAG" Konvertiert die Datei "Text.html" in die Datei "Text.ent" mit Hilfe von "Entity-Codes" ohne HTML-Tags und schon konvertierte "Entity-Codes" zu zerstören. 5.2. "Raw2Ent Text Text.ent" oder "Raw2Ent Text Text.ent ENT" Konvertiert die Datei "Text" in "Text.ent" ohne Rücksicht auf HTML-Tags oder schon konvertierten "Entity-Codes". 5.3. "Raw2Ent Text.html Text.ent HTML" Kopiert bloß die Datei "Text.html" in "Text.ent". 5.4. "Raw2Ent Text.html Text.ent TAG CODE" Dasselbe wie das Beispiel 5.1., aber alle "Character-Entity-Codes" sind durch "Code-Nummern" und keine "Code-Namen" repräsentiert. 5.5. "Raw2Ent Text Text.ent CODE" Dasselbe wie Beispiel 5.2., aber alle "Character-Entity-Codes" sind mit "Code-Nummern" repräsentiert, ausgenommen den vier Zeichen: < > " ?, welche noch immer mit ihren "Character-Entity-Namen" repräsentiert werden. 5.6. "Raw2Ent Text Text.uml TAG NOENT" oder "Raw2Ent Text Text.uml TAG UML" Dies wird rohen Text in sieben-bit-breiten Text ohne "Character- Entity-Codes" konvertiert. Raw2Ent wird den Text mit alternativen Zeichen oder Worten oder Abkürzungen konvertieren. Die Zieldatei in diesem Beispiel wird keinen einzigen "Character-Entity-Code" enthalten, weil das >TAG<- Argument benutzt wird. 5.7. "Raw2Ent Text Text.code TOTALCODE" Die Datei "Text.code" wird nur "Code-Nummer-Entities" enthalten, ohne jegliche Ausnahme. Die Zieldatei wird sehr lang sein! Merke: Der TAG-Modus wird ignoriert, wenn dieser Modus verwendet wird. Deshalb wirst Du nicht fähig sein diesen Modus für HTML-Dateien zu gebrauchen, aber Du kannst diese Datei nur mit einem HTML-Browser lesen. 5.8. "Raw2Ent Text.ent Text INVERSE" oder "Raw2Ent Text.ent Text ENT2RAW" Dies wird die Date "Text.ent" in die Amiga-ASCII-Datei "Text" umwandeln. 5.9. "Raw2Ent Text.ent Text TAG INVERSE" oder "Raw2Ent Text.ent Text TAG ENT2RAW" Dies ist dasselbe wie 5.8.. Der einzige Unterschied besteht darin, daß die Codes: > < & und "e; nicht konvertiert werden. 6. TSCHÜSS! ---------------------------------------------------------------------------- DER AUTOR IST NICHT VERANTWORTLICH FÜR JEGLICHEN VERLUSST VON DATEN ODER PANNEN! BENUTZE DIESES FREEWARE-PROGRAMM MIT EIGENEM RISIKO. ---------------------------------------------------------------------------- Sende Kommentare an: Tamio Patrick Honma eMail: honma@thepentagon.com WWW: http://www.netforward.com/thepentagon/?honma P.S. Dieses Programm wurde für das CWIS-Script-System auf Amiga und PC gemacht. Das CWIS der Heinrich-Heine-Universität Düsseldorf kann hier gefunden werden: http://www.phil-fak.uni-duesseldorf.de/cwis/ 7. LETZTER KOMMENTAR: Hey!? Was willst Du!? Ich bin nur ein Soziologie-, Pädagogik- und Informationswissenschaftsstudent und kein Informatiker! Sende mir einfach Deine Fehlermeldungen, ... ;) ---> Raw2Ent-Assembler-Program <--- 8. FEHLERMELDUNGEN: gemeldet von Fehler korrigierte Version Joakim Andersson Entity-Codes Å und å fehlen 1.0.1 (04.09.96) Tamio Honma Letztes Byte in der Zieldatei wurde gelöscht 1.1 (05.09.96) Tamio Honma Version-String ohne Leerzeichen 1.1.1 (06.09.96) Marcus Beranek Entity-Codes zu ÿ,ï,Ï,æ,Æ,ø,Ø,ë,Ë fehlen 1.1.3 (06.09.96) Tamio Honma Fehler im Circumflex-Akzent 1.1.4 (08.09.96) 9. GESCHICHTE: Version Funktion Datum 1.0 Ersterscheinung 13.07.06 (*) 1.1 Geschwindigkeit um die 20 (!!!) mal gesteigert 05.09.96 Version-String hinzugefügt 1.1.2 Optimierter Code (Geschwindigkeit gesteigert) 06.09.96 Return-Codes hinzugefügt (siehe Abschnitt 2.1 für die Return-Codes) 1.1.3 HTML-Tags zu °,¹,²,³ hinzugefügt (improvisiert) 06.09.96 1.1.4 Alle Entity-Codes erhältlich im Amiga-Zeichensatz 08.09.96 (*)14 eingefügt! Entity-Codes beziehen sich auf den HTML 3.2 Standard Alle erhältlichen Namen eingefügt Codes ohne Namen repräsentiert durch Code-Nummern improvisierte HTML-Tags entfernt 1.1.5 Wechselte nur die Code-Nummer mit Code-Namen "§" 14.10.96 1.1.6 wechselte alle Code-Nummern in Entity-Namen (komplett) 30.10.96 1.2 CODE-Modus hinzugefügt 01.11.96 (*) 1.3 NOENT-Modus und TOTALCODE-Modus hinzugefügt 03.11.96 (*) Version-String wird im Gebrauchstext angezeigt 1.4 SMART-Modus hinzugefügt 06-07.11.96 (*) 1.5 INVERSE-Modus für Namen und Codes hinzugefügt (Ent2Raw)10.11.96 (*) HELP-Text hinzugefügt (*) = veröffentlicht im Aminet Nummer repräsentiert die Nummer der Aminet-CD-ROM