「自動箇条書き」の版間の差分
ナビゲーションに移動
検索に移動
編集の要約なし |
編集の要約なし |
||
| 1行目: | 1行目: | ||
箇条書きの行頭記号や数字を自動的に挿入します。<br> | 箇条書きの行頭記号や数字を自動的に挿入します。<br> | ||
Shift+Enterに登録して便利に使っています。<br> | Shift+Enterに登録して便利に使っています。<br> | ||
<pre> | <pre> | ||
#title="箇条書き" | #title="箇条書き" | ||
| 54行目: | 53行目: | ||
} | } | ||
</pre> | </pre> | ||
=== 更新履歴 === | |||
;20130306 | |||
:*全角数字に対応。 | |||
:*箇条書きが一行しかないとエラーになるのをこっそり修正。 | |||
2013年3月6日 (水) 19:08時点における版
箇条書きの行頭記号や数字を自動的に挿入します。
Shift+Enterに登録して便利に使っています。
#title="箇条書き"
// itemizer.js
// 2013/03/06
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 ];
}
更新履歴
- 20130306
-
- 全角数字に対応。
- 箇条書きが一行しかないとエラーになるのをこっそり修正。
スポンサーリンク