scratch extesion: json by rssaromeo

none

目前為 2025-01-26 提交的版本,檢視 最新版本

  1. // ==UserScript==
  2. // @name scratch extesion: json by rssaromeo
  3. // @version 1
  4. // @description none
  5. // @run-at document-start
  6. // @author rssaromeo
  7. // @tag lib
  8. // @license GPLv3
  9. // @match *://*/*
  10. // @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAMAAABiM0N1AAAAAXNSR0IB2cksfwAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAHJQTFRFAAAAEIijAo2yAI60BYyuF4WaFIifAY6zBI2wB4usGIaZEYigIoiZCIyrE4igG4iYD4mjEomhFoedCoqpDIqnDomlBYyvE4efEYmiDYqlA42xBoytD4mkCYqqGYSUFYidC4qoC4upAo6yCoupDYqmCYur4zowOQAAACZ0Uk5TAO////9vr////1+/D/+/L+/Pf/////+f3///////H4////////+5G91rAAACgUlEQVR4nM2Y22KjIBCGidg1264liZqDadK03X3/V2wNKHMC7MpF/xthHD5mgERAqZhWhfYqH6K+Qf2qNNf625hCoFj9/gblMUi5q5jLkXLCKudgyiRm0FMK82cWJp1fLbV5VmvJbCIc0GCYaFqqlDJgADdBjncqAXYobm1xh72aFMflbysteFfdy2Yi1XGOm5HGBzQ1dq7TzEoxjeNTjQZb7VA3e1c7+ImgasAgQ9+xusNVNZIo5xmOMgihIS2PbCQIiHEUdTvhxCcS/kPomfFI2zHy2PkWmA6aNatIJpKFJyekyy02xh5Y3DI9T4aOT6VhIUrsNTFp1pf79Z4SIIVDegl6IJO6cHiL/GimIZDhgTu/BlYWCQzHMl0zBWT/T3KAhtxOuUB9FtBrpsz0RV4xsjHmW+UCaffcSy/5viMGer0/6HdFNMZBq/vjJL38H9Dqx4Fuy0Em12DbZy+9pGtiDijbglwAehyj11n0tRD3WUBm+lwulE/8h4BuA+iWAQQnteg2Xm63WQLTpnMnpjdge0Mgu/GRPsV4xdjQ94Lfi624fabhDkfUqIKNrM64Q837v8yL0prasepCgrtvw1sJpoqanGEX7b5mQboNW8eawXaWXTMfMGxub472hzWzHSn6Sg2G9+6TAyRruE71s+zAzjWaknoyJCQzwxrghH2k5FDT4eqWunuNxyN9QCGcxVod5oADbYnIUkDTGZEf1xDJnSFteQ3KdsT8zYDMQXcHxsevcLH1TrsABzkNPyA/L7b0jg704viMMlpQI96WsHknCt/3YH0kOEo9zcGkwrFK39ck72rmoehmKqo2RKlilzSy/nJKEV45CT38myJp456fezktHjN5aeMAAAAASUVORK5CYII=
  11. // @grant none
  12. // @namespace https://greasyfork.org/users/1184528
  13. // ==/UserScript==
  14.  
  15. ;(async () => {
  16. await loadlib("libloader").waitforlib("scratchextesnsionmanager")
  17. const {
  18. newext,
  19. newmenu,
  20. newblock,
  21. bt,
  22. inp,
  23. gettarget,
  24. totype,
  25. scratch_math,
  26. projectid,
  27. canvas,
  28. scratchvar,
  29. scratchlist,
  30. } = loadlib("scratchextesnsionmanager")
  31. var a = loadlib("allfuncs")
  32. var vm
  33. loadlib("libloader")
  34. .waitforlib("scratch")
  35. .then(() => (vm = loadlib("scratch").vm))
  36.  
  37. // var json = JSON.stringify({
  38. // test: "123",
  39. // 1212: [
  40. // {
  41. // a: 2,
  42. // },
  43. // [1, 2, 3, 65, 2, 4, "Asd", { zxc: "asdasd", test: "123123123" }],
  44. // ],
  45. // })
  46.  
  47. newext(
  48. "json",
  49. "rssaromeo",
  50. class {
  51. isjson({ data }) {
  52. try {
  53. JSON.parse(data)
  54. return true
  55. } catch (e) {
  56. return false
  57. }
  58. }
  59. jsonget({ data, path }) {
  60. return JSON.stringify(JSON.parse(data)[path])
  61. }
  62. jsonset({ data, path, set }) {
  63. var temp = JSON.parse(data)
  64. temp[path] = set
  65. return JSON.stringify(temp)
  66. }
  67. jsonhas({ data, path }) {
  68. return path in JSON.parse(data)
  69. }
  70. listtojson({ list }) {
  71. var [sprite, name] = JSON.parse(list)
  72. return JSON.stringify(scratchlist(name, undefined, sprite))
  73. }
  74. },
  75. [
  76. newblock(bt.bool, "isjson", "is json[data]?", [[inp.str, ""]]),
  77. newblock(bt.ret, "jsonget", "[data] get [path]", [
  78. [inp.str, ""],
  79. ]),
  80. newblock(bt.ret, "jsonset", "[data] set [path] to [set]", [
  81. [inp.str, ""],
  82. ]),
  83. newblock(bt.bool, "jsonhas", "is [path] in [data]?", [
  84. [inp.str, ""],
  85. ]),
  86. newblock(bt.ret, "listtojson", "[list] to json", [
  87. newmenu("listnames", { defaultValue: "" }),
  88. ]),
  89. ]
  90. )
  91. })()