「自動箇条書き」の版間の差分
ナビゲーションに移動
検索に移動
編集の要約なし |
編集の要約なし |
||
| 5行目: | 5行目: | ||
#title="箇条書き" | #title="箇条書き" | ||
// itemizer.js | // itemizer.js | ||
// 2013/02 | // 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 = 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 ];
}
スポンサーリンク