此腳本不應該直接安裝,它是一個供其他腳本使用的函式庫。欲使用本函式庫,請在腳本 metadata 寫上: // @require https://update.greatest.deepsurf.us/scripts/448529/1074680/opencc-rust-lib.js
你需要先安裝一款使用者樣式管理器擴展,比如 Stylus ,才能安裝此樣式
你需要先安裝一款使用者樣式管理器擴展,比如 Stylus ,才能安裝此樣式
你需要先安裝一款使用者樣式管理器擴展,比如 Stylus ,才能安裝此樣式
你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式
你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式
你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式
(我已經安裝了使用者樣式管理器,讓我安裝!)
換行
// ==UserScript== // @name opencc-rust-lib // @namespace Forbidden Siren // @version 0.6.0 // @description opencc-rust-wasm decode // ==/UserScript== let wasm ; let cachedTextDecoder = new TextDecoder ( 'utf-8' , { ignoreBOM : true , fatal : true }); cachedTextDecoder . decode (); let cachegetUint8Memory0 = null ; function getUint8Memory0 () { if ( cachegetUint8Memory0 === null || cachegetUint8Memory0 . buffer !== wasm . memory . buffer ) { cachegetUint8Memory0 = new Uint8Array ( wasm . memory . buffer ); } return cachegetUint8Memory0 ; } function getStringFromWasm0 ( ptr , len ) { return cachedTextDecoder . decode ( getUint8Memory0 (). subarray ( ptr , ptr + len )); } let WASM_VECTOR_LEN = 0 ; let cachedTextEncoder = new TextEncoder ( 'utf-8' ); const encodeString = ( typeof cachedTextEncoder . encodeInto === 'function' ? function ( arg , view ) { return cachedTextEncoder . encodeInto ( arg , view ); } : function ( arg , view ) { const buf = cachedTextEncoder . encode ( arg ); view . set ( buf ); return { read : arg . length , written : buf . length }; }); function passStringToWasm0 ( arg , malloc , realloc ) { if ( realloc === undefined ) { const buf = cachedTextEncoder . encode ( arg ); const ptr = malloc ( buf . length ); getUint8Memory0 (). subarray ( ptr , ptr + buf . length ). set ( buf ); WASM_VECTOR_LEN = buf . length ; return ptr ; } let len = arg . length ; let ptr = malloc ( len ); const mem = getUint8Memory0 (); let offset = 0 ; for (; offset < len ; offset ++) { const code = arg . charCodeAt ( offset ); if ( code > 0x7F ) break ; mem [ ptr + offset ] = code ; } if ( offset !== len ) { if ( offset !== 0 ) { arg = arg . slice ( offset ); } ptr = realloc ( ptr , len , len = offset + arg . length * 3 ); const view = getUint8Memory0 (). subarray ( ptr + offset , ptr + len ); const ret = encodeString ( arg , view ); offset += ret . written ; } WASM_VECTOR_LEN = offset ; return ptr ; } let cachegetInt32Memory0 = null ; function getInt32Memory0 () { if ( cachegetInt32Memory0 === null || cachegetInt32Memory0 . buffer !== wasm . memory . buffer ) { cachegetInt32Memory0 = new Int32Array ( wasm . memory . buffer ); } return cachegetInt32Memory0 ; } /** */ class Converter { static __wrap ( ptr ) { const obj = Object . create ( Converter . prototype ); obj . ptr = ptr ; return obj ; } free () { const ptr = this . ptr ; this . ptr = 0 ; wasm . __wbg_converter_free ( ptr ); } /** * @param {string} data * @returns {string} */ async convert ( data ) { try { const retptr = wasm . __wbindgen_export_2 . value - 16 ; wasm . __wbindgen_export_2 . value = retptr ; var ptr0 = passStringToWasm0 ( data , wasm . __wbindgen_malloc , wasm . __wbindgen_realloc ); var len0 = WASM_VECTOR_LEN ; wasm . converter_convert ( retptr , this . ptr , ptr0 , len0 ); var r0 = getInt32Memory0 ()[ retptr / 4 + 0 ]; var r1 = getInt32Memory0 ()[ retptr / 4 + 1 ]; return getStringFromWasm0 ( r0 , r1 ); } finally { wasm . __wbindgen_export_2 . value += 16 ; wasm . __wbindgen_free ( r0 , r1 ); } } /** */ delete () { wasm . converter_delete ( this . ptr ); } } /** */ class ConverterBuild { static __wrap ( ptr ) { const obj = Object . create ( ConverterBuild . prototype ); obj . ptr = ptr ; return obj ; } free () { const ptr = this . ptr ; this . ptr = 0 ; wasm . __wbg_converterbuild_free ( ptr ); } /** * @returns {ConverterBuild} */ static new () { var ret = wasm . converterbuild_new (); return ConverterBuild . __wrap ( ret ); } /** * @param {string} data */ adddict ( data ) { var ptr0 = passStringToWasm0 ( data , wasm . __wbindgen_malloc , wasm . __wbindgen_realloc ); var len0 = WASM_VECTOR_LEN ; wasm . converterbuild_adddict ( this . ptr , ptr0 , len0 ); } /** */ group () { wasm . converterbuild_group ( this . ptr ); } /** * @returns {Converter} */ build () { var ret = wasm . converterbuild_build ( this . ptr ); return Converter . __wrap ( ret ); } } async function load ( module , imports ) { if ( typeof Response === 'function' && module instanceof Response ) { if ( typeof WebAssembly . instantiateStreaming === 'function' ) { try { return await WebAssembly . instantiateStreaming ( module , imports ); } catch ( e ) { if ( module . headers . get ( 'Content-Type' ) != 'application/wasm' ) { console . warn ( "`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n" , e ); } else { throw e ; } } } const bytes = await module . arrayBuffer (); return await WebAssembly . instantiate ( bytes , imports ); } else { const instance = await WebAssembly . instantiate ( module , imports ); if ( instance instanceof WebAssembly . Instance ) { return { instance , module }; } else { return instance ; } } } async function init ( input ) { const imports = {}; imports . wbg = {}; imports . wbg . __wbindgen_throw = function ( arg0 , arg1 ) { throw new Error ( getStringFromWasm0 ( arg0 , arg1 )); }; const { instance , module } = await load ( await input , imports ); wasm = instance . exports ; init . __wbindgen_wasm_module = module ; return wasm ; }