文を改行させるUserScript
jsfunction paragraphing(text) {
return text.replace(/。/g,"。\n");
}
長文を、文単位に区切って、文ごとに改行させるためのスクリプト。
なぜこれを作ったかというと、コピペした長文を文ごとに分解したかったから。
Scrapboxは段落の並び替えがしやすい。
ひとつの段落内の文の並び替えはしにくい。
私は、文章を並び替えて思考を整理する。
その整理の前段階の作業を自動化した形になる。
使い方
下のスクリプトを自分のページに貼る。(その後、サイトを更新)
文章を選択して、ポップアップから「全文改行」をクリック。
二つ以上の文を含む文章に対して使用することを前提にしている。
すると、文ごとに改行された文章になる。
但し書き
文は「。」で区切られていると認識する。
なので、「!」や「?」で終わっている文章は改行しない。
また、文が会話などを含む場合、会話の途中で改行してしまう。
スクリプトログ
script.jsscrapbox.PopupMenu.addButton ({
title: '全文改行',
onClick: text => {
const arr = text.split('。');
return arr.join('。\n');
}
})
正規表現を学んだので4行目に活かしてみた。
script.jsscrapbox.PopupMenu.addButton ({
title: '全文改行',
onClick: text => {
const arr = text.split(/[。!?]/g);
return arr.join('。\n');
}
})
//[]というORを意味する正規表現を用いて「。」の他「!、?」でも改行するようにした。
replace()でもできるじゃんと気づく。
script.jsscrapbox.PopupMenu.addButton ({
title: '全文改行',
onClick: text => {
const rtn = text.replace(/[。!?]/g,'。\n');
return rtn;
}
})
//split()ではなくてreplace()を使うようにした。
更なる改善バージョン(1)
script.jsscrapbox.PopupMenu.addButton ({
title: '全文改行',
onClick: text => {
const rtn = text.replace(/[。!?](?!\n)/g,'。\n');
return rtn;
}
})
//すでに改行済みの文が重ねて改行されるのを先読みで防いだ。
更なる改善バージョン(2)
script.jscode:script.jsscrapbox.PopupMenu.addButton ({
title: '↩️。',
onClick: text => {
let rtn = text
.replace(/[。!?](?![\n\uFF09\u300D])/g, '。\n')
.replace(/(?<=[。!?])\uFF09/g, ')\n')
.replace(/(?<=[。!?])\u300D/g, '」\n');
return rtn;
}
})
//「〜。)」や「〜!」」という表現があったとき、「。」のところで改行させず、「)」や「」」のところで改行させるようにした。
//「)」だけでは改行しない。文中に()で挿入される補足などを改行させないため。
例
↑
この文章に対して、「全文改行」をすると……
……となる。