В скрипте есть команда поиска кальков по ключевому слову. В дефолтной версии скрипта результатом такого поиска является первый найденный кальк:
#egghelp @ IrcNet.ru писал(а): <@tvrsh> !findcalc eggdrop
<@lamestbot> эггдроп = eggdrop [tvrsh]
<@tvrsh> !findcalc *eggdrop*
<@lamestbot> эггдроп = eggdrop [tvrsh]
Сегодня мы сделаем так, чтобы в результате отображался список всех кальков удовлетворяющих поисковому запросу.
Откройте скрипт и найдите в нем процедуру ::calc::findcalc
Рассмотрим в нем данное условие:
foreach cdata $chandata {
if {[string match [::calc::tolower $mask] [::calc::tolower [lindex $cdata 4]]]} {
set res $cdata
break
}
}
if {[string match [::calc::tolower $mask] [::calc::tolower [lindex $cdata 4]]]} {
set res $cdata
break
}
}
Тут перебираются все кальки данного канала, и при первом совпадении с поисковым запросом цикл прерывается. Нам надо, чтобы цикл поиска совпадающих кальков продолжался и дальше. Для этого заменяем на
Далее нам надо изменить способ вывода результатов. Замените
if {$res != ""} {::calc::out $nick $chan "[lindex $res 3] = [lindex $res 4] \[[lindex $res 1]\]"
} else {::calc::out $nick $chan "Кальк не найден..."}
} else {::calc::out $nick $chan "Кальк не найден..."}
if {$res != ""} {::calc::out $nick $chan "По маске '$mask' [lindex {. найден найдено найдены} [::calc::numgrp [llength $res]]] [llength $res] [lindex {. кальк калька кальков} [::calc::numgrp [llength $res]]]: [join $res ", "]."
} else {::calc::out $nick $chan "По маске '$mask' кальки не найдены..."}
} else {::calc::out $nick $chan "По маске '$mask' кальки не найдены..."}
proc ::calc::numgrp {number} {
switch -glob -- "$number" {
*11 {return 3}
*12 {return 3}
*13 {return 3}
*14 {return 3}
*1 {return 1}
*2 {return 2}
*3 {return 2}
*4 {return 2}
default {return 3}
}
}
switch -glob -- "$number" {
*11 {return 3}
*12 {return 3}
*13 {return 3}
*14 {return 3}
*1 {return 1}
*2 {return 2}
*3 {return 2}
*4 {return 2}
default {return 3}
}
}
В измененном способе выводы мы полученный список кальков разделяем запятыми и выводим его в канал:
#egghelp @ IrcNet.ru писал(а): <@tvrsh> !findcalc eggdrop
<@lamestbot> * По маске 'eggdrop' найден 1 кальк: эггдроп.
<@tvrsh> !findcalc *eggdrop*
<@lamestbot> * По маске '*eggdrop*' найден 121 кальк: эггдроп, statstcl, bseen, погода, ping, ...