Masme (トーク | 投稿記録)
「テキスト整形」正式版公開に伴い先行版削除
Masme (トーク | 投稿記録)
抽出コマンドのアンパサンド対策。word-wrapを除去。
82行目: 82行目:


※新仕様の基本コード用。旧仕様で使用する場合は、オプション "L" をモード "RS" に書き換えてください。
※新仕様の基本コード用。旧仕様で使用する場合は、オプション "L" をモード "RS" に書き換えてください。
<pre style="word-wrap:break-word;">
<pre>
f.push(["拡張コードを旧→新仕様に変換","L",function(_){ //2019/06/01
f.push(["拡張コードを旧→新仕様に変換","L",function(_){ //2019/06/01
   return _.replace(/^(\s*(?:\/\/[\/\s]*)?)f\.push\(\[("[^\\"]*(?:\\.[^\\"]*)*"|'[^\\']*(?:\\.[^\\']*)*'),"(RS?|F)",function\(([$0-9A-Za-z_]*)\)/gm,function(_,cmnt,name,mode,arg){return cmnt+'f.push(['+name+',"'+(mode==="RS"?"L":"")+'",function('+(mode==="F"&&arg?"_,":"")+arg+')'}) }]);
   return _.replace(/^(\s*(?:\/\/[\/\s]*)?)f\.push\(\[("[^\\"]*(?:\\.[^\\"]*)*"|'[^\\']*(?:\\.[^\\']*)*'),"(RS?|F)",function\(([$0-9A-Za-z_]*)\)/gm,function(_,cmnt,name,mode,arg){return cmnt+'f.push(['+name+',"'+(mode==="RS"?"L":"")+'",function('+(mode==="F"&&arg?"_,":"")+arg+')'}) }]);
133行目: 133行目:


※新仕様の基本コード用。文書全体を対象に置換が行われます。
※新仕様の基本コード用。文書全体を対象に置換が行われます。
<pre style="word-wrap:break-word;">
<pre>
f.push(["記事ソースから拡張コードを抽出","",function(_,$){ //2019/06/01
f.push(["記事ソースから拡張コードを抽出","",function(_,$){ //2019/12/21
   $.SelectAll(); var src=$.Text.match(/(?:^|\n)=拡張コード=\n[\s\S]*?(\n==[\s\S]*?)(?:\n=拡張コード:書式=\n|$)/); if(src)$.Text=src[1].replace(/\n==([^=]+)==\n([\s\S]*?)(?=\n==[^=]|$)/g,function(_,ctg,src){var cmd=[], res, re=new RegExp(/^<pre(?: [^>]*)?>\s*(f\.push\(\[[\s\S]*?\]\);)\s*<\/pre>/gm); while(res=re.exec(src)){cmd.push(res[1])} return 'f.push(["'+ctg+'",function(f){\n\n'+ cmd.join("\n\n") +'\n\n}]);\n\n'}).slice(0,-1) }]);
   $.SelectAll(); var src=$.Text.match(/(?:^|\n)=拡張コード=\n[\s\S]*?(\n==[\s\S]*?)(?:\n=拡張コード:書式=\n|$)/); if(src)$.Text=src[1].replace(/\n==([^=]+)==\n([\s\S]*?)(?=\n==[^=]|$)/g,function(_,ctg,src){var cmd=[], res, re=new RegExp(/^<pre(?: [^>]*)?>\s*(f\.push\(\[[\s\S]*?\]\);)\s*<\/pre>/gm); while(res=re.exec(src)){cmd.push(res[1].replace(/&amp;amp;/g,"&"))} return 'f.push(["'+ctg+'",function(f){\n\n'+ cmd.join("\n\n") +'\n\n}]);\n\n'}).slice(0,-1) }]);
</pre>
</pre>
<b>使用手順</b>
<b>使用手順</b>
162行目: 162行目:
* モード RS で実現可能=代替可能であり、RM ならではの利点が無い。
* モード RS で実現可能=代替可能であり、RM ならではの利点が無い。
* モード R/RS に比べ処理が異質で、コマンドを作る際はそれを考慮しなければならない。<br>※異質=R/RS が「選択範囲の文字列」を対象に処理を行うのに対し、RM は「選択範囲の各行の文字列」を対象に処理を行う。
* モード R/RS に比べ処理が異質で、コマンドを作る際はそれを考慮しなければならない。<br>※異質=R/RS が「選択範囲の文字列」を対象に処理を行うのに対し、RM は「選択範囲の各行の文字列」を対象に処理を行う。
<source lang="javascript" style="word-wrap:break-word;">
<source lang="javascript">
//※モード RM では「クロージャ」という仕組みを使用する必要があり難解
//※モード RM では「クロージャ」という仕組みを使用する必要があり難解
f.push(["各行行頭に文字列付加...","RM",(function(a){
f.push(["各行行頭に文字列付加...","RM",(function(a){
170行目: 170行目:
   var p=Prompt("各行行頭に付加する文字列:",""); if(!p)Quit(); return a.replace(/^/gm,p) }]);
   var p=Prompt("各行行頭に付加する文字列:",""); if(!p)Quit(); return a.replace(/^/gm,p) }]);
</source>
</source>
<source lang="javascript" style="word-wrap:break-word;">
<source lang="javascript">
//※モード RM でも、
//※モード RM でも、
f.push(["空白行を削除","RM",function(a){
f.push(["空白行を削除","RM",function(a){
178行目: 178行目:
   return a.replace(/^[  \t]*$\n?/gm,"") }]);
   return a.replace(/^[  \t]*$\n?/gm,"") }]);
</source>
</source>
<source lang="javascript" style="word-wrap:break-word;">
<source lang="javascript">
//※モード RM なら正規表現に頼らず簡素に記述できるコマンドもあるが、
//※モード RM なら正規表現に頼らず簡素に記述できるコマンドもあるが、
f.push(["インデント(半角空白2個)","RM",function(a){
f.push(["インデント(半角空白2個)","RM",function(a){
スポンサーリンク