nocrlf
Description of the page content
ANS Forth program to remove all ends of line from a HTML file and put them after every tag.
I wrote this little tool in ANS Forth to remove all ends of line from a HTML file and put them after every tag, in order to edit it manually.
The words and comments are in Spanish but the code is trivial, so it's easy to understand. The interface words are the following:
DE
= "from", to select the original file.HACIA
= "to", to select the destination file.TRADUCE
= "translate", to do the task.CIERRA
= "close", to close both files.
Source code
\ *********************
cr .( nocrlf )
\ *********************
\ Copyright (C) 2005 Marcos Cruz (http://programandala.net)
\ Licencia/Permesilo/License: http://programanadala.net/license
\ Programa escrito en ANS Forth.
\ Programo verkita en ANS-Fortho.
\ Program written in ANS Forth.
\ Programa para quitar los finales de línea arbitrarios de un archivo HTML
\ y colocarlos detrás de cada marca, para poder editarlo.
\ 2005 04 09 Primera versión.
\ Comandos:
\ s" fichero-origen" DE
\ s" fichero-destino" HACIA
\ TRADUCE
\ CIERRA
decimal
10 constant lf-char
13 constant cr-char
variable archivo_original
variable archivo_nuevo
variable lugar
: de ( a u -- )
r/o open-file
abort" Error al abrir el archivo original"
archivo_original !
;
: hacia ( a u -- )
w/o create-file
abort" Error al abrir el archivo nuevo"
archivo_nuevo !
;
: cierra
archivo_original @ close-file
abort" Error al cerrar el archivo original"
archivo_nuevo @ close-file
abort" Error al cerrar el archivo nuevo"
;
: signo ( -- c )
lugar c@
;
: destino ( -- a 1 )
lugar 1
;
: traduce ( -- )
page
begin
destino archivo_original @ read-file
abort" Error leyendo el archivo original"
while
signo dup
lf-char = swap cr-char = or
if
bl lugar c!
then
signo emit
destino archivo_nuevo @ write-file
signo [char] > =
if
cr-char lugar c!
destino archivo_nuevo @ write-file
lf-char lugar c!
destino archivo_nuevo @ write-file
cr
then
repeat
;
.( nocrlf ok!)