rashita
https://gyazo.com/a7d04dd3f6631faff7f43cfd4ce1adcc
倉下忠憲のwebアバター的な存在。だいたいのサービスでrashitaか「らした」で登録しているが、twitterだけrashita2である。 Netgraphy
著作リスト
モットー
好きな言葉
以下UserScriptの設定
code:script.js
scrapbox.PopupMenu.addButton({
title: 'Del',
onClick: () =>{return ""}
});
scrapbox.PopupMenu.addButton({
title: '* を足す',
onClick: text =>{
return "* " + text;
}
});
リンクページ取得
code:script.js
const getlinkpage = function () {
const url = location.href.replace("io/", "io/api/pages/");
let x = new XMLHttpRequest();
x.open("get", url, false);
x.send(null);
let json = x.responseText;
let pagedata = JSON.parse( json );
let linkPagesData = pagedata"links"; //ループで回して、リンクページの本文を取得していく
let pageContents = [];
let rooturl = location.href.replace("io/", "io/api/pages/").replace(new RegExp("/" + encodeURI(scrapbox.Page.title) + "$"),"/");
for (let i = 0, len = linkPagesData.length; i < len; ++i) {
let relatedurl = rooturl + encodeURI(linkPagesDatai) + "/text"; //これでXMLHttpRequestを回していく
let y = new XMLHttpRequest();
y.open("get", relatedurl, false);
y.send(null);
let c = y.responseText;
if (! (c == '{"name":"NotFoundError","message":"Page not found."}') ){
c = removehashtag(c,scrapbox.Page.title); //もとハッシュタグを削除しない場合はこの行をコメントアウト
c = removebracket(c);//本文中からブラケット[]を取り除かない場合はこの行をコメントアウト
pageContents.push(addmargin(c));
}
}
//取得したページの中身を使って、新しいwindowをオープンする。
var win = window.open();
win.document.open();
win.document.write(<title>temporary</title>);
win.document.write('<pre>');
win.document.write(pageContents.join('\n'));
win.document.write('</pre>');
win.document.close();
}
function removehashtag(text,pageTitle){//本文中からもともとのハッシュタグを削除する
return text.replace(new RegExp('#' + scrapbox.Page.title),"")
}
function removebracket(text){//本文中から閉じと開きのブラケットを削除する
return text.replace(/\|\/g,"") }
function addmargin(text){ //二行目以降に半角スペースを追加する
return text.replace(/\n/g,"\n ")
}
scrapbox.PageMenu.addMenu({
title: 'リンクページ取得',
onClick:getlinkpage
})
code:script.js
scrapbox.PopupMenu.addButton({
title: 'shorten',
onClick: text => {
const lines = text.split(/\r\n/g); var body = [];
for (var i = 0, len = lines.length; i < len; ++i) {
bodyi = linesi.replace(/^\s\s\s\s/g, '') .replace(/\s\s\s\s/g, ' ').replace(/^$/g,''); }
return body.join('\n');
}
})
code:script.js
scrapbox.PageMenu.addMenu({
title: '末尾',
onClick: () => {
$("html,body").animate({scrollTop:$('.related-page-sort-menu').offset().top});
}
})
code:script.js
scrapbox.PopupMenu.addButton({
title: 'branch',
onClick: text => {
const lines = text.split(/\r\n/g) .trim()
.replace(/\^\+.icon\]/gm, '')
const projectRoot = (() => {
const tmp = location.href.split('/')
tmp.pop()
return tmp.join('/')
})()
const currentPageTitle = decodeURIComponent(location.href.split(/\//g).pop())
lines.shift()
const body = encodeURIComponent(lines.join('\n'))
window.open(${projectRoot}/${title}?body=${body})
return [${title}]
}
})
関連ページの取得(工事中ですが、ある程度は動きます)
code:script0.js
const makepage = function () {
const url = location.href.replace("io/", "io/api/pages/");
let x = new XMLHttpRequest();
x.open("get", url, false);
x.send(null);
let json = x.responseText;
let pagedata = JSON.parse( json );
let relatedPagesDatalinks1hop = relatedPagesData"links1hop"; //ループで回して、関連ページの本文を取得していく
let pageContents = [];
let rooturl = location.href.replace("io/", "io/api/pages/").replace(new RegExp("/" + encodeURI(scrapbox.Page.title) + "$"),"/");
for (let i = 0, len = relatedPagesDatalinks1hop.length; i < len; ++i) {
let relatedurl = rooturl + relatedPagesDatalinks1hopi"title" + "/text"; //これでXMLHttpRequestを回していく
let y = new XMLHttpRequest();
y.open("get", relatedurl, false);
y.send(null);
//各ページに含まれる[]を取り除いたり、関連ページのおおもとのページのハッシュタグを削除してもいい。ただし、本文中に書き込まれている場合はややこしい。
let c = y.responseText;
c = removehashtag(c,scrapbox.Page.title); //もとハッシュタグを削除しない場合はこの行をコメントアウト
c = removebracket(c)//本文中からブラケット[]を取り除かない場合はこの行をコメントアウト
pageContents.push(addmargin(c));
}
//取得したページの中身を使って、新しいwindowをオープンする。
var win = window.open();
win.document.open();
win.document.write(<title>temporary</title>);
win.document.write('<pre>');
win.document.write(pageContents.join('\n'));
win.document.write('</pre>');
win.document.close();
}
function removehashtag(text,pageTitle){//本文中からもともとのハッシュタグを削除する
return text.replace(new RegExp('#' + scrapbox.Page.title),"")
}
function removebracket(text){
return text.replace(/\|\/g,"") }
function addmargin(text){ //二行目以降に半角スペースを追加する
return text.replace(/\n/g,"\n ")
}
scrapbox.PageMenu.addMenu({
title: '関連ページ取得',
onClick:makepage
})
ツイートボタン
code:script.js
scrapbox.PageMenu.addItem({
title: 'Tweet',
onClick: () => window.open(https://twitter.com/intent/tweet?url=${encodeURIComponent(location.href)}&text=${encodeURIComponent(window.scrapbox.Page.title)})
})
code:old-script.js
const intervalTime = 10000
let isStarted = false
let interval = undefined
scrapbox.PageMenu.addMenu({
title: 'random-screen-saver',
})
scrapbox.PageMenu('random-screen-saver').addItem({
title: () => (isStarted)? "end screen saver." : "start screen saver!",
onClick: () => {
isStarted = !isStarted
if (!isStarted) {
clearInterval(interval)
return
}
clickRandomButton()
interval = setInterval(clickRandomButton, intervalTime)
}
})
function clickRandomButton() {
const button = $('.random-jump-button')
if (!button) return
// location.href = button.attr('href');
}