krf.tcl - кодексы Российской Федерации

Решение вопросов при работе с TCL скриптами.

Модератор: Модераторы

krf.tcl - кодексы Российской Федерации

Сообщение tvrsh » 29 июн 2010 22:28

###
#
# Название: krf.tcl
# Версия: 1.0
# Автор: tvrsh
#
###
#
# Описание: Скрипт забирает с сайта http://www.zakonrf.info/ кодексы РФ.
#
###


При команде без параметров скрипт показывает список доступных кодексов. При указании кодекса скрипт показывает список глав, далее список статей и при указании статьи показывает ее текст.
Внимательно читайте раздел Установка в шапке скрипта. Для скрипта надо создать папку krf в папке scripts и положить его туда. Подгружать командой source scripts/krf/krf.tcl
Скрипт будет сохранять всю отпарсенную информацию в папке krf в текстовых файлах с названиями номеркодекса.номерглавы.статья.txt потом можно будет сделать работу скрипта без соединения с интернетом.

Пример работы:
Просмотр списка кодексов.
#egghelp@IrcNet.ru писал(а):[21:42:16] <tvrsh> !кодекс
[21:42:16] <@bionic> Кодексы РФ - основной список
[21:42:16] <@bionic> Арбитражный процессуальный кодекс (АПК РФ) [!кодекс 1]
[21:42:17] <@bionic> Гражданский кодекс (ГК РФ) [!кодекс 2]
...
[21:42:17] <@bionic> Воздушный кодекс [!кодекс 18]
[21:42:17] <@bionic> Кодекс внутреннего водного транспорта [!кодекс 19]
[21:42:17] <@bionic> Актуальность: Февраль 2010.


Просмотр глав кодекса.
#egghelp@IrcNet.ru писал(а):[22:11:23] <tvrsh> !кодекс 17
[22:11:25] <@bionic> Водный кодекс РФ
[22:11:26] <@bionic> Глава 1 - Общие положения [!кодекс 17 1]
...
[22:11:26] <@bionic> Глава 7 - Ответственность за нарушение водного законодательства [!кодекс 17 7]


Просмотр статей главы кодекса.
#egghelp@IrcNet.ru писал(а):[22:12:53] <tvrsh> !кодекс 17 7
[22:12:54] <@bionic> Водный кодекс РФ / Глава 7. Ответственность за нарушение водного законодательства
[22:12:54] <@bionic> Статья 68 - Административная, уголовная ответственность за нарушение водного законодательства [!кодекс 17 7 1]
[22:12:54] <@bionic> Статья 69 - Возмещение вреда, причиненного водным объектам вследствие нарушения водного законодательства [!кодекс 17 7 2]


Просмотр статьи.

#egghelp@IrcNet.ru писал(а):[22:13:54] <tvrsh> !кодекс 17 7 2
[22:13:55] <@bionic> Статья 69. Возмещение вреда, причиненного водным объектам вследствие нарушения водного законодательства
[22:13:55] <@bionic> [Водный кодекс РФ] [Глава 7]
[22:13:55] <@bionic> 1. Лица, причинившие вред водным объектам, возмещают его добровольно или в судебном порядке.
[22:13:55] <@bionic> 2. Методика исчисления размера вреда, причиненного водным объектам вследствие нарушения водного законодательства, утверждается в порядке, установленном Правительством Российской Федерации.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Have fun.
-
Получить помощь можно на каналах #egghelp в сети IrcNet.ru и #eggdrop в сети RusNet(Ключ канала eggdrop).
Перед созданием новой темы внимательно читайте Правила оформления топиков.
Аватара пользователя
tvrsh
 
Сообщения: 1230
Зарегистрирован: 19 авг 2008 16:55
Откуда: Russian Federation, Podolsk
Благодарил (а): 6 раз.
Поблагодарили: 130 раз.
Версия бота: Eggdrop 1.6.20+suzi

Re: krf.tcl - кодексы Российской Федерации

Сообщение tvrsh » 03 июл 2010 18:49

Некоторые статьи не помещаются в длинну строки и выводятся не полностью.
Чтобы это исправить в скрипт добавляем такую процедуру:
TCL: [ Скачать ] [ Скрыть ]
# Процедура вывода длинных строк и разбиения их по определенным символам.
proc ::krf::krf_outlarge {nick chan color text {lineLen 400} {delims {•.!?}}} {
    variable krf

    if {$krf(notice) == "1"} {
        set type "NOTICE $nick"
    } else {
        set type "PRIVMSG $chan"
    }

    regsub -all {\{} $text "" text
    regsub -all {\}} $text "" text
    if {[string length $text] <= $lineLen} {
        putserv "$type :$color$text"
        return 0
    }
    set _text [split $text $delims]
    set x 0
    set i 0
    while {$x < $lineLen} {
        if {$i >= [llength $_text]} {
            return 0
        }
        set wordlen [string length [lindex $_text $i]];
        if {$x + $wordlen > $lineLen} {
            break
        }
        incr x $wordlen
        incr x
        incr i
    }
    putserv "$type :$color[string range $text 0 [expr $x - 1]]"
    ::krf::krf_outlarge $nick $chan $color [string trimleft [string range $text $x end]] $lineLen $delims
}

После чего, в процедуре ::krf::krf_proc, почти в самом низу найдите строку
                            ::krf::krf_out $nick $chan "$krf(color1)$stext\003"
и замените ее на
                            ::krf::krf_outlarge $nick $chan $krf(color1) $stext

Теперь строка любой длинны будет выводиться полностью, и даже не будет сбрасываться ее цвет.
Have fun.
-
Получить помощь можно на каналах #egghelp в сети IrcNet.ru и #eggdrop в сети RusNet(Ключ канала eggdrop).
Перед созданием новой темы внимательно читайте Правила оформления топиков.
Аватара пользователя
tvrsh
 
Сообщения: 1230
Зарегистрирован: 19 авг 2008 16:55
Откуда: Russian Federation, Podolsk
Благодарил (а): 6 раз.
Поблагодарили: 130 раз.
Версия бота: Eggdrop 1.6.20+suzi


Вернуться в TCL скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10

cron