Extension:AbuseFilter/Rules format/ru

From MediaWiki.org
Jump to navigation Jump to search

Правила фильтра злоупотреблений пишутся на C/Java/Perl-подобном языке.

Литералы[edit]

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

Примеры
"Это строка"
'Это также строка'
'Эта строка\' также верная'
"Эта строка\nИмеет перевод строки"
1234
1.234
-123

Переменные[edit]

Фильтр злоупотреблений передаёт парсеру различные переменные. Эти переменные можно получить, введя их имя в месте, где будут работать литералы. Вы можете просмотреть в журнале злоупотреблений переменные, связанные с каждым запросом.

Примеры
USER_EDITCOUNT
ARTICLE_RECENT_CONTRIBUTORS

Допустимые переменные действий'edit', 'move', 'createaccount' или 'upload'.

Все переменные[edit]

Описание переименной Наименование переменной Variable values
Количество правок участников user_editcount
Имя учётной записи user_name
Время подтверждения адреса почты user_emailconfirm
Возраст учётной записи (в секундах; для IP равен 0) user_age
Группы (включая неявные) в которых состоит участник user_groups
ID страницы (можно найти в исходном коде странице — переменная wgArticleId) article_articleid
Пространство имён страницы article_namespace
Наименование страницы (без пространства имён) article_text
Полное наименование страницы article_prefixedtext
Уровень защиты страницы от редактирования article_restrictions_edit
Уровень защиты страницы от переименования article_restrictions_move
Последние десять участников, правивших эту страницу article_recent_contributors
Действие action edit, move, createaccount, delete
Описание правки/причина summary
Отметка правки как малой minor_edit
Старый викитекст страницы, до правки old_wikitext
Новый викитекст страницы, после правки new_wikitext
Дифф изменений, сделанных в правке edit_diff
Новый размер страницы new_size
Старый размер страницы old_size
Изменение размера в правке edit_delta
Строки, добавленные правкой added_lines
Строки, удалённые правкой removed_lines
Все внешние ссылки в новом тексте all_links
Ссылки на странице, перед правкой old_links
Все внешние ссылки, добавленные правкой added_links
Все внешние ссылки, удалённые правкой removed_links
Исходный HTML-код новой версии страницы new_html
Новый текст страницы без разметки new_text
Параметр отключён old_html
Параметр отключён old_text
Была ли правка сделана при помощи узла Tor tor_exit_node 0, 1
Unix-время изменения timestamp

Сравнения[edit]

Вы можете сравнивать переменные с другими переменными и литералами, используя следующий синтаксис:

  • < и > — возвращает true, если левый операнд соответственно меньше/больше, чем правый операнд.
  • <= и >= — возвращает true, если левый операнд соответственно меньше или равен/больше или равен, чем правый операнд.
  • == и != — возвращает true, если левый операнд соответственно равен/не равен правому операнду.
Пример Результат
1 == 2 False
1 <= 2 True
1 >= 2 False
1 != 2 True
1 < 2 True
1 > 2 False

Арифметические действия[edit]

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

  • - — вычесть правый операнд из левого оператора.
  • + — прибавить правый операнд к левому операнду..
  • * — умножить левый операнд на правый операнд.
  • / — разделить левый операнд на правый операнд.
  • ** — возвести левый операнд в степень, определённую правым операндом.
  • % — вернуть остаток при делении левого операнда на правый операнд.
Пример Результат
1 + 1 2
2 * 2 4
1 / 2 0.5
9 ** 2 81
6 % 5 1

Ключевые слова[edit]

Ключевые слова включены для часто используемых функций

  • like возвращает true, если левый операнд соответствует с правым операндом с glob.
  • in возвращает true, если правый операнд (строка) содержит левый операнд.
  • rlike и regex возвращает true, если левый операнд совпадает с регулярным выражением в правом операнде.
Примеры
"1234" like "12?4"

Результат: True

"1234" like "12*"

Результат: True

"foo" in "foobar"

Результат: True

"foo" regex "\w+"

Результат: True

Функции[edit]

Для использования в обычных ситуациях включены некоторые встроенные функции. Они выполняются в формате имяФункции(арг1,арг2,арг3), и могут быть использованы вместо любого литерала или переменной. Аргументами могут быть литералы, переменные или другие функции.

  • length возвращает длину строки, данной в первом аргументе.
  • lcase возвращает первый аргумент, преобразованный в нижний регистр.
  • ccnorm нормализует спорные/сходные символы в аргументе и возвращает каноническую форму.
  • convert возвращает второй аргумент, преобразованный в языковой вариант, определённый в первом аргументе. Применимо ТОЛЬКО в вики с классом LanguageConverter. (новая функция, добавленная в rev:49399, необходима поддержка MediaWiki после rev:49397)
  • rmdoubles удаляет повторяющиеся символы в аргументе и возвращает результат.
  • rmwhitespace удаляет пробелы (пробелы, табуляции, новые строки)
  • specialratio возвращает число не буквенно-цифровых символов, разделённое на количество символов в первом аргументе.
  • rmspecials удаляет любые специальные символы в первом аргументе и возвращает результат.
  • norm является эквивалентом rmwhitespace(rmspecials(rmdoubles(ccnorm(arg1)))).
  • count возвращает количество игл (первая строка), появившихся в стоге сена (вторая строка). Если указан только один аргумент, разделяет его запятыми и возвращает количество сегментов.
Примеры
length("Wikipedia")

Результат: 9

lcase("Wikipedia")

Результат: wikipedia

ccnorm("ωɨƙɩᑭƐƉlα")

Результат: W1K1PED1A

convert("zh-hant", "维基百科") // assume we work on a wiki with Chinese LanguageConverter class

Результат: 維基百科

rmdoubles( "foobybboo" )

Результат: fobybo

specialratio("Wikipedia!")

Результат: 0.1

norm( "!!ω..ɨ..ƙ..ɩ..ᑭᑭ..Ɛ.Ɖ@@l%%α!!" )

Результат: W1K1PED1A

count( "foo", "foofooboofoo" )

Результат: 3

count( "foo,bar,baz" )

Результат: 3

rmspecials( "FOOBAR!!1" )

Результат: FOOBAR1

Булевы операции[edit]

Вы можете вызвать срабатывание фильтра, если только все условия верны, одно или больше из условий является верным или только одно из условий является верным.

  • x | y — ИЛИ – возвращает true, если одно или больше условий являются верными.
  • x & y — И – возвращает true, если оба условия являются верными.
  • x ^ y — ИСКЛЮЧАЮЩЕЕ ИЛИ – возвращает true, если только одно условие является верным.
  • !x — НЕ – возвращает true, если условие неверно.
Примеры
1 | 1

Результат: True

1 | 0

Результат: True

0 | 0

Результат: False

1 & 1

Результат: True

1 & 0

Результат: False

0 & 0

Результат: False

1 ^ 1

Результат: False

1 ^ 0

Результат: True

0 ^ 0

Результат: False

!1

Результат: False

Порядок операций[edit]

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

  1. Всё, окружённое скобками (( and )) оценивается как одна едииница.
  2. Касающееся переменных/литерал и их данных (например, article_namespace к 0)
  3. Вызовы функций (norm, lcase, и т. д.)
  4. Унарные + и - (например, -1234, +1234)
  5. Ключевые слова
  6. Булева инверсия (!x)
  7. Возведение в степень (2**3 > 8)
  8. Действия, связанные с умножением (multiplication, division, modulo)
  9. Сравнения (<, >, ==)
  10. Булевы операции (&, |, ^, in)
Другие языки: English  • 日本語 • 한국어 • मराठी • русский • 中文