/* Las en Amigaguidefil och omvandla till nan slags XML */
/* $VER: 2 */
options AREXX_BIFS
options AREXX_SEMANTICS
if ~open(infil,'Blitz2_V1.3.guide',R) then exit 10
if ~open(utfil,'bb2.xml',W) then exit 10
call writeln utfil,''
call writeln utfil,''
radnr=1
inrad=readln(infil)
do while ~eof(infil)
och=1
do while index(inrad,'&',och)>0
och=index(inrad,'&',och)
if index(inrad,';',och)=0 then do
parse value inrad with prefix =(och) +1 suffix
inrad=prefix'&'suffix
och=index(inrad,';',och)
end
end
do while index(inrad,'<')>0
parse var inrad prefix '<' suffix
inrad = prefix'<'suffix
end
do while index(inrad,'>')>0
parse var inrad prefix '>' suffix
inrad = prefix'>'suffix
end
inrad=behandlarad(inrad)
if right(inrad,1)~='>' & strip(inrad)~='' then inrad=inrad || ' '
testrad=inrad
do while index(testrad,'>') > 0
parse var testrad prefix '<' . '>' suffix
testrad = prefix || suffix
end
if length(testrad)<65 then inrad = inrad || '0d'x
call writech utfil,inrad
inrad=readln(infil)
radnr=radnr+1
end
call close(infil)
call writeln utfil,''
call close(utfil)
exit 0
behandlarad: procedure
parse arg inrad
do forever
if abbrev(inrad,'@NODE') then do
parse var inrad '@NODE ' nod inrad
/* say 'Hittade nod:' nod */
inrad='' || inrad
end
if inrad='@ENDNODE' then inrad='' || '0d'x
/* say inrad */
if abbrev(inrad,'-----') then inrad=''
if abbrev(inrad,'Command'),
| abbrev(inrad,'Function'),
| abbrev(inrad,'Statement') then do
parse var inrad kommandotyp ':' inrad
/* if index(inrad,'@{')>0 then */
parse var inrad inrad '@{' rest
if rest~='' then rest='@{' || rest
/* say 'rest:' rest */
inrad=''||strip(kommandotyp)||' '||behandlarad(inrad)||''||behandlarad(rest)
end
if index(inrad,'@{')>0 then do
parse var inrad inrad '@{' tagg '}' rest
select
when tagg='fg shine' then tagg=''
when tagg='fg text' then tagg=''
when tagg='b' then tagg=''
when tagg='ub' then tagg=''
/* @{" SpriteMode " link BUM_SPRITEMODE} */
when abbrev(tagg,'"') then do
parse var tagg '"' besk '"' . 'link' dest
tagg='' || besk || ''
end
otherwise tagg=''
end
rest=behandlarad(rest)
/*
if index(rest,'@{')>0 then rest=behandlarad(left(rest,index(rest,'@{'))) || substr(rest,index(rest,'@{'))
*/
inrad=inrad || tagg || rest
/* iterate */
end
if abbrev(inrad,'@') then do
say 'Hittade okand tagg:' inrad
/* inrad='' inrad '' */
parse var inrad '@' tagg inrad
if abbrev(tagg,'$') then parse var tagg '$' tagg ':'
inrad='<'tagg'>'inrad''tagg'>'
end
if abbrev(inrad,'Modes') then do
parse var inrad . ':' inrad
inrad='Modes: ' || strip(inrad) || ''
end
if abbrev(inrad,'Syntax') then do
parse var inrad . ':' inrad
inrad='Syntax: ' || strip(inrad) || ''
end
return inrad
end