nadesiko3
Version:
Japanese Programming Language
77 lines (76 loc) • 2.64 kB
text/typescript
// @ts-nocheck
export default {
// @HTML操作
'HTML変換': { // @文字列をHTMLに変換して返す // @HTMLへんかん
type: 'func',
josi: [['を']],
pure: true,
fn: function(text: any) {
return String(text)
.replace(/&/g, '&')
.replace(/>/g, '>')
.replace(/</g, '<')
}
},
// @クリップボード
'クリップボード設定': { // @文字列をクリップボードにコピー // @くりっぷぼーどせってい
type: 'func',
josi: [['を']],
pure: true,
asyncFn: true,
fn: async function(text: any) {
// Clipboard APIをサポートしているか
if (navigator.clipboard) {
await navigator.clipboard.writeText(text)
return
}
// Clipboard APIをサポートしていない場合
const tmp = document.createElement('div')
const pre = document.createElement('pre')
pre.style.webkitUserSelect = 'auto'
pre.style.userSelect = 'auto'
tmp.appendChild(pre).textContent = text
// 画面外へ表示する
tmp.style.position = 'fixed'
tmp.right = '200%'
document.body.appendChild(tmp)
document.getSelection().selectAllChildren(tmp)
document.execCommand('copy')
document.body.removeChild(tmp)
},
return_none: true
},
'クリップボード取得時': { // @クリップボードの値を取得した後関数Fを実行する。結果は変数『対象』に代入される(ユーザーの許可が必要)。 // @くりっぷぼーどしゅとくしたとき
type: 'func',
josi: [['を']],
pure: true,
fn: function(f: any, sys: any) {
// Clipboard APIをサポートしているか
if (navigator.clipboard) {
if (typeof (f) === 'string') { f = sys.__findFunc(f, 'クリップボード取得時') }
const pm = navigator.clipboard.readText()
pm.then(text => {
sys.__setSysVar('対象', text)
f(sys)
})
} else {
throw new Error('Clipbard APIが利用できません。')
}
}
},
'クリップボード取得': { // @クリップボードの値を取得して結果を返す(ユーザーの許可が必要)。 // @くりっぷぼーどしゅとく
type: 'func',
josi: [],
pure: true,
asyncFn: true,
fn: async function(sys: any) {
// Clipboard APIをサポートしているか
if (navigator.clipboard) {
const result = await navigator.clipboard.readText()
return result
} else {
throw new Error('Clipbard APIが利用できません。')
}
}
}
}