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

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


foobar2000:tagz:tutorial:tagz_intro

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
foobar2000:tagz:tutorial:tagz_intro [2006/05/18 13:40]
Mishail
foobar2000:tagz:tutorial:tagz_intro [2007/02/15 10:54] (текущий)
Строка 2: Строка 2:
  
 Tagz это скриптовый язык используемый в foobar2000 не только для конфигурации внешнего вида плэйлистов,​ но и вообще для реализации любой функциональности уровня продвинутых пользователей. После изучения этого пособия Вы сможете легко использовать этот язык в любых ситуациях. Но начнем мы все же с азов. Tagz это скриптовый язык используемый в foobar2000 не только для конфигурации внешнего вида плэйлистов,​ но и вообще для реализации любой функциональности уровня продвинутых пользователей. После изучения этого пособия Вы сможете легко использовать этот язык в любых ситуациях. Но начнем мы все же с азов.
 +
  
 ===== Доступ к тэгам и полям===== ===== Доступ к тэгам и полям=====
Строка 10: Строка 11:
  
 Foobar2000 ищет тэг artist в песне и возвращает имя испонителя. В случае если этот тэг отутсвует в файле Вы получите в качестве результата вопросительный знак (''?''​). Все что заключено между знаками ''​%''​ рассматривается как тэг, не смотря на имя. Если Вы используете тэг с именем //my field// в Ваших файлах,​ то просто используйте ''​%my field%''​ для того чтобы получить информацию из этого тэга. \\ Foobar2000 ищет тэг artist в песне и возвращает имя испонителя. В случае если этот тэг отутсвует в файле Вы получите в качестве результата вопросительный знак (''?''​). Все что заключено между знаками ''​%''​ рассматривается как тэг, не смотря на имя. Если Вы используете тэг с именем //my field// в Ваших файлах,​ то просто используйте ''​%my field%''​ для того чтобы получить информацию из этого тэга. \\
