Macro/投稿/159 のバックアップの現在との差分(No.5)




  • 追加された行はこの色です。
  • 削除された行はこの色です。
* 上下左右に罫線枠付き貼り付け[#w7bf03b3]
-ページ: [[Macro/投稿]]
-作者: [[ガンジャム]]
-カテゴリー: js
-投稿日: 2006-12-25 (月) 23:19:27

** メッセージ [#s4461129]
メモ書きなどに
#code(javascript){{
/*
罫線ボックス追加挿入マクロ(サクラエディタ用)
----------|----------------------------------------------
ファイル名|keisenPaste.js                                
作成者    |ガンジャム                                    
更新日    |20070525                                      
動作      |                                              
          |クリップボードデータに罫線ボックスをつけて挿入
          |桁を揃えるためブランク埋めします              
*/
//エントリ
main();
function main()
{
	var arrLine = getClpbrd();
	if(arrLine)
	{
		var maxWdh = compareLength(arrLine);
		var arSetTxt = setLength(arrLine, maxWdh);
		insTxt(arSetTxt, maxWdh);
	}
}
範囲選択してれば選択文字列、なければクリップボードのテキストの
上下左右に罫線の枠をつけて挿入します。
クリップボードデータはIEから取ってるのでVistaはアラートが出ます。

//クリップボードデータ取得
//改行は\nに統一
//戻り値(データあり):CRLF分割配列
//      (データなし):false
function getClpbrd()
{
	var ie  = new ActiveXObject("InternetExplorer.Application");
		ie.Navigate("about:blank");
	var clp = ie.Document.parentWindow.clipboardData.getData("Text");
		ie = null;

	if(clp)
	{
		var crlf = /\r\n/mg, lf = /\n/mg, cr = /\r/mg
		var str = clp.replace(crlf, "\n");
			str = str.replace(cr, "\n");
		return(str.split("\n"));
	} else {
		return(false);
	}
}

//行比較
function compareLength(arr)
{
	var m = "";
	for(i in arr)
	{
		var ln = byteLength(arr[i]);
		if (m < ln) {
			m = ln;
		}
	}
	if (m % 2) {
		m++;
	}
	return(m);
}

//ブランク梅
function setLength(arr, m)
{
	var tl = arr.length - 1;
	for(var i=0 in arr)
	{
		var ln = byteLength(arr[i]);
		if((i == tl) && (!ln))
		{
		} else {
			if(ln < m)
			{
				var s = "";
				var d = m - ln;
				for(j=0; j<d; j++)
				{
					s += " ";
				}
				arr[i] += s;
			}
		}
	}
	return(arr);
}

//バイト長取得
function byteLength(s)
{
	var len = s.length;
	var blen = len;
	for(i=0; i<len; i++)
	{
		if(isWide(s.charCodeAt(i)))
		{
			blen++;
		}
	}
	function isWide(charCode)
	{
		return(0x80 <= charCode &&(charCode <= 0xff60 || 0xffa0 <= charCode));
	}
	return(blen);
}

//罫線文字を追加して挿入
function insTxt(arr, m)
{
		m = m / 2;
	var k = "", s = "";
	for(i=0; i<m; i++)
	{
		k += "─";
	}
	var headLine = "┌"+ k + "┐"+"\r\n";
	var tralLine = "└"+ k + "┘"+"\r\n";

	for(j in arr)
	{
		if(arr[j])
		{
			s = s +"│"+ arr[j] +"│"+"\r\n";
		}
	}
	Editor.insText(headLine + s + tralLine);
}
}}

http://cid-b4b8259365d2529f.skydrive.live.com/browse.aspx/Public/Sakura%20Editor%20Macro
----

#comment



    ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS