string.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. var RTL$ = {
  2. makeArray: function (/*dimensions, initializer*/){
  3. var forward = Array.prototype.slice.call(arguments);
  4. var result = new Array(forward.shift());
  5. var i;
  6. if (forward.length == 1){
  7. var init = forward[0];
  8. if (typeof init == "function")
  9. for(i = 0; i < result.length; ++i)
  10. result[i] = init();
  11. else
  12. for(i = 0; i < result.length; ++i)
  13. result[i] = init;
  14. }
  15. else
  16. for(i = 0; i < result.length; ++i)
  17. result[i] = RTLMakeArray.apply(this, forward);
  18. return result;
  19. },
  20. assignArrayFromString: function (a, s){
  21. var i;
  22. for(i = 0; i < s.length; ++i)
  23. a[i] = s.charCodeAt(i);
  24. for(i = s.length; i < a.length; ++i)
  25. a[i] = 0;
  26. },
  27. strToArray: function (s){
  28. var result = new Array(s.length);
  29. for(i = 0; i < s.length; ++i)
  30. result[i] = s.charCodeAt(i);
  31. return result;
  32. },
  33. assert: function (condition, code){
  34. if (!condition)
  35. throw new Error("assertion failed"
  36. + ((code !== undefined) ? " with code " + code : ""));
  37. }
  38. };
  39. var m = function (){
  40. var s1 = "\"";
  41. var s2 = "ABC";
  42. var s3 = "with space";
  43. var ch1 = 0;
  44. var a2 = RTL$.makeArray(3, 0);
  45. function p1(s/*ARRAY OF CHAR*/){
  46. }
  47. function p2(c/*CHAR*/){
  48. }
  49. ch1 = 34;
  50. RTL$.assignArrayFromString(a2, s1);
  51. RTL$.assignArrayFromString(a2, s2);
  52. p1(RTL$.strToArray(s1));
  53. p1(RTL$.strToArray(s2));
  54. p2(34);
  55. RTL$.assert(ch1 == 34);
  56. RTL$.assert(34 == ch1);
  57. }();