Перейти до вмісту

Шаблон:Escape

Матеріал з Вікіпедії — вільної енциклопедії.
{{i}} Документація шаблону[перегляд] [редагувати] [історія] [очистити кеш]

Цей шаблон працює на однойменному модулі, що розроблений з метою забезпечення екранування рядків налаштовувальним і ефективним способом. Він працює за допомогою заміни символів, що передують вашому символу (або фразі) екранування

Використання

[ред. код]

Для виклику функцій модуля, потрібно використати параметр mode, в якому вказати назву функції. Наприклад: {{Escape|mode=функція|char=символ (або послідовність символів) екранування|текст}}

Нижче наведено опис функції, який взято з документації модуля. Повний опис функції може переглянути на сторінці модуля.

|mode=text

|mode=text
Ця функція приймає лише один аргумент: Рядок. Усі символи в цьому рядку, що передують набору послідовності в |char=, будуть замінені на символи-заповнювачі (placeholders), що можуть бути перетворені назад в ті символи функцією |mode=undo

|mode=undo

|mode=undo
Приймає два аргументи:
  1. Рядок, що може містити символи-заповнювачі, що встановленні функцією |mode=text
  2. Додатково, символ, що буде розміщено попереду будь-якого символу, що було виведено з екранування. (тобто, якщо ви хочете повторно екранувати ці рядки з іншими символами)

|mode=kill

|mode=kill
Це, в основному, відповідає виклику string.gsub() над рядком, який повернула функція escape:text(), та передача цього результату в функцію |mode=undo в один етап. Приймає три аргументи:
  1. Рядок
  2. Послідовність символів, що будуть вилучені з рядка. (Може використовувати шаблони string.gsub)
  3. Додатково, символ, що буде розміщено попереду будь-якого символу, що було виведено з екранування.

|char=

|char=
Основне використання цієї функції є ініціалізація шаблонів для пошуку рядка на наявність послідовності екранування. Вона приймає два аргументи, першим є символ екранування, а другий — таблиця аргументів (додатково). Стандартно, цей модуль використовує \ як символ екранування. Щоб замінити символ екранування на {, ви можете зробити {{Escape<code>|char={</code>.


У більшості випадків рідко є необхідність встановлювати |mode= в просторі шаблону, бо патерни, які він зберігає, не використовуються іншими викликами цього модуля. Натомість шаблони повинні використовувати |char=, якщо потрібна нова послідовність екранування.


Застереження

[ред. код]
  • Коли використовується послідовність екранування, що складається з кількох символів, то цей модуль лише позначає їх, використовуючи байтове значення першого символу. Тому, |mode=undo виведе з екранування, наприклад, всі символи, що екрановані через «e» та «esc», якщо використано обидві послідовності. На практиці, однак це не є проблемою, бо кілька послідовностей екранування є дуже рідкісним випадком, окрім, коли ви переходите між кількома мовними кодами. (У будь-якому разі, кілька послідовностей екранування з кількох символів, що починаються з одного символу, є просто поганою практикою .)
  • Через те, що байтові значення зберігаються як числа, то не рекомендуються використовувати числа як послідовність екранування (хоча вони можуть нормально працювати).
  • Байтові значення заповнювачів розділяються символами повернення ('\r'), які вибрані, тому, що вони взагалі рідко використовуються, та практично ніколи не використовують окремо від '\n'; до того ж він відрізняється від маркерів, що створюються <nowiki>...</nowiki> або mw.text.nowiki() (які використовують символ видалення).

Приклади

[ред. код]

Оригінал:

[ред. код]

test { test {\{ test, \test, \{,test\ \ \ {\

Використовуючи внутрішній метод для видалення {:

[ред. код]

{{escape|mode=kill|test { test {\{ test, \test, \{,test\ \ \ {\|{}}test test { test, test, {,test \

Використовуючи {{replace}} для видалення {:

[ред. код]

{{escape|mode=undo|{{replace|{{escape|mode=text|test { test {\{ test, \test, \{,test\ \ \ {\}}|{|}}}}test test { test, test, {,test \

Без видалення { між екранованою/неекранованою (символ екранування не відновлено) частиною:

[ред. код]

{{escape|mode=undo |{{escape|mode=text|test { test {\{ test, \test, \{,test\ \ \ {\}} }}test { test {{ test, test, {,test {\

Відновлення до оринігалу пілся екранування

[ред. код]

{{escape|mode=undo |{{escape|mode=text|test { test {\{ test, \test, \{,test\ \ \ {\}} |\ }}test { test {\{ test, \test, \{,test\ \ \ {\

Видалення слова test, якщо воно не екрановане, а потім розміщення іншого символу екранування на місці старого символу екранування (для використання чогось іншого):

[ред. код]

Зверніть увагу: Символ '%' є спеціальним в Lua, тому використовуйте '%%', якщо хочете його використати як символ екранування. В інших випадках, достатньо одного символа (чи слова). {{escape|mode=kill |test { test {\{ test, \test, \{,test\ \ \ {\ |test |%% }} { {%{ , %test, %{,% % % {\