| @if (@X)==(@Y) @end |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| var _g=new Object(); |
| _g.loc=''; |
| try { |
| var env=WScript.CreateObject("WScript.Shell").Environment("Process"), |
| cnt, |
| ln=0, |
| skip=false, |
| quit=false, |
| stdin=WScript.StdIn, |
| stdout=WScript.Stdout, |
| stderr=WScript.Stderr, |
| output, |
| input; |
| _g.ForReading=1; |
| _g.ForWriting=2; |
| _g.TemporaryFolder=2; |
| _g.fso = new ActiveXObject("Scripting.FileSystemObject"); |
| _g.inFile=env('/F'); |
| _g.outFile=env('/O'); |
| _g.tempFile=''; |
| if (_g.inFile=='') { |
| if (env('/C')) { |
| _g.tempFile=_g.fso.GetSpecialFolder(_g.TemporaryFolder).path+'\\'+_g.fso.GetTempName(); |
| _g.inFile=_g.tempFile; |
| input=stdin; |
| output=_g.fso.OpenTextFile(_g.tempFile,_g.ForWriting,true); |
| while (!stdin.AtEndOfStream) output.WriteLine(input.ReadLine()); |
| cnt=input.line-1; |
| output.close(); |
| input=_g.fso.OpenTextFile(_g.tempFile,_g.ForReading); |
| } else input=stdin; |
| } else { |
| if (env('/C')) { |
| input=_g.fso.OpenTextFile(_g.inFile,_g.ForReading); |
| while (!input.AtEndOfStream) input.SkipLine(); |
| cnt=input.line-1; |
| input.close(); |
| } |
| input=_g.fso.OpenTextFile(_g.inFile,_g.ForReading); |
| } |
| if (_g.outFile=='') { |
| output=stdout |
| } else if (_g.outFile=='-') { |
| output=_g.fso.OpenTextFile(_g.inFile+'.new',_g.ForWriting,true); |
| } else { |
| output=_g.fso.OpenTextFile(_g.outFile,_g.ForWriting,true); |
| } |
| if (env('/JLIB')) { |
| _g.loc=' while loading /JLIB code'; |
| var libs=env('/JLIB').split('/'); |
| for (var i=0; i<libs.length; i++) { |
| var lib=_g.fso.OpenTextFile(libs[i],_g.ForReading); |
| if (!lib.AtEndOfStream) eval(lib.ReadAll()); |
| lib.close(); |
| } |
| _g.loc=''; |
| } |
| _g.loc=' in /JBEG code'; |
| eval(env( env('/V') ? env('/JBEG') : '/JBEG' )); |
| _g.loc=''; |
| |
| _g.fmtNum=function(val,pad){return pad.length==0 ? '' : lpad(val,pad)+':';} |
| |
| _g.writeMatch=function(str,off,lnPad,offPad) { |
| if (str!==false) { |
| _g.rtn=0; |
| output.WriteLine(_g.fmtNum(ln,lnPad)+_g.fmtNum(off,offPad)+str); |
| } |
| } |
| |
| _g.defineReplFunc=function() { |
| eval(_g.replFunc); |
| } |
| |
| _g.callBeginLine=function($txt) { |
| _g.loc=' in /JBEGLN code' |
| eval(_g.begLn); |
| _g.loc=''; |
| return $txt; |
| } |
| |
| _g.callEndLine=function($txt) { |
| _g.loc=' in /JENDLN code'; |
| eval(_g.endLn); |
| _g.loc=''; |
| return $txt; |
| } |
| |
| _g.main=function() { |
| _g.rtn=1; |
| var args=WScript.Arguments; |
| var search=args.Item(0); |
| var replace=args.Item(1); |
| var options="g"; |
| var multi=env('/M')!=''; |
| var literal=env('/L')!=''; |
| var alterations=env('/A')!=''; |
| var srcVar=env('/S'); |
| var jexpr=env('/J')!=''; |
| var jmatch=env('/JMATCH')!=''; |
| var translate=env('/T'); |
| _g.begLn=env('/JBEGLN'); |
| _g.endLn=env('/JENDLN'); |
| if (multi) options+='m'; |
| if (env('/V')) { |
| search=env(search); |
| replace=env(replace); |
| _g.begLn=env(_g.begLn); |
| _g.endLn=env(_g.endLn); |
| } |
| if (env('/I')) options+='i'; |
| |
| var lnWidth=parseInt(env('/N'),10), |
| offWidth=parseInt(env('/OFF'),10), |
| lnPad=lnWidth>0?Array(lnWidth+1).join('0'):'', |
| offPad=offWidth>0?Array(offWidth+1).join('0'):'', |
| xcnt=0, test; |
| if (translate=='none') { |
| if (env('/X')) { |
| if (!jexpr) replace=decode(replace); |
| search=decode(search,literal); |
| } |
| if (literal) { |
| search=search.replace(/([.^$*+?()[{\\|])/g,"\\$1"); |
| if (!jexpr) replace=replace.replace(/\$/g,"$$$$"); |
| } |
| if (env('/B')) search="^"+search; |
| if (env('/E')) search=search+"$"; |
| _g.loc=' in Search regular expression'; |
| search=new RegExp(search,options); |
| _g.log=''; |
| if (jexpr) { |
| _g.loc=' in Search regular expression'; |
| test=new RegExp('.|'+search,options); |
| _g.loc=''; |
| 'x'.replace(test,function(){xcnt=arguments.length-2; return '';}); |
| _g.replFunc='_g.replFunc=function($0'; |
| for (var i=1; i<xcnt; i++) _g.replFunc+=',$'+i; |
| _g.replFunc+=',$off,$src){_g.loc=" in Replace code";'+( jmatch ? '_g.writeMatch(eval(_g.replace),$off,\''+lnPad+'\',\''+offPad+'\');_g.loc="";return $0;}' : 'var rtn=eval(_g.replace);_g.log="";return rtn;}' ); |
| _g.defineReplFunc(); |
| } |
| _g.replace=replace; |
| } else { |
| if (translate.length>1) throw new Error(203, 'Invalid /T delimiter'); |
| search=search.split(translate); |
| if (search.length>99) throw new Error(202, '/T expression count exceeds 99'); |
| var replace=replace.split(translate); |
| if (search.length!=replace.length) throw new Error(201, 'Mismatched search and replace /T expressions'); |
| _g.replace=[]; |
| var j=1; |
| for (var i=0; i<search.length; i++) { |
| if (env('/X')) search[i]=decode(search[i],literal); |
| if (literal) { |
| search[i]=search[i].replace(/([.^$*+?()[{\\|])/g,"\\$1"); |
| } else { |
| _g.loc=' in Search regular expression'; |
| test=new RegExp('.|'+search[i],options); |
| _g.loc=''; |
| 'x'.replace(test,function(){xcnt=arguments.length-3;return '';}); |
| } |
| if (j+xcnt>99) throw new Error(202, '/T expressions + captured expressions exceeds 99'); |
| if (env('/B')) search[i]="^"+search[i]; |
| if (env('/E')) search[i]=search[i]+"$"; |
| if (jexpr) { |
| _g.replace[j]=replace[i]; |
| } else { |
| replace[i]="'" + (env('/X')==''?replace[i]:decode(replace[i])).replace(/[\\']/g,"\\$&") + "'"; |
| replace[i]=replace[i].replace(/\n/g, "\\n"); |
| replace[i]=replace[i].replace(/\r/g, "\\r"); |
| if (!literal) { |
| _g.replace[j]=replace[i].replace( |
| /\$([$&`0]|\\'|(\d)(\d)?)/g, |
| function($0,$1,$2,$3){ |
| return ($1=="$") ? "$": |
| ($1=="&") ? "'+$0+'": |
| ($1=="`") ? "'+$src.substr(0,$off)+'": |
| ($1=="\\'") ? "'+$src.substr($off+$0.length)+'": |
| (Number($1)-j<=xcnt && Number($1)>=j) ? "'+"+$0+"+'": |
| (Number($2)-j<=xcnt && Number($2)>=j) ? "'+$"+$2+"+'"+$3: |
| $0; |
| } |
| ); |
| } else _g.replace[j]=replace[i]; |
| } |
| j+=xcnt+1; |
| } |
| search='('+search.join(')|(')+')'; |
| _g.loc=' in Search regular expression'; |
| search=new RegExp( search, options ); |
| _g.loc=''; |
| _g.replFunc='_g.replFunc=function($0'; |
| for (var i=1; i<j; i++) _g.replFunc+=',$'+i; |
| _g.replFunc+=',$off,$src){_g.loc=" in Replace code"; for (var i=1;i<arguments.length-2;i++) if (arguments[i]!==undefined) '; |
| _g.replFunc+= jmatch ? '{_g.writeMatch(eval(_g.replace[i]),$off,\''+lnPad+'\',\''+offPad+'\');_g.loc="";return $0;}}' : '{var rtn=eval(_g.replace[i]);_g.loc="";return rtn;}}'; |
| _g.defineReplFunc(); |
| jexpr=true; |
| } |
| |
| var str1, str2; |
| var repl=jexpr?_g.replFunc:_g.replace; |
| if (srcVar) { |
| str1=env(srcVar); |
| str2=str1.replace(search,repl); |
| if (!jmatch) if (!alterations || str1!=str2) if (multi) { |
| output.Write(_g.fmtNum(ln,lnPad)+str2); |
| } else { |
| output.WriteLine(_g.fmtNum(ln,lnPad)+str2); |
| } |
| if (str1!=str2) _g.rtn=0; |
| } else if (multi){ |
| var buf=1024; |
| str1=""; |
| while (!input.AtEndOfStream) { |
| str1+=input.Read(buf); |
| buf*=2 |
| } |
| str2=str1.replace(search,repl); |
| if (!jmatch) output.Write(_g.fmtNum(ln,lnPad)+str2); |
| if (str1!=str2) _g.rtn=0; |
| } else { |
| while (!input.AtEndOfStream && !quit) { |
| str2=str1=input.ReadLine(); |
| ln++; |
| if (_g.begLn) str2=_g.callBeginLine(str2); |
| if (!skip) str2=str2.replace(search,repl); |
| if (_g.endLn) str2=_g.callEndLine(str2); |
| if (str2!==false && !jmatch && (!alterations || str1!=str2)) output.WriteLine(_g.fmtNum(ln,lnPad)+str2); |
| if (str1!=str2 && !jmatch) _g.rtn=0; |
| } |
| } |
| } |
| |
| _g.main(); |
| |
| _g.loc=' in /JEND code'; |
| eval(env( env('/V') ? env('/JEND') : '/JEND' )); |
| _g.loc=''; |
| if (_g.inFile) input.close(); |
| if (_g.outFile) output.close(); |
| if (_g.outFile=='-') { |
| _g.fso.GetFile(_g.inFile).Delete(); |
| _g.fso.GetFile(_g.inFile+'.new').Move(_g.inFile); |
| } |
| if (_g.tempFile) _g.fso.GetFile(_g.tempFile).Delete(); |
| WScript.Quit(_g.rtn); |
| } catch(e) { |
| WScript.Stderr.WriteLine("JScript runtime error"+_g.loc+": "+e.message); |
| WScript.Quit(3); |
| } |
| |
| function decode(str, searchSwitch) { |
| str=str.replace( |
| /\\(\\|b|f|n|q|r|t|v|x80|x82|x83|x84|x85|x86|x87|x88|x89|x8[aA]|x8[bB]|x8[cC]|x8[eE]|x91|x92|x93|x94|x95|x96|x97|x98|x99|x9[aA]|x9[bB]|x9[cC]|x9[dD]|x9[eE]|x9[fF]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4})/g, |
| function($0,$1) { |
| switch ($1.toLowerCase()) { |
| case 'q': return '"'; |
| case 'x80': return '\u20AC'; |
| case 'x82': return '\u201A'; |
| case 'x83': return '\u0192'; |
| case 'x84': return '\u201E'; |
| case 'x85': return '\u2026'; |
| case 'x86': return '\u2020'; |
| case 'x87': return '\u2021'; |
| case 'x88': return '\u02C6'; |
| case 'x89': return '\u2030'; |
| case 'x8a': return '\u0160'; |
| case 'x8b': return '\u2039'; |
| case 'x8c': return '\u0152'; |
| case 'x8e': return '\u017D'; |
| case 'x91': return '\u2018'; |
| case 'x92': return '\u2019'; |
| case 'x93': return '\u201C'; |
| case 'x94': return '\u201D'; |
| case 'x95': return '\u2022'; |
| case 'x96': return '\u2013'; |
| case 'x97': return '\u2014'; |
| case 'x98': return '\u02DC'; |
| case 'x99': return '\u2122'; |
| case 'x9a': return '\u0161'; |
| case 'x9b': return '\u203A'; |
| case 'x9c': return '\u0153'; |
| case 'x9d': return '\u009D'; |
| case 'x9e': return '\u017E'; |
| case 'x9f': return '\u0178'; |
| default: return searchSwitch===false ? $0 : eval('"'+$0+'"'); |
| } |
| } |
| ); |
| return str; |
| } |
| |
| function lpad( val, pad ) { |
| var rtn=val.toString(); |
| return (rtn.length<pad.length) ? (pad+rtn).slice(-pad.length) : val; |
| }COPY |