「アウトラインのノードレベルを上げる」の版間の差分

提供: MeryWiki
ナビゲーションに移動 検索に移動
MSY-07 (トーク | 投稿記録)
with文を使用しないソースコードに修正
MSY-07 (トーク | 投稿記録)
変数にvarの宣言を追加
 
(同じ利用者による、間の2版が非表示)
1行目: 1行目:
当方プログラムをする身ではないため、不適切な記述があるかもしれません。訂正・更新あればよろしくお願いします。
2025年1月11日現在、Google Playでハルナアウトラインがダウンロードできないため、このマクロを使用する意味がなくなりました。


<syntaxhighlight lang="javascript">
<syntaxhighlight lang="javascript" copy>
#title = "ノードレベルを上げる"
#title = "ノードレベルを上げる"
/******************************************************************************************
/******************************************************************************************
25行目: 25行目:
var pos = 0;
var pos = 0;


reg = new RegExp("^\\" + NdMkr + "+");
var reg = new RegExp("^\\" + NdMkr + "+");


var sel = document.selection;
var sel = document.selection;

2025年11月24日 (月) 16:56時点における最新版

2025年1月11日現在、Google Playでハルナアウトラインがダウンロードできないため、このマクロを使用する意味がなくなりました。

#title = "ノードレベルを上げる"
/******************************************************************************************
*******************************************************************************************
**
**  当マクロはhalna氏作成のAndroidアプリ「ハルナアウトライン」
**  https://play.google.com/store/apps/details?id=jp.blogspot.halnablue.HalnaOutliner
**  とMeryを併用する前提で、Mery側に欲しい機能を私が勝手にマクロで実装したものです。
**  当マクロはhalna氏作成のAndroidアプリ「ハルナアウトライン」と直接の関係はありません。
**  当マクロについてhalna氏への問い合わせはおやめください。
**  
**  選択中のノードの「ノードを示す文字」を一つ削除する。但し、1階層目には適用しない。
**  ノードを示す記号にはハルナアウトライン用に"."を用いる。
**  NdMkrの値を変更すればMarkdownやらにも使えるかもしれません(未検証)。
**
*******************************************************************************************
******************************************************************************************/

var NdMkr = ".";
var cntMkr = 0;
var ndNmOld = "";
var ndNmNew = "";
var pos = 0;

var reg = new RegExp("^\\" + NdMkr + "+");

var sel = document.selection;

//カーソル位置を保持
pos = sel.GetActivePos();

//ノード行先頭にカーソルがある場合、取り漏らすためカーソルを移動
sel.EndOfLine(false,mePosLogical);

//カーソル手前に存在する先頭がノード記号である行から、旧ノード名を取得
//先頭n文字がノードの深さを示している想定

if (sel.Find("^\\"+ NdMkr , meFindPrevious | meFindReplaceRegExp) > 0){
	sel.SelectLine();
	ndNmOld = sel.Text;

	//深さ2以上の時のみ、動作。
	if(ndNmOld.match(reg)[0].length > 1 ){
		//旧ノード名の先頭1文字を削除し、新ノード名とする(深さを1減らしレベルを上げる)
		ndNmNew = ndNmOld.slice(1) ;

		//選択中の旧ノード名文字列を削除し、新ノード名を追記する。
		sel.Delete();
		document.Write(ndNmNew);

		//ノード記号を削除した分カーソル位置を巻き戻す
		pos --;
	}
}
//カーソル位置の復帰
sel.SetActivePos (pos, false);

document.HighlightFind = false;
スポンサーリンク