>
http://pc12.2ch.net/test/read.cgi/software/1257595784/518 こんな感じです。
*list2.txt仕様*
---------------グループデータ構成--------------------------
グループマッチ文字列[TAB]デフォルト表示用マッチ文字列
[TAB]マッチ文字列[TAB]排他フラグ[TAB]似非セマフォ[TAB]表示用マッチ文字列
・
・
・
---------------グループデータ構成--------------------------
リストは「グループデータ構成」の集まりです。
空白行は無視されます。行頭 # 付きはコメントとして扱います。
最初の文字が[TAB]で始まらない、かつ # で始まらない次の[TAB]までの文字列を「グループマッチ文字列」とします。
最初の文字が[TAB]で始まり、マッチ文字列、排他フラグ、似非セマフォがそれぞれ空文字列でない場合、グループに属するitemとします。
itemはホストネームを保持するリストを持っています。
item.list = ホストネームを保持するリスト
item.count() = 保持しているホストネームの数
** 処理内容 **
事前処理:
「グループマッチ文字列」にマッチすると規制範囲最小化の対象となります。
次にどのitemにマッチするかチェックします。
マッチしたitemの item.list に該当ホストを追加し、すべての対象となるホストを追加していきます。
最小化実行:
すべての対象ホストの追加が終わったら、各グループ単位で最小化を実行していきます。
グループ内のあるひとつのitemを起点とします。
自身が item.count()==0 の場合は起点にはなりません。
Item.表示用マッチ文字列 eq "" の場合は起点にはなりません。
<条件1>
起点のitemであること。
<条件2>
自身(item)以外に item.count() !=0 の item(Target)が存在し、そのitem(Target)の排他フラグがFALSEであること。
<条件3>
自身(item)を含め、item.count() !=0 の条件を満たす item の個数が 似非セマフォ以下であること。
<条件1,2,3>をクリアしたitemの持つ「表示用マッチ文字列」が規制範囲縮小用のマッチ文字列になります。
また、2個以上のitemが起点となり、かつ<条件1,2,3>をクリアした場合最後のitemの「表示用マッチ文字列」が使用されます。
(本来はリストの構成によって起きないですが)
<条件1,2,3>を満たす item が存在しない場合は規制範囲縮小はされず「デフォルト表示用マッチ文字列」が使用されます。
ただし、「デフォルト表示用マッチ文字列」がない場合は「グループマッチ文字列」が使用されます。