Инструменты пользователя

Инструменты сайта


ru:plugin:macros

Плагин Macros

Совместим с «Докувики»

  • 2018-04-22 "Greebo" да
  • 2017-02-19 "Frusterick Manners" неизвестно
  • 2016-06-26 "Elenor Of Tsort" неизвестно
  • 2015-08-10 "Detritus" неизвестно

plugin Позволяет задавать шаблоны аналогично MediaWiki, также комментирует код и эскейпит спецсимволы

Последнее обновление:
2012-02-09
Предоставляет
Syntax, Action
Репозиторий
Исходный код

Похож на easyvar, fields, kixovar, replace, textinsert

Теги: extension, formatting, macro

Скачивание и установка

Поскольку репозиторий был удалён, предлагается временное решение - скачать comicslate.org-версию плагина
https://comicslate.org/_/macros.rar
MD5-сумма 1d28e5fdb7feb05aae44820169bdbe36

Скачайте и установите плагин с помощью плагин-менеджера по ссылке, представленной выше. Для ручной установки прочитайте Plugins.

Описание

Плагин позволяет задавать шаблоны аналогично MediaWiki для генерации текста на странице. Также он processes simple conditional expressions, удаляет закомментированные блоки и эскейпит (то есть показывает в прямом виде) спецсимволы ДокуВики, например, фигурные скобки (полезно при создании шаблонов).

Синтаксис и применение

Комментирование блоков

Любой текст между следующими маркерами будет удалён:

{{## комментарий ##}}

Спецсимволы

Символ, которому предшествует знак `, будет показан «как есть». Это позволяет показывать спецсимволы, занятые в разметке ДокуВики:

`{`{ фигурные скобки `}`}

Сам символ ` тоже может быть так показан:

``

Шаблоны

Формат шаблона:

{{$имя=описание$}}

где:
имя - идентификатор шаблона
описание - текст шаблона. Он может содержать переменные, до 10 штук: @0, @1, … @9.

Применение шаблона:

$имя             (если без указания аргументов - равнозначно их отсутствию)
$имя[]           (с пустым списком аргументов)
$имя[арг]        (с одним аргументом)
$имя[арг1|арг2]  (с двумя аргументами и т.д.)

Пример:

{{$format=**@0** @1 //@2//$}}
$format[жирный|и|наклонный]

Получим текст: жирный и наклонный

Условия

Плагин работает с двумя типами условных выражений:

$??[условие|П|Л]

если «условие» не пустое, выполняется часть П, иначе - Л

$?[a|b]          (равнозначно $??[a|a|b])

выполняется a если a - не пустое, иначе выполняется b

Обсуждение

Пропадает PHP текст

к сожалению, неопределённые заранее шаблоны удаляются. Это влияет на PHP код, как как его переменные похожи.

Легко исправимо: в macros.php найти функцию expand_macro_callback(), заменить следующий код to return the original match instead of an empty string:

// a defined macro?
$res = @$this->macroDefs[$name];
if(!$res) {
	$this->undefinedMacros[] = $name;
	return $m[0];
	// return '';
}

Также детектирующий символ $ можно заменить на другой символ или их сочетание. В macros.php найти и заменить все знаки \$.

Багрепорты

1. Шаблон влияет на verbatim environments

Macro definitions go through all environments (<nowiki>, <code>, %%, <file>) and this is not only a problem (it's impossible to present the macro syntax when it is installed) but also dangerous, because it manipulates source codes which are presented on the wiki.

Any solution for that? — mubedmubed

2012/05/24 17:32

2. Edit button disappeared

The «edit» button for page sections disappear after installing the macros plugin.

:!: one idea is to disable global $conf; $conf['maxseclevel'] = 0; in action.php »>http://forum.dokuwiki.org/post/26514

The author says: The plugin definitely would benefit from better integration. It was created as a quick port of a module from my own experiments with another wiki.

If a macro is processed, that changes the length of a section text. It may even generate new sections! I could not find how to make dokuwiki adjust the sections (and positions of edit buttons) properly, therefore I decided to disable the section buttons, when a macro is involved in generating page text. Like so, although this is an ugly hack, I think:

  if ($data != $event->data) {
  // disable section edit if any change took place
    global $conf; $conf['maxseclevel'] = 0;
    $event->data = $data;
  } 


If anyone, who knows well how dokuwiki environments work, could improve the plugin integration, it would be most appreciated!

And what about this one? Any better idea? — mubedmubed

2012/05/24 17:32

I have started a thread form regarding this: https://forum.dokuwiki.org/thread/9138 — Cristian 2012/11/22

Feature Requests

add autolink2 compatibility

The plugin autolink2 substitutes defined words with corresponding internal page links.
Unfortunately the replacements through macros are not substituted.
Is there any way to change that? It will be great! Joachim 2011-11-05

seems to be working

This code, run by the latest version of the plugin, with Cristian's changes, properly links «some name» 6 times. (I do not think that the changes made it to do so - perhaps some update in the DokuWiki core?)

{{$SN=@0ome @1ame$}}

<autolink>
The text on the page. Blah, blah, blah...

And of course the text Some Name. Also some name is valid, as well as SOME NAME.
|The test can be in a table also| Some Name, **but** there needs to be a space after the leading`|| through a macro: $SN[S|N] |

$SN[s|n]

</autolink>

Ian 2012-03-05

Добавлена новая опция

Спасибо Cristian Spiescu за поправки, которые теперь добавлены в плагин.

Стало возможно выбрать в главных настройках вики «папку:страницу» для размещения глобального списка шаблонов. Указания из этой страницы доступны на всей вики.

ru/plugin/macros.txt · Последние изменения: 2018-12-28 18:18 — Dr-Yukon