Chrome::scrapboxの表記をmarkdownに変換するbookmarklet
#2021/4/28 #2020/11/5 #2020/11 #2020/11/26
scrapboxは便利だけど,表記法が独自仕様.
本文をいろんなところに移植したい時にはmarkdownの方がいいことが多い.
で,変換スクリプト作るかに~と思っていたら,bookmarkletとして作成してくれていた.
ScrapboxコンテンツをMarkdownに変換するBookmarklet - daiiz
GitHub - daiiz/sb2md: Scrapbox contents -> Markdown
さっそくGitHubからソースを頂き,main.min.jsファイルの先頭に"javascript:"を追加.
でも,D&Dではうまく登録できず.
ブックマークマネージャで新ブックマークを作成し,url欄にjsの中身をコピペ.
★使い方:
Scrapboxのページを閲覧している状態でBookmarkletのアイコンをクリックして実行する.
すると新しいタブにmarkdown記述したテキストが出てくるというわけ.
https://gyazo.com/73e0fdf40dec469c1cca3738937014fc ▶▶ https://gyazo.com/5a58bb67120ce146be0c84f3d9fa57a1
うまく働くページもあるし,動かないページもある.
なぜ?わかりません.
わかった.tableがネックの様子.
対症療法:"table:hogehoge" という記述の":"を消せばいけるみたい.
うまくいったページは,
箇条書きのインデントは全部半角4桁の空白になり,markdownエディタに貼り付けた時にうまく反映されない(TeamsとTyporaで確認)
ので,インデントについては一旦vimで2桁ずつに変換したらうまくいった.
jsソースを調整したほうがいいかもね.
これのおかげで,scrapboxで書き書き → markdown → typora等で清書 → ワープロに貼り付け
という作業の流れができた.
すばらしい.daiizさんありがとう.
↓↓ に貼り付けたスクリプトを示しておきます.(C)by daiiz
code:scrapbox2markdown
javascript:(function(){var m=function(b){b=b.replace(/&/g,"&amp;");b=b.replace(/</g,"&lt;");b=b.replace(/>/g,"&gt;");b=b.replace(/"/g,"&quot;");return b=b.replace(/'/g,"&#39;")},n=function(b){b=void 0===b?0:b;for(var a="",g=1;g<b;g++)a+=" ";return a},p=function(b){b=void 0===b?"":b;var a=document.createElement("div");a.innerHTML=b;b=a.querySelectorAll("strong");for(var g=0;g<b.length;g++){var d=bg,e=+d.className.split("level-")1,c=d.innerHTML;e=void 0===e?1:e;e=6-e;for(var f="",h=0;h<e;h++)f+="#";d.innerHTML=
f+" "+c}return a.innerHTML},q=function(b){b=void 0===b?"":b;var a=document.createElement("div");a.innerHTML=b;b=a.querySelectorAll("a");for(var g=0;g<b.length;g++){var d=bg,e=d.innerText.trim(),c=d.href;e=""+e+"("+c+")";var f=d.querySelector("img");null!==f&&(e="[!Image("+f.src+")]("+c+")");d.innerText=e}return a.innerText},f=document.querySelector(".lines"),r=f.querySelector(".line-title .text").innerText;f=f.querySelectorAll(".line");pageTexts=[];for(var l=1;l<f.length;l++){for(var c=fl.querySelector(".text").cloneNode(!0),
h=c.querySelectorAll("span.empty-char-index"),a=0;a<h.length;a++){var k=ha;k.innerText=""}h=c.querySelectorAll("span.backquote");for(a=0;a<h.length;a++)k=ha,k.innerText="`";a=c.innerHTML.replace(/<span>/g,"");a=a.replace(/<span.+?>/g,"").replace(/<\/span>/g,"");a=a.replace(/<br.+?>/g,"");a=a.replace(/\n/gi,"").replace(/\t/gi,"").trim();a=p(a);a=q(a);c=c.querySelector(".indent-mark");null!==c&&(k=+c.style.width.split("em")0/1.5*2,a=n(k)+"- "+a);null===c&&0<a.length&&"#"!==a0&&(a+="<br>");pageTexts.push(a)}(function(b,
a){b=void 0===b?"Title":b;a=void 0===a?[]:a;for(var c="# "+b+"\n",d=0;d<a.length;d++)c+="\n"+ad;a=window.open();a.document.open();a.document.write("<title>"+b+"</title>");a.document.write("<pre>");a.document.write(m(c));a.document.write("</pre>");a.document.close()})(r,pageTexts)})();
#chrome #markdown #scrapbox