「
アウトラインのノードの完了/未完了を切り替える
」を編集中
ナビゲーションに移動
検索に移動
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。
中間の版での編集と競合したため、取り消せませんでした。
スパム攻撃防止用のチェックです。 けっして、ここには、値の入力は
しない
でください!
<syntaxhighlight lang="javascript"> #title = "完了未了切替" /***************************************************************************************************** ****************************************************************************************************** ** ** 当マクロはhalna氏作成のAndroidアプリ「ハルナアウトライン」 ** https://play.google.com/store/apps/details?id=jp.blogspot.halnablue.HalnaOutliner ** とMeryを併用する前提で、Mery側に欲しい機能を私が勝手にマクロで実装したものです。 ** 当マクロはhalna氏作成のAndroidアプリ「ハルナアウトライン」と直接の関係はありません。 ** 当マクロについてhalna氏への問い合わせはおやめください。 ** ** ハルナアウトラインの.hol形式の階層付きテキストは、 ** ノード名の末尾にタブを挟んで、カンマ区切り5要素の0/1/空白3値のフラグを持っている。 ** それぞれ、完了表示や取消表示に対応しているが、完了フラグは3桁目となっている。 ** Meryで作成したアウトラインノードはこのフラグを持っていないため付与する。 ** また、ハルナアウトラインは完了表示機能を持っていないので ** ハルナアウトラインで作成されたままのノードに対してはノード名称に□/☑/*を追記する。 ** ** ノード接頭文字なしはハルナアウトラインで通常作成したままのノード ** ノード接頭文字"*"は接頭文字があるがフラグを持たない状態で残留していたノード ** とみなし、想定で状態を挿入する。当マクロを繰り返し実行することで手動で正しい姿に修正する前提。 ** ** その前提で、選択中のノードのノード名先頭にある接頭文字□/☑/*を置換する。 ** また、ノード名の末尾にあるフラグを反転する、もしくは追加する。 ** □→☑ フラグ1へ ** ☑→□ フラグ0へ ** *→☑ フラグ1へ ** 無→□ フラグ0へ ** ** ノードを示す記号にはハルナアウトライン用に"."を用いる。 ** NdMkrの値を変更すればMarkdownやらにも使えるかもしれません(未検証)。 ** ****************************************************************************************************** *****************************************************************************************************/ var NdMkr = "."; var cntMkr = 0; var ndNmOld = ""; var ndNmNew = ""; var posY = 0; var posX = 0; var strFlgs = /\d?,\d?,(\d?),\d?,\d?/; var strNl = /\r\n|\r|\n/; reg = new RegExp("^\\" + NdMkr + "+"); with (document.selection) { //カーソル位置を保持※文字数が著しく変わるため可能な限りの復帰を目指す posY = GetActivePointY(mePosLogical); posX = GetActivePointX(mePosLogical); //ノード行先頭にカーソルがある場合、取り漏らすためカーソルを移動 EndOfLine(false,mePosLogical); //カーソル手前に存在する先頭がノード記号である行から、旧ノード名を取得 //先頭n文字がノードの深さを示している想定 Find("^\\"+ NdMkr , meFindPrevious | meFindReplaceRegExp); SelectLine(); ndNmOld = Text; //□:未完了のとき、☑完了へ置き換える。フラグがなければノード名末尾に,,1,,を追加、フラグがあれば1へ置き換える。 if(ndNmOld.indexOf("□") !== -1){ ndNmNew = ndNmOld.replace("□", "☑"); //□→☑ if (strFlgs.test(ndNmNew) == false) { ndNmNew = ndNmNew.replace(strNl, ''); ndNmNew = ndNmNew+"\t,,1,,\n" //フラグ1付与 } else { ndNmNew = ndNmNew.replace(/(\d?,\d?,)\d?(,\d?,\d?)/, "$011$02");//フラグを1に } //☑:完了のとき、□:未完了へ置き換える。フラグがなければノード名末尾に,,1,,を追加、フラグがあれば1へ置き換える。 } else if (ndNmOld.indexOf("☑") !== -1) { ndNmNew = ndNmOld.replace("☑", "□"); //☑→□ if (strFlgs.test(ndNmNew) == false) { ndNmNew = ndNmNew.replace(strNl, ''); ndNmNew = ndNmNew+"\t,,0,,\n" //フラグ0付与 } else { ndNmNew = ndNmNew.replace(/(\d?,\d?,)\d?(,\d?,\d?)/, "$010$02"); //フラグを0に } //*:不明のとき、切替先を完了と仮定し、☑:完了へ置き換える。 //フラグがなければノード名末尾に,,1,,を追加、フラグがあれば1へ置き換える。 } else if (ndNmOld.indexOf("*") !== -1) { ndNmNew = ndNmOld.replace("*", "☑"); //*→☑ if (strFlgs.test(ndNmNew) == false) { ndNmNew = ndNmNew.replace(strNl, ''); ndNmNew = ndNmNew+"\t,,1,,\n" //フラグ1付与 } else { ndNmNew = ndNmNew.replace(/(\d?,\d?,)\d?(,\d?,\d?)/, "$011$02"); //フラグを1に } //*:不明のとき、切替先を未完了と仮定し、□:未完了へ置き換える。 //フラグがなければノード名末尾に,,0,,を追加、フラグがあれば1へ置き換える。 } else { ndNmNew = ndNmOld.replace(/^(\.+)/, "$01□"); //無→□ if (strFlgs.test(ndNmNew) == false) { ndNmNew = ndNmNew.replace(strNl, ''); ndNmNew = ndNmNew+"\t,,0,,\n" //フラグ0付与 } else { ndNmNew = ndNmNew.replace(/(\d?,\d?,)\d?(,\d?,\d?)/, "$010$02"); //フラグを0に } } //選択中の旧ノード名文字列を削除し、新ノード名を追記する。 Delete(); document.write(ndNmNew); //カーソル位置の復帰 SetActivePoint (mePosLogical, posX, posY, false); } //Findを使っているため出現した検索強調表示を消す document.HighlightFind = false; </syntaxhighlight>
編集内容の要約:
MeryWikiへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細は
MeryWiki:著作権
を参照)。
著作権保護されている作品は、許諾なしに投稿しないでください!
このページを編集するには、下記の数式を計算してその答えを欄に入力してください (
ヘルプ
):
いちたすには =
編集を中止
編集の仕方
(新しいウィンドウで開きます)
スポンサーリンク
案内メニュー
個人用ツール
ログインしていません
トーク
投稿記録
アカウント作成
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
編集
履歴表示
その他
検索
スポンサーリンク
スポンサーリンク
案内
メインページ
ヘルプ
よくある質問
マクロリファレンス
マクロライブラリ
プラグインライブラリ
構文ファイル
テーマ
寄付・開発支援
練習用ページ
開発室
開発者のブログ
ツール
スポンサーリンク