DEFINT A-Z DECLARE SUB CheckText (Txt$) DIM SHARED Simple, Tags, NoExtList DIM SHARED f$(1 TO 5) f$(1) = """ f$(2) = "“" f$(3) = "”" f$(4) = "„" f$(5) = """ CONST TRUE = -1 CONST FALSE = NOT TRUE InFile$ = COMMAND$ a = INSTR(InFile$, " ") IF a <> 0 THEN InFile$ = RTRIM$(LEFT$(InFile$, a)) IF INSTR(COMMAND$, "/S") <> 0 THEN Simple = TRUE b = INSTR(COMMAND$, "/V") IF b <> 0 THEN ViewOnly = TRUE FOR c = b + 2 TO LEN(COMMAND$) S$ = MID$(COMMAND$, c, 1) IF S$ = " " OR S$ = CHR$(9) THEN b = b + 1 ELSE EXIT FOR END IF NEXT c FOR c = b + 2 TO LEN(COMMAND$) S$ = MID$(COMMAND$, c, 1) IF S$ = " " OR S$ = CHR$(9) OR S$ = "/" THEN EXIT FOR Viewer$ = Viewer$ + S$ NEXT c END IF Viewer$ = LTRIM$(RTRIM$(Viewer$)) IF Viewer$ = "" THEN Viewer$ = "TYPE" b = INSTR(COMMAND$, "/L") IF b <> 0 THEN FOR c = b + 2 TO LEN(COMMAND$) S$ = MID$(COMMAND$, c, 1) IF S$ = " " OR S$ = CHR$(9) THEN b = b + 1 ELSE EXIT FOR END IF NEXT c FOR c = b + 2 TO LEN(COMMAND$) S$ = MID$(COMMAND$, c, 1) IF S$ = " " OR S$ = CHR$(9) OR S$ = "/" THEN EXIT FOR ListFile$ = ListFile$ + S$ NEXT c END IF ListFile$ = LTRIM$(RTRIM$(ListFile$)) IF ListFile$ = "" THEN ListFile$ = "HTMCNV.LST" IF RIGHT$(ListFile$, 1) = "\" THEN ListFile$ = ListFile$ + "HTMCNV.LST" IF INSTR(COMMAND$, "/G") <> 0 THEN PRINT "Generating file " + ListFile$ + " . . . "; OPEN ListFile$ FOR OUTPUT AS #1 DO READ Find$, Change$ IF Find$ = "//" THEN EXIT DO PRINT #1, CHR$(34) + Find$ + CHR$(34) + ", " + CHR$(34) + Change$ + CHR$(34) LOOP CLOSE #1 PRINT "done." END END IF IF InFile$ = "" OR INSTR(COMMAND$, "/?") <> 0 THEN PRINT PRINT "HTMCNV.EXE Limited Copyright (c) Stanislav Sokolov, 1997. Ver 1.0, FREEWARE." PRINT PRINT "Usage: HTMCNV filename[.HTM] [/S] [/V [d:\path\file]] [/L d:\path\[file]]" PRINT " HTMCNV /G [/L d:\path\[file]]" PRINT PRINT " Output file will have the same filename and the extention .TX" PRINT PRINT " filename - The input HTM file. Filename must always be placed" PRINT " first in the parameter list." PRINT " /V - View only. TX-file will be deleted after viewing. A text viewer," PRINT " Specified after /V parameter will be used. If no viewer is" PRINT " specified the program uses DOS's TYPE command." PRINT " /S - Simple (do not replace ANSI characters by ASCII characters." PRINT " Note! Letters defined in the '&....;' or '&#...;' absolute style" PRINT " will be replaced.)" PRINT " /G - Generates an ASCII file, containing all internally supported" PRINT " codes. You can then change this file (HTMCNV.LST) at your liking" PRINT " and use it with HTMCNV." PRINT " /L - Specify location and/or name of the file containing replace" PRINT " codes. The default is HTMCNV.LST." END END IF a = INSTR(InFile$, ".") IF a = 0 THEN OutFile$ = InFile$ + ".TX" InFile$ = InFile$ + ".HTM" ELSE OutFile$ = LEFT$(InFile$, a - 1) + ".TX" END IF OPEN InFile$ FOR BINARY AS #1 IF LOF(1) = 0 THEN PRINT PRINT " Input file is empty!" PRINT CLOSE #1 END END IF 'Read datafile ON ERROR GOTO InputError NoExtList = FALSE OPEN ListFile$ FOR INPUT AS #2 Tags = 0 InpErrFlag = FALSE DO UNTIL EOF(2) INPUT #2, Text$, Text1$ IF NOT InpErrFlag THEN Tags = Tags + 1 LOOP SEEK #2, 1 DIM SHARED Find$(Tags), Change$(Tags) b = 0 InpErrFlag = FALSE DO UNTIL EOF(2) IF b = Tags + 1 THEN EXIT DO INPUT #2, Find$(b), Change$(b) b = b + 1 LOOP CLOSE #2 Cont: IF NoExtList THEN PRINT "Using internal code-list." ELSE PRINT "Using external (" + ListFile$ + ") code-list." ON ERROR GOTO 0 OPEN OutFile$ FOR OUTPUT AS #2 c = CSRLIN x$ = " " DoWrite = TRUE DO UNTIL EOF(1) 'LineInput Text$ = "" DO GET #1, , x$ IF x$ = CHR$(10) THEN IF RIGHT$(Text$, 1) = CHR$(13) THEN Text$ = LEFT$(Text$, LEN(Text$) - 1) EXIT DO END IF Text$ = Text$ + x$ LOOP UNTIL EOF(1) OutText$ = "" FOR a = 1 TO LEN(Text$) b$ = MID$(Text$, a, 1) IF b$ = "<" THEN DoWrite = FALSE IF b$ = ">" THEN DoWrite = TRUE IF OutText$ = "" AND b$ = " " THEN b$ = "" IF b$ <> ">" AND DoWrite THEN OutText$ = OutText$ + b$ IF LEN(OutText$) > 73 AND (b$ = " " OR b$ = "-" OR b$ = CHR$(9)) THEN CheckText OutText$ PRINT #2, OutText$ OutText$ = "" END IF NEXT a CheckText OutText$ IF OutText$ = "" AND NOT IsEmpty THEN IsEmpty = TRUE PRINT #2, OutText$ ELSEIF OutText$ <> "" THEN IsEmpty = FALSE PRINT #2, OutText$ END IF LOCATE c, 1: PRINT STR$(INT(SEEK(1) * 100 / LOF(1))) + "% complete."; IF INKEY$ = CHR$(27) THEN EXIT DO LOOP RESET IF ViewOnly THEN IF Viewer$ = "TYPE" THEN SHELL Viewer$ + " " + OutFile$ + "|MORE" ELSE SHELL Viewer$ + " " + OutFile$ END IF LOCATE c, 1: PRINT KILL OutFile$ END IF END ChangeData: DATA , DATA , DATA , DATA , DATA , DATA , DATA , DATA ,- DATA , DATA , DATA , DATA , DATA , DATA , DATA , DATA ,| DATA , DATA , DATA , DATA , DATA , DATA , DATA , DATA , DATA "¡" , DATA " " ," " DATA "¿" , DATA "¢" ,c DATA "£" , DATA "¤" , DATA "¥" ,Y DATA "¶" , DATA "§" , DATA "©" , DATA "®" , DATA "ª" , DATA "º" , DATA "«" , DATA "»" , DATA "µ" , DATA "°" , DATA "·" , DATA "×" , DATA "÷" , DATA "±" , DATA "¹" , DATA "²" , DATA "³" , 'pi DATA "¼" , DATA "½" , DATA "¾" , DATA "¦" ,| DATA "" ,(tm) DATA "‰" ,ppm DATA "–" ,- DATA "—" , DATA "‘" ,` DATA "’" ,' DATA "&" ,& DATA "<" ,< DATA ">" ,> DATA "<" ,< DATA ">" ,> DATA "&" ,& DATA "®" , DATA " " ,"" DATA "©" , DATA "«" , DATA "»" , DATA "™" ,(tm) DATA "­p;" ,- DATA "À" , DATA "Á" , DATA "Â" , DATA "Ã" , DATA "Ä" , DATA "Å" , DATA "Æ" , DATA "Ç" , DATA "È" , DATA "É" , DATA "Ê" , DATA "Ë" , DATA "Ì" , DATA "Í" , DATA "Î" , DATA "Ï" , DATA "Ð" , DATA "Ñ" , DATA "Ò" , DATA "Ó" , DATA "Ô" , DATA "Õ" , DATA "Ö" , DATA "Ø" , DATA "Ù" , DATA "Ú" , DATA "Û" , DATA "Ü" , DATA "Ý" , DATA "Þ" , DATA "ß" , DATA "à" , DATA "á" , DATA "â" , DATA "ã" , DATA "ä" , DATA "å" , DATA "æ" , DATA "ç" , DATA "è" , DATA "é" , DATA "ê" , DATA "ë" , DATA "ì" , DATA "í" , DATA "î" , DATA "ï" , DATA "ð" , DATA "ñ" , DATA "ò" , DATA "ó" , DATA "ô" , DATA "õ" , DATA "ö" , DATA "ø" , DATA "ù" , DATA "ú" , DATA "û" , DATA "ü" , DATA "ý" , DATA "þ" , DATA "ÿ" , DATA "Œ" ,OE DATA "œ" ,oe DATA "ø" , DATA "å" , DATA //,// InputError: IF ERR = 62 THEN InpErrFlag = TRUE RESUME NEXT ELSEIF ERR = 53 THEN NoExtList = TRUE RESUME Cont ELSE PRINT "Error"; ERR RESET END END IF SUB CheckText (Txt$) RESTORE ChangeData Change$ = CHR$(34) FOR x = 1 TO 5 IF NOT Simple OR (Simple AND LEFT$(f$(x), 1) = "&") THEN a = 1 DO a = INSTR(a, Txt$, f$(x)) IF a <> 0 THEN Txt$ = LEFT$(Txt$, a - 1) + Change$ + MID$(Txt$, a + LEN(f$(x))) LOOP UNTIL a = 0 END IF NEXT x IF NoExtList THEN DO READ Find$, Change$ IF Find$ = "//" THEN EXIT DO IF NOT Simple OR (Simple AND LEFT$(Find$, 1) = "&") THEN a = 1 DO a = INSTR(a, Txt$, Find$) IF a <> 0 THEN Txt$ = LEFT$(Txt$, a - 1) + Change$ + MID$(Txt$, a + LEN(Find$)) LOOP UNTIL a = 0 END IF LOOP ELSE b = 0 DO IF NOT Simple OR (Simple AND LEFT$(Find$(b), 1) = "&") THEN a = 1 DO a = INSTR(a, Txt$, Find$(b)) IF a <> 0 THEN Txt$ = LEFT$(Txt$, a - 1) + Change$(b) + MID$(Txt$, a + LEN(Find$(b))) LOOP UNTIL a = 0 END IF b = b + 1 LOOP UNTIL b = Tags END IF END SUB