Сниппет

Сниппет ( — отрывок, фрагмент) — фрагмент исходного текста или кода программы, применяемый в поисковых системах, текстовых редакторах и средах разработки.

Управление сниппетами () — функциональность некоторых редакторов кода и сред разработки. Она позволяет пользователю сохранять сниппеты для дальнейшего использования в процессе разработки кода в этом редакторе.

Обзор

Сниппеты в поисковых системах 
Термином сниппет называют небольшие отрывки текста из найденной поисковой машиной страницы сайта, использующиеся в качестве описания ссылки в результатах поиска. Как правило, они содержат контекст, в котором встретилось ключевое слово в тексте на странице. В качестве сниппетов также может выводиться текст из мета-тега «Description». Более подробно см. страница выдачи результатов поиска.

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

Сниппеты в текстовых редакторах 
Функция управления сниппетами в текстовых редакторах популярна среди разработчиков программного обеспечения и тех, кому постоянно требуется ввод повторяющегося текста. Эта потребность объясняется тем, что вводимый фрагмент текста не меняется, или меняется очень мало.

Текстовые редакторы, включающие такую функциональность, обычно имеют механизм, который позволяет управлять набором сниппетов (каталогом) аналогично тому, как редакторы или операционные системы позволяют управлять документами или файлами. Этот механизм включает такие операции, как просмотр, добавление, изменение, удаление, сортировка, фильтрация, группировка и переименование сниппетов в репозитории, каталоге или базе данных.

Сниппеты в средах разработки 
Здесь сниппет — это небольшой фрагмент исходного кода или текста, пригодный для повторного использования. Сниппеты не являются заменой процедур, функций или других подобных понятий структурного программирования. Они обычно используются для более лёгкой читаемости кода функций, которые без их использования выглядят слишком перегруженными деталями, или для устранения повторения одного и того же общего участка кода. Интегрированные среды разработки (IDE) содержат встроенные средства для ввода конструкций языка. Например, в Microsoft Visual Studio, Borland Developer Studio, для этого необходимо ввести ключевое слово и нажать определённую клавишную комбинацию.
В IDE Geany существует специальный файл snippets.conf (путь к файлу: /home/user/.config/geany) позволяющий создавать свои сниппеты.
Другие программы, такие как Macromedia Dreamweaver и Zend Studio, позволяют использовать сниппеты в Веб-программировании.

Классификация программных сниппетов 
Функциональность сниппетов, дополнительная к описанной выше, может быть использована для классификации снипеттов по степени их «интерактивности» (модифицируемости, настраиваемости).

С этой точки зрения сниппеты делятся на:
 статические ();
 интерактивные или динамические;
 скриптовые.

Статические сниппеты состоят главным образом из неизменного текста, который пользователь может выбрать для вставки в текущий документ. Пользователь не может задать никаких дополнительных параметров, кроме, может быть, положения курсора относительно вставляемого текста. Статические снипетты напоминают простые макросы в языках программирования.

Динамические снипетты состоят из неизменного текста и динамических элементов. Пользователь может задать как значение этих динамических элементов, так и их положение в неизменном тексте в процессе выбора и вставки сниппета. Примерами динамических элементов являются переменные, принимающие значение текущей даты или системного времени, или ввода пользователя через графический интерфейс. Динамические сниппеты имеют много общего с макрокомандами и шаблонами (template).

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

Возможности команд скрипта различаются и зависят от приложения, использующего сниппеты (хост-приложения). Они могут включать выполнение команд командного интерпретатора, вывод диалоговых окон и другие способы взаимодействия пользователя с операционной системой и компонентами хост-приложения.

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

Статический текст (plain text) 
Хотя поддержка неизменяемого текста является базовой функциональностью, реализованной даже в программах, поддерживающих только статические сниппеты, программируемые снипетты используются также и для работы с таким текстом.

Одной общей трудностью, однако, является то, что система, поддерживающая программируемые сниппеты, часто должна иметь возможность различать, что является статичным текстом, а что — программными командами. Дополнительным усложнением такого различения является то, что приложения, поддерживающие программные сниппеты, почти всегда включают поддержку нескольких языков программирования или через подсветку синтаксиса, или через выполнение встроенных команд.

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

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

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

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

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

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

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

Следующий пример текста сниппета использует идентификаторы first_name,
last_name и item:

Hello {%first_name%} {%last_name%},

Your shipment of {%item%} is now ready to pick up.

Thanks {%first_name%}!

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

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

Программы, поддерживающие сниппеты 
Ниже приводится неполный перечень приложений, поддерживающих сниппеты. Дополнительные сведения приводятся в статье о текстовых редакторах.

Примечания

Ссылки 
 45+ Excellent Code Snippet Resources and Repositories Smashing Magazine

Исходный код