www.digitalmars.com         C & C++   DMDScript  

DMDScript - improved testscript.d

attached you will find a better 'testscript.d'
with changes in the following areas:

	FLAG PARSING

	The -s flag will be silent about banners, can be combined with -v.

	The -c(content-type) flag takes what follows the -c ( default is
       	text/plain ) as a content-type specifier for use in cgi scripts.

           ds -ctext/html MyWebPageGenerator.ds


	The -- is a flag terminator, remaining strings become arguments.
	"echo.ds" is now:

	    for(var i = 0; i < arguments.length; ){
		    print(arguments[i]);
		    if (++i < arguments.length)
		      print(" ");
		    }
	    println();

	invoked as:   ds.exe -s echo.ds -- hello world!


	DEFAULT SCRIPT NAME

	If no script name is specified, test is used if the interpreter
       	is named "ds", otherwise a script in the current directory is selected
	based on the name of the interpreter.

	On systems where only compiled binaries may be run,
	(for example, certain web hosting companies)
	this will allow you to pair up a script and its interpreter at the
	cost of having multiple copies of the interpreter.
	Silent is implied in these contexts as the default banner only
	causes the webserver to emit a diagnostic about malformed headers.


	SHEBANG


	These are quietly converted to / / comments before compilation

	Scripts and includes can indicate what to use for default interpreter
        see: http://en.wikipedia.org/wiki/Shebang_(Unix)

	Includes may specify shebang lines to indicate interpreter
       	to use if invoked standalone.

This is tested and working with DMD 0.163
begin 644 testscript.d



