You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

87 lines
2.9KB

  1. var мир = {};
  2. мир.uuid = function()
  3. {
  4. // https://stackoverflow.com/a/2117523
  5. return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(
  6. /[xy]/g,
  7. function(c)
  8. {
  9. var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
  10. return v.toString(16);
  11. }
  12. );
  13. };
  14. мир.вZ64 = function(строка)
  15. {
  16. var байты = new TextEncoder("utf-8").encode(строка);
  17. var архив = pako.deflate(байты, { to: 'string' });
  18. return base64js.fromByteArray(архив);
  19. };
  20. мир.изZ64 = function(строка)
  21. {
  22. var архив = base64js.toByteArray(строка);
  23. var байты = pako.inflate(архив);
  24. return new TextDecoder("utf-8").decode(байты);
  25. };
  26. мир.задатьПолныйКлюч = function(словарь, полныйКлюч, значение) {
  27. var путь = полныйКлюч.split(".");
  28. var пройти = путь.length - 1;
  29. var вложенность = словарь;
  30. for (var номер = 0; номер < пройти; ++номер)
  31. {
  32. var ключ = путь[номер];
  33. if (!(ключ in вложенность))
  34. {
  35. вложенность[ключ] = {};
  36. вложенность = вложенность[ключ];
  37. }
  38. }
  39. // Значение в конце вложенности.
  40. var ключ = путь[пройти];
  41. вложенность[ключ] = значение;
  42. };
  43. мир.назначитьКнопкамСобытия = function(события, список)
  44. {
  45. for (var номер in список)
  46. {
  47. const пара = список[номер];
  48. var кнопка = document.getElementById(пара[0]);
  49. кнопка.addEventListener("click", function(_) {
  50. события.уведомить(пара[1]);
  51. });
  52. }
  53. };
  54. мир.параметрыЗапуска = function()
  55. {
  56. var параметры = {};
  57. var запрос = window.location.search.substring(1);
  58. var аргументы = запрос.split("&");
  59. for (var номер in аргументы)
  60. {
  61. var арг = аргументы[номер];
  62. var позицияЗнака = арг.indexOf("=");
  63. // Лишь ключ.
  64. if (позицияЗнака == -1)
  65. {
  66. var ключ = decodeURIComponent(арг);
  67. параметры[ключ] = null;
  68. }
  69. // Ключ со значением.
  70. else
  71. {
  72. var сыройКлюч = арг.slice(0, позицияЗнака);
  73. var сыроеЗначение = арг.slice(позицияЗнака + 1);
  74. var ключ = decodeURIComponent(сыройКлюч);
  75. var значение = decodeURIComponent(сыроеЗначение);
  76. параметры[ключ] = значение;
  77. }
  78. }
  79. return параметры;
  80. };