SourceToString.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. //-------------------------------------------------------------------------------------------------------
  2. // Copyright (C) Microsoft. All rights reserved.
  3. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
  4. //-------------------------------------------------------------------------------------------------------
  5. var sources = [
  6. "/(?:)/",
  7. "",
  8. "(?:)",
  9. "/a\\tb/",
  10. "a\tb",
  11. "a\\tb",
  12. "/a\\nb/",
  13. "a\nb",
  14. "a\\nb",
  15. "/a\\x0ab/",
  16. "a\x0ab",
  17. "a\\x0ab",
  18. "/a\\u000ab/",
  19. "a\u000ab",
  20. "a\\u000ab"
  21. ];
  22. var sourceIndex = 0;
  23. var flags = ["g", "i", "m", "gi", "ig", "gm", "mg", "im", "mi", "gim", "gmi", "igm", "img", "mgi", "mig"];
  24. var flagIndex = 0;
  25. var n = Math.max(sources.length, flags.length);
  26. for(var i = 0; i < n; ++i) {
  27. var s = sources[sourceIndex++ % sources.length];
  28. var f = flags[flagIndex++ % flags.length];
  29. var r;
  30. if(s.charAt(0) === "/")
  31. r = eval(s + f);
  32. else
  33. r = new RegExp(s, f);
  34. runTest(r);
  35. }
  36. function runTest(r) {
  37. echo(r.source);
  38. echo(r.toString());
  39. }
  40. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  41. function echo() {
  42. var doEcho;
  43. if(this.WScript)
  44. doEcho = function (s) { this.WScript.Echo(s); };
  45. else if(this.document)
  46. doEcho = function (s) {
  47. var div = this.document.createElement("div");
  48. div.innerText = s;
  49. this.document.body.appendChild(div);
  50. };
  51. else
  52. doEcho = function (s) { this.print(s); };
  53. echo = function () {
  54. var s = "";
  55. for(var i = 0; i < arguments.length; ++i)
  56. s += arguments[i];
  57. doEcho(s);
  58. };
  59. echo.apply(this, arguments);
  60. }