Shannar
2005-08-15 14:16:25 UTC
=*= [Thursday, 04 Aug 2005 11:02:08] Sergey Chumakov -> (Shannar)
SC> Вопрос только в одном. Как цвет отловить? Как на него регексп написать?
SC> По-моему, сабсту передается строка без цвета.
Ежели ещё актуально, то вот что нашёл в архивах:
=*= Cut ===
EK> Да кстати а как в mmc фильтpовать _весь_ входящий текст. Фильтpовать -
EK> т.е. обpабатывать опpеделенной функцией?
Это делается так: создается через API триггер с большим приоритетом (для
обычных целей никогда не используйте приоритеты выше 2000, просто возьмите это
за правило) на регексп ".*" :
==cut==
sub get_color($$) {
return chr(ord(substr($_[0], 2*$_[1]+1, 1))+ord('A'));
}
trig {
if (get_color($;, 1) eq 'I') {
$: = "\003F*$1";
}
} "(.*)", "f2200:COMM";
==cut==
Приведенный кусок кода заменяет строки, написанные темно-серым цветом на
фиолетовые и добавляет в начало такой строки символ "*" (в "Былинах" так
выглядят социалы. Мне это не нравится, поэтому я вижу фиолетовые надписи типа
"*Кто-то улыбнулся.")
][
=*=
AIB> trig {
AIB> if (get_color($;, 1) eq 'I') {
AIB> $: = "\003F*$1";
AIB> }
AIB> } "(.*)", "f2200:COMM";
AIB> ==cut==
MMC конечно очень сложно заставить тормозить, однако и злоупотреблять
такими конструкциями (типа .* да еще в скобках) на мой взгляд не стоит.
IMHO более кошерным способом было бы нечто вроде:
trig {
$: = "\003F*$_" if get_color($;, 1) eq 'I';
} '', '200n:COMM';
=*= Cut ===
SC> Вопрос только в одном. Как цвет отловить? Как на него регексп написать?
SC> По-моему, сабсту передается строка без цвета.
Ежели ещё актуально, то вот что нашёл в архивах:
=*= Cut ===
EK> Да кстати а как в mmc фильтpовать _весь_ входящий текст. Фильтpовать -
EK> т.е. обpабатывать опpеделенной функцией?
Это делается так: создается через API триггер с большим приоритетом (для
обычных целей никогда не используйте приоритеты выше 2000, просто возьмите это
за правило) на регексп ".*" :
==cut==
sub get_color($$) {
return chr(ord(substr($_[0], 2*$_[1]+1, 1))+ord('A'));
}
trig {
if (get_color($;, 1) eq 'I') {
$: = "\003F*$1";
}
} "(.*)", "f2200:COMM";
==cut==
Приведенный кусок кода заменяет строки, написанные темно-серым цветом на
фиолетовые и добавляет в начало такой строки символ "*" (в "Былинах" так
выглядят социалы. Мне это не нравится, поэтому я вижу фиолетовые надписи типа
"*Кто-то улыбнулся.")
][
=*=
AIB> trig {
AIB> if (get_color($;, 1) eq 'I') {
AIB> $: = "\003F*$1";
AIB> }
AIB> } "(.*)", "f2200:COMM";
AIB> ==cut==
MMC конечно очень сложно заставить тормозить, однако и злоупотреблять
такими конструкциями (типа .* да еще в скобках) на мой взгляд не стоит.
IMHO более кошерным способом было бы нечто вроде:
trig {
$: = "\003F*$_" if get_color($;, 1) eq 'I';
} '', '200n:COMM';
=*= Cut ===