home *** CD-ROM | disk | FTP | other *** search
- /*
- * WSH script.
- * To run after cuckoo-gen.js.
- * Recommended version of WSH: 5.6 and above for WScript.CurrentDirectory.
- * Usage:
- * math-gen.js /dir:source-directory|/file:file [/toDir:target-directory]
- * Example:
- * math-gen.js /dir:D:\cuckoo /toDir:D:\cuckoo
- * math-gen.js /file:D:\cuckoo\myfile.html /toDir:D:\cuckoo
- */
- var argsNamed = WScript.Arguments.Named;
- if (argsNamed.Exists("dir")) {
- var fso = new ActiveXObject("Scripting.FileSystemObject");
- var dir = argsNamed.Item("dir");
- if (fso.FolderExists(dir)) {
- var todir = null;
- if (argsNamed.Exists("toDir"))
- todir = argsNamed.Item("toDir");
- else
- toDir = dir;
- var fold = fso.GetFolder(dir);
- var files = new Enumerator(fold.Files);
- for (; !files.atEnd(); files.moveNext()) {
- var n = files.item().Name;
- var l = n.length - "-nav6.html".length;
- var s = n.substring(0, l);
- if (n.substring(l) == "-nav6.html")
- process(dir + "\\" + s, todir + "\\" + s);
- }
- }
- } else {
- if (argsNamed.Exists("file")) {
- var name = argsNamed.Item("file");
- var l = name.length - "-nav6.html".length;
- var s = name.substring(0, l);
- if (name.substring(l) == "-nav6.html") {
- if (argsNamed.Exists("toDir")) {
- toDir = argsNamed.Item("toDir");
- var pos = s.lastIndexOf("\\");
- var f1 = s.substring(pos);
- process(s, toDir + f1);
- } else
- process(s, s);
- }
- } else
- WScript.Echo(
- "Usage: math-gen.js /dir:source-directory|/file:file [/toDir:target-directory]");
- }
- /**
- * Generates xxxx.html and xxxx-ie5.html from xxxx-nav6.html.
- * Parameters:
- * Source xxxx
- * Destination xxxx
- */
- function process(source, dest) {
- var out = WScript.CreateObject("Scripting.FileSystemObject");
- var f = out.GetFile(source + "-nav6.html");
- var is = f.OpenAsTextStream( 1, 0 );
- if (is == null)
- return;
- var page = "";
- var count = 0;
- while( !is.AtEndOfStream ) {
- page += (is.ReadLine() + "\r\n");
- count ++;
- }
- if (count == 0)
- return;
- page = processSymbol(page);
- page = processGreek(page);
- page = page.replace('</div>', '</div>\r\n<script>\r\n' +
- 'function redirect() {\r\n' +
- 'window.location = window.location.toString().replace(".html", "-nav6.html");\r\n}\r\n' +
- 'var agt=navigator.userAgent.toLowerCase();\r\n' +
- 'var is_major = parseInt(navigator.appVersion);\r\n' +
- 'var is_nav = ((agt.indexOf("mozilla")!=-1) && (agt.indexOf("spoofer")==-1)' +
- '&& (agt.indexOf("compatible") == -1) && (agt.indexOf("opera")==-1)' +
- '&& (agt.indexOf("webtv")==-1) && (agt.indexOf("hotjava")==-1));' +
- 'var is_nav6up = (is_nav && (is_major >= 5));\r\n' +
- 'var is_gecko = (agt.indexOf("gecko") != -1);\r\n' +
- 'var is_opera6 = (agt.indexOf("opera 6") != -1 || agt.indexOf("opera/6") != -1);\r\n' +
- 'if (is_nav6up || is_gecko || is_opera6)\r\nsetTimeout("redirect();", 10);\r\n' +
- '</script>\r\n');
- var o = out.CreateTextFile(dest + ".html", true, false);
- o.write(page);
- o.close();
- }
- /**
- * Converts math symbols from unicode to symbol font.
- * Parameter:
- * str page string
- * Returns converted page string.
- */
- function processSymbol(str) {
- var code = /∂/g;
- page = str.replace(code, '¶');
- code = /∏/g;
- page = page.replace(code, 'Õ');
- code = /∑/g;
- page = page.replace(code, 'å');
- code = /√/g;
- page = page.replace(code, 'Ö');
- code = /∞/g;
- page = page.replace(code, '¥');
- code = /∩/g;
- page = page.replace(code, 'Ç');
- code = /∪/g;
- page = page.replace(code, 'È');
- code = /∫/g;
- page = page.replace(code, '¦');
- code = /≈/g;
- page = page.replace(code, '»');
- code = /≠/g;
- page = page.replace(code, '¹');
- code = /≡/g;
- page = page.replace(code, 'º');
- code = /≤/g;
- page = page.replace(code, '£');
- code = /≥/g;
- page = page.replace(code, '³');
- code = /∀/g;
- page = page.replace(code, '"');
- code = /∃/g;
- page = page.replace(code, '$');
- code = /⊃/g;
- page = page.replace(code, 'É');
- code = /⊇/g;
- page = page.replace(code, 'Ê');
- code = /⊄/g;
- page = page.replace(code, 'Ë');
- code = /⊂/g;
- page = page.replace(code, 'Ì');
- code = /⊆/g;
- page = page.replace(code, 'Í');
- code = /∈/g;
- page = page.replace(code, 'Î');
- code = /∉/g;
- page = page.replace(code, 'Ï');
- return page;
- }
- /**
- * Converts greek characters from unicode to symbol font.
- * Parameter:
- * str page string
- * Returns converted page string.
- */
- function processGreek(str) {
- // lower case
- var code = /α/g;
- page = str.replace(code, 'a');
- var code = /β/g;
- page = page.replace(code, 'b');
- var code = /γ/g;
- page = page.replace(code, 'g');
- var code = /δ/g;
- page = page.replace(code, 'd');
- var code = /ε/g;
- page = page.replace(code, 'e');
- var code = /ζ/g;
- page = page.replace(code, 'z');
- var code = /η/g;
- page = page.replace(code, 'h');
- var code = /θ/g;
- page = page.replace(code, 'q');
- var code = /ι/g;
- page = page.replace(code, 'i');
- var code = /κ/g;
- page = page.replace(code, 'k');
- var code = /λ/g;
- page = page.replace(code, 'l');
- var code = /μ/g;
- page = page.replace(code, 'm');
- var code = /ν/g;
- page = page.replace(code, 'n');
- var code = /ξ/g;
- page = page.replace(code, 'x');
- var code = /ο/g;
- page = page.replace(code, 'o');
- var code = /π/g;
- page = page.replace(code, 'p');
- var code = /ρ/g;
- page = page.replace(code, 'r');
- var code = /ς/g;
- page = page.replace(code, 'V');
- var code = /σ/g;
- page = page.replace(code, 's');
- var code = /τ/g;
- page = page.replace(code, 't');
- var code = /υ/g;
- page = page.replace(code, 'u');
- var code = /φ/g;
- page = page.replace(code, 'f');
- var code = /χ/g;
- page = page.replace(code, 'c');
- var code = /ψ/g;
- page = page.replace(code, 'y');
- var code = /ω/g;
- page = page.replace(code, 'w');
- // upper case
- var code = /Α/g;
- page = page.replace(code, 'A');
- var code = /Β/g;
- page = page.replace(code, 'B');
- var code = /Γ/g;
- page = page.replace(code, 'G');
- var code = /Δ/g;
- page = page.replace(code, 'D');
- var code = /Ε/g;
- page = page.replace(code, 'E');
- var code = /Ζ/g;
- page = page.replace(code, 'Z');
- var code = /Η/g;
- page = page.replace(code, 'H');
- var code = /Θ/g;
- page = page.replace(code, 'Q');
- var code = /Ι/g;
- page = page.replace(code, 'I');
- var code = /Κ/g;
- page = page.replace(code, 'K');
- var code = /Λ/g;
- page = page.replace(code, 'L');
- var code = /Μ/g;
- page = page.replace(code, 'M');
- var code = /Ν/g;
- page = page.replace(code, 'N');
- var code = /Ξ/g;
- page = page.replace(code, 'X');
- var code = /Ο/g;
- page = page.replace(code, 'O');
- var code = /Π/g;
- page = page.replace(code, 'P');
- var code = /Ρ/g;
- page = page.replace(code, 'R');
- var code = /Σ/g;
- page = page.replace(code, 'S');
- var code = /Τ/g;
- page = page.replace(code, 'T');
- var code = /Υ/g;
- page = page.replace(code, 'U');
- var code = /Φ/g;
- page = page.replace(code, 'F');
- var code = /Χ/g;
- page = page.replace(code, 'C');
- var code = /Ψ/g;
- page = page.replace(code, 'Y');
- var code = /Ω/g;
- page = page.replace(code, 'W');
- return page;
- }
-