Маски
[Перейти к справочнику по маскам]
При создании и редактирования письма часто нужно вставить имя отправителя,
подпись, дату, и вручную это делать совсем неудобно. Для быстрой и удобной
вставки в текст письма необходимой текстовой информации был разработан
механизм масок.
Механизм масок представляет собой текстово-ориентированный язык,
позволяющий манипулировать текстовыми строками. Конструкция языка представляет
собой строку символов, первый из которых - '%'. Если такая конструкция
прописана в одном из полей шаблона,
Fidolook обрабатывает ее и подставляет на ее место результирующую строку.
В язык входят условные операторы, встроенные функции (маски) и внешние
функции (внешние маски, выполненные в виде плагинов EMH).
Пример
Простейшим случаем применения масок является автоматическая подпись.
Если в поле Signature шаблона NewMail
прописать текст
-- Всего наилучшего, %fname
при создании нового письма будет добавлено имя из текущего почтового аккаунта,
например:
-- Всего наилучшего, Вася Пупкин
Встроенные маски
Как уже упоминалось, маски представляют собой функции,
принимающие аргументы - в основном аргументом является имя заголовка сообщения,
имя корзины, файла и т.п.
Начинаются маски с префиксов обозначающих еще один скрытый аргумент:
%f - означает, что маска получает скрытым аргументом исходное (внешнее и обычно read only) сообщение,
на базе которого построен ответ, форвард и т.п. Cоответственно все заголовки и данные маска будет извлекать из него.
%c - означает, что маска получает аргументом текущее (местное) редактируемое сообщение.
Остальные аргументы, если они есть, указыватся в скобках, например %fhdrf(X-Comment-To).
Регистр конструкции не имеет значения, т.е. %FHDRF(X-COMMENT-TO) и %fhdrf(x-comment-to)
эквивалентны.
Для упрощения ввода масок можно применять мастер масок. Для этого надо в поле ввода, поддерживающем маски,
вызвать меню правой кнопкой мыши и использовать пункт Insert Mask.
Замечание: Fidolook убирает все пробелы и переносы после операторов, поэтому для начала новой строки
после маски надо поставить точку, или указать html-тег. Например:
%fname.
другой абзац
Полный преречень масок приведен в конце этой страницы.
Условные операторы
Условные операторы - специализированые маски с помощью которых можно определить условия обработки масок.
К ним относятся %if, %then, %else и %match.
Синтаксис:
%if(exp1)%then(exp2)%else(exp3)
или:
%if(exp1)
%then(exp2)
%else(exp3)
где exp - любое выражение. До 10 вложений %if обрабатывается. Если выражение exp1 возвращает непустую
строку, то результатом всего выражения будет exp2, иначе exp3. Последний операнд - %else - может отсутствовать.
%match(exp1;exp2)
- сравнивает строку exp1 и exp2, и если они совпадают, возвращает exp1. В exp2 допустимы спецсимволы ? и *,
обозначающие соответственно любую букву и любую строку.
Пример применения:
%if(%match( %faddrname(From); andrey?no ))
%then(MUMU)
%else(BUBU)
Маски AND и XOR
Для выполнения некоторых условий удобно использовать консткукции =??= (AND) и =!!= (XOR).
Синтаксис:
=? exp1 exp2 exp3 ... ?=
=! exp1 exp2 exp3 ... !=
В первом случае возвращается строка выражений между =? и ?= если все выражения вернули ненулевые строки.
Во втором случае - если только одно выражение вернуло ненулевую стрроку.
Пример (приветствие в шаблоне ReplyMail):
You wrote =?in conference %fngrp ?==?to %f_to_?==?to %fx_ct?=, %fdate:
Замечание: Внутри %if или %match НЕЛЬЗЯ использовать =??= и =!!=.
Но внутри =??= в принципе МОЖНО использовать %if или %match, но имея ввиду
что если первая маска будет пустая, то весь =??= будет проигнорирован.
Специальные маски
Маски %htmlschrs, %squotrev предназначены для обработки исключительных ситуаций при обработке строк.
Синтаксис:
%squotrev(exp)
Эта функция для преодоления ограничений, накладываемых Windows Script Components.
Если какая-либо маска (например, %faddrname(From)) даст в итоге строку,
содержащую т.н. singlequote, возникает ошибка. Например - 'From: Andr Luk'yanov'.
Причем, даже если заменить "'" на &_#039, для Windows Script это проблему не
решает: 'From: Andr Luk' а остальное - yanov' - есть fatal error - когда возникает
исключение и вступает в игру Sсript Debugger. Возможно, это баг Windows Script Engine.
Поскольку выражения языка масок в FL могут давать непредсказуемый в смысле набора
символов результат, введена эта маска, которая заменяет в exp
все символы "'" на "`". Обманывая таким образом Script Engine и
позволяя быть выполненной невыполнимой задаче.
%htmlschrs(exp)
- помогает отобразить исходный код HTML, преобразовывая символы < > и другие спецсимволы разметки HTML в их
текстовый эквивалент. Например, строка "<Я люблю угловые скобки>" будет интерпретипрована как
html-тег и не отобразится. %htmlschrs(<Я люблю угловые скобки>) поможет отобразить ее правильно.
Внешние маски
Внешние маски реализованны в виде плагинов и
вызываются при помощи оператора %extrn.
Синтаксис:
%extrn(mask_name,parameters)
где mask_name - имя внешней маски, parameters - строка, передающаяся внешней маске как входные данные.
Список некоторых внешних масок можно посмотреть тут.
Вы можете сами написать необходимую маску используя приятый интерфейс.
Справочник по маскам
Атрибуты исходного сообщения
|
| |
Sender Attribs |
Атрибуты отправителя |
| %ffrom |
Name and Address |
Имя, фамилия, адрес (e-mail или ФИДО) |
| %fname |
Full Name |
Имя и фамилия |
| %ffnam |
First Name |
Имя |
| %fmail |
Address |
Адрес (e-mail) |
| %ffidoem |
Fido Address |
Адрес (ФИДО) |
| %fabbr |
Abbreviation |
Инициалы |
| |
| |
Recepient Attribs
|
Атрибуты получателя
|
| %f_to_ |
Full Name and Address |
Имя, фамилия, адрес (e-mail или ФИДО) |
| %ftonm |
Full Name |
Имя и фамилия |
| %ftofn |
First Name |
Имя |
| %ftoem |
Address |
Адрес (e-mail) |
| %ftofidoem |
Fido Address |
Адрес (ФИДО) |
| %ftoab |
Abbreviation |
Инициалы |
| |
| |
CC Attribs |
Атрибуты CC (CarbonCopy)
|
| %f_cc_ |
Full Name and Address |
Имя, фамилия, адрес (e-mail или ФИДО) |
| %fccnm |
Full Name |
Имя и фамилия |
| %fccfn |
First Name |
Имя |
| %fccem |
Address |
Адрес (e-mail) |
| %fccfidoem |
Fido Address |
Адрес (ФИДО) |
| %fccab |
Abbreviation |
Инициалы |
| |
| |
Reply-To Attribs
|
Атрибуты Reply-To
|
| %frpto |
Full Name and Address |
Имя, фамилия, адрес (e-mail или ФИДО) |
| %frtnm |
Full Name |
Имя и фамилия |
| %frtfn |
First Name |
Имя |
| %frtem |
Address |
Адрес (e-mail) |
| %frtfidoem |
Fido Address |
Адрес (ФИДО) |
| %frtab |
Abbreviation |
Инициалы |
| |
| |
Original Message Attribs
|
Атрибуты исходного сообщения
|
| %flins |
Lines count |
Число строк |
| %fsize |
Size |
Размер (байт) |
| %fmsid |
MessageID |
Содержимое Message ID |
| %fmsgURL |
Message URL |
URL |
| %fhost |
NNTP-Posting-Host |
Значение заголовка NNTP-Posting-Host |
| %fsubj |
Subject |
Тема сообщения |
| %fngrp |
Newsgroup |
Название группы новостей |
| %forga |
Organization |
Организация |
| %fx_ct |
X-Comment-To |
X-Comment-To |
| %fdist |
Distribution |
Distribution |
| %fkeyw |
Keywords |
Keywords |
| %ftrln |
X-FTN-Tearline |
X-FTN-Tearline |
| %forig |
X-FTN-Origin |
X-FTN-Origin |
| %farea |
X-FTN-AREA |
X-FTN-AREA |
| %faccserver |
Account Server |
Адрес сервера, назначенный аккаунту |
| %faccuser |
Account User |
Пользователь аккаунта |
| %faccname |
Account Name |
Имя аккаунта |
| %facceml |
Account Email |
E-mail аккаунта |
| %faccid |
Account ID |
Идентификатор аккаунта |
| |
| |
Original Time Attribs
|
Атрибуты времени исходного сообщения |
| %fdate |
Date |
Дата |
| %fYYYY |
Long Year |
Год, четыре цифры |
| %fYY |
Short Year |
Год, две цифры |
| %fMMM |
Month as short text (en-us) |
Месяц, сокращ., англ. |
| %fMMMR |
Month as short text (ru) |
Месяц, сокращ., рус. |
| %fMMMM |
Month as long text (en-us) |
Месяц, англ. |
| %fMMMMR |
Month as long text (ru) |
Месяц, рус. |
| %fMMMMFR |
Month as long text (ru) |
Месяц (в падеже),
рус. |
| %fMM |
Month number MM |
Месяц, номер |
| %fWWW |
Weekday as short text (en-us) |
День недели, сокращ., англ. |
| %fWWWR |
Weekday as short text (ru) |
День недели, сокращ., рус. |
| %fWWWW |
Weekday as long text (en-us) |
День недели, англ. |
| %fWWWWR |
Weekday as long text (ru) |
День недели, рус. |
| %fDD |
Day of Month DD |
Число |
| %fDDDDR |
Day of Month as text (ru) |
Число, текст, рус. |
| %fDDDDFR |
Day of Month as text (ru) |
Число, текст (в падеже), рус. |
| %ftime |
Time HH:MM:SS |
Время ЧЧ:ММ:СС |
| %fHHMM |
Time HH:MM |
Время ЧЧ:ММ |
| %fHH |
Hour of Time HH |
Время ЧЧ |
| %fNN |
Noun of Time NN |
Время ММ |
| %fSS |
Second of Time SS |
Время СС |
| |
| |
Original Header Functions |
Функции для работы с заголовками исходного сообщения |
| %fhdrf(hdr) |
Get text of header |
текст заголовка |
| %faddrfull(hdr) |
Extract full address |
полный канонизированный адрес, извлеченный из
заголовка, имеющего адресный тип. Например: %faddrfull(From) %faddrfull(To)
%faddrfull(CC) %faddrfull(BCC) %faddrfull(Reply-To) и т.д и т.п. Результатом
будет строка типа "andrey_no" <ANDREY_NO@MAIL.PRIMORYE.RU>. Или набор, если
адресов указано несколько. |
| %faddrname(hdr) |
Extract name |
извлекает только полное имя, например andrey_no
или набор, если имен указано несколько. |
| %faddrfname(hdr) |
Extract first name |
первое имя, например andrey. |
| %faddreml(hdr) |
Extract e-mail |
e-mail, или их набор, если указано несколько. |
| %faddrfido(hdr) |
Extract FIDO address |
адрес ФИДО (если он есть). |
| %faddrabbr(hdr) |
Extract first letters of name |
создаст из адресного заголовка аббревиатуру. |
Атрибуты создающегося сообщения
|
| |
New Message Attribs
|
Атрибуты нового сообщения
|
| %cflbuild |
Fidolook build |
Версия FL |
| %caccserver |
Account Server |
Адрес сервера, назначенный аккаунту |
| %caccuser |
Account User |
Пользователь аккаунта |
| %caccname |
Account Name |
Имя аккаунта |
| %cacceml |
Account Email |
E-mail аккаунта |
| %caccid |
Account ID |
Идентификатор аккаунта |
| %cngrp |
Newsgroup |
Группа новостей |
| %cngrprev |
Newsgroup revert |
Параметр NewsMailer |
| |
| |
Current Time Attribs
|
Атрибуты времени текущего сообщения |
| %cdate |
Date |
Дата |
| %cdateYYYYMMDD |
Date YYYYMMDD |
Дата ГГГГММДД |
| %cYYYY |
Long Year YYYY |
Год, четыре цифры |
| %cYY |
Short Year YY |
Год, две цифры |
| %cMMM |
Month as short text (en-us) |
Месяц, сокращ., англ. |
| %cMMMR |
Month as short text (ru) |
Месяц, сокращ., рус. |
| %cMMMM |
Month as long text (en-us) |
Месяц, англ. |
| %cMMMMR |
Month as long text (ru) |
Месяц, рус. |
| %cMMMMFR |
Month as long text (ru) |
Месяц (в падеже),
рус. |
| %cMM |
Month number MM |
Месяц, номер |
| %cWWW |
Weekday as short text (en-us) |
День недели, сокращ., англ. |
| %cWWWR |
Weekday as short text (ru) |
День недели, сокращ., рус. |
| %cWWWW |
Weekday as long text (en-us) |
День недели, англ. |
| %cWWWWR |
Weekday as long text (ru) |
День недели, рус. |
| %cDD |
Day of Month DD |
Число |
| %cDDDDR |
Day of Month as text (ru) |
Число, текст, рус. |
| %cDDDDFR |
Day of Month as text (ru) |
Число, текст (в падеже), рус. |
| %ctime |
Time HH:MM:SS |
Время ЧЧ:ММ:СС |
| %cHHMM |
Time HH:MM |
Время ЧЧ:ММ |
| %cHH |
Hour of Time HH |
Время ЧЧ |
| %cNN |
Noun of Time NN |
Время ММ |
| %cSS |
Second of Time SS |
Время СС |
| |
| |
Original Header Functions |
Функции для работы с заголовками создаваемого сообщения |
| %сhdrf(hdr) |
Get text of header |
текст заголовка |
| %сaddrfull(hdr) |
Extract full address |
полный канонизированный адрес, извлеченный из
заголовка, имеющего адресный тип. Например: %faddrfull(From) %faddrfull(To)
%faddrfull(CC) %faddrfull(BCC) %faddrfull(Reply-To) и т.д и т.п. Результатом
будет строка типа "andrey_no" <ANDREY_NO@MAIL.PRIMORYE.RU>. Или набор, если
адресов указано несколько. |
| %сaddrname(hdr) |
Extract name |
извлекает только полное имя, например andrey_no
или набор, если имен указано несколько. |
| %сaddrfname(hdr) |
Extract first name |
первое имя, например andrey. |
| %сaddreml(hdr) |
Extract e-mail |
e-mail, или их набор, если указано несколько. |
| %сaddrfido(hdr) |
Extract FIDO address |
адрес ФИДО (если он есть). |
| %сaddrabbr(hdr) |
Extract first letters of name |
создаст из адресного заголовка аббревиатуру. |
Маски доступа к корзинам
[подробнее о корзинах]
|
| %randA |
Rand A |
Случайная строка из корзины A |
| %randB |
Rand B |
Случайная строка из корзины B |
| %randC |
Rand C |
Случайная строка из корзины C |
| %randD |
Rand D |
Случайная строка из корзины D |
| %randE |
Rand E |
Случайная строка из корзины E |
| %randF |
Rand F |
Случайная строка из корзины F |
| %randG |
Rand G |
Случайная строка из корзины G |
| %randH |
Rand H |
Случайная строка из корзины H |
| %randI |
Rand I |
Случайная строка из корзины I |
| %randJ |
Rand J |
Случайная строка из корзины J |
| %rand(Basket) |
Rand line from basket |
Случайная строка из указанной корзины |
| %listA |
List A |
Выбор очередной строки из корзины А |
| %listB |
List B |
Выбор очередной строки из корзины B |
| %listC |
List C |
Выбор очередной строки из корзины C |
| %listD |
List D |
Выбор очередной строки из корзины D |
| %listE |
List E |
Выбор очередной строки из корзины E |
| %listF |
List F |
Выбор очередной строки из корзины F |
| %listG |
List G |
Выбор очередной строки из корзины G |
| %listH |
List H |
Выбор очередной строки из корзины H |
| %listI |
List I |
Выбор очередной строки из корзины I |
| %listJ |
List J |
Выбор очередной строки из корзины J |
| %list(Basket) |
Next line from basket |
Выбор очередной строки из указанной корзины |
Маски для работы с файлами
|
| %file(file) |
All text from file |
Весь текст из файла. Синтаксис: %file(drive:\path\file.txt) |
| %filerand(file) |
One text row from file in random order |
Случайная текстовая строка из файла. Синтаксис:
%filerand(drive:\path\file.txt) |
Условные операторы
|
| %if(exp) |
IF(expression) |
Условный оператор IF |
| %then(exp) |
THEN(expression) |
Условный оператор THEN |
| %else(exp) |
ELSE(expression) |
Условный оператор ELSE |
| %match(exp1,exp2) |
Match |
Соответствие строк. В параметре exp2 допускаются шаблоны * и ? |
| =? exp1 exp2 ... ?= |
Logical AND |
Логическое И |
| =! exp1 exp2 ... != |
Logical XOR |
Логическое исключающее ИЛИ |
Функции для обработки строк
|
| %squotrev(exp) |
Replace quotes |
Замещает двойные и одинарные скобки на апостровы |
| %htmlschrs(exp) |
Replase HTML special chars |
Заменить спецсимволы HTML на их текстовые эквиваленты |
Вызов внешних масок
|
| %extrn(mask,prm) |
Call external mask |
Вызвать внешнюю маску |
|