generated at
rashita

倉下忠憲のwebアバター的な存在。だいたいのサービスでrashitaか「らした」で登録しているが、twitterだけrashita2である。

Netgraphy
Twitter:@rashita2
著作リスト
モットー
好きな言葉

以下UserScriptの設定
script.js
scrapbox.PopupMenu.addButton({ title: 'Del', onClick: () =>{return ""} }); scrapbox.PopupMenu.addButton({ title: '* を足す', onClick: text =>{ return "* " + text; } });

リンクページ取得
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(linkPagesData[i]) + "/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: 'リンクページ取得', image: 'https://gyazo.com/da0408108eda84e56a587630be5e4524/raw', onClick:getlinkpage })

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) { body[i] = lines[i].replace(/^\s\s\s\s/g, '') .replace(/\s\s\s\s/g, ' ').replace(/^$/g,''); } return body.join('\n'); } })


script.js
scrapbox.PageMenu.addMenu({ title: '末尾', image: 'https://gyazo.com/d288e4b1c57fbe767452e5d142424a42/raw', onClick: () => { $("html,body").animate({scrollTop:$('.related-page-sort-menu').offset().top}); } })

script.js
scrapbox.PopupMenu.addButton({ title: 'branch', onClick: text => { const lines = text.split(/[\r\n]/g) const title = lines[0] .trim() .replace(/\[[^\]]+.icon\]/gm, '') .replace(/[\[\]]/g, '') 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}]` } })

関連ページの取得(工事中ですが、ある程度は動きます)
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 relatedPagesData = pagedata["relatedPages"]; 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 + relatedPagesDatalinks1hop[i]["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: '関連ページ取得', image: 'https://gyazo.com/da0408108eda84e56a587630be5e4524/raw', onClick:makepage })

ツイートボタン
script.js
scrapbox.PageMenu.addItem({ title: 'Tweet', image: 'https://twitter.com/favicon.ico', onClick: () => window.open(`https://twitter.com/intent/tweet?url=${encodeURIComponent(location.href)}&text=${encodeURIComponent(window.scrapbox.Page.title)}`) })

/masui/ScrapboxSaverより(現在使用停止中)
old-script.js
const intervalTime = 10000 let isStarted = false let interval = undefined scrapbox.PageMenu.addMenu({ title: 'random-screen-saver', image: 'https://gyazo.com/c08a5e4439ded1540bc05b31da9d58c9/raw' }) 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'); button[0].click() }