-Кроме того, точно такой же синтаксис используется для доступа к технической информации,​ например ''​%bitrate%''​ возвращает битрэйт файла, а ''​%_ispaused%''​ покажет Вам сотсояние текущей песни (пауза/​проигрывание). Для того чтобы получить более полное описание функциональности Tagz прочтите [[foobar2000:​описание_синтаксиса|Справку по функциям и полям, используемым в скриптах Foobar2000]]+Кроме того, точно такой же синтаксис используется для доступа к технической информации,​ например ''​%bitrate%''​ возвращает битрэйт файла, а ''​%_ispaused%''​ покажет Вам сотсояние текущей песни (пауза/​проигрывание). Для того чтобы получить более полное описание функциональности Tagz прочтите ​[[[foobar2000:​tittleformatting]]
  
 ===== Подстановки полей ===== ===== Подстановки полей =====
Строка 20: Строка 22:
 Не надо пугаться сложности этого выражения. На самом деле оно говорит:​ //​Найти тэг artist. Если его нет, использовать тэг album artist. Если же и его нет, то попытаться использовать тэг composer, а затем performer.//​ Не надо пугаться сложности этого выражения. На самом деле оно говорит:​ //​Найти тэг artist. Если его нет, использовать тэг album artist. Если же и его нет, то попытаться использовать тэг composer, а затем performer.//​
  
-Это на самом деле очень важно знать, что за большинством из наиболее используемых тэгов скрываются подстановки подобные этой. Для полного их перечня обратитесь к уже упомянутой [[foobar2000:​описание_синтаксиса|справке по функциям и полям]]. Эти подстановки введены для того чтобы облегчить жизнь создателей скриптов.+Это на самом деле очень важно знать, что за большинством из наиболее используемых тэгов скрываются подстановки подобные этой. Для полного их перечня обратитесь к уже упомянутой [[foobar2000:​tittleformatting]]. Эти подстановки введены для того чтобы облегчить жизнь создателей скриптов.
  
 Несомненно,​ использование подстановок делает процесс создания скриптов более удобным,​ но бывают случаи когда нам нужно получит доступ к не измененному,​ "​чистому"​ значению поля, тому, которое на самом деле хранится в файле. И мы уже видели как это делается. Для того чтобы прочитать такое (неизмененное подстановкой) значение тэга artist, следует использовать:​ Несомненно,​ использование подстановок делает процесс создания скриптов более удобным,​ но бывают случаи когда нам нужно получит доступ к не измененному,​ "​чистому"​ значению поля, тому, которое на самом деле хранится в файле. И мы уже видели как это делается. Для того чтобы прочитать такое (неизмененное подстановкой) значение тэга artist, следует использовать:​
Строка 67: Строка 69:
 ==== Контроль хода выполнения скрипта:​ функция ''​$select()''​ ==== ==== Контроль хода выполнения скрипта:​ функция ''​$select()''​ ====
  
 +Другая функция,​ очень схожая с функцией ''​if'',​ называется ''​$select()'',​ результат ее работы зависит от вычисления __числа__ (напомню что результат работы ''​if''​ зависит от __условия__).
 +
 +  $select(%tracknumber%,​
 +  %artist%,
 +  %album%)
 +
 +Значение первого аргумента (''​%tracknumber%''​) вычисляется (он обязательно должен иметь численное значение), ​ и затем ''​$select''​ проверяет полученное значение,​ и поступает соответствующим образом. Если значение ''​%tracknumber%''​ равно 1, то выполняется первая из последующих команд (''​%artist%'',​ показывающая исполнителя композиции). ​ Если значение ''​%tracknumber%''​ равно 2, то выполняется вторая команда (''​%album%''​). И так далее. Функция ''​$select()''​ может содержать столько команд,​ сколько Вам угодно.
 +
 +===== Комментирование кода =====
 +
 +В Tagz любая строка,​ начинающаяся с <​html>//</​html>,​ является комментарием и полностью игнорируется в ходе выполнения скрипта. Эта строка может содержать все что Вам захочется,​ но обычно комментарии используются для объяснения работы сложных фрагментов кода, в которых с первого взгляда непонятно что именно делает ​
 +скрипт. И, конечно же, они являются большим подспорьем если Вы заглядываете в Ваш скрипт раз в полгода :-)
 +
 +  $select(%tracknumber%,​
 +  %artist%,
 +  // Это строка комментария
 +  %album%)
 +
 +Для тех кто уже имеет некоторый опыт работы с настоящими языками программирования важно знать, что только строка целиком может быть комментарием. Поэтому выражение:​
 +
 +  %artist% // Это НЕ комментарий
 +
 +Является неверным с точки зрения Tagz
 +
 +===== Обработка строк =====
 +
 +Это последний раздел введения,​ но может быть он является самым важным,​ особенно если Вы имеете некоторый опыт программирования. Основная причина того, что скрипты Tagz всегда выглядят запутанней,​ чем исходные коды написанные на настоящих языках программирования,​ это то каким образом Foobar2000 обрабатывает строки. Если вы введете текст, который является просто текстом,​ не функцией и не любым другим зарезервированным словом,​ то Fooobar2000 отобразит его без какой-либо обработки. Поэтому самая известная программа hello-world написанная на Tagz выглядит весьма скучно:​
 +
 +  Hello, world!
 +
 +По желанию вы можете заключать строки в одинарные кавычки.
 +
 +  '​Hello,​ world!'​
 +
 +Выводимый текст от этого не изменится. При определенных обстоятельствах использование кавычек является обязательным,​ и, по моему мнению,​ ясное обозначение строк делает код ясней. Поэтому я заключаю все строки в кавычки,​ не смотря на то, нужны они в этой ситуации или нет.  ​
 +
 +С первого взгляда использование кавычек выглядит весьма удобными,​ но оно создает очень серьезную помеху - Вы не сможете использовать отступы для структуризации Вашего кода. Взгляните на эти два скрипта:​
 +
 +  $if(%album tracks%,
 +    $select(%tracknumber%,​
 +      %artist%,
 +      %album%,
 +      %date%
 +    ),
 +    $if2(%artist%,​%filename%)
 +  )
 +
 +  $if(%album tracks%,
 +  $select(%tracknumber%,​
 +  %artist%,
 +  %album%,
 +  %date%
 +  ),
 +  $if2(%artist%,​%filename%)
 +  )
 +
 +Сразу видно какой из них легче читать. Мне сложно представить что кто-нибудь выберет второй вариант :-) Но к сожалению Вы не сможете использовать такие красивые отступы как в 1-м скрипте в Tagz, всему виной то что Foobar2000 расценивает пробелы не как отступы,​ но как обычные символы. Для первого трэка (tracknumber = 1) версия с отступами выдаст не просто имя исполнителя (''​%artist%''​),​ но имя исполнителя с шестью пробелами в начале. Не совсем то что мы ожидали,​ правда?​ А теперь подумайте откуда взялись эти лишние шесть пробелов.
 +
 +Из этого мы должны сделать такой вывод: никогда не используйте отступы в скриптах Tagz, хотя это и выглядит некрасиво. И это на самом деле последний урок из введения. Сейчас все становится серьезно.
  
 ~~DISCUSSION~~ ~~DISCUSSION~~
foobar2000/tagz/tutorial/tagz_intro.1147945249.txt.gz · Последние изменения: 2006/05/18 12:55 (внешнее изменение)