UverseWiki

Параметры для форметтеров и действий

И тем, и другим можно передавать некие настройки или другую информацию. Параметры (или аргументы) передаются через запятую, причём параметр может:

  • иметь имя — то есть передаваться поимённо;
  • иногда параметр без имени передаётся позиционно;
  • не иметь значения (только имя) — так называемый флаг.

Поимённая передача

Имя параметра, если оно есть, отделяется от значения знаком «равно»: {{Действие имя=значение}}. Несколько параметров: {{Действие имя=значение, имя2=другое значение}}.

Если значение параметра содержит «равно» или запятую, то достаточно взять в кавычки всё значение. Тоже самое относится и к именам (хотя в целях читаемости разработчикам стоит избегать таких «имён»):

  • {{действие "значение с = равно внутри"}};
  • {{действие "имя с , внутри" = "значение с = равно"}};
  • {{Действие имя="зна= че, ние"}}.

Вокруг «=» можно ставить пробелы для большей читаемости — они игнорируются. То же самое относится и к пробелам после запятой.

Форматтеры принимают параметры точно также:

%%(wrapper_page wrapper_width=30)
  Ко лон ка
%%
Ко лон ка

Если нужно передать действию параметр, содержащий его закрывающий тег (}}), то параметр можно экранировать тильдой: {{FormatDescription inherits={{Class $~}}, type=**$**}}.

Для большей схожести с настоящим текстом **после имени действия или стиля для форматтера может идти двоеточие с последующим пробелом (или несколькими). Например:

Оба варианта идентичны:
  * {{Description  тип=массив, значение% = "%%(php) array('value', ...)%%" }}
  * {{Description: тип=массив, значение% = "%%(php) array('value', ...)%%" }}

Оба варианта идентичны:

  • тип
    массив
    значение
    "%%(php
  • тип
    массив
    значение
    "%%(php

Позиционная передача

Некоторые форматтеры и действия поддерживают сокращённую форму записи для параметров без заданного имени. Пример — действие картинки, которое принимает параметры file и title. Их можно передать так (все способы эквивалентны):

  • поимённо: {{Картинка file=photo.jpg, title=Наша фотка}};
  • позиционно: {{Картинка photo.jpg, Наша фотка}};
  • смешанно: {{Картинка photo.jpg, title=Наша фотка}}.

**Первый же параметр, переданный с указанием имени, отменяет позиционную передачу для всех последующих.** Иными словами, так не работает: {{Картинка file=photo.jpg, Наша фотка}}.

Ещё один пример — действие оглавления, которое имеет один параметр up to, задающий глубину включаемых в содержание заголовков:

  • {{Оглавление 2}} — включить заголовки до уровня 2;
  • {{Оглавление up to=2}} — абсолютно тоже самое, только в полной форме.

Позиционная передача работает до первого переданного поимённо параметра — см. порядку или флаг?.

Флаги

Если параметр не имеет имени и не передаётся позиционно, то он считается флагом. Флаг — просто параметр, имеющий значение «1» (True). Обычно он что-то «включает».
Для нас, пользователей, это ничего не меняет — просто другое смысловое название для такого типа праметров. Например:

  • {{Описание тип=строка, регистронезависимая}} — здесь регистронезависимаяфлаг.

По порядку или флаг?

Иногда может возникнуть ситуация, когда параметр, переданный без имени, может быть истолкован одновременно как переданный по позиции (1-й, 2-й, 3-й и т. д. аргумент), или как флаг (параметр со значением «1») — такие параметры всегда считаются переданными позиционно.

Например, действие {{Вставить}} принимает позиционно 2 параметра:

  1. page — имя файла для вставки в документ;
  2. format — его разметка — «wiki» и т. д. (если опущен, используется разметка основного документа).

А также 1 параметр по имени:

  1. isolate — это флаг.

Тогда при вызове этого действия такой строкой: {{Вставить Секция, isolate}}isolate может быть трактован и как разметка (аргумент на 2-й позиции), и как флаг по имени isolate. Этот спор всегда решается в пользу позиционной передачи, поэтому чтобы isolate воспринялся как флаг, его нужно явно установить в 1: {{Вставить Секция, isolate=1}}.

Для сравнения, если мы укажем разметку явно, то isolate будет считаться флагом, ибо все позиционные параметры уже были переданы: {{Вставить Секция, wiki, isolate}}.

Заметьте, что позиционная передача работает до первого переданного поимённо параметра: {{Вставить page=Секция, isolate}} — здесь, несмотря на то, что ни один параметр не передан позиционно, первый параметр уже имеет имя, поэтому и isolate — флаг.