Главная > Заметки > Простейший шаблон для PowerGUI Script Editor

Простейший шаблон для PowerGUI Script Editor

Во время написания статьи про Primal Forms, в частности про шаблоны, задался вопросом а почему я никогда не пользовался шаблонами в редакторе скриптов PowerGUI. Специально запустив PowerGUI Script Editor и поигравшись немного с шаблонами ответ не заставил себя долго ждать: использование шаблона в PowerGUI для вставки какого-либо блока не всегда оправдано. Если в Primal Forms шаблоны вставляются просто по мере написания его (шаблона) имени, то в PowerGUI для вставки шаблона нужно нажать комбинацию Ctrl + I, в появившемся меню выбрать группу шаблонов (комментарии, циклы, функции и т. д.), после чего выбрать в этой группе сам шаблон.

 Snippets in PowerGUI - 1

Вставка шаблона в PowerGUI

В большинстве случаев быстрее и проще набрать руками то, что получится при вызове шаблона.

Snippets in PowerGUI - 2

Результат вызова шаблона

Однако в некоторых случаях использование шаблона всё же может сократить время, затрачиваемое на создание скрипта. Например, гораздо быстрее и удобнее вызвать шаблон Comment-based help, и заполнить его, чем набирать самому.

Я ко всем своим скриптам сверху вставляю небольшую шапку, в которой описывается, что делает данный скрипт, а также указываю как со мной можно связаться на случай, если скрипт попадёт в плохие другие руки. Обычно шапка копируется из одного скрипта в другой и там изменяется. В один прекрасный день подумалось, что было бы удобно иметь какую-то стандартную шапку, и не бегать каждый раз по предыдущим скриптам, чтобы её вставить. В Primal Script подобная шапка вставляется автоматически при создании нового файла, также её можно вставить вручную. В PowerGUI я такого шаблона не нашёл, поэтому решил написать свой.

В PowerGUI шаблоны представляют собой xml-файлы с расширением .snippet, и находятся в каталоге программы, в подкаталоге snippets. В этом каталоге находятся подкаталоги с именами групп шаблонов:

Snippets groups

Группы шаблонов в PowerGUI

Так, в группе Functions находятся шаблоны для создания различных видов функций, в группе Loops – шаблоны циклов, как на скриншоте выше и т.д. Имя файла соответствует функции, выполняемой шаблоном, и в большинстве случаев совпадает с именем шаблона.

Так как наш шаблон-шапка по сути является комментарием, то помещать мы его будем в группу Comments. Имя файла будет header.snippet.

Осталось самое главное: разобраться со структурой xml-файла. Разбираться будем на структуре уже упоминавшегося выше цикла while.

Итак, файл while.snippet:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet&quot;>
  3.  <CodeSnippet Format="1.0.0">
  4.   <Header>
  5.    <Title>while</Title>
  6.    <Shortcut>while</Shortcut>
  7.    <Description>Insert a while loop statement</Description>
  8.    <Author>Quest Software, Inc.</Author>
  9.    <SnippetTypes>
  10.     <SnippetType>Expansion</SnippetType>
  11.     <SnippetType>SurroundsWith</SnippetType>
  12.    </SnippetTypes>
  13.   </Header>
  14.   <Snippet>
  15.    <Declarations>
  16.     <Literal>
  17.      <ID>condition</ID>
  18.      <Default>$true</Default>
  19.      <ToolTip>Conditional expression to evaluate</ToolTip>
  20.     </Literal>
  21.    </Declarations>
  22.    <Code Language="powershell">
  23.     <![CDATA[while ($condition$) {
  24.   $selected$$end$
  25. }]]>
  26.    </Code>
  27.   </Snippet>
  28.  </CodeSnippet>
  29. </CodeSnippets>

* This source code was highlighted with Source Code Highlighter.

После служебной информации идёт раздел <Header>…</Header>, содержащий общую информацию о шаблоне: название, описание, автор, и т. д. Далее идёт раздел <Snippet>…</Snippet>, содержащий два подраздела: <Declarations>…</Declarations> – с описанием переменных (если они есть, если нет этот раздел остаётся пустым – <Declarations />), и <Code>…</Code>, в котором указывается язык (Language="powershell"), и в <![CDATA[…]]> сам текст шаблона.

Каждая переменная описывается в блоке <Literal>…</Literal> и имеет три атрибута:

  • ID – собственно ID;
  • Default – значение по умолчанию;
  • ToolTip – всплывающая подсказка;

Что за переменные и зачем они нужны?

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

Например, шаблон цикла For сразу после вставки выглядит так:

'For' Snippet

Шаблон цикла For

Достаточно бегло взглянуть на него, чтобы понять, что здесь присутствуют две переменные: $index и $count. При чём $index встречается три раза. Если нас не устраивает это имя переменной меняем его там, где подсвечено, далее во всём шаблоне оно изменится автоматически.

Вот и всё, переходим к написанию собственного шаблона.

Итак, мне бы хотелось, чтобы мой шаблон шапки содержал следующую информацию:

  • Среда, в которой был создан скрипт;
  • Автор (т.е. я весь из себя такой скромный :));
  • Контакты (адрес блога);
  • Поле для описания скрипта.

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

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

Учитывая всё, вышесказанное текст шаблона выглядит так: 

  1. <CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet&quot;>
  2.   <CodeSnippet Format="1.0.0">
  3.     <Header>
  4.       <Title>Header</Title>
  5.       <Shortcut>Header</Shortcut>
  6.       <Description>Insert a header</Description>
  7.       <Author>Smearg</Author>
  8.       <SnippetTypes>
  9.         <SnippetType>Expansion</SnippetType>
  10.       </SnippetTypes>
  11.     </Header>
  12.     <Snippet>
  13.     <Declarations>
  14.       <Literal>
  15.         <ID>Header</ID>
  16.         <Default>Описание скрипта</Default>
  17.         <ToolTip>Подробное описание того, что делает скрипт
  18.         </ToolTip>
  19.       </Literal>
  20.     </Declarations>
  21.     <Code Language="powershell">
  22.     <![CDATA[# ==============================================================
  23. # Created with:  PowerGUI Script Editor
  24. # Created by:  Smearg
  25. # URL:      https://smearg.wordpress.com/
  26. # Description: $Header$
  27. #
  28. #
  29. #
  30. # ==============================================================
  31. ]]>
  32.     </Code>
  33.     </Snippet>
  34.   </CodeSnippet>
  35. </CodeSnippets>

* This source code was highlighted with Source Code Highlighter.

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

Header snippet

Шаблон – шапка

Как оказалось создание шаблонов довольно интересное и полезное (если подходить с умом) занятие 🙂

Реклама
Рубрики:Заметки Метки: ,
  1. Комментариев нет.
  1. No trackbacks yet.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: