PDA

Просмотр полной версии : Mmc - возвращаясь к часикам в мессагах.


lexik
13.06.2006, 01:58
Пришло мне тут письмо - может быть и интересное кому-нибудь...
*************************************

Странно! Обычно робот-регистратор форвардит запрос моментально!
Мне-же ничего не падает:( Это похоже на неувязку между доменами.
И высока вероятность того, что повторная регистрация и повторный запрос также могут не пройти.
Абыдно! Хотелось задать интересный вопросик спецам от перла!

Давайте я его размещу тут, и если модераторам не будет слишком сложно, перебросте его на форум! Правда я в таком случае ничего пискнуть уже не смогу. Но это уже не самое главное!
Ответы важнее:)!

С уважением.

Всем здравия!
Столкнулся я с щепетильной проблемкой...
И очень надеюсь, что она кого-нибудь из пёрлистых гурманов заинтересует:)!
В общем, беда тут где-то в нюансах, которые я никак не догоняю:(
Затея вроде как банальная и обыденна. Прикрутка часиков к трасферящимся в другие окна мессагам. Но мне - нужна расспасировка цветов, чтоб сообщение подхваченное триггером кидалось в другое окно таким, каким оно и пришло от сервера!
Дело тут в том, что, зачастую теляющие имеют весьма характерно раскрашенные подписи, и вообще цветами крутят как хотят:). Я и сам такой! И все это, порой несет полезную информацию, терять которую жалко:( И вот тут упс.. Затык!

Вот триггер, которй нормально кидает телы во 2-е окошко сохраняя цвета!
trig { wecho(1, CL::unparse_colors($;)); } 'говорит', '1111:msg';


Вот с ровно прикрученным временем и подсвеченный белым.
Ровность имется в виду - в основное окно идет текст прямой, во 2-е с ровным временем:
[01:15:15] Кто-то говорит что-то...
[12:05:99] Кто-то говорит что-то...
и unparse здесь уже увы - с боку(

use Timer;
...
trig {
$U::tmsg = $Timer::system_time;
$U::msg = "\003P[$U::tmsg] $1 говорит $2";
wecho (1, ($U::msg));
$; } '^(.*?) говорит (.*?)$', '1111:msg';

И как-бы теперь все, что есть хорошего с часами и исходными колорами, совместить в одном флаконе-триггере? У меня что-то не получается, похоже ума не хватает:(

Переплут
13.06.2006, 15:59
trig { wecho(1, CL::unparse_colors($;)); } 'говорит', '1111:msg';

use Timer;
...
trig {
$U::tmsg = $Timer::system_time;
$U::msg = "\003P[$U::tmsg] $1 говорит $2";
wecho (1, ($U::msg));
$; } '^(.*?) говорит (.*?)$', '1111:msg';

Собственно легко заметить что в 1-ом коде юзается переменная $;, во 2-ом же данная переменная вообще никогда не используется, в чем здесь прикол? да в том, что когда ты ловишь переменные $1 и $2 то в них нет кодов цвета, а в переменной $; после unparse_colors телнет цвета преобразуются в цвета ммц.
Итого правильным решением будет:
а). решение когда юзеры любят изгаляться над входящим трафиком по своему вдовесок:

trig {
my $income_line = CL::unparse_colors $;; # здесь цвета
my $sender = $1; # здесь нет цветов
$income_line =~ m/^(\w+?) сказал.? : \'(.*?)\'$/; # цвета сохраняются
wecho 1, print_time."$sender \003Psend message \003J=> $2";
} '^(\w+?) сказал.? : \'.*?\'$', ":tells";

В реализованном выше коде, в окно номер 1 (оно-же alt + 2) будет отображена строка, где полностью сохранены цвета сообщения, + автор сообщение передается без цветов ммц.

б) в самом элементарном виде, данный триг выглядит так:

trig {
wecho 1, print_time.CL::unparse_colors($;);
} '^\w+? сказал.? : \'.*?\'$', ":tells";


в) собственно print_time (который потом удобно присобачивать куда угодно в дальнейшем)

sub print_time {
return sprintf "\003I[%02d:%02d]", (localtime)[2], (localtime)[1];
#return sprintf "\003I[%02d:%02d:%02d]", (localtime)[2], (localtime)[1], (localtime)[0]; -- часы с секундами
}

возвращают стильные часики: вида: [12:02]

Шана[МЗ]
13.06.2006, 16:31
в конфиге килника это в telling.pm

Переплут
14.06.2006, 17:23
Чужой конфиг не всегда хорошее подспорье для создание собственного.
(МЗ: в данной фразе не наезд на ваш конфиг, который вы выложили в всеобщий доступ (чего я к примеру не делаю), а смысл: "башка у каждого по-своему варит" поэтому оно может оказаться не оптимальным решением поставленной задачи)

lexik
14.06.2006, 20:34
зная чужой код, видишь какие ошибки совершать не нужно ;) и ищешь новые пути решения задачи... истина GPL :) так что тут переплут не прав... но это imho...

pif
14.06.2006, 21:36
Чужой конфиг не всегда хорошее подспорье для создание собственного.
(МЗ: в данной фразе не наезд на ваш конфиг, который вы выложили в всеобщий доступ (чего я к примеру не делаю), а смысл: "башка у каждого по-своему варит" поэтому оно может оказаться не оптимальным решением поставленной задачи)
Конфиг килника почти панацея:)
А имея руки (мечты, мечты) можно сделать всё то немногое что лично тебе не хватает...

Переплут
17.06.2006, 09:57
Мне приходилось свой конфиг 1 раз переписывать с нуля, т.к. за все то время что он у меня существовал, там накопилось много того, что собственным грузом несколько ограничивало мои возможности добавления других вещей.
После того как я переписал свой конфиг с нуля -- я слегкостью добавил все что мне было нужно.
Так, что может конечно смотреть на чужие ошибки полезно, но использовать чужой конфиг целиком в кач-ве базы для своего -- может быть не плохо, но в дальнейшем легко может стать ограничивающим фактором.