-
Notifications
You must be signed in to change notification settings - Fork 67
Spells
Скрипт обладает широкими возможностями по пользовательскому управлению загруженным на странице контентом, включая скрытие постов по различным условиям, и замену содержимого посредством регулярных выражений. В связи с тем, что скрипт находится в состоянии перманентной разработки, набор управляющих слов может изменяться и дополнятся.
Все команды, в силу устоявшихся традиций, будем называть спеллами, от англ. spell - "заклинание".
Все они имеют следующий синтаксис:
#имя_спелла[имя_доски, номер_треда](аргументы)
Здесь [имя_доски, номер_треда]
– это область действия спелла в определенном треде определенной доски. При этом, вне треда, он действовать не будет. Можно также указать:
#имя_спелла(аргументы)
- тогда он будет действовать во всех досках и тредах
#имя_спелла[имя_доски](аргументы)
- действие на одной доске и во всех ее тредах
#имя_спелла[имя_доски,](аргументы)
- действие только на доске, но не в тредах
Каждый спелл скрытия может возвратить два состояния – true
и false
. Если он при проверке всех условий возвращает true
для одного из постов, то этот пост будет скрыт. В случае, если этим постом окажется оп-пост, будет скрыт весь тред. Для возможности скрытия тредов, опция Фильтры
– Применять фильтры к тредам
должна быть включена.
Если спеллов несколько, то все они должны быть объединены в одно логическое выражение, которое, для каждого из постов, будет также возвращать true
или false
. Для этого доступны следующие логические операции:
&
– логическое "И", spell_1 & spell_2
|
– логическое "ИЛИ", spell_1 | spell_2
!
– логическое "НЕ", !spell_1
)
и (
– скобки для логической группировки, (spell_1 & spell_2) | spell_3
Во избежание конфликтов, скобки внутри аргумента должны быть экранированы в виде \)
и \(
.
Рассмотрим все это на примере спелла #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"
Возвращает true
, если пост является оп-постом. Аргумент игнорируется. Позволяет скрывать только треды, либо только ответы. Примеры:
#op & #words(roll)
– скроет треды на всех досках, содержащие roll
. Например, будет скрыт тред с темой "Roll thread go!"
#op[a] & !#words(touhou)
– скроет все треды в /a/
, не содержащие в оп-посте слова touhou
!#op() & #words[a](bump)
– скроет посты в /a/
, содержащие bump
. Оп-посты, и, соответственно, сами треды, скрыты не будут.
#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[имя_доски, номер_треда](строка)
Возвращает true
, если имя пользователя в посте содержит выражение, указанное в аргументе строки, с учетом регистра. Если аргумента нет, то возвращает true
в случае наличия имени в посте. Примеры:
#name[a]
– скрыть посты на доске /a/
с любым содержащимся именем
#name[b](Sage)
– скрыть на доске /b/
все посты, содержащие Sage
в своем имени, напрмер, посты неймфага "Sage-kun"
#trip[имя_доски, номер_треда](строка)
Возвращает true
, если трип-код пользователя в посте равен указанному аргументу строки. Если аргумента нет, то возвращает true
в случае наличия трип-кода в посте. Примеры:
#trip
– скрыть любой пост, содержащий трипкод
!#trip[a]
– скрыть любой пост без трипкода на доске /a/
#trip[s,32768](Canc3RL0L4)
– скрыть все посты в треде 32768
доски /s/
, содержащие трипкод "!Canc3RL0L4", либо "!!Canc3RL0L4"
#name(Oldfag) & #trip(%TRiF0RCE9)
– скрыть везде неймфага, который подписывается, как "Oldfag!%TRiF0RCE9"
Возвращает true
, если пост содержит сажу. Аргумент игнорируется. Примеры:
#sage
– скрыть посты с сажей во всех тредах и досках
#sage[b,32768] & #name(Sage-kun)
– скрыть посты с сажей от Sage-kun'a в треде 32768
доски /b/