Saltrød Horror Show nr. 95
Livet på Saltrød står i automasjonens tegn. Noen systemer lages fortløpende for å få ting gjort raskere, andre på å få tid til å gjøre viktige ting overhodet. En ny rutine for konvertering av ascii-tekst til hypertekst hører med i den siste gruppen. Jeg bruker den for å gjøre The Online World resources handbook om til Web-format. Slik at den som leser og søker i boken online, kan klikke på en ressursreferanse for straks å bli "satt over dit". Manuell konvertering tar for lang tid og spesielt i lys av at boken skal ut i ajourført versjon annenhver måned. Nå bare taster jeg en kommando og Web-versjonen gjør seg selv. Konverteringssystemet inneholder flere interessante tricks for kompliserte søk/erstatt-problemer, så les videre. Ønsker du først å se resultatet, kan det gjøres på Web-adressen http://home.eunet.no/~presno/index.html Systemet er for stort til å kunne beskrives i helhet. Vi skal se på utvalgte problemer og indikere løsninger. Resten får du sy sammen selv. Koding av manusJeg forkastet tanken om å lage et system som konverterte en ukodet tekstfil til hypertekst. Unødvendig komplisert. Årsaken ligger blant annet i overgangen mellom Internet-adresser og hypertekst- koder til vanlig tekst, som i dette eksemplet fra boken: The Common Market's free database service, I'M-Europe (Information Market Europe), is at URL http://www.echo.lu/. World Wide Web-bildet skulle si det samme, men i det underliggende hypertekstdokumentet skulle det stå: The Common Market's free database service, I'M-Europe (Information Market Europe), is at URL <a href="http://www.echo.lu/">http://www.echo.lu/.</a> Det siste punktumet i adressen (lu/.) angir slutten på en setning i boken og hører ikke til hypertekst-koden. I selve koden skulle det kun stå <a href= "http://www.echo.lu/">, mens punktumet skulle være med i det brukeren ser på skjermen. Da er det lettere å legge markeringskoder inn i kildeteksten for å angi begynnelse og slutt på tekstbiter som skal konverteres. I eksemplet over gjør jeg det slik: The Common Market's free database service, I'M-Europe (Information Market Europe), is at URL Ühttp://www.echo.lu/Ü Markeringstegnet er ascii nr. 220. Du får det ved å holde ALT-tasten nede og trykke 220 på ti-tastaturet (i DOS!). Jeg får det ved å trykke en makrotast. Hovedpoenget er at koden er et unikt tegn. Det vil aldri bli brukt i bokens tekst. Det kan senere fjernes med søk-og-erstatt-programmer og gjør det enklere å konvertere linjen for bruk i Web-utgaven. Senere konverteres tegnet til koden <m> for videre behandling. Her er noen andre viktige hypertekstkoder, som identifiseres med spesielle markeringskoder i min kildetekst: <h1> Angir titel i størrelsesgrad 1 (markert med Ascii 016). Bruker din tekstbehandler kontrollkoder for angivelse av fonter, bør du velge høyere tall i Ascii-tabellen til dine markeringskoder. Automatisk fra tekst til htmlSom vanlig har jeg sydd sammen et system av batchfiler og små og store hjelpeprogrammer. Systemet består av tre hoveddeler:
Om jeg har glemt hvordanSystemet startes av filen HTML.BAT. Husker jeg ikke hvordan det gjøres, taster jeg html ? Tidlig i batchfilen står kommandoen IF (%1)==(?) GOTO hjelp Lengre nede kan du ha kommandolinjene :hjelp Flere av mine batchfiler har nå en ?-parameter. Det gjør livet lettere. Taster jeg "html filnavn", kopieres kildefilen til RAM-disken som D:\INPUT.TXT og delsystem 2 startes opp. Enkeltvis behandling av linjerHos meg styres delsystem 2 av kommandofiler skrevet for ProYam, som er et kommunikasjonsprogram. Datakommunikasjon? Neida! Jeg ønsker bare å bruke programmets egenskaper. Sharewareprogrammet ZCOMM kan også brukes. Det er derfor dette jeg har bygget beskrivelsen på under. (Du kan også gjøre det med programmet i filen ENV20.EXE, eller lage en rutine i BASIC eller et annet programmeringsspråk.) I HTML.BAT startes ZCOMM med følgende kommandoer (merk at vi bruker "/"): set phones=d:/HTML.T Den første linjen sier at ZCOMM skal bruke kommandoene i filen D:\HTML.T. Den andre starter programmet. Kommandofilen HTML.T inneholder kryptiske kommandolinjer. Bruker du samme filnavn som meg, kan du kopiere dem slavisk. Merk at kommandolinjene må starte i henholdsvis kolonne en eller to som vist her: setup start: open - !tg d:input.txt les: grab s1 if !t x obey "!echo %s1>d:\string" "!d:\input.bat" goback les Linje to åpner kildefilen D:INPUT.TXT. I linje 3 henter ZCOMM den første linjen i INPUT.TXT. I linje 4 testes det på om ZCOMM har lest filen ferdig. Er filen lest ferdig, gir ZCOMM kontrollen tilbake til HTML.BAT og konverteringen er fullført. Obey-kommandoen kopierer linjen over i en arbeidsfil kalt D:\STRING. Deretter startes batchfilen D:\INPUT.BAT, som utfører selve konverteringen. Når bearbeidingen er ferdig, henter ZCOMM inn neste linje fra INPUT.TXT. Kommandoene er kryptiske, men de virker. KonverteringsjobbenNå ligger det en tekstlinje i filen D:\STRING. Første oppgave er å finne ut om den inneholder en markeringskode. Det gjøres enkelt med hjelpeprogrammet FGREP i en serie kommandoer som denne (en kommando for hver kode): FGREP -e "<m>" d:\string Anta at linjen inneholder denne teksten fra eksemplet over: (Information Market Europe), is at URL <m>http://www.echo.lu/<m> FGREP finner koden <m> i D:\string og rapporter ERRORLEVEL nr. 1 til DOS. INPUT.BAT hopper derfor til etiketten :URL, som har følgende kommandoer: CUT -f1 -d<m> d:\string>d:\string1 Hjelpeprogrammet CUT deler tekstlinjen i tre deler. Filen D:\STRING1 inneholder " (Information Market Europe), is at URL". Merk at eventuelle blanke først på linjen blir med over i D:\STRING1. Filen D:\STRING2 inneholder "http://www.echo.lu/", mens filen D:\STRING3 inneholder ".". Markeringstegnene er borte. INPUT.BAT må få vite hva slags Internet-ressurs det dreier seg om, da kodene må konverteres forskjellig. Med FGREP kan vi teste på om det er en elektronisk postadresse. Slike koder kan begynne med "<a href="mailto:". Er det en Web-adresse, skal den begynne på "<a href="http://" som over. I vårt eksempel gir følgende søkekommando positivt resultat: FGREP -e "http" d:\string La oss forutsette at det aldri er mer enn to koder pr. linje. I så fall vil INPUT.BAT vite at koden alltid ligger i D:\STRING2. Den nye tekstlinjen kan følgelig lages med denne COPY-kommandoen (alt på en linje): COPY d:\string1+mail+d:\string2+mail2+d:\string2+mail3+d:\string3 d:\string4 Kommandoen kopierer tekstfiler, vi ikke har snakket om før. Filen MAIL inneholder "<a href="", MAIL2 inneholder "">" og MAIL3 inneholder "</a>". Resultatet havner i D:\STRING4 og ser slik ut: (Information Market Europe), is at URL Vi ønsker imidlertid alt på en linje. Hjelpeprogrammet GSAR gjør jobben med kommandoen GSAR -s:013:010 -r -o d:\string4 Den ferdigkonverterte tekstlinjen ligger i D:\STRING4 og INPUT.BAT føyer den til resultatsfilen med kommandoene: FGREP -sx "?" d:\string4>>d:\resultat.htm Har du lest hit, ser du mulighetene. Min versjon av INPUT.BAT er mer omfattende. Bl.a. lar jeg rutinen hoppe over umarkerte linjer med "===" eller "---" (Titler skal markeres med koder i html-dokumenter, ikke understrekninger). Konverteringssystemet bygger på bruk av følgende verktøy: GSAR ligger i filen GSAR107.EXE (46KB, gratis), ZCOMM i ZCOMMEXE.EXE (221KB, US$40), FGREP i FGREP182.EXE (31KB, gratis) og CUT i filen CUTOUT.EXE (10KB, gratis). Mer om roboterJeg hadde tenkt å skrive mer om DOS PHANTOM Task Automator her, men så ble jeg hengt opp i Stuffkey. Dette gratissystemets funksjon er å automatisere tastaturet. Du kan gi det en kommandofil med tastetrykk og de vil automatisk bli "tastet inn" i dine brukerprogrammer. Du kan bruke tastaturet mens Stuffkey er i funksjon. Dermed kan du føye til data manuelt eller korrigere feil. Kommandofilene kan være opptil 64 Kb store. Jeg har flere anvendelser. En består i å summere utvalgte linjer fra regnskapsrapporter. Batchfilen min har bl.a. følgende innhold: Først brukes CUT (se over) for å fjerne unødvendig tekst fra arbeidsfilen. Eksempel: CUT -c54-79 d:inn>d:input.prn Summeringen gjøres med sharewareprogrammet ADDMACH. Men først må Stuffkey få instruks. Det gjøres med kommandoen: STUFFKEY {Cr} 'S' 'G' 'd:input.prn' {Cr}{Cr} 'T' Når ADDMACH startes med neste kommandolinje, trykker Stuffkey først på Enter-tasten (koden {Cr}). Det taster inn valgene S og G fra de to etterfølgende menyene, gir inputfilens navn, trykker to ganger på Enter og tilslutt "T" for å få summen av tallene. ADDMACH ligger i filen ADDMACH.EXE (29 Kb, se Datatid 6-93, s. 62) og Stuffkey ligger i STFKEY41.EXE (85 Kb). Det er forbudt å distribuere denne artikkelen - eller deler av den - i elektronisk, trykt eller kopiert form mot betaling. |