M>2!$:6=I=&%L($UA<G,-"B`J($%L;"!2:6=H=', 4F5S97)V960-"B`J('=R
M:71T96X 8GD 5V%L=&5R($)R:6=H=`T*("H =W=W+F1I9VET86QM87)S+F-O
M;0T*("H 57-E(&%T('EO=7( ;W=N(')I<VLN(%1H97)E(&ES(&YO('=A<G)A

M<W1R:6)U=&EO;B!I<R!B>2!T:&4 1TY5($=E;F5R86P 4'5B;&EC($QI8V5N

M92!L:6-E;G-E(&9O<B!C;VUM97)C:6%L('5S92!C86X 8F4-"B`J('!U<F-H
M87-E9"!F<F]M('=W=RYD:6=I=&%L;6%R<RYC;VTO9'-C<FEP="]B=7DN:'1M



M<FEP="P :6YC;'5D:6YG($-/32!S=7!P;W)T+`T*("H <V5E('=W=RYD:6=I





M=6T-"GL-" E%6$E40T]$15])3DE47T524D]2(#T ,2P-" E%6$E40T]$15])









M(&9I;&5S('=I=&  =&AE(&-O;G1E;G1S(&]F(&9I;&4 :6YC+ T*"51H97)E
M(&-A;B!B92!M=6QT:7!L92`M:2=S+B!4:&4 :6YC;'5D92!L:7-T(&ES(')E

M960 =&AA="!I<R!N;W0 <')E8V5D960 8GD 82`M:2X-" T*"2` ("!D<R`M


M;RYD<R!W:71H(&EN8S$K:6YC,BP 86YD('=I;&P <')E9FEX(&)A<BYD<PT*

M("UI:6YC,R!B87(-" D)=VEL;"!P<F5F:7  9F]O+F1S('=I=&  :6YC,2MI

M("` (&1S("UI:6YC,2`M:6EN8S( 9F]O("UI(&)A< T*"0EW:6QL('!R969I
M>"!F;V\N9', =VET:"!I;F,Q*VEN8S(L(&%N9"!W:6QL('!R969I>"!B87(N

M<F)O<V4 ;W5T<'5T+"` 861D:71I;VYA;"!D:6%G;F]S=&EC<R!A;F0-" ES
M:&]W<R!S=&%R="!O9B!R96%D+V-O;7!I;&4O97AE8W5T92!P:&%S97,-" T*
M"51H92`M<R!F;&%G('=I;&P 8F4 <VEL96YT(&%B;W5T(&)A;FYE<G,L(&-A

M92D 9FQA9R!T86ME<R!W:&%T(&9O;&QO=W, =&AE("UC("  9&5F875L="!I
M<PT*("` ("` (`ET97AT+W!L86EN("D 87, 82!C;VYT96YT+71Y<&4 <W!E


M:&4 +2T :7, 82!F;&%G('1E<FUI;F%T;W(L(')E;6%I;FEN9R!S=')I;F=S

M("!F;W(H=F%R(&D /2`P.R!I(#P 87)G=6UE;G1S+FQE;F=T:#L *7L-" D)

M=6UE;G1S+FQE;F=T:"D-" D)("` ("` <')I;G0H(B`B*3L-" D)("` ('T 


M($Y!344-" T*"4EF(&YO('-C<FEP="!N86UE(&ES('-P96-I9FEE9"P =&5S
M="!I<R!U<V5D(&EF('1H92!I;G1E<G!R971E< T*("` ("` (`EI<R!N86UE
M9"`B9',B+"!O=&AE<G=I<V4 82!S8W)I<'0 :6X =&AE(&-U<G)E;G0 9&ER


M;7!I;&5D(&)I;F%R:65S(&UA>2!B92!R=6XL(`T*"2AF;W( 97AA;7!L92P 
M8V5R=&%I;B!W96( :&]S=&EN9R!C;VUP86YI97,I(`T*"71H:7, =VEL;"!A
M;&QO=R!Y;W4 =&\ <&%I<B!U<"!A('-C<FEP="!A;F0 :71S(&EN=&5R<')E
M=&5R(&%T('1H90T*"6-O<W0 ;V8 :&%V:6YG(&UU;'1I<&QE(&-O<&EE<R!O


M<V5S('1H92!W96)S97)V97( =&\ 96UI="!A(&1I86=N;W-T:6, 86)O=70 

M<G!R971E<B!A;F0 87)G=6UE;G1S*2` 86QL;W=E9"!A<R!F:7)S="!L:6YE

M("\ +R!C;VUM96YT<R!B969O<F4 8V]M<&EL871I;VX-" T*"5-C<FEP=', 
M86YD(&EN8VQU9&5S(&-A;B!I;F1I8V%T92!W:&%T('1O('5S92!F;W( 9&5F
M875L="!I;G1E<G!R971E< T*("` ("` ("!S964Z(&AT='`Z+R]E;BYW:6MI
M<&5D:6$N;W)G+W=I:VDO4VAE8F%N9U\H56YI>"D-" T*"4EN8VQU9&5S(&UA
M>2!S<&5C:69Y('-H96)A;F< ;&EN97, =&\ :6YD:6-A=&4 :6YT97)P<F5T
M97(-"B` ("` ("`)=&\ =7-E(&EF(&EN=F]K960 <W1A;F1A;&]N92X-"B`J

M;W)S(#T ,#L-"B` ("!C:&%R6UU;72!I;F-L=61E<SL-"B` ("!3<F-&:6QE





M*'-I>F5?="!I(#T


M("!I9B`H<%LR72D-" D)"6EN8VQU9&5S('X]('!;,B`N+B!L96YG=&A=.PT*




M+V-G:2P :6YJ96-T(&-O;G1E;G0M='EP93H 7&Y<;B!A:&5A9"!O9B!A;&P 

M+BX ;&5N9W1H73L-" D)("` (&5L<V4-" D)"6-O;G1E;G1?='EP92`](")T


M+"!A<F=U;65N=', 9F]L;&]W+"!E870 =&AE;0T*"0D ("` 9F]R(" K*VD[
M(&D /"!A<F=S+FQE;F=T:"`[(&DK*RD-" D)"7)E;6%I;FEN9U]A<F=S('X]



M(&YE=R!3<F-&:6QE*'`L(&EN8VQU9&5S*3L-" D ("` :6YC;'5D97, /2!N

M<FET969L;BAS=&1O=70L(")C;VYT96YT+71Y<&4Z("5S7&XB+"!C;VYT96YT

M<F]W<V5R+"!I92!A9G1E<B!C;VYT96YT+71Y<&4-"B` ("` *B!T;R!A<W-I
M<W0 <'!L('=R:71I;F< 8V=I<PT*("` ("`J+PT*("` (&EF("AE<G)S7V]U



M<FX 15A)5$-/1$5?24Y604Q)1%]!4D=3.PT*("` ('T-" T*("` (&EF("AS


M(B!T<GD ;&]C871I;F< +F1S(&9I;&4-"B` ("` ("` +R\ 8GD <V%M92!N



M("TQ*0D)+R\ 4F5M;W9E('-U9F9I>"X-"B` ("` ("` ("` (&5X96YA;64 

M;7!O;F5N=`T*"7-P;"`]('-T9"YS=')I;F<N<W!L:70H97AE;F%M92P *'-T
M9"YS=')I;F<N9FEN9"AE>&5N86UE+"`B+R(I(#X

M" EI9B`H97AE;F%M92`]/2`B9',B*0DO+R!R971A:6X ;VQD('-E;6%N=&EC
M<PT*"2` ("!E>&5N86UE(#T (G1E<W0B.PT*"65L<V4-" D ("` <VEL96YT
M(#T
M=W)I=&5F;&XH<W1D97)R+"`B9&5F875L=&EN9R!S8W)I<'0 ;F%M92!T;R`E


M("` (&9W<FET969L;BAS=&1E<G(L(&1M9'-C<FEP="YS8W)I<'0N8F%N;F5R

M<W1D97)R+"`B)60 <V]U<F-E(&9I;&5S(BP <W)C9FEL97,N;&5N9W1H*3L-
M" T*("` ("\O(%)E860 9FEL97,L('!A<G-E('1H96TL(&5X96-U=&4 =&AE

M"6EF("AV97)B;W-E*0T*"2` ("!W<FET969L;B B<F5A9"` ("`E<SHB+"!M
M+G-R8V9I;&4I.PT*"6TN<F5A9" I.PT*"6EF("AV97)B;W-E*0T*"2` ("!W
M<FET969L;B B8V]M<&EL92`E<SHB+"!M+G-R8V9I;&4I.PT*"6TN8V]M<&EL
M92 I.PT*"6EF("AV97)B;W-E*0T*"2` ("!W<FET969L;B B97AE8W5T92`E
M<SHB+"!M+G-R8V9I;&4I.PT*"6TN97AE8W5T92AR96UA:6YI;F=?87)G<RD[






M<FEP="!S;W5R8V4 9FEL97, 9&5F875L="!T;R!A("<N9',G(&5X=&5N<VEO

M9FEL96YA;64L(")D<R(I.PT*"71H:7,N:6YC;'5D97, /2!I;F-L=61E<SL-

M92!S;W5R8V4 9FEL92P <')E<&5N9"!T:&4 :6YC;'5D92!F:6QE<RP-" D 
M*B!A;F0 <'5T(&ET(&%L;"!I;B!B=69F97);72X 06QL;V-A=&4 86X 97AT
M<F$ 8GET90T*"2`J('1O(&)U9F9E<EM=(&%N9"!T97)M:6YA=&4 :70 =VET

M('1H92!L97AE<B!W:6QL('!U=`T*"2`J(&]N92!T:&5R92P 9F]R8VEN9R!A




M<W1D+F9I;&4N9V5T4VEZ92AS<F-F:6QE*3L-" EF;W)E86-H("AC:&%R6UT 
M9FEL96YA;64[(&EN8VQU9&5S*0T*"7L-" D ("` ;&5N("L]('-T9"YF:6QE
M+F=E=%-I>F4H9FEL96YA;64I.PT*"7T-" EL96XK*SL)"0D)+R\ ;&5A=F4 
M<F]O;2!F;W( <V5N=&EN86P-" T*"6%S<V5R="AL96X /"!U:6YT+FUA>"D[

M>B`](&-A<W0H:6YT*6QE;CL-" EB=69F97( /2!N97< =&-H87);<WI=.PT*

M("` (&)U9B`]('-T9"YF:6QE+G)E860H9FEL96YA;64I.PT*"2` ("!B=69F
M97);:2`N+B!I("L 8G5F+FQE;F=T:%T /2!C87-T*&-H87);72EB=69;73L-
M" T*"2` ("`O+R!P97)M:70 :6YC;'5D92!F:6QE<R!T;R!S96QF+6ED96YT
M:69Y('5N9&5R('5N:7 O;&EN=7 -" D ("` :68 *&)U9F9E<EMI72`]/2`G


M:2`K/2!B=68N;&5N9W1H.PT*"7T-" T*"6)U9B`]('-T9"YF:6QE+G)E860H


M('-E;&8M:61E;G1I9GD =6YD97( =6YI>"]L:6YU>`T*"6EF("AB=69F97);
M:5T /3T )R,G("8F(&)U9F9E<EMI*S%=(#T

M"6D *ST 8G5F+FQE;F=T:#L-


M82!$34138W)I<'0 <')O9W)A;2P 86YD(&-O;7!I;&4 ;W5R('1E>'0 8G5F




?9W)A;2YE>&5C=71E*&%R9W,I.PT*("` ('T-"GT-" ``
`
end
Jan 16 2007