您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Library for simplifying code logic and syntax
当前为
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.greasyfork.icu/scripts/487608/1360112/SyntaxSimplified.js
// ==UserScript== // @name SyntaxSimplified // @version 2024/04/14 // @author Canaan HS // @description Library for simplifying code logic and syntax // @namespace https://greasyfork.org/users/989635 // @match *://*/* // @license MIT // ==/UserScript== class Syntax{constructor(){this.Mark={};this.ListenerRecord={};this.Parser=new DOMParser;this.Buffer=document.createDocumentFragment();this.print={log:a=>console.log(a),warn:a=>console.warn(a),error:a=>console.error(a),count:a=>console.count(a)};this.query={Match:/[ .#=:]/,"#":(a,c)=>a.getElementById(c.slice(1)),".":(a,c,b)=>{a=a.getElementsByClassName(c.slice(1));return b?Array.from(a):a[0]},tag:(a,c,b)=>{a=a.getElementsByTagName(c);return b?Array.from(a):a[0]},"default":(a,c,b)=>b?a.querySelectorAll(c):a.querySelector(c)};this.StorageMatch={Type:a=>Object.prototype.toString.call(a).slice(8,-1),String:(a,c,b)=>null!=b?(a.setItem(c,JSON.stringify(b)),!0):JSON.parse(c),Number:(a,c,b)=>null!=b?(a.setItem(c,JSON.stringify(b)),!0):Number(c),Array:(a,c,b)=>null!=b?(a.setItem(c,JSON.stringify(b)),!0):(c=JSON.parse(c),Array.isArray(c[0])?new Map(c):c),Object:(a,c,b)=>null!=b?(a.setItem(c,JSON.stringify(b)),!0):JSON.parse(c),Boolean:(a,c,b)=>null!=b?(a.setItem(c,JSON.stringify(b)),!0):JSON.parse(c),Date:(a,c,b)=>null!=b?(a.setItem(c,JSON.stringify(b)),!0):new Date(c),Map:(a,c,b)=>(a.setItem(c,JSON.stringify([...b])),!0)}}$$(a,{all:c=!1,root:b=document}={}){const e=this.query.Match.test(a)?this.query.Match.test(a.slice(1))?"default":a[0]:"tag";return this.query[e](b,a,c)}DomParse(a){return this.Parser.parseFromString(a,"text/html")}NameFilter(a){return a.replace(/[\/\?<>\\:\*\|":]/g,"")}GetFill(a){return Math.max(2,`${a}`.length)}ExtensionName(a){try{return a.match(/\.([^.]+)$/)[1].toLowerCase()||"png"}catch{return"png"}}Mantissa(a,c,b="0",e=null){return e?`${++a}.${this.ExtensionName(e)}`.padStart(c,b):`${++a}`.padStart(c,b)}WorkerCreation(a){a=new Blob([a],{type:"application/javascript"});return new Worker(URL.createObjectURL(a))}sleep(a){return new Promise(c=>setTimeout(c,a))}async AddStyle(a,c="New-Style"){let b=document.getElementById(c);b||(b=document.createElement("style"),b.id=c,document.head.appendChild(b));b.appendChild(document.createTextNode(a))}async AddScript(a,c="New-Script"){let b=document.getElementById(c);b||(b=document.createElement("script"),b.id=c,document.head.appendChild(b));b.appendChild(document.createTextNode(a))}async AddListener(a,c,b,e={}){this.ListenerRecord[a]?.[c]||(a.addEventListener(c,b,e),this.ListenerRecord[a]||(this.ListenerRecord[a]={}),this.ListenerRecord[a][c]=b)}async RemovListener(a,c){const b=this.ListenerRecord[a]?.[c];b&&(a.removeEventListener(c,b),delete this.ListenerRecord[a][c])}async Listen(a,c,b,e={},d=null){try{a.addEventListener(c,b,e),d&&d(!0)}catch{d&&d(!1)}}async Observer(a,c,{mark:b=!1,throttle:e=0,subtree:d=!0,childList:f=!0,characterData:g=!1}={},h=null){if(b){if(this.Mark[b])return;this.Mark[b]=!0}b={subtree:d,childList:f,characterData:g};e=new MutationObserver(this.Throttle(()=>{c()},e));e.observe(a,b);h&&h({ob:e,operat})}async WaitElem(a,c,b,e,{object:d=document.body,reject:f=!1,throttle:g=0}={}){let h,k,l;const m=new MutationObserver(this.Throttle(()=>{k=c?document.querySelectorAll(a):document.querySelector(a);if(l=c?0<k.length&&Array.from(k).every(n=>null!==n&&"undefined"!==typeof n):k)m.disconnect(),clearTimeout(h),e(k)},g));m.observe(d,{childList:!0,subtree:!0});h=setTimeout(()=>{m.disconnect();f&&e(k)},1E3*b)}async WaitMap(a,c,b,{object:e=document.body,reject:d=!1,throttle:f=0}={}){let g,h;const k=new MutationObserver(this.Throttle(()=>{h=a.map(l=>document.querySelector(l));h.every(l=>null!==l&&"undefined"!==typeof l)&&(k.disconnect(),clearTimeout(g),b(h))},f));k.observe(e,{childList:!0,subtree:!0});g=setTimeout(()=>{k.disconnect();d&&b(h)},1E3*c)}async log(a=null,c="print",b="log"){b="string"===typeof b&&this.print[b]?b:b="log";if(null==a)this.print[b](c);else console.groupCollapsed(a),this.print[b](c),console.groupEnd()}Runtime(a=null,c="Elapsed Time:",{style:b="\u001b[1m\u001b[36m%s\u001b[0m",log:e=!0}={}){return a?e?console.log(b,`${c} ${(Date.now()-a)/1E3}s`):Date.now()-a:Date.now()}Debounce(a,c=500){let b=null;return(...e)=>{clearTimeout(b);b=setTimeout(function(){a(...e)},c)}}Throttle(a,c){let b=0;return(...e)=>{const d=Date.now();d-b>=c&&(b=d,a(...e))}}ScopeParsing(a,c){const b=new Set,e=new Set,d=c.length;for(const f of a.split(/\s*,\s*/))if(/^\d+$/.test(f))b.add(Number(f)-1);else if(/^\d+(?:~\d+|-\d+)$/.test(f)){c=f.split(/-|~/);a=Number(c[0]-1);c=Number(c[1]-1);const g=a<=c;for(;g?a<=c:a>=c;g?a++:a--)b.add(a)}else/(!|-)+\d+/.test(f)&&e.add(Number(f.slice(1)-1));return[...b].filter(f=>!e.has(f)&&f<d&&0<=f).sort((f,g)=>f-g).map(f=>obj[f])}Storage(a,{type:c=sessionStorage,value:b=null,error:e}={}){let d;return null!=b?this.StorageMatch[this.StorageMatch.Type(b)](c,a,b):(d=c.getItem(a),void 0!=d?this.StorageMatch[this.StorageMatch.Type(JSON.parse(d))](c,d):e)}store(a,c=null,b=null){const e={verify:d=>void 0!==d?d:!1,de:d=>GM_deleteValue(d),al:()=>e.verify(GM_listValues()),s:(d,f)=>GM_setValue(d,f),g:(d,f)=>e.verify(GM_getValue(d,f)),sj:(d,f)=>GM_setValue(d,JSON.stringify(f,null,4)),gj:(d,f)=>JSON.parse(e.verify(GM_getValue(d,f)))};return e[a](c,b)}async storeListen(a,c){a.forEach(b=>{this.Mark[b]||(this.Mark[b]=!0,GM_addValueChangeListener(b,function(e,d,f,g){c({key:e,ov:d,nv:f,far:g})}))})}async Menu(a,c="Menu",b=1){for(const [e,d]of Object.entries(a))GM_registerMenuCommand(e,()=>{d.func()},{title:d.desc,id:`${c}-${b++}`,autoClose:d.close,accessKey:d.hotkey})}};