DMDScript - improved testscript.d
- bobr (225/225) Jan 16 2007 attached you will find a better '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