「自動箇条書き」の版間の差分

提供: MeryWiki
ナビゲーションに移動 検索に移動
手石 (トーク | 投稿記録)
編集の要約なし
手石 (トーク | 投稿記録)
編集の要約なし
5行目: 5行目:
#title="箇条書き"
#title="箇条書き"
// itemizer.js
// itemizer.js
// 2013/02/27
// 2013/03/02


var reg = /^([\t  ]*)(?:([((]*)([a-zA-Z]+|[0-9]+|[0-9]+)([))\.. ]+)|([--・・**]))/;
var reg = /^([\t  ]*)(?:([((]*)([a-zA-Z]+|[0-9]+|[0-9]+)([))\.. ]+)|([--・・**]))/;
19行目: 19行目:
result = reg.exec( line );
result = reg.exec( line );
if ( result != null ){
if ( result != null ){
chk.push( result[ 3 ] );
chk.push( { indent : result[ 1 ], bullet : result[ 3 ] } );
}
}
}
}
29行目: 29行目:
var chklast = chk.pop();
var chklast = chk.pop();
var chklastlast = chk.pop();
var chklastlast = chk.pop();
var i = ( isNaN( chklast ) || isNaN( chklastlast ) )? 1 : chklast - chklastlast ;
var i = ( isNaN( chklast.bullet ) || isNaN( chklastlast.bullet ) || chklast.indent != chklastlast.indent )? 1 : chklast.bullet - chklastlast.bullet ;
var s = "", r3 = result[ 3 ];
var s = "", r3 = result[ 3 ];
if ( r3 ){
if ( r3 ){
if  ( isNaN( r3 ) ){
if  ( isNaN( r3 ) ){
i = ( r3 == "z" || r3 == "Z" )? -25 : 1 ;
if ( r3 == "9" ){
s = String.fromCharCode( r3.charCodeAt( r3.length - 1 ) + i ) ;
s = 10
} else {
i = ( r3 == "z" || r3 == "Z" )? -25 : 1 ;
s = String.fromCharCode( r3.charCodeAt( r3.length - 1 ) + i ) ;
}
} else {
} else {
s = Number( r3 ) + i;
s = Number( r3 ) + i;

2013年3月2日 (土) 18:04時点における版

箇条書きの行頭記号や数字を自動的に挿入します。
Shift+Enterに登録して便利に使っています。

#title="箇条書き"
// itemizer.js
// 2013/03/02

var reg = /^([\t  ]*)(?:([((]*)([a-zA-Z]+|[0-9]+|[0-9]+)([))\.. ]+)|([--・・**]))/;

var ty = Editor.ActiveDocument.Selection.GetActivePointY( mePosLogical );
var trymax = 3;
var starty = ( ty - trymax > 0 )? ty - trymax : 1 ;
var line = "";
var result;
var chk = [];
for ( var i = starty; i <= ty; i++ ){
	line = Editor.ActiveDocument.GetLine( i, 0 );
	result = reg.exec( line );
	if ( result != null ){
		chk.push( { indent : result[ 1 ], bullet : result[ 3 ] } );
	}
}

Editor.ActiveDocument.Write( bulletSucc( result, chk ) );

function bulletSucc( result, chk ){
	if ( result == null ){ return "\n" };
	var chklast = chk.pop();
	var chklastlast = chk.pop();
	var i = ( isNaN( chklast.bullet ) || isNaN( chklastlast.bullet ) || chklast.indent != chklastlast.indent )? 1 : chklast.bullet - chklastlast.bullet ;
	var s = "", r3 = result[ 3 ];
	if ( r3 ){
		if  ( isNaN( r3 ) ){
			if ( r3 == "9" ){
				s = 10
			} else {
				i = ( r3 == "z" || r3 == "Z" )? -25 : 1 ;
				s = String.fromCharCode( r3.charCodeAt( r3.length - 1 ) + i ) ;
			}
		} else {
			s = Number( r3 ) + i;
			s = ( s > 0 )? s : 0 ;
			if ( r3.charAt( 0 ) == "0" ){
				s = ( "0000" + s ).slice( -r3.length );
			} else if ( r3.charAt( 0 ) == " " ){
				s = ( "    " + s ).slice( -r3.length );
			}
		}
	} else {
		s = "";
	}
	return "\n" + result[ 1 ] + result[ 2 ] + s + result[ 4 ] + result[ 5 ];
}
スポンサーリンク