(DISTFILES): Comment out a few missing files.
[mono-project.git] / mcs / class / Mono.PEToolkit / build / srcgen / xslt.wsf
blobea99a085bb937d9c517725070c95149809dbb6f1
1 <?xml version="1.0"?>
3 <!--
4 | Author: Sergey Chaban <serge@wildwestsoftware.com>
5 -->
7 <job id="xslt">
9 <runtime>
11 <description></description>
13 <named name="inFile"
14 type="string"
15 required="true"
16 helpstring=""
19 <named name="styleFile"
20 type="string"
21 required="true"
22 helpstring=""
25 <named name="outFile"
26 type="string"
27 required="false"
28 helpstring=""
32 <named name="unicode"
33 type="boolean"
34 required="false"
35 helpstring=""
38 <named name="timestamp"
39 type="boolean"
40 required="false"
41 helpstring=""
45 <named name="timing"
46 type="boolean"
47 required="false"
48 helpstring=""
51 <unnamed name="params"
52 type="string"
53 many="true"
54 required="false"
55 helpstring=""
58 </runtime>
60 <script language="JScript"><![CDATA[
62 function Filter(str) {
63 this.data=str.split("\r\n");
64 this.namespaces=new Array();
65 this.pos=0;
66 this.numLines=0;
67 this.docComment=false;
68 this.indent="";
69 this.readLine=Filter_readLine;
72 function Filter_readLine() {
74 if (this.data==null
75 || this.data.length==0
76 || this.pos>=this.data.length)
77 return null;
79 var res=this.data[this.pos++];
81 if (res.charCodeAt(0)==127) {
82 this.docComment^=true;
83 if (this.docComment) {
84 var n=res.charCodeAt(1)-0x30;
85 this.indent="";
86 for (var i=0;i<n;i++,this.indent+="\t");
88 res=this.readLine();
89 } else if (this.docComment) {
90 res=this.indent+"/// "+res;
91 } else if (res.charCodeAt(0)==126) {
92 var ns=res.substr(1);
93 if (this.namespaces[ns]==null) {
94 this.namespaces[ns]=true;
95 res="using "+ns+";";
96 } else {
97 res=this.readLine();
100 ++this.numLines;
101 return res;
106 var isUnicode=false;
107 var timestamp=true;
108 var timing=false;
110 var start=0;
111 var ellapsed=0;
114 function writeFile(fileName,data) {
115 var res=0;
116 try {
117 var fso=WScript.CreateObject("Scripting.FileSystemObject");
118 var txtStream=fso.CreateTextFile(fileName,true,isUnicode);
119 if (false) {
120 txtStream.Write(data);
121 } else {
122 var filter=new Filter(data);
123 var str=filter.readLine();
124 while (str!=null) {
125 txtStream.WriteLine(str);
126 str=filter.readLine();
128 res=filter.numLines;
130 txtStream.Close();
131 } catch (e) {
132 WScript.Echo("writeFile() error: "+e);
134 return res;
137 var xmlFile=WScript.Arguments.Named.Item("inFile");
138 var xslFile=WScript.Arguments.Named.Item("styleFile");
139 var outFile=WScript.Arguments.Named.Item("outFile");
141 var unicodeFlag=WScript.Arguments.Named.Item("unicode");
142 isUnicode=(unicodeFlag!=null)?unicodeFlag:false;
144 var timestampFlag=WScript.Arguments.Named.Item("timestamp");
145 timestamp=(timestampFlag!=null)?timestampFlag:true;
147 var timingFlag=WScript.Arguments.Named.Item("timing");
148 timing=(timingFlag!=null)?timingFlag:false;
150 var writeToFile=(outFile!=null);
152 var params=new Array();
155 for (var i=0;i<WScript.Arguments.Unnamed.Count;i++) {
156 var prm=WScript.Arguments.Unnamed.Item(i);
157 var nv=prm.split("=");
158 if (nv.length==2) {
159 params[params.length]={name:nv[0],value:nv[1]};
163 if (timestamp) {
164 params[params.length]={name:"time-stamp",value:(new Date()).toGMTString()};
167 var res;
168 var xmlObj,xslObj;
170 var xmlVer="";
172 try {
173 xmlObj=WScript.CreateObject("Msxml2.FreeThreadedDOMDocument"+xmlVer);
174 xslObj=WScript.CreateObject("Msxml2.FreeThreadedDOMDocument"+xmlVer);
175 } catch (e) {
176 WScript.Echo("This script requires MSXML 3.0 (release) or better.")
177 WScript.Quit(-1);
181 xmlObj.async=false;
182 res=xmlObj.load(xmlFile);
183 if (!res) {
184 WScript.Echo("Unable to load source file.")
185 WScript.Quit(-1);
188 xslObj.async=false;
189 res=xslObj.load(xslFile);
190 if (!res) {
191 WScript.Echo("Unable to load stylesheet file.")
192 WScript.Quit(-1);
195 var template=WScript.CreateObject("Msxml2.XSLTemplate"+xmlVer);
196 template.stylesheet=xslObj;
197 var processor=template.createProcessor();
198 processor.input=xmlObj;
199 for (var i in params) {
200 processor.addParameter(params[i].name,params[i].value);
203 start=(new Date()).valueOf();
204 res=processor.transform();
205 ellapsed=(new Date()).valueOf()-start;
207 if (timing) {
208 WScript.Echo("Transform took "+ellapsed+" ms.")
211 var n=0;
212 var output=processor.output;
214 if (writeToFile) {
215 n=writeFile(outFile,output);
216 } else {
217 var filter=new Filter(output);
218 var str=filter.readLine();
219 while (str!=null) {
220 WScript.Echo(str);
221 str=filter.readLine();
223 n=filter.numLines;
227 WScript.Quit(0);
229 ]]></script>
231 </job>