Skip to content
SthephanShinkufag edited this page Oct 1, 2012 · 28 revisions

Волшебные команды (спеллы)

Скрипт обладает широкими возможностями по пользовательскому управлению загруженным на странице контентом, включая скрытие постов по различным условиям, и замену содержимого посредством регулярных выражений. В связи с тем, что скрипт находится в состоянии перманентной разработки, набор управляющих слов может изменяться и дополнятся.

Все команды, в силу устоявшихся традиций, будем называть спеллами, от англ. spell - "заклинание".

Спеллы скрытия постов

Все они имеют следующий синтаксис:

#имя_спелла[имя_доски, номер_треда](аргументы)

Здесь [имя_доски, номер_треда] – это область действия спелла в определенном треде определенной доски. При этом, вне треда, он действовать не будет. Можно также указать:

#имя_спелла(аргументы) - тогда он будет действовать во всех досках и тредах
#имя_спелла[имя_доски](аргументы) - действие на одной доске и во всех ее тредах
#имя_спелла[имя_доски,](аргументы) - действие только на доске, но не в тредах

Каждый спелл скрытия может возвратить два состояния – true и false. Если он при проверке всех условий возвращает true для одного из постов, то этот пост будет скрыт. В случае, если этим постом окажется оп-пост, будет скрыт весь тред. Для возможности скрытия тредов, опция ФильтрыПрименять фильтры к тредам должна быть включена.

Если спеллов несколько, то все они должны быть объединены в одно логическое выражение, которое, для каждого из постов, будет также возвращать true или false. Для этого доступны следующие логические операции:

& – логическое "И", spell_1 & spell_2
| – логическое "ИЛИ", spell_1 | spell_2
! – логическое "НЕ", !spell_1
) и ( – скобки для логической группировки, (spell_1 & spell_2) | spell_3

Во избежание конфликтов, скобки внутри аргумента должны быть экранированы в виде \) и \(. Рассмотрим все это на примере спелла #words.

#words

#words[имя_доски, номер_треда](строка)

Возвращает true, если текст сообщения или темы поста содержит выражение, указанное в аргументе строки. Совпадение строки не зависит от введенного регистра и разметки в посте. Наличие аргумента обязательно. Примеры:

#words(herp derp) – скроет все посты на всех досках, содержащие herp derp (в том числе "Ololo hErP DeRp!11", "HURR DURR HERP DERP HUUUURRRR", etc)
#words[b](fag) – скроет посты на доске /b/ и ее тредах, содержащие fag (в том числе "Faggot! Sage!", "OP IS A FAG", "A am oldfag, and you are dick", etc)
#words[b,32768](fag) – скроет посты в треде №32768 доски /b/, содержащие fag. При этом, посты будут скрыты только в том случае, если вы находитесь в этом треде
#words[b,](fag) – аналогично, но посты будут скрываться только при просмотре списка тредов доски /b/.

Логические операции:

#words[b](gay) | #words[b](durr) – скроет все посты на доске /b/, содержащие в любом месте или gay, или durr. Например, будут скрыты посты "You are homo gay." и "Hurr durr, your argument is invalid!"
#words(gay) & #words(durr) – скроет посты, содержащие одновременно gay и durr. Например, пост "You are homo gay!" скрыт не будет. Но в тоже время, будет скрыт пост, содержащий "Hurr durr! Fake and gay !"
!#words(nya) – скроет посты, не содержащие слово nya. Будет скрыт пост, "Sage to animufags!", но не будет скрыт пост, содержащий "Hi, animufags! Nyaaaa~"
(#words(:3) | #words(^_^)) & #words(sage) – скроет посты "Sage!! ^_^", "Sage :3", но не скроет "Nya! :3"

#op

Возвращает true, если пост является оп-постом. Аргумент игнорируется. Позволяет скрывать только треды, либо только ответы. Примеры:

#op & #words(roll) – скроет треды на всех досках, содержащие roll. Например, будет скрыт тред с темой "Roll thread go!"
#op[a] & !#words(touhou) – скроет все треды в /a/, не содержащие в оп-посте слова touhou
!#op() & #words[a](bump) – скроет посты в /a/, содержащие bump. Оп-посты, и, соответственно, сами треды, скрыты не будут.

#subj

#subj[имя_доски, номер_треда](регекс)

Возвращает true, если текстовая информация темы поста соответствует регексу (регулярному выражению), указанному в аргументе. Если аргумента нет, то возвращает true в случае наличия темы.

Подробнее с регулярными выражениями вы можете ознакомиться, например, здесь и здесь. Выражение должно иметь вид /шаблон/, либо /шаблон/i, где i – флаг нечувствительности к регистру. Прочие флаги для спелла #subj бесполезны, так как пост скрывается при первом найденном совпадении.

#subj[b,32768] – скрыть в треде №32768 доски /b/ все посты с наличием темы
#subj(/sage/i) – скрыть любой пост или тред, содержащий слово "sage" в теме
#op & #subj[b](/newfags|triforce/i) – скрыть на доске /b/ треды с наличием в теме слов newfags или triforce, например, "Newfags vs oldfags", "You can't triforce"

#name

#name[имя_доски, номер_треда](строка)

Возвращает true, если имя пользователя в посте содержит выражение, указанное в аргументе строки, с учетом регистра. Если аргумента нет, то возвращает true в случае наличия имени в посте. Примеры:

#name[a] – скрыть посты на доске /a/ с любым содержащимся именем
#name[b](Sage) – скрыть на доске /b/ все посты, содержащие Sage в своем имени, напрмер, посты неймфага "Sage-kun"

#trip

#trip[имя_доски, номер_треда](строка)

Возвращает true, если трип-код пользователя в посте равен указанному аргументу строки. Если аргумента нет, то возвращает true в случае наличия трип-кода в посте. Примеры:

#trip – скрыть любой пост, содержащий трипкод
!#trip[a] – скрыть любой пост без трипкода на доске /a/
#trip[s,32768](Canc3RL0L4) – скрыть все посты в треде 32768 доски /s/, содержащие трипкод "!Canc3RL0L4", либо "!!Canc3RL0L4"
#name(Oldfag) & #trip(%TRiF0RCE9) – скрыть везде неймфага, который подписывается, как "Oldfag!%TRiF0RCE9"

#sage

Возвращает true, если пост содержит сажу. Аргумент игнорируется. Примеры:

#sage – скрыть посты с сажей во всех тредах и досках
#sage[b,32768] & #name(Sage-kun) – скрыть посты с сажей от Sage-kun'a в треде 32768 доски /b/

Clone this wiki locally