25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

74 lines
2.3KB

  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. {
  28. for (var номер in список)
  29. {
  30. const пара = список[номер];
  31. var кнопка = document.getElementById(пара[0]);
  32. кнопка.addEventListener("click", function(_) {
  33. события.уведомить(пара[1]);
  34. });
  35. }
  36. };
  37. мир.параметрыЗапуска = function()
  38. {
  39. var параметры = {};
  40. var запрос = window.location.search.substring(1);
  41. var аргументы = запрос.split("&");
  42. for (var номер in аргументы)
  43. {
  44. var арг = аргументы[номер];
  45. var позицияЗнака = арг.indexOf("=");
  46. // Лишь ключ.
  47. if (позицияЗнака == -1)
  48. {
  49. var ключ = decodeURIComponent(арг);
  50. параметры[ключ] = null;
  51. }
  52. // Ключ со значением.
  53. else
  54. {
  55. var сыройКлюч = арг.slice(0, позицияЗнака);
  56. var сыроеЗначение = арг.slice(позицияЗнака + 1);
  57. var ключ = decodeURIComponent(сыройКлюч);
  58. var значение = decodeURIComponent(сыроеЗначение);
  59. параметры[ключ] = значение;
  60. }
  61. }
  62. return параметры;
  63. };
  64. мир.разобрать = function(словарь)
  65. {
  66. мир.состояние.разобрать(словарь);
  67. };