lib:range

adds range function to allow for i of range(0, 10, step:optional)

  1. // ==UserScript==
  2. // @name lib:range
  3. // @version 8
  4. // @description adds range function to allow for i of range(0, 10, step:optional)
  5. // @license GPLv3
  6. // @run-at document-start
  7. // @author rssaromeo
  8. // @match *://*/*
  9. // @include *
  10. // @tag lib
  11. // @exclude /livereload.net\/files\/ffopen\/index.html$/
  12. // @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=
  13. // @grant none
  14. // @namespace https://gf.qytechs.cn/users/1184528
  15. // ==/UserScript==
  16. ;(() => {
  17. const a = loadlib("allfuncs")
  18. loadlib("libloader").savelib("range", range)
  19. function range(
  20. n1,
  21. n2=undefined,
  22. step =1
  23. ) {
  24. if (n2 == undefined) {
  25. n2 = n1
  26. n1 = 1
  27. }
  28. if (!(String(n1).endsWith("0") && String(n1).length > 7))
  29. n1 = Number(n1)
  30. if (!(String(n2).endsWith("0") && String(n2).length > 7))
  31. n2 = Number(n2)
  32. if (n1>n2==step>0){
  33. step*=-1
  34. }
  35. var places = Math.max(String(n1).match(/\.(.*)/)?.[1]?.length??0, String(n2).match(/\.(.*)/)?.[1]?.length??0,String(n1+step).match(/\.(.*)/)?.[1]?.length??0,String(n2+step).match(/\.(.*)/)?.[1]?.length??0)
  36. var arr = []
  37. var i = n1
  38. var namedrange = new (class range {
  39. constructor() {
  40. this.from = n1
  41. this.to = n2
  42. }
  43. })()
  44. Object.getPrototypeOf(arr).name = "asd"
  45. return new Proxy(namedrange, {
  46. get(_obj, prop) {
  47. if (prop !== Symbol.iterator)
  48. return Reflect.get(namedrange, prop)
  49. return function* () {
  50. while (true) {
  51. yield i
  52. i += step
  53. i = Number(a.toplaces(i, undefined, places))
  54. if (n2>n1&&i > n2||(n1>n2&&i<n2)) break
  55. }
  56. }
  57. },
  58. })
  59. }
  60. })()

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址