mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	Add REXX.
This commit is contained in:
		
				
					committed by
					
						 Lars Brinkhoff
						Lars Brinkhoff
					
				
			
			
				
	
			
			
			
						parent
						
							3f4b8368e8
						
					
				
				
					commit
					7024c7cb37
				
			| @@ -3131,6 +3131,17 @@ REALbasic: | |||||||
|   tm_scope: source.vbnet |   tm_scope: source.vbnet | ||||||
|   ace_mode: text |   ace_mode: text | ||||||
|  |  | ||||||
|  | REXX: | ||||||
|  |   type: programming | ||||||
|  |   aliases: | ||||||
|  |   - arexx | ||||||
|  |   extensions: | ||||||
|  |   - .rexx | ||||||
|  |   - .pprx | ||||||
|  |   - .rex | ||||||
|  |   tm_scope: none | ||||||
|  |   ace_mode: text | ||||||
|  |  | ||||||
| RHTML: | RHTML: | ||||||
|   type: markup |   type: markup | ||||||
|   group: HTML |   group: HTML | ||||||
|   | |||||||
							
								
								
									
										174
									
								
								samples/REXX/BatchRemapBrushes.pprx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										174
									
								
								samples/REXX/BatchRemapBrushes.pprx
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,174 @@ | |||||||
|  | /* Ga igenom lador med IFF-filer rekursivt och skapa: | ||||||
|  |    1: Spritekartor om 320x256 med alla spritar | ||||||
|  |    2: En tabell med enumererade spritenummer | ||||||
|  |    Aterstar: | ||||||
|  |    *: Att skriva shapesfiler direkt | ||||||
|  |    $VER: 1.0 | ||||||
|  | */ | ||||||
|  | SIGNAL ON BREAK_C | ||||||
|  | PARSE ARG argument | ||||||
|  | template = 'START/N COLOURS/N REMAP/S RECURSIVE/S PALETTE/K DIRECTORY/A' | ||||||
|  | CALL Init | ||||||
|  |  | ||||||
|  | ADDRESS 'PPAINT' | ||||||
|  | OPTIONS RESULTS | ||||||
|  | GetBestVideoMode WIDTH 320 HEIGHT 256 COLORS args.colours | ||||||
|  | modeid=Word(RESULT,1) | ||||||
|  | say modeid | ||||||
|  | Set 'FORCE "DISPLAY=' || modeid || '"' | ||||||
|  | IF RC~=0 THEN EXIT 20 | ||||||
|  | Set 'FORCE "IMAGEW=320" "IMAGEH=256" "COLORS='args.colours'"' | ||||||
|  | ClearImage | ||||||
|  | LockGUI | ||||||
|  | ScreenToFront | ||||||
|  | x=0 ; y=0 ; maxhoejd=0 ; fil#=0 ; blad#=0 | ||||||
|  | CALL WriteLn konstfil, ';Blad' blad# | ||||||
|  | DO UNTIL Lines()==0 & fillista=='' | ||||||
|  |    DO WHILE fillista~='' | ||||||
|  |       PARSE VAR fillista filnamn 'y' fillista | ||||||
|  |       IF Right(filnamn,5)=='.info' THEN ITERATE | ||||||
|  |       IF Word(StateF(dir||filnamn),1)=='DIR' THEN DO | ||||||
|  |          PUSH fillista | ||||||
|  |          PUSH dir | ||||||
|  |          dir=dir||filnamn||'/' | ||||||
|  |          SAY 'Entering directory' dir'...' | ||||||
|  |          fillista=ShowDir(dir,'ALL','y') | ||||||
|  |          ITERATE | ||||||
|  |          END | ||||||
|  |       LoadBrush FILE dir || filnamn NOPROGRESS | ||||||
|  |       IF RC~==0 THEN DO | ||||||
|  |          SAY 'Skipping file:' dir || filnamn | ||||||
|  |          ITERATE | ||||||
|  |          END | ||||||
|  |       IF args.remap THEN RemapBrush NOPROGRESS | ||||||
|  |       GetBrushAttributes WIDTH  ; bredd=RESULT | ||||||
|  |       GetBrushAttributes HEIGHT ; hoejd=RESULT | ||||||
|  |       GetBrushAttributes COLORS ; djup=RESULT | ||||||
|  |       IF bredd//16==0 THEN ebwidth=bredd | ||||||
|  |       ELSE ebwidth=bredd+(16-(bredd//16)) | ||||||
|  |       maxhoejd=Max(maxhoejd,hoejd) | ||||||
|  |       SAY 'File:' Left(filnamn,29) 'Width:' bredd ' Height:' hoejd ' Depth:' djup ' ebwidth:' ebwidth | ||||||
|  |       SetCurrentBrush RECTANGULAR WIDTH 1 HEIGHT 1 | ||||||
|  |       DrawRectangle x y x+ebwidth y+hoejd | ||||||
|  |       Text fil# 'X' x+2 'Y' y+2 | ||||||
|  |       SetCurrentBrush 1 ; SetBrushHandle 0 0 | ||||||
|  |       PutBrush x y | ||||||
|  |       CALL WriteLn(konstfil,'; '||fil# ||': '|| filnamn ||' ('||ebwidth||'x'||hoejd||'x'||djup||')') | ||||||
|  |       CALL WriteLn(konstfil,'#'||Upper(Left(filnamn,Min(Length(filnamn),Max(LastPos('.',filnamn)-1,0))))||'='fil#) | ||||||
|  |       x=x+ebwidth | ||||||
|  |       IF x+ebwidth>319 THEN DO | ||||||
|  |          x=0 | ||||||
|  |          y=y+maxhoejd | ||||||
|  |          IF y+maxhoejd>255 THEN DO | ||||||
|  |             SaveImage FILE 'Spritesheet' || blad# || '.ilbm' FORCE | ||||||
|  |             IF RC==0 THEN SAY 'Saved sheet' blad# | ||||||
|  |             ELSE SAY "Couldn't save spritesheet" | ||||||
|  |             ClearImage | ||||||
|  |             y=0 | ||||||
|  |             blad#=blad#+1 | ||||||
|  |             CALL WriteLn konstfil, ';Blad' blad# | ||||||
|  |             END | ||||||
|  |          maxhoejd=0 | ||||||
|  |          END | ||||||
|  |       fil#=fil#+1 | ||||||
|  |       END /* WHILE fillista */ | ||||||
|  |    IF Lines()>0 THEN DO | ||||||
|  |       PARSE PULL dir | ||||||
|  |       PARSE PULL fillista | ||||||
|  |       SAY 'Going back to' dir'...' | ||||||
|  |       END | ||||||
|  | END /* UNTIL Lines() */ | ||||||
|  |  | ||||||
|  | BREAK_C: | ||||||
|  | FreeBrush FORCE | ||||||
|  | UnLockGUI | ||||||
|  | medd=fil# 'files processed in' blad#+1 'sheets' | ||||||
|  | SAY medd | ||||||
|  | RequestNotify 'TITLE SpriteSheet.pprx PROMPT "'medd'"' | ||||||
|  | ScreenToBack | ||||||
|  | CALL Close(konstfil) | ||||||
|  | DO WHILE Lines()>0; PULL .; END | ||||||
|  | EXIT 0 | ||||||
|  |  | ||||||
|  | Init: | ||||||
|  |    IF argument = '' | argument = '?' THEN DO | ||||||
|  |       SAY template | ||||||
|  |       EXIT 0 | ||||||
|  |       END | ||||||
|  |  | ||||||
|  |    CALL ReadArgs() | ||||||
|  |  | ||||||
|  |    IF ~Show('L',"rexxsupport.library") THEN DO | ||||||
|  |       IF ~AddLib("rexxsupport.library",0,-30,0) THEN DO | ||||||
|  |          SAY 'Hittade inte rexxsupport.library' | ||||||
|  |          EXIT 20 | ||||||
|  |          END | ||||||
|  |       END | ||||||
|  |    IF ~Open(konstfil,'SpriteConstants.txt','WRITE') THEN EXIT 10 | ||||||
|  |  | ||||||
|  |    IF ~SHOW('P', 'PPAINT') THEN DO | ||||||
|  |       SAY "Couldn't find PPaint. Please start the program first." | ||||||
|  |       EXIT 5 | ||||||
|  |       END | ||||||
|  |    dir=args.directory | ||||||
|  |    IF dir='""' THEN dir=Pragma('DIRECTORY') | ||||||
|  |    IF dir='' THEN dir='Ram:Megamanv6/Graphics/' | ||||||
|  |    IF Right(dir,1)~=='/' THEN dir=dir || '/' | ||||||
|  |    fillista=ShowDir(dir,'FILES','y') | ||||||
|  |    fillista=ShowDir(dir,'ALL','y') | ||||||
|  |    IF fillista="" THEN DO | ||||||
|  |       SAY "Found no files" | ||||||
|  |       EXIT 5 | ||||||
|  |       END | ||||||
|  |    IF args.colours==0 THEN args.colours=16 | ||||||
|  |    ADDRESS 'PPAINT' | ||||||
|  |    OPTIONS RESULTS | ||||||
|  |    IF args.palette~='' THEN LoadPalette args.palette | ||||||
|  | RETURN | ||||||
|  |  | ||||||
|  | ReadArgs: | ||||||
|  | /* ReadArgs()-like evaluation of command line arguments */ | ||||||
|  | SAY 'ReadArgs' | ||||||
|  | DO key# = 1 TO Words(Template) | ||||||
|  |    key=Word(template,key#) | ||||||
|  |    PARSE VAR key key "/" keytype | ||||||
|  |    SELECT | ||||||
|  |       WHEN keytype='S'|keytype='N' THEN args.key=0 | ||||||
|  |       WHEN keytype='K'|keytype='A' THEN args.key='' | ||||||
|  |       OTHERWISE NOP     /* Error in template */ | ||||||
|  |       END | ||||||
|  |    END | ||||||
|  |  | ||||||
|  | DO WHILE argument ~= '' | ||||||
|  |    PARSE VAR argument arg1 argument | ||||||
|  |    arg2='' | ||||||
|  |    DO key# = 1 TO Words(template) | ||||||
|  |       key = Word(template,key#) | ||||||
|  |       PARSE VAR key key '/' keytype | ||||||
|  |       IF Upper(Left(arg1,Length(key))) = key THEN DO | ||||||
|  |          SELECT | ||||||
|  |             WHEN keytype='S' THEN DO | ||||||
|  |                args.key=1 | ||||||
|  |                END | ||||||
|  |             WHEN keytype='K' | keytype='N' | keytype='A' THEN DO | ||||||
|  |                IF Index(arg1,'=')>0 | ||||||
|  |                   THEN DO | ||||||
|  |                      SAY 'Innehaller =' | ||||||
|  |                      PARSE VAR arg1 '=' arg2 | ||||||
|  |                      SAY 'arg2:' arg2 | ||||||
|  |                      END | ||||||
|  |                   ELSE PARSE VAR argument arg2 argument | ||||||
|  |                args.key=arg2 | ||||||
|  |                IF keytype='N' & DataType(arg2)~==NUM THEN DO | ||||||
|  |                   SAY 'Illegal numerical argument' key arg2 | ||||||
|  |                   EXIT 10 | ||||||
|  |                   END | ||||||
|  |                END | ||||||
|  |             END | ||||||
|  |             arg1='' | ||||||
|  |             LEAVE key# | ||||||
|  |          END | ||||||
|  |       END | ||||||
|  |       IF arg1~='' THEN args.directory=arg1 | ||||||
|  |    END | ||||||
|  | RETURN | ||||||
							
								
								
									
										135
									
								
								samples/REXX/ShapesInfo.rexx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										135
									
								
								samples/REXX/ShapesInfo.rexx
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,135 @@ | |||||||
|  | /* Display information about Blitz Basic .shapes file, | ||||||
|  |    optionally displaying the shape's cookiecut | ||||||
|  | $AUTHOR: Iggy Drougge 2016 | ||||||
|  | $VER: 1.1 | ||||||
|  | */ | ||||||
|  | PARSE ARG argument | ||||||
|  | template = 'FROM/N TO/N SHOW/S FILE/A' | ||||||
|  | IF argument = '' | argument = '?' THEN DO | ||||||
|  |    SAY 'ShapesInfo' template | ||||||
|  |    EXIT 0 | ||||||
|  |    END | ||||||
|  |  | ||||||
|  | CALL ReadArgs() | ||||||
|  |  | ||||||
|  | IF ~Open(fh,args.file,READ) then DO | ||||||
|  |    SAY "Couldn't Open file:" args.file | ||||||
|  |    EXIT 10 | ||||||
|  |    END | ||||||
|  |  | ||||||
|  | shape#=0 | ||||||
|  | filebad=0 | ||||||
|  | IF args.to=0 THEN args.to=9999 | ||||||
|  |  | ||||||
|  | IF args.from>1 THEN SAY 'Seeking...' | ||||||
|  | DO WHILE ~EOF(fh) | ||||||
|  |    header=ReadCh(fh,32) | ||||||
|  |    IF EOF(fh) THEN DO | ||||||
|  |       SAY 'Reached end of file.' | ||||||
|  |       EXIT 0 | ||||||
|  |       END | ||||||
|  |    PARSE VALUE header WITH pixwidth +2 pixheight +2 depth +2 ebwidth +2 bltsize +2 xhandle +2 yhandle +2 . +4 . +4 onebpmem +2 onebpmemx +2 allbpmem +2 allbpmemx +2 . | ||||||
|  |    CALL CheckHeader | ||||||
|  |    IF filebad THEN DO | ||||||
|  |       SAY 'Not a valid shapes file.' | ||||||
|  |       SAY C2X(header) | ||||||
|  |       EXIT 10 | ||||||
|  |       END | ||||||
|  |    shape#=shape#+1 | ||||||
|  |    bitplanesize = C2D(ebwidth) * C2D(pixheight) | ||||||
|  |    bitmapsize = bitplanesize * C2D(depth) | ||||||
|  |    IF shape# < args.from THEN DO | ||||||
|  |       CALL Seek(fh,bitmapsize,CURRENT) | ||||||
|  |       ITERATE | ||||||
|  |       END | ||||||
|  |    IF shape# > args.to THEN LEAVE | ||||||
|  |    CALL PrintHeader | ||||||
|  |    IF args.show THEN CALL ShowCookiecut | ||||||
|  |    ELSE CALL Seek(fh,bitmapsize,CURRENT) | ||||||
|  |    END | ||||||
|  | EXIT 0 | ||||||
|  |  | ||||||
|  | CheckHeader: | ||||||
|  |    IF C2D(pixwidth)>C2D(ebwidth)*8 THEN filebad=1 | ||||||
|  |    IF Left(C2B(bltsize),10)~=C2B(pixheight) THEN filebad=1 | ||||||
|  | RETURN | ||||||
|  |  | ||||||
|  | PrintHeader: | ||||||
|  |    SAY 'Shape #' || shape# || ':' | ||||||
|  |    SAY '  Width:    ' C2D(pixwidth) 'pixels' '('C2D(ebwidth) 'bytes)' | ||||||
|  |    SAY '  Height:   ' C2D(pixheight) 'pixels' | ||||||
|  |    SAY '  Depth:    ' C2D(depth) 'bitplanes' | ||||||
|  |    SAY '  BLTSIZE:  ' '$'C2X(bltsize) '('||, | ||||||
|  |        C2D(B2C(Left(C2B(bltsize),10))) 'x', | ||||||
|  |        C2D(B2C(Right(C2B(bltsize),6)))')' | ||||||
|  |    SAY '  Handle:   ' C2D(xhandle)','C2D(yhandle) | ||||||
|  | /* | ||||||
|  |    SAY 'Onebpmem: ' C2D(onebpmem) | ||||||
|  |    SAY 'OnebpmemX:' C2D(onebpmemx) | ||||||
|  |    SAY 'Allbpmem: ' C2D(allbpmem) | ||||||
|  |    SAY 'AllbpmemX:' C2D(allbpmemx) | ||||||
|  | */ | ||||||
|  | RETURN | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ShowCookiecut: | ||||||
|  |    depth=C2D(depth) | ||||||
|  |    bmap=Copies('00'x,bitplanesize) | ||||||
|  |    DO FOR depth | ||||||
|  |       bmap=BitOr(bmap,readch(fh,bitplanesize)) | ||||||
|  |       END | ||||||
|  |    ln=1 ; pixheight=C2D(pixheight) ; ebwidth=C2D(ebwidth) | ||||||
|  |    DO FOR pixheight | ||||||
|  |       SAY C2B(SubStr(bmap,ln,ebwidth)) | ||||||
|  |       ln=ln+ebwidth | ||||||
|  |       END | ||||||
|  | RETURN | ||||||
|  |  | ||||||
|  | EXIT 0 | ||||||
|  |  | ||||||
|  | ReadArgs: | ||||||
|  | /* ReadArgs()-like evaluation of command line arguments */ | ||||||
|  | DO key# = 1 TO Words(Template) /* Initialise the keywords */ | ||||||
|  |    key=Word(template,key#) | ||||||
|  |    PARSE VAR key key "/" keytype | ||||||
|  |    SELECT | ||||||
|  |       WHEN keytype='S'|keytype='N' THEN args.key=0 | ||||||
|  |       WHEN keytype='K'|keytype='A' THEN args.key='' | ||||||
|  |       OTHERWISE NOP     /* Error in template */ | ||||||
|  |       END | ||||||
|  |    END | ||||||
|  |  | ||||||
|  | DO WHILE argument ~= '' | ||||||
|  |    PARSE VAR argument arg1 argument | ||||||
|  |    arg2='' | ||||||
|  |    DO key# = 1 TO Words(template) | ||||||
|  |       key = Word(template,key#) | ||||||
|  |       PARSE VAR key key '/' keytype | ||||||
|  |       IF Upper(Left(arg1,Length(key))) = key THEN DO | ||||||
|  |          SELECT | ||||||
|  |             WHEN keytype='S' THEN DO | ||||||
|  |                args.key=1 | ||||||
|  |                END | ||||||
|  |             WHEN keytype='K' | keytype='N' | keytype='A' THEN DO | ||||||
|  |                IF Index(arg1,'=')>0 | ||||||
|  |                   THEN DO | ||||||
|  |                      SAY 'Innehaller =' | ||||||
|  |                      PARSE VAR arg1 '=' arg2 | ||||||
|  |                      SAY 'arg2:' arg2 | ||||||
|  |                      END | ||||||
|  |                   ELSE PARSE VAR argument arg2 argument | ||||||
|  |                args.key=arg2 | ||||||
|  |                IF keytype='N' & DataType(arg2)~==NUM THEN DO | ||||||
|  |                   SAY 'Illegal numerical argument' key arg2 | ||||||
|  |                   EXIT 10 | ||||||
|  |                   END | ||||||
|  |                END | ||||||
|  |             END | ||||||
|  |             arg1='' | ||||||
|  |             LEAVE key# | ||||||
|  |          END | ||||||
|  |       END | ||||||
|  |       IF arg1~='' THEN args.file=arg1 | ||||||
|  |    END | ||||||
|  | RETURN | ||||||
							
								
								
									
										54
									
								
								samples/REXX/SkrivShape.rexx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								samples/REXX/SkrivShape.rexx
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,54 @@ | |||||||
|  | /* rexx */ | ||||||
|  | PARSE ARG filnamn | ||||||
|  | IF filnamn='' THEN DO | ||||||
|  |    filnamn='raw' | ||||||
|  |    filnamn='font.shapes' | ||||||
|  |    end | ||||||
|  | IF ~open(fil,filnamn,r) THEN EXIT 10 | ||||||
|  | pixwidth=48 | ||||||
|  | ebwidth=pixwidth/8 | ||||||
|  | pixheight=48 | ||||||
|  | depth=4 | ||||||
|  | SAY "Skriver utfil..." | ||||||
|  | CALL open utfil,"RAM:utfil",W | ||||||
|  | CALL skriv pixwidth,2 | ||||||
|  | CALL skriv pixheight,2 | ||||||
|  | CALL skriv depth,2 | ||||||
|  | CALL skriv ebwidth,2 | ||||||
|  | bltsize=Right(C2B(D2C(pixheight)),10,"00") | ||||||
|  | bltsize=bltsize || Right(C2B(D2C(ebwidth)),6,"00") | ||||||
|  | /* SAY bltsize */ | ||||||
|  | CALL skriv C2D(B2C(bltsize)),2 | ||||||
|  | CALL skriv 0,4 /* xhandle, yhandle*/ | ||||||
|  | CALL skriv 0,4 /* datapekare */ | ||||||
|  | CALL skriv 0,4 /* cookiepekare */ | ||||||
|  | CALL skriv ebwidth*pixheight,2 /* onebpmem */ | ||||||
|  | CALL skriv ebwidth*pixheight+pixheight*2,2 /* onebpmemx */ | ||||||
|  | CALL skriv ebwidth*pixheight*depth,2 /* allbpmem */ | ||||||
|  | CALL skriv ebwidth*pixheight*depth+pixheight*2*depth,2 /* allbpmemx */ | ||||||
|  | CALL skriv 0,2 /* padding */ | ||||||
|  | CALL Close utfil | ||||||
|  | EXIT | ||||||
|  |  | ||||||
|  | skriv: | ||||||
|  | say "Skriver $"D2X(arg(1)) "("arg(2) "byte)" | ||||||
|  | call writech utfil,right(D2C(ARG(1)),ARG(2),"00"x) | ||||||
|  | return | ||||||
|  |  | ||||||
|  | visacookie: | ||||||
|  |    rad=copies('00'x,pixheight*ebwidth) | ||||||
|  |    say "Initierar bitmap till" pixheight*ebwidth*depth | ||||||
|  |    say "Ett bitplan =" pixheight*ebwidth | ||||||
|  |    bmap.='' | ||||||
|  |    say "laser in" | ||||||
|  |    do bitplan=1 to depth | ||||||
|  |       say "laser plan" bitplan | ||||||
|  |       rad=bitor(rad,readch(fil,pixheight*ebwidth)) | ||||||
|  |       end | ||||||
|  |    ln=1 | ||||||
|  |    say "skriver ut" | ||||||
|  |    do for pixheight | ||||||
|  |       say c2b(substr(rad,ln,bredd/8)) | ||||||
|  |       ln=ln+bredd/8 | ||||||
|  |       end | ||||||
|  | return | ||||||
							
								
								
									
										106
									
								
								samples/REXX/ag2xml.rexx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										106
									
								
								samples/REXX/ag2xml.rexx
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,106 @@ | |||||||
|  | /* 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,'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' | ||||||
|  | call writeln utfil,'<root>' | ||||||
|  | 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,'</root>' | ||||||
|  | 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='<story id="' || nod || '">' || inrad | ||||||
|  | 	end | ||||||
|  | 	if inrad='@ENDNODE' then inrad='</story>' || '0d'x | ||||||
|  | 	/* say inrad */ | ||||||
|  | 	if abbrev(inrad,'-----') then inrad='<streck>	</streck>' | ||||||
|  | 	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='<commandheadline>'||strip(kommandotyp)||'	</commandheadline><commandname>'||behandlarad(inrad)||'</commandname>'||behandlarad(rest) | ||||||
|  | 	end | ||||||
|  | 	if index(inrad,'@{')>0 then do | ||||||
|  | 		parse var inrad inrad '@{' tagg '}' rest | ||||||
|  | 		select | ||||||
|  | 			when tagg='fg shine' then tagg='<fgshine>' | ||||||
|  | 			when tagg='fg text'  then tagg='</fgshine>' | ||||||
|  | 			when tagg='b'		 then tagg='<bold>' | ||||||
|  | 			when tagg='ub'		 then tagg='</bold>' | ||||||
|  | 			/* @{" SpriteMode " link BUM_SPRITEMODE} */ | ||||||
|  | 			when abbrev(tagg,'"') then do | ||||||
|  | 				parse var tagg '"' besk '"' . 'link' dest | ||||||
|  | 				tagg='<link dest="' || dest || '">' || besk || '</link>' | ||||||
|  | 			end | ||||||
|  | 			otherwise tagg='<okand>' | ||||||
|  | 		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='<okand>' inrad '</okand>' */ | ||||||
|  | 		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='<modeheadline>Modes:	</modeheadline><modename>' || strip(inrad) || '</modename>' | ||||||
|  | 	end | ||||||
|  | 	if abbrev(inrad,'Syntax') then do | ||||||
|  | 		parse var inrad . ':' inrad | ||||||
|  | 		inrad='<syntaxheadline>Syntax:	</syntaxheadline><syntax>' || strip(inrad) || '</syntax>' | ||||||
|  | 	end | ||||||
|  | 	return inrad | ||||||
|  | end | ||||||
		Reference in New Issue
	
	Block a user