自動箇条書き

2013年3月7日 (木) 19:49時点における211.121.58.21 (トーク)による版

概要

  • 箇条書きの行頭記号や数字を自動的に挿入します。
  • Shift+Enterに登録して便利に使っています。
  • 行末で実行する場合とインデントをずらして実行する場合を考えました。


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

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

var ty = Editor.ActiveDocument.Selection.GetActivePointY( mePosLogical );
var trymax = 9;
var tyend = ( ty - trymax > 0 )? ty - trymax : 1 ;
var line = "";
var result;
var resultary = [];
var thisline = Editor.ActiveDocument.GetLine( ty, 0 );
var indent = thisline.replace( /^([ \t]*).*/, "$1" );
for ( var i = ty; i >= tyend; i-- ){
	line = Editor.ActiveDocument.GetLine( i, 0 );
	var linechk = line.replace( /^([ \t]*).*/, "$1" );
	if ( i < ty && linechk.length < indent.length ){ break }
	result = reg.exec( line );
	if ( result != null  ){
		if ( result[ 1 ] == indent ){
			resultary.unshift( result.slice( 0 )  )
		} else if ( result[ 1 ] < indent ){
			break;
		}
	}
}

Editor.ActiveDocument.Write( bulletSucc( resultary, thisline ) );

function bulletSucc( resultary, thisline ){
	if ( resultary.length == 0 ){ return firstitem }
	var chklast = resultary.pop();
	var chklastlast = resultary.pop();
	var i = ( chklastlast == null || isNaN( chklast[ 3 ] ) || isNaN( chklastlast[ 3 ] ) )? 1 : chklast[ 3 ] - chklastlast[ 3 ] ;
	var s = "", r3 = ( chklast == null )? 0 : chklast[ 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 );
			}
		}
	}
	if ( thisline.replace( /^[ \t]+/, "" ).length == 0 ){
		return chklast[ 2 ] + s + chklast[ 4 ] + chklast[ 5 ];
	} else {
		return "\n" + chklast[ 1 ] + chklast[ 2 ] + s + chklast[ 4 ] + chklast[ 5 ];
	}
}

更新履歴

20130306
  • 全角数字に対応。
  • 箇条書きが一行しかないとエラーになるのを修正。
20130307
  • 数字の加算時にインデントのチェックをするようにした。
  • その他こまかい動作の修正。
スポンサーリンク