/* 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'' 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