/*
 * Guide2Ital
 *
 * USAGE: outfile = 'ital/Guide2Ital'(guide,text,codes,tags)
 *
 * Guide2Ital convert an AmigaGuide document to let Ital translate the
 * text and then replace the AmigaGuide format...
 *
 * $(C): (1995, Rocco Coluccelli, Bologna)
 * $VER: Guide2Ital 1.00 (01.Jun.1995)
 */

SIGNAL ON halt
SIGNAL ON break_c

/*
 *	METHODS:
 *		'TOGUIDE' ricostruisce il formato AmigaGuide originario
 */
PARSE ARG guide,text,codes,tags
INTERPRET tags

mode = (POS('GUIDE',opt.METHODS) > 0)

ins_ID = '0920092009'x
nl = '0a'x

/*
 *	Open the AmigaGuide document
 *	Open the text file
 *	Open the codes file
 */
INTERPRET 'CALL Convert.'mode'()'
CALL CleanUp(result)


halt:
break_c:
	CALL CleanUp()


Convert.0:

	IF ~OPEN('in',guide,'r') THEN EXIT ''
	IF ~OPEN('out',text,'w') THEN EXIT ''
	IF ~OPEN('ht',codes,'w') THEN EXIT ''

	lnk.1 = 'LINK'; lnk.2 = 'RX'; lnk.3 = 'SYSTEM'; lnk.4 = 'QUIT'

	input = READCH('in',65000)
	DO UNTIL input = ''

		PARSE VAR input txt '@' c +1 input

		IF c ~= '' THEN DO
			CALL WRITECH('out',txt || ins_ID)

			IF c = '{' THEN DO
				PARSE VAR input txt '}' input

				str = UPPER(txt)
				DO n = 1 UNTIL p < 0 | n < 5
					p = POS(lnk.n,str) - 2
				END

				IF p >= 0 THEN DO
					PARSE VAR txt str +p txt
					CALL WRITELN('ht','@{"')
					CALL WRITECH('out',COMPRESS(str,'"') || ins_ID)
					CALL WRITELN('ht','"'txt'}')
					END

				ELSE CALL WRITELN('ht','@{'txt'}')
			END

			ELSE DO
				PARSE VAR input txt (nl) input
				CALL WRITELN('ht','@' || c || txt)
				input = nl || input
			END
		END

		ELSE DO
			CALL WRITECH('out',txt)
			ITERATE
		END
	END

RETURN text


Convert.1:

	IF ~OPEN('out',guide,'w') THEN CALL CleanUp()
	IF ~OPEN('in',text,'r')   THEN CALL CleanUp()
	IF ~OPEN('ht',codes,'r')  THEN CALL CleanUp()

	input = READCH('in',65000)
	DO UNTIL input = ''

		PARSE VAR input txt (ins_ID) input
		CALL WRITECH('out',txt || READLN('ht'))
	END

RETURN guide


CleanUp:
	CALL CLOSE('in')
	CALL CLOSE('out')
	CALL CLOSE('ht')

	IF mode = 1 THEN ADDRESS COMMAND 'Delete "'text'" "'codes'" QUIET'

	EXIT ARG(1)
