home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2003 October / PCWELT_10_2003.ISO / pcwsoft / CUCKOO.z.exe / math-gen.js < prev    next >
Encoding:
JavaScript  |  2002-01-29  |  8.4 KB  |  250 lines

  1. /*
  2.  * WSH script.
  3.  * To run after cuckoo-gen.js.
  4.  * Recommended version of WSH: 5.6 and above for WScript.CurrentDirectory.
  5.  * Usage:
  6.  * math-gen.js /dir:source-directory|/file:file [/toDir:target-directory]
  7.  * Example:
  8.  * math-gen.js /dir:D:\cuckoo /toDir:D:\cuckoo
  9.  * math-gen.js /file:D:\cuckoo\myfile.html /toDir:D:\cuckoo
  10.  */
  11. var argsNamed = WScript.Arguments.Named;
  12. if (argsNamed.Exists("dir")) {
  13.     var fso = new ActiveXObject("Scripting.FileSystemObject");
  14.     var dir = argsNamed.Item("dir");
  15.     if (fso.FolderExists(dir)) {
  16.         var todir = null;
  17.         if (argsNamed.Exists("toDir"))
  18.             todir = argsNamed.Item("toDir");
  19.         else
  20.             toDir = dir;
  21.         var fold = fso.GetFolder(dir);
  22.         var files = new Enumerator(fold.Files);
  23.         for (; !files.atEnd(); files.moveNext()) {
  24.             var n = files.item().Name;
  25.             var l = n.length - "-nav6.html".length;
  26.             var s = n.substring(0, l);
  27.             if (n.substring(l) == "-nav6.html")
  28.                 process(dir + "\\" + s, todir + "\\" + s);
  29.         }
  30.     }
  31. } else {
  32.     if (argsNamed.Exists("file")) {
  33.         var name = argsNamed.Item("file");
  34.         var l = name.length - "-nav6.html".length;
  35.         var s = name.substring(0, l);
  36.         if (name.substring(l) == "-nav6.html") {
  37.             if (argsNamed.Exists("toDir")) {
  38.                 toDir = argsNamed.Item("toDir");
  39.                 var pos = s.lastIndexOf("\\");
  40.                 var f1 = s.substring(pos);
  41.                 process(s, toDir + f1);
  42.             } else
  43.                 process(s, s);
  44.         }
  45.     } else
  46.         WScript.Echo(
  47.             "Usage: math-gen.js /dir:source-directory|/file:file [/toDir:target-directory]");
  48. }
  49. /**
  50.  * Generates xxxx.html and xxxx-ie5.html from xxxx-nav6.html.
  51.  * Parameters:
  52.  * Source xxxx
  53.  * Destination xxxx
  54.  */
  55. function process(source, dest) {    
  56.     var out = WScript.CreateObject("Scripting.FileSystemObject");
  57.     var f = out.GetFile(source + "-nav6.html");
  58.     var is = f.OpenAsTextStream( 1, 0 );
  59.     if (is == null)
  60.         return;
  61.     var page = "";
  62.     var count = 0;
  63.     while( !is.AtEndOfStream ) {
  64.         page += (is.ReadLine() + "\r\n");
  65.         count ++;
  66.     }
  67.     if (count == 0)
  68.         return;
  69.     page = processSymbol(page);
  70.     page = processGreek(page);
  71.     page = page.replace('</div>', '</div>\r\n<script>\r\n' +
  72.       'function redirect() {\r\n' +
  73.       'window.location = window.location.toString().replace(".html", "-nav6.html");\r\n}\r\n' +
  74.       'var agt=navigator.userAgent.toLowerCase();\r\n' +
  75.       'var is_major = parseInt(navigator.appVersion);\r\n' +
  76.       'var is_nav  = ((agt.indexOf("mozilla")!=-1) && (agt.indexOf("spoofer")==-1)' +
  77.       '&& (agt.indexOf("compatible") == -1) && (agt.indexOf("opera")==-1)' +
  78.       '&& (agt.indexOf("webtv")==-1) && (agt.indexOf("hotjava")==-1));' +
  79.       'var is_nav6up = (is_nav && (is_major >= 5));\r\n' +
  80.       'var is_gecko = (agt.indexOf("gecko") != -1);\r\n' +
  81.       'var is_opera6 = (agt.indexOf("opera 6") != -1 || agt.indexOf("opera/6") != -1);\r\n' +
  82.       'if (is_nav6up || is_gecko || is_opera6)\r\nsetTimeout("redirect();", 10);\r\n' +
  83.       '</script>\r\n');
  84.     var o = out.CreateTextFile(dest + ".html", true, false);
  85.     o.write(page);
  86.     o.close();
  87. }
  88. /**
  89.  * Converts math symbols from unicode to symbol font.
  90.  * Parameter:
  91.  * str page string
  92.  * Returns converted page string.
  93.  */
  94. function processSymbol(str) {
  95.     var code = /∂/g;
  96.     page = str.replace(code, '¶');
  97.     code = /∏/g;
  98.     page = page.replace(code, 'Õ');
  99.     code = /∑/g;
  100.     page = page.replace(code, 'å');
  101.     code = /√/g;
  102.     page = page.replace(code, 'Ö');
  103.     code = /∞/g;
  104.     page = page.replace(code, '¥');
  105.     code = /∩/g;
  106.     page = page.replace(code, 'Ç');
  107.     code = /∪/g;
  108.     page = page.replace(code, 'È');
  109.     code = /∫/g;
  110.     page = page.replace(code, '¦');
  111.     code = /≈/g;
  112.     page = page.replace(code, '»');
  113.     code = /≠/g;
  114.     page = page.replace(code, '¹');
  115.     code = /≡/g;
  116.     page = page.replace(code, 'º');
  117.     code = /≤/g;
  118.     page = page.replace(code, '£');
  119.     code = /≥/g;
  120.     page = page.replace(code, '³');
  121.     code = /∀/g;
  122.     page = page.replace(code, '"');
  123.     code = /∃/g;
  124.     page = page.replace(code, '$');
  125.     code = /⊃/g;
  126.     page = page.replace(code, 'É');
  127.     code = /⊇/g;
  128.     page = page.replace(code, 'Ê');
  129.     code = /⊄/g;
  130.     page = page.replace(code, 'Ë');
  131.     code = /⊂/g;
  132.     page = page.replace(code, 'Ì');
  133.     code = /⊆/g;
  134.     page = page.replace(code, 'Í');
  135.     code = /∈/g;
  136.     page = page.replace(code, 'Î');
  137.     code = /∉/g;
  138.     page = page.replace(code, 'Ï');
  139.     return page;
  140. }
  141. /**
  142.  * Converts greek characters from unicode to symbol font.
  143.  * Parameter:
  144.  * str page string
  145.  * Returns converted page string.
  146.  */
  147. function processGreek(str) {
  148.     // lower case
  149.     var code = /α/g;
  150.     page = str.replace(code, 'a');
  151.     var code = /β/g;
  152.     page = page.replace(code, 'b');
  153.     var code = /γ/g;
  154.     page = page.replace(code, 'g');
  155.     var code = /δ/g;
  156.     page = page.replace(code, 'd');
  157.     var code = /ε/g;
  158.     page = page.replace(code, 'e');
  159.     var code = /ζ/g;
  160.     page = page.replace(code, 'z');
  161.     var code = /η/g;
  162.     page = page.replace(code, 'h');
  163.     var code = /θ/g;
  164.     page = page.replace(code, 'q');
  165.     var code = /ι/g;
  166.     page = page.replace(code, 'i');
  167.     var code = /κ/g;
  168.     page = page.replace(code, 'k');
  169.     var code = /λ/g;
  170.     page = page.replace(code, 'l');
  171.     var code = /μ/g;
  172.     page = page.replace(code, 'm');
  173.     var code = /ν/g;
  174.     page = page.replace(code, 'n');
  175.     var code = /ξ/g;
  176.     page = page.replace(code, 'x');
  177.     var code = /ο/g;
  178.     page = page.replace(code, 'o');
  179.     var code = /π/g;
  180.     page = page.replace(code, 'p');
  181.     var code = /ρ/g;
  182.     page = page.replace(code, 'r');
  183.     var code = /ς/g;
  184.     page = page.replace(code, 'V');
  185.     var code = /σ/g;
  186.     page = page.replace(code, 's');
  187.     var code = /τ/g;
  188.     page = page.replace(code, 't');
  189.     var code = /υ/g;
  190.     page = page.replace(code, 'u');
  191.     var code = /φ/g;
  192.     page = page.replace(code, 'f');
  193.     var code = /χ/g;
  194.     page = page.replace(code, 'c');
  195.     var code = /ψ/g;
  196.     page = page.replace(code, 'y');
  197.     var code = /ω/g;
  198.     page = page.replace(code, 'w');
  199.     // upper case
  200.     var code = /Α/g;
  201.     page = page.replace(code, 'A');
  202.     var code = /Β/g;
  203.     page = page.replace(code, 'B');
  204.     var code = /Γ/g;
  205.     page = page.replace(code, 'G');
  206.     var code = /Δ/g;
  207.     page = page.replace(code, 'D');
  208.     var code = /Ε/g;
  209.     page = page.replace(code, 'E');
  210.     var code = /Ζ/g;
  211.     page = page.replace(code, 'Z');
  212.     var code = /Η/g;
  213.     page = page.replace(code, 'H');
  214.     var code = /Θ/g;
  215.     page = page.replace(code, 'Q');
  216.     var code = /Ι/g;
  217.     page = page.replace(code, 'I');
  218.     var code = /Κ/g;
  219.     page = page.replace(code, 'K');
  220.     var code = /Λ/g;
  221.     page = page.replace(code, 'L');
  222.     var code = /Μ/g;
  223.     page = page.replace(code, 'M');
  224.     var code = /Ν/g;
  225.     page = page.replace(code, 'N');
  226.     var code = /Ξ/g;
  227.     page = page.replace(code, 'X');
  228.     var code = /Ο/g;
  229.     page = page.replace(code, 'O');
  230.     var code = /Π/g;
  231.     page = page.replace(code, 'P');
  232.     var code = /Ρ/g;
  233.     page = page.replace(code, 'R');
  234.     var code = /Σ/g;
  235.     page = page.replace(code, 'S');
  236.     var code = /Τ/g;
  237.     page = page.replace(code, 'T');
  238.     var code = /Υ/g;
  239.     page = page.replace(code, 'U');
  240.     var code = /Φ/g;
  241.     page = page.replace(code, 'F');
  242.     var code = /Χ/g;
  243.     page = page.replace(code, 'C');
  244.     var code = /Ψ/g;
  245.     page = page.replace(code, 'Y');
  246.     var code = /Ω/g;
  247.     page = page.replace(code, 'W');
  248.     return page;
  249. }
  250.