ISSHISHOMA
https://gyazo.com/2dbf910384b23b9bb6b9abc487bd6c86
this is ISSHISHOMA’s page
code:script.js
$('body').attr('data-daiiz-rel-bubble', 'off'); // 関連ページを吹き出し表示する
$('body').attr('data-daiiz-text-bubble', 'off'); // リンク先ページのテキストを表示する
$('body').attr('data-daiiz-icon-button', 'off'); // アイコンをボタンにする
code:script.js
scrapbox.PopupMenu.addButton({
title: function (text) {
const chars = text.replace(/\r\n/g, '').length const words = text.trim().split(/\r\n\s+/).length return ${chars}c ${words}w
},
onClick: () => null
})
code:script.js
scrapbox.PopupMenu.addButton({
title: 'quote',
onClick: text => text.split(/\n/).map(line => > ${line}).join('\n')
})
code:script.js
// 選択した文字列にマーカー
scrapbox.PopupMenu.addButton({
title: 'マーカー',
onClick: text => [[${text}]]
})
code:script.js
scrapbox.PopupMenu.addButton({
title: 'format',
onClick: text => text.split('\n').map(function(line) {
return line.replace(/^\s*/g, s => s.replace(/\s/g, '\t'))
.replace(/ /g, '')
.replace(/ぁ-ん|ァ-ヴ゙/g, s => String.fromCharCode(s.charCodeAt(0) + 1)) .replace(/A-Za-z0-9/g, s => String.fromCharCode(s.charCodeAt(0) - 0xFEE0)) .replace('(', '(')
.replace(')', ')')
.replace(/\S\(/g, s => s.charAt(0) + ()
.replace(/\)\S/g, s => ') ' + s.charAt(1))
.replace(/\S.*/g, s => s.charAt(0) + ' ' + s.slice(1))
.replace(/.*\S/g, s => s.slice(0, -1) + ' ' + s.slice(-1))
}).join('\n')
})
code:script.js
// 選択した文字列にマーカー
scrapbox.PopupMenu.addButton({
title: '下線',
onClick: text => [_ ${text}]
})
選択範囲をTweet
code:script.js
scrapbox.PopupMenu.addButton({
title: 'Tweet',
onClick: text => {
const lines = text
.map(line => line.replace(/[\\]/g, '').replace(/^\s+/, '')) lines.push(location.href)
const url = https://twitter.com/intent/tweet?&text=${encodeURIComponent(lines.join('\n'))}
const width = 550
const height = 420
const option = width=${width},height=${height},left=${(window.innerWidth - width) / 2},top=${(window.innerHeight - height) / 2},scrollbars=yes,resizable=yes,toolbar=no,location=yes
window.open(url, '_blank', option)
}
})
インデントを隠す
code:script.js
// 設定
// MAX_INDENT: 最大のインデント数を調整する
const MAX_INDENT=10
// それぞれの行にインデント数のclassをつける
scrapbox.Page.lines.map(l => {
return {id: l.id, indent: l.text.match(/^\s+/)}
}).forEach((l) => {
let indent;
if(l.indent == null) {
indent = 0;
} else {
indent = l.indent0.length; }
document.getElementById(L${l.id}).classList.add(indent-${indent})
})
// スライダーを作る関数
const createSlider = function() {
const slider = document.createElement('input');
slider.setAttribute('type', 'range');
slider.setAttribute('min', '0');
slider.setAttribute('max', MAX_INDENT);
slider.setAttribute('step', '1');
slider.setAttribute('type', 'range');
slider.setAttribute('value', '0');
let dom = document.createElement('div');
dom.appendChild(slider);
return dom;
};
// スタイルをつくる
const style = document.createElement('style');
style.type = 'text/css';
document.querySelector('head').appendChild(style);
const setCSS = function(level) {
let css = "";
for(var i=0; i < level; i++) {
css += .indent-${MAX_INDENT-i};
if(i < level - 1) {
css += ', ';
}
}
css += `{
display: none;
}`;
style.innerHTML = css;
};
// スライダーを追加する
const root = document.querySelector('.page-menu');
const slider = createSlider();
root.appendChild(slider);
// スライダーのインプットがあったらCSSを更新
slider.addEventListener('input', (e) => {
setCSS(e.target.valueAsNumber);
});