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

提供: MeryWiki
ナビゲーションに移動 検索に移動
手石 (トーク | 投稿記録)
編集の要約なし
編集の要約なし
29行目: 29行目:
var chklast = chk.pop();
var chklast = chk.pop();
var chklastlast = chk.pop();
var chklastlast = chk.pop();
var i = ( isNaN( chklast.bullet ) || isNaN( chklastlast.bullet ) || chklast.indent != chklastlast.indent )? 1 : chklast.bullet - chklastlast.bullet ;
var i = ( isNaN( chklast.bullet ) || chklastlast == null || 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 ){

2013年3月6日 (水) 13:48時点における版

箇条書きの行頭記号や数字を自動的に挿入します。
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 ) || chklastlast == null || 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 ];
}
スポンサーリンク