home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MacPeople 2003 February 1
/
MACPEOPLE-2003-02-01.ISO.7z
/
MACPEOPLE-2003-02-01.ISO
/
ぶらりオンラインウェアの旅
/
定番ソフト
/
Jedit(OS9)
/
MacroCollectionJ.sea
/
MacroCollection-J
/
章節図番号再割付
/
スクリプトの解説
< prev
next >
Wrap
Text File
|
2001-01-01
|
4KB
|
106 lines
章節図 番号再割付スクリプト
Programmed by Satoshi Matsumoto
章、節、図の番号をふり直す。
選択範囲の章・節・図の見出しの位置を正規表現で検出して、番号をふり直す。
--------
ダイアログの設定をする
property theDialog : {size:[360, 150], contents:[ツ
{class:push button, bounds:[270, 120, 330, 140], name:"OK", enabled:3}, ツ
{class:push button, bounds:[190, 120, 250, 140], name:"Cancel"}, ツ
{class:text field, bounds:[65, 30, 270, 30 + 16], name bounds:ツ
章見出しのデフォルトパターンを指定する
[10, 30, 60, 30 + 16], name:"章見出し", value:"^{第}{[¥¥s0-9]+}{章}"}, ツ
{class:text field, bounds:[285, 30, 330, 30 + 16], value:"1"}, ツ
{class:text field, bounds:[65, 55, 270, 55 + 16], name bounds:ツ
節見出しのデフォルトパターンを指定する
[10, 55, 60, 55 + 16], name:"節見出し", value:"^{第}{[¥¥s¥¥.0-9]+}{節}"}, ツ
{class:text field, bounds:[285, 55, 330, 55 + 16], value:"1"}, ツ
{class:text field, bounds:[65, 80, 270, 80 + 16], name bounds:ツ
図見出しのデフォルトパターンを指定する
[10, 80, 60, 80 + 16], name:"図見出し", value:"^{第}{[¥¥s¥¥.0-9]+}{図}"}, ツ
{class:text field, bounds:[285, 80, 330, 80 + 16], value:"1"}, ツ
{class:static text, bounds:[120, 10, 180, 10 + 16], contents:"正規表現"}, ツ
{class:static text, bounds:[290, 10, 340, 10 + 16], contents:"初期値"} ツ
], timeout after:60}
tell application "Jedit4"
Jeditのバージョンが4.0.4以上かどうかをチェック。そうでない時は中止。
if version < 404 then
preDialog
display dialog "Jedit4.0 Rev4.0.4 以降を使用してください" buttons {" 了解"}
postDialog
error number -128
end if
preDialog
ダイアログを表示する
set dialogResult to (dd auto dialog theDialog with grayscale)
postDialog
if item 1 of dialogResult is false then
ダイアログでキャンセルボタンを押したときは中止する
error number -128
end if
ダイアログの結果を各変数に格納
set chapPattern to item 3 of dialogResult
set chapNum to ((item 4 of dialogResult) as integer) - 1
set secPattern to item 5 of dialogResult
set secNum to ((item 6 of dialogResult) as integer) - 1
set figPattern to item 7 of dialogResult
set figNum to ((item 8 of dialogResult) as integer) - 1
ウィンドウを前面へ
activate
if (count document) < 1 then
preDialog
ウィンドウが開いていないときは警告をだして終了
display dialog "行番号を付加する書類を先に開いてください。" buttons {" 了解"}
postDialog
error number -128
end if
tell document 1
if length of selection < 1 then
なにも選択されていないときは書類全体を対象に
set startPara to 1
set endPara to paragraph number of last character
else
選択領域の開始/終了パラグラフ番号を変数にセット
set startPara to paragraph number of selection
set endPara to paragraph number of last character of selection
end if
改めて対象領域をパラグラフ単位で設定しなおす
select (paragraphs startPara thru endPara)
選択範囲の章見出し、節見出し、図見出しのどれかに一致する文字列をとりあえず見つける
repeat while (find (chapPattern & "|" & secPattern & "|" & figPattern) in selection with grep without entire word)
見つかった文字列の先頭と最後のオフセットを変数へ保存
set startOff to byteoffset of selection
set endOff to startOff + (length of selection)
章、節、図のそれぞれに応じて処理する
if find chapPattern in bytes startOff thru endOff then
章番号をインクレメント
set chapNum to chapNum + 1
節番号、図番号をリセット
set secNum to 0
set figNum to 0
章見出しの番号部分を再割付
replace chapPattern to "¥¥1 " & chapNum & " ¥¥3" in selection with grep
else if find secPattern in bytes startOff thru endOff then
節番号をインクレメント
set secNum to secNum + 1
節見出しの番号部分を再割付
replace secPattern to "¥¥1 " & chapNum & "." & secNum & " ¥¥3" in selection with grep
else if find figPattern in bytes startOff thru endOff then
図番号をインクレメント
set figNum to figNum + 1
図見出しの番号部分を再割付
replace figPattern to "¥¥1 " & chapNum & "." & figNum & " ¥¥3" in selection with grep
end if
残りの部分を再選択し直す
set startOff to byteoffset of selection
set startOff to startOff + (length of selection)
set endOff to byteoffset of last byte of paragraph endPara
select (bytes startOff thru endOff)
end repeat
end tell
end tell