Snippets. Новый плагин для OutWiker

Snippets. Новый плагин для OutWiker

Развитие OutWiker продолжается, наконец-то я могу показать то, над чем работал с декабря прошлого года.

Я очень давно собирался сделать плагин, который бы позволял вставлять на страницы заранее подготовленный шаблонный текст, и вот, наконец, этот плагин готов. Называется он Snippets, для его работы требуется последняя (на момент написания этих строк) нестабильная версия OutWiker, т.е. OutWiker 2.0.0.808.

Этот плагин я довольно долго вылизывал с точки зрения интерфейса, чтобы сократить количество кликов, которые бы пришлось сделать пользователю при использовании этого плагина. На странице плагина Snippets вы можете прочитать подробное описание всех его возможностей, а здесь я кратко расскажу, что он умеет, и как им пользоваться.

После установки плагина Snippets в главном меню программы OutWiker появится новый раздел — «Шаблоны». В этом меню первые три пункта предназначены для работы с шаблонами, а после них будут добавляться шаблоны, которые вы будете создавать. Шаблоны могут быть сгруппированы в папки, поэтому меню «Шаблоны» может иметь вложенные подменю. Вот, например, как это меню выглядит в данный момент у меня:

Чтобы создать шаблон, нужно выбрать пункт меню «Шаблоны — Управление шаблонами», после чего откроется диалог, в котором можно будет создавать папки для шаблонов и сами шаблоны.

Сохранять обычный текст, который бы не мог изменяться, не так интересно, хотелось сделать, чтобы шаблон мог подстраиваться под каждое конкретное использование. Поэтому в шаблон была добавлена возможность использовать переменные и некоторые языковые конструкции. Когда я думал о том, какой синтаксис выбрать для задания таких переменных, то не хотелось изобретать велосипед, а использовать синтаксис, который может быть уже знаком пользователям (и даже если синтаксис будет незнаком, то зачем плодить сущности?) Подумав еще немного, решил сделать следующий логический шаг, и не писать свой парсер шаблона, а использовать готовую библиотеку для генерации шаблонного текста. В качестве такого парсера я выбрал библиотеку Jinja2, которая может быть знакома многим веб-программистам на языке Python. Обычному пользователю об этом задумываться не надо, но если вы хотите выжать из шаблонов максимум возможностей, то имейте в виду, что все возможности этой библиотеки доступны, но большинство этих возможностей просто не показаны в интерфейсе плагина.

Самое главное, что умеет плагин Snippets — это использовать переменные в тексте шаблона. На предыдущей картинке в выбранном шаблоне видны две такие переменные: message и title, которые в тексте шаблона оборачиваются двумя фигурными скобками.

Если вы на какой-нибудь странице выберите пункт меню «Шаблоны», соответствующий созданному шаблону, то вам будет предложено задать значения этих переменных в открывшемся диалоге:

К сожалению, из-за ограничений библиотеки Jinja имена переменных могут содержать в себе только латинские буквы, цифры и знак подчеркивания (есть подозрение, что если я когда-нибудь переведу OutWiker на Python 3.x, то это ограничение будет снято), при этом в плагине Snippets добавлено еще одно ограничение — имена переменных должны начинаться с буквы.

В правой части диалога вы можете увидеть текст, который будет вставлен на страницу после нажатия кнопки «OK».

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

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

Кроме переменных через интерфейс плагина вы можете вставлять еще пару конструкций из библиотеки Jinja: оператор if и include (для вставки текста одного шаблона в другой), но остальные обширные возможности этой библиотеки я не стал выставлять на показ, чтобы не пугать обилием непонятных операторов неподготовленных пользователей.

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

Но и это еще не все. 🙂 Шаблоны можно вставлять с помощью викикоманды (:snip:)…(:snipend:). Про эту возможность я скажу совсем кратно, на странице плагина Snippets она описана более подробно (также у плагина имеется справка, которая вызывается из меню «Шаблоны»).

Например, шаблон «Программирование/MessageBox», который был показан на предыдущих рисунках, можно вставить на викистраницу с помощью следующей команды:

(:snip file="Программирование/MessageBox"
     message="Сообщение для пользователя"
     title="Заголовок окна":)
(:snipend:)

Если у вас нет заранее подготовленного шаблона, и вы не хотите делать его доступным для всех страниц, то текст шаблона можно вставить между командами (:snip:) и (:snipend:):

(:snip message="Сообщение для пользователя" title="Заголовок окна":)
MessageBox(
    _(u'{{message}}'),
    _(u'{{title}}'),
    wx.ICON_ERROR | wx.OK)
(:snipend:)

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

PS. Большое спасибо моей жене Юле, которая помогала переводить справку на английский язык. У нас обоих английская грамматика несколько хромает, поэтому, если кто-то увидит ошибки в англоязычной справке, то пишите на jenyay.ilin@gmail.com.

PPS. В последнее время постоянные переводчики программы на украинский язык перестали обновлять перевод (уж не знаю, связано это с политикой или нет), поэтому, если кто-то готов дополнить перевод, то вы можете это сделать на странице https://crowdin.com/project/outwiker.

Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.

Пожалуйста, оцените запись

УжасноПлохоТак себеХорошоОтлично (Количество голосов: 5, средняя оценка: 5,00)
Загрузка...

комментария 2

  1. unreal666:

    Блин. Только сейчас заметил плагин hackpage и узнал, что у страниц существует «параметр» alias. Четко. Теперь в именах страниц можно юзать любые символы, а то задолбали ограничения винды 🙂

  2. Jenyay:

    Я этот плагин (HackPage) выложил чуть больше недели назад — http://jenyay.net/blog/2017/01/26/outwiker-2-0-0-808-beta-i-plagin-hackpage/

Leave a comment

Subscribe without commenting