🌸 「なでしこ」
>
🍯 「貯蔵庫」
俺ルールで自動インデント(beautify)。おまけでgrep。#文字列処理 #テキスト整形
🌟新規
📒一覧
🔌
🔍検索
🚪ログイン
俺ルールで自動インデント(beautify)。おまけでgrep。#文字列処理 #テキスト整形 📖
俺ルールで記述されたなでしこスクリプトを自動でインデント(beautify)するテキストフィルタです。
プログラム:
(→大)
#俺ルールで自動インデント(beautify)。おまけでgrep。#文字列処理 #テキスト整形 # #俺ルールで記述されたなでしこスクリプトを自動でインデント(beautify)するテキストフィルタです。 //解説 俺ルール =0 『 整形できるスクリプトの書式↓ ・「もし」の単文は「//。。。」とか「※。。。」とかで閉じる(*) ・「。。。」は改行せずにぶら下げ ・「ここまで」は改行して追い出し ・「回」や「間」は「繰り返す」まで記述する(ただしn回単文はそのまま)(*) ・関数定義は「●」で ・関数定義に引数がなくても「()」を付ける ・「時には」「後には」以外の「には」に引数がなくても「()」を付ける ・文字列結合式中に改行する際は行頭に「&」が来るように (*)(オートインデント関数内のとある場所のコメントアウト(#)を解除すると、自動で「#。。。」と「#繰り返す」が付加されますが、変更は自己責任で^^) 逆に制御文以外でキーワードが引っかかってしまう場合等のために埋め込み整形コマンド(笑)も作っときました。 使用例↓ #indent(次行は現在行と同じ) #indent 1 (次行は1段深く) #indent n 1 (同上) #indent c -1 (現在行は1段浅く、次行は現在行と同じ) #i c1 n-1 (現在行は1段深く、次行は1段浅く) //離反復帰をくりかえす#indent //食後にはみがき#indent //猫もしゃくしも エラー監視#i c-9 n9 エラーならば#i c-9 n9 ここまで#i c-9 n9 もし、(単文)ならば、「単文」を表示する#i 対応OS/ブラウザ:なでしこさん公式に準じます。 推奨なでしこさんバージョン:3.2.25以上。 』をtext2paragraphする。 解説はそれ。 //DOM構築 「俺ルールで自動インデント(beautify)。おまけでgrep。」のラベル作成。 scriptE=「」のテキストエリア作成。 「開始レベル」のラベル作成。 startE=「0」のエディタ作成。 「からオートインデントする。」のラベル作成。 beautifyE=「整形」のボタン作成。 beautifiedE=「」のテキストエリア作成。 「grep 」のラベル作成。 vE=「-v」のチェックボックス作成。 「 -E "」のラベル作成。 reE=「([^と]|]と?)は変数=」のエディタ作成。 「"」のラベル作成。 grepE=「検索」のボタン作成。 searchedE=「」のテキストエリア作成。 wrapE=「折り返さない」のチェックボックス作成。 explE=解説のラベル作成。 //DOMパラメタ設定 DOM親要素の「background-color」に「beige」をDOMスタイル設定。 DOM親要素の「line-height」に「1.2em」をDOMスタイル設定。 startEの「size」に「2」をDOM属性設定。 scriptEの「placeholder」に「ここに整形したいスクリプトをペースト」をDOM属性設定。 startEの「background-color」に「lavender」をDOMスタイル設定。 scriptEの「wrap」に「soft」をDOM属性設定。 #scriptEの「rows」に「10」をDOM属性設定。 scriptEの「height」に「12em」をDOMスタイル設定。 scriptEに{"幅":"99%","background-color":"lavender"}をDOMスタイル一括設定。 beautifiedEの「wrap」に「soft」をDOM属性設定。 #beautifiedEの「rows」に「20」をDOM属性設定。 beautifiedEの「height」に「24em」をDOMスタイル設定。 beautifiedEに{"幅":"99%","background-color":"lavender"}をDOMスタイル一括設定。 reEの「background-color」に「lavender」をDOMスタイル設定。 searchedEの「wrap」に「soft」をDOM属性設定。 #searchedEの「rows」に「10」をDOM属性設定。 searchedEの「height」に「12em」をDOMスタイル設定。 searchedEに{"幅":"99%","background-color":"lavender"}をDOMスタイル一括設定。 explEの「text-align」に「left」をDOMスタイル設定。 //イベント定義 beautifyEをクリック時には scriptT=scriptEのテキスト取得。 startT=startEのテキスト取得。 scriptTをstartTからオートインデントして、それをbeautifiedEにテキスト設定する。 ここまで grepEをクリック時には beautifiedT=beautifiedEのテキスト取得。 vB=vEの「checked」をDOM属性取得。 reT=reEのテキスト取得。 beautifiedTのreTをvBでグレップして、それをsearchedEにテキスト設定する。 ここまで wrapEをクリック時には wrapB=wrapEの「checked」をDOM属性取得。 もし、(wrapB)ならば scriptEの「wrap」に「off」をDOM属性設定。 beautifiedEの「wrap」に「off」をDOM属性設定。 searchedEの「wrap」に「off」をDOM属性設定。 違えば scriptEの「wrap」に「soft」をDOM属性設定。 beautifiedEの「wrap」に「soft」をDOM属性設定。 searchedEの「wrap」に「soft」をDOM属性設定。 ここまで//オンオフ ここまで//wrap //関数定義 ●(元文字列を開始レベルから)オートインデントとは ●(lineをレベルで)字下とは インデントとは変数=「」。 (レベル)回繰り返す インデントはインデントに「 」を追加。 ここまで//空白の長さ もし、(line=「」)ならば lineを戻す。。。 もし、(俺ルール)かつ(lineが「/^\/\//」に正規表現マッチ)ならば 「 」&インデント&(lineの空白除去)を戻す。。。 インデント&(lineの空白除去)を戻す。 ここまで//字下 元配列とは変数=元文字列を「\r?\n」で正規表現区切//ったもの。 仕掛とは変数={}。 仕掛["前行レベル"]は開始レベル。 仕掛["前行ネクスト"]は0。 仕掛["result配列"]は[]。 元配列を仕掛にレデュースするには(i,line) //インデントの変化量 カレントとは変数=0。 ネクストとは変数=0。 lineはlineの空白除去//した文字列。 #もし、(lineが「/(回|間)、?$/」に正規表現マッチ)ならば、lineはline&「#繰り返す」//。。。 #もし、(lineが「/^もし.*ならば、?[^、 \u0009 \/#]/」に正規表現マッチ)ならば、lineはline&「#。。。」//。。。 もし、(lineが「/(条件分岐|繰り返す|反復)[^{カッコ閉}]*$/」に正規表現マッチ)ならば、ネクストは1//。。。 もし、(lineが「/^(もし|先に|エラー監視|逐次実行)/」に正規表現マッチ)ならば、ネクストは1//。。。 もし、(lineが「/。。。[^{カッコ閉}]*$/」に正規表現マッチ)ならば、ネクストはネクスト-1//。。。 もし、(lineが「/(●.*[((]|には[((]|時には|後には)[^{カッコ閉}]*$/」に正規表現マッチ)ならば、ネクストは1//。。。 もし、(lineが「/^(違えば|次に|エラーならば)/」に正規表現マッチ)ならば、 カレントは-1。 ネクストは1。 ここまで もし、(lineが「/^\&/」に正規表現マッチ)ならば、 カレントは1。 ネクストは-1。 ここまで もし、(lineが「/^ここまで/」に正規表現マッチ)ならば、カレントは-1//。。。 もし、(lineが「/#i(ndent)?\b[^n]*n? *(-?([0-9]*))[^{カッコ閉}]*$/」に正規表現マッチ)ならば もし、(抽出文字列[2])ならば ネクストは抽出文字列[1]。違えば ネクストは0。。。 ここまで//indent n もし、(lineが「/#i(ndent)?\b[^c]*c *(-?([0-9]+))[^{カッコ閉}]*$/」に正規表現マッチ)ならば カレントは抽出文字列[1]。 ここまで//indent c //インデントの変化量閉じ //reduce(function(前行レベル,現在行){レベル=前行レベル+(現在行str=>変化量num)...}) レベルとは変数=i["前行レベル"]+i["前行ネクスト"]+カレント。 lineをレベルで字下げする。 i["result配列"]にそれを配列追加する。 i["前行レベル"]はレベル。 i["前行ネクスト"]はネクスト。 iを戻す。 ここまで//レデュース→{前レ:num,前ネ:num,result:arr} それ["result配列"]を改行で配列結合して、戻す。 ここまで//オートインデント ●(ナナシ関数で適用配列を初期値に)レデュースとは もし、初期値が未定義ならば 初項とは変数=適用配列の0を配列切取//したもの。 resultとは変数=初項。 違えば resultは初期値。 ここまで//result初期化 適用配列を反復 ナナシ関数(result,対象)//実行。 resultはそれ。 ここまで//forEach もし、初項が未定義でなければ、適用配列の0に初項を配列挿入する//。。。 resultを戻す。 ここまで//レデュース ●(入力テキストの検索文字列を反転で)グレップとは オプションとは変数={}。 オプション["search"]は検索文字列。 もし、(反転)ならば オプション["反転"]は1。違えば オプション["反転"]は0。。。 入力テキストを「\r?\n」で正規表現区切る。 それをオプションとフィルタするには(line,index,o) もし、(o["反転"])ならば !(lineがo["search"]に正規表現マッチ)を戻す。 違えば (lineがo["search"]に正規表現マッチ)を戻す。 ここまで//正反 ここまで//フィルタ それを改行で配列結合して、戻す。 ここまで//グレップ ●(ナナシ関数で元配列をオプションと)フィルタとは resultとは変数=[]。 indexとは変数=-1。 元配列を反復 indexはindex+1。 ナナシ関数(対象,index,オプション)//実行。 もし、(それ)ならば、対象をresultに配列追加する//。。。 ここまで//forEach resultを戻す。 ここまで//フィルタ ●(元文字列を)text2paragraphとは 元文字列をHTML変換。 「"」を「"」に置換。 「'」を「'」に置換。 「^\n」を「」に正規表現置換。 「\n$」を「」に正規表現置換。 「\n」を「<br>{改行}」に正規表現置換。 「^」を「<p>{改行}」に正規表現置換。 「<br>\n<br>\n」を「{改行}</p>{改行}<p>{改行}」に正規表現置換。 「$」を「{改行}</p>」に正規表現置換。 それを戻す ここまで//text2paragraph #eof
プログラムを実行
⭐ ななっしー 作
タイトル:
俺ルールで自動インデント(beautify)。おまけでgrep。#文字列処理 #テキスト整形
ライセンス:
MIT (
改変可/表示
)
タイプ:
wnako
タグ:
#文字列処理 #テキスト整形
利用バージョン:
3.2.25
作成日時:
2021/07/29 01:08 (編集: 2021/08/12 14:40)
公開の投稿
⭐⭐⭐⭐⭐
ログイン
して★を付けよう!
Twitterへ投稿
📝作品を編集
作品公開情報
📍この作品のURL:
📍アプリ(即時実行)のURL:
📍アプリ(実行ボタンあり)のURL:
📍ブログパーツ:
上記HTML↑をブログに貼り付けることでアプリを埋め込めます。
📍ライブラリ直リンク - 『!「***」を取込』で使うとき:
📍なでしこハブ (最新版の反映は1日後):
ソースの確認
編集履歴の確認
通報数:
0
通報って何?