|
白雲斎と申します。
// 警告を出したいダグの右端の語句を設定。(完全一致)
$skipWord = "s1>"; // p1.s1> とか
searchup "<s[^>]+>", regular;
if( result == false )
{
message "ダグを発見できない!";
endmacro;
}
#topx = seltopx;
#topy = seltopy;
#endx = selendx;
#endy = selendy;
if( gettext(#endx-strlen($skipWord),#endy,#endx,#endy) == $skipWord )
{
beginsel;
moveto #endx, #endy;
endsel;
message "このダグは、削除できない!";
endmacro;
}
beginsel;
moveto #endx, #endy;
delete;
searchup "</s>";
if( result )
{
if( selendx != #topx || selendy != #endy )
{
undo;
message "開始/終了ダグが隣接していない!";
}
else delete;
}
else
{
undo;
message "隣接する終了ダグがない!";
}
endmacro;
---------------------------------------------------------------
【蛇足】
一連の流れを把握していないので頓珍漢かもしれません。
単に思いついたことを書き連ねているだけですので、読み流してください。
ダグ付けをした書類を編集することは、連番、ダグの不整合が発生しやすく、
危険が伴う。それなら、編集方法を変更してみるのはどうだろう・・・。
┏━━━━━━━┓
┃ 打ち込み(*1) ┃←───┬─┬←─┐
┗━━━━━━━┛ │ ↑ │
▼ │ │ │
┏━━━━━━━━━━━━━━┓ │ │ │
┃ フォーマット・チェック(*2) ┃ ┼─┘エラー・ログ
┗━━━━━━━━━━━━━━┛ │ │
▼ │ │
┏━━━━━━━━━━━━┓ │ ↑
┃ ダグ付けコンバート(*3) ┃ ─┼→ エラー・ログ
┗━━━━━━━━━━━━┛ │
▼ │
┏━━━━━━━━┓ │
┃ 修正の発生(*4) ┃ ───┘
┗━━━━━━━━┛
▼
┏━━━┓
┃ 完了 ┃
┗━━━┛
(*1):
入力規則(フォーマット)を厳密に規定する。
(LaTeX、RubyのRDやPerlのPODなどのように識別句を埋め込む?
識別句を埋め込むマクロを用意すれば、安全、簡単!?)
規則違反を目視し易いように、強調表示を定義、設定する。
(独自の拡張子を付けると、ファイルタイプ別の設定が簡単)
*** 例えば ****************************************************
={{:BEGIN-SECTION
==:五十音
あいうえお
かきくけこ -\ ←次の行は同一センテンスとする
さしすせそ
たちつてと
なにぬねの
=:END-SECTION}}
={{:BEGIN-SECTION
==:HEADING
=:END-SECTION}}
***************************************************************
※改行がセンテンスの区切り
※空行は段落区切り
※このような形式だと、新旧の差分(DIFF)が検出しやすい!?
(*2):
入力規則(フォーマット)に違反していないか、マクロ等でチェックする。
修正箇所が見つかったら、修正後に再びフォーマット・チェック。
(*3):
ダグ付けをして、エキスポートする。
元のファイルとは、別管理(別の拡張子)をする。
マクロよりは、テキスト処理に強い Ruby,Perl,WSH などを検討する。
入力規則が厳密であればあるほど、コンバートが簡単。
とは言え、目視の確認は必須か。
(*4):
コンバート後に修正が発生した場合は、元のファイルを修正する。
即ち、(*1)に戻る。
※(*2)と(*3)を一つの処理でまかなう方が自然か?
※実務への適用方法は、ご自分でお考えくださいね。
以上。
長文失礼しました。
__________________________________________________
Do You Yahoo!?
http://bb.yahoo.co.jp/
|
|