![]() |
макросы в The Bat! |
на русском языке |
|
Автоматическое склонение дней / месяцев Превращение времени отправки письма на часовую зону отправителя (Летущую Мышь можно найти на ее собственной странице) |
index | ||||
английски | русски | немецки | словацки | чешски |
3) Что такое макрос %IF и как он работает?
5) Как автоматически вставить в эдитор Бат-а привет в зависимости от времени дня, когда пишем письмо?
1) Как устроить, чтобы Бат автоматически вставил в ответ слова «во вторник, в среду, в субботу», время в часовой зоне корреспондента, на которого письмо я отвечаю, и т.д.?=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
В воскресенье, 19 августа 2001 года, в 23:54:24 GMT +0300В случае, когда не требуется (с его точки зрения:-)) выдавать день недели
(понедельник, 20.08.2001, 0:54 в Питере),
Во вторник, 21 августа 2001 года, в 04:10:29 GMT +0400,или (в «среднем» варианте):
В воскресенье, 19 августа 2001 года, в 19:52:03 GMT +0300В общем, вы поняли. Ниже (для других шаблонов) в целях экономии места привожу
(20:52 того же дня в Питере),
В воскресенье, девятнадцатого августа 2001 года, в 23:54:24 GMT +0300C. date_rus_full нуждается в datebase и datebase_full (sic! особенности
(понедельник, 20.08.2001, 0:54 в Питере),
В воскресенье, 19 августа 2001 года, в 23:54:24 GMT +0300D. date_rus_full_m нуждается в datebase и datebase_full (sic!!!). Выдает
(понедельник, 20 августа 2001 года, 0:54 в Питере),
В воскресенье, девятнадцатого августа 2001 года, в 23:54:24 GMT +0300(ну вы поняли, это он и есть, привет Слэшу:-))
(понедельник, двадцатое августа 2001 года, 0:54 в Питере),
On Sunday, August 19, 2001, at 23:54:24 GMT +0300F. date_eng_full нуждается в datebase_eng. Выдает (а вы что себе думали?:-)):
(Monday, August 20, 2001, at 0:54 my local time),
On Sunday, the 19th of August, 2001, at 23:54:24 GMT +0300
(Monday, the 20th of August, 2001, at 0:54 my local time),
[(Note by Avenarius:) Although the date in English may have the form the 19th of August when spoken, it is not standard to convey it this way in writing. The preferred usage seems to be 19 August 2001 in British usage or August 19, 2001 in American usage. Return to commentary]
2) Как устроить, чтобы Бат автоматически вставил в ответ слова «во вторник, в среду, в субботу», время в часовой зоне корреспондента, на которого письмо я отвечаю, и т.д.?=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
==8<===============Начало основного шаблона=========================== В%QINCLUDE="den", %QINCLUDE="cislo"-го %QINCLUDE="mesiac" %- %QINCLUDE="god", примерно в %QINCLUDE="vremia", когда ходики отправителя показывали %OTIME (%ODOW), %ABTONAME="%OFROMNAME" изволил%- %IF:"%ABOFROMGENDER"="1":"":"%IF:'%ABOFROMGENDER'='2':'а':'(а)'" %- сообщить: %CURSOR %QUOTES -- Будьте здоровы, %FromFName mailto:%FromAddr ===8<===============Конец основного шаблона===========================
===8<==============Начало шаблона "vremia"=============================== %SETPATTREGEXP="(?m-s)Date\:\s*?((.*?[\d]{4})\s*?([\d]{0,2}\:%- [\d]{0,2}\:[\d]{0,2})\s*?(.*))"%REGEXPBLINDMATCH="%HEADERS"%- %SUBPATT="3" (GMT%SUBPATT="4") ===8<==============Конец шаблона "vremia"================================
===8<==============Начало шаблона "cislo"============================= %SETPATTREGEXP="^Date\:.*?\,\s*(\d*)"%- %REGEXPMATCH="%HEADERS". ===8<==============Конец шаблона "cislo"==============================
===8<==============Начало шаблона "day"=============================== %SETPATTREGEXP="^Date\:\s*(...)"%- %REGEXPMATCH="%HEADERS"%- ===8<==============Конец шаблона "day"================================
===8<==============Начало шаблона "month"============================= %SETPATTREGEXP="^Date\:.*?\,[\s\d]*(\S*)"%- %REGEXPMATCH="%HEADERS" ===8<==============Конец шаблона "month"==============================
===8<==============Начало шаблона "god"=============================== %SETPATTREGEXP="^Date\:.*?(\d{4})"%- %REGEXPMATCH="%Headers" ===8<==============Конец шаблона "god"================================
===8<==============Начало шаблона "den"=============================== %REM="День отправки письма"%- %IF:"%QINCLUDE=""day"""="Mon":" понедельник":""%- %IF:"%QINCLUDE=""day"""="Tue":"о вторник":""%- %IF:"%QINCLUDE=""day"""="Wed":" среду":""%- %IF:"%QINCLUDE=""day"""="Thu":" четверг":""%- %IF:"%QINCLUDE=""day"""="Fri":" пятницу":""%- %IF:"%QINCLUDE=""day"""="Sat":" субботу":""%- %IF:"%QINCLUDE=""day"""="Sun":" воскресенье":""%- ===8<==============Конец шаблона "den"================================
===8<==============Начало шаблона "mesiac"============================ %REM="Месяц отправки письма"%- %IF:"%QINCLUDE=""month"""="Jan":"января":""%- %IF:"%QINCLUDE=""month"""="Feb":"февраля":""%- %IF:"%QINCLUDE=""month"""="Mar":"марта":""%- %IF:"%QINCLUDE=""month"""="Apr":"апреля":""%- %IF:"%QINCLUDE=""month"""="May":"мая":""%- %IF:"%QINCLUDE=""month"""="Jun":"июня":""%- %IF:"%QINCLUDE=""month"""="Jul":"июля":""%- %IF:"%QINCLUDE=""month"""="Aug":"августа":""%- %IF:"%QINCLUDE=""month"""="Sep":"сентября":""%- %IF:"%QINCLUDE=""month"""="Oct":"октября":""%- %IF:"%QINCLUDE=""month"""="Nov":"ноября":""%- %IF:"%QINCLUDE=""month"""="Dec":"декабря":""%- ===8<==============Конец шаблона "mesiac"=============================
Date: Thu, 26 Jul 2001 14:37:46 +0700 vremia время 14:37:46 и +0700 cislo число 26 day день недели Thu month месяц Jul god год 20012. Макросы den и mesiac произносят результат красиво.
den о вторник mesiac июляИменно поэтому конструкцию В%QINCLUDE="den" нужно писать слитно,
==8<===============Начало основного шаблона===========================
В%QINCLUDE="den", %QINCLUDE="datum"-го %QINCLUDE="mesiac" %-
%QINCLUDE="rok", примерно в %QINCLUDE="cas",
когда ходики отправителя показывали %OTIME (%ODOW),
%ABTONAME="%OFROMNAME" изволил%-
%IF:"%ABOFROMGENDER"="1":"":"%IF:'%ABOFROMGENDER'='2':'а':'(а)'"
%- сообщить:
Надеюсь, последнее уточнение... Для конференции конструкция вида3) Что такое макрос %IF и как он работает?=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
%IF:"Var1"оператор_сравнения"Var2":"Then":"Else" ---------------------------------------------------------------------- Var1 и Var2 переменные, которые необходимо сравнить Оператор сравнения > Больше, < Меньше = Равно, ... Then Текст, который будет вставлен в шаблон в том случае, если выражение верно, т.е., Var1 оператор Var2 = TRUE Else Текст, который будет вставлен в шаблон в том случае, если выражение неверно. Вместо Else можно поставить еще один IF.Все переменные заключены в кавычки. Варианты подстановки текста
%QINCLUDE=""month"".Шаблон возвращает некий текст (в данном случае, название месяца),
ЕСЛИ (Результат работы шаблона) = JanВ роли Then выступает текст «января», т.е.
ЕСЛИ (Результат шаблона) = Jan ТОГДА (Вставить в текст слово Января)А переменная Else пустует. Соответственно, имеем:
ЕСЛИ (Результат) = Jan ТОГДА (Января) ИНАЧЕ (Оставить текст в покое)----------------------------------------------------------------------
4) Как заставить Бат-а сравнивать часовую зону моего корреспондента с моей собственной часовой зоной?=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
%SETPATTREGEXP="(?m-s)Date\:\s*?((.*?[\d]{4})\s*?([\d]{0,2}\:%- [\d]{0,2}\:[\d]{0,2})\s*?(.*))"%REGEXPBLINDMATCH="%HEADERS"%SUBPATT="3"и называем его t-vremia.
* В%QINCLUDE="den", %QINCLUDE="cislo"-го %QINCLUDE="mesiac" %- %QINCLUDE="god", примерно в %QINCLUDE="vremia", * %IF:"%QINCLUDE=""t-vremia"""="%OTIME=""hh:mm:ss""":"Кстати говоря, мои часы %- ничем в этом плане не отличались":"когда мои часы показывали %OTIMELONG (%ODOW)",Забавно... У меня работает. Это нужно отметить. :)
5) Как автоматически вставить в эдитор Бат-а привет в зависимости от времени дня, когда пишем письмо?=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
(1) Сравним 17:00 и 20:00 Первый символ с строке "17:00", это символ "1" Первый символ с строке "20:00", это символ "2" 1<2? Ага. Соответственно, 17:00<20:00 (2) Сравним 18:00 и 10:00 Первый символ с строке "18:00", это символ "1" Первый символ с строке "10:00", это символ "1" 1<1? Нет. 1>1? Нет. 1=1? Да. Переходим ко второму символу Второй символ с строке "18:00", это символ "8" Второй символ с строке "10:00", это символ "0" 8<0? Нет. 8=0? Нет. 8>0? Да. Соответственно, 18:00>10:00В вашем случае ошибки не происходит, все дело в этом самом принципе
(1) Сравним 8:00 и 12:00 Первый символ с строке "8:00", это символ "8" Первый символ с строке "12:00", это символ "1" 8>1? Ага. Соответственно, 8:00>12:00 А как правильно? А вол так: (2) Сравним 08:00 и 12:00 Первый символ с строке "08:00", это символ "0" Первый символ с строке "12:00", это символ "1" 0<1? Ага. Соответственно, 08:00<12:00Чтобы этого избежать, можно воспользоваться средствами последних
Good %- %IF:"%TIME='hh:mm:ss'">"06:00:00":"%IF:'%TIME=""hh:mm:ss""'<'11:59:59':'morning':''"%- %IF:"%TIME='hh:mm:ss'">"11:59:59":"%IF:'%TIME=""hh:mm:ss""'<'17:59:59':'afternoon':''"%- %IF:"%TIME='hh:mm:ss'">"17:59:59":"%IF:'%TIME=""hh:mm:ss""'<'23:59:59':'evening':''"%- %IF:"%TIME='hh:mm:ss'">"00:00:00":"%IF:'%TIME=""hh:mm:ss""'<'05:59:59':'night':''"%- %IF:"%TIME='hh:mm:ss'"="00:00:00":"night":""%---
английски | русски | немецки | словацки | чешски |
index |
Первоначальное предложение макросов и шаблонов: Januk Aggarwal
Русские версии: A.P.$lasH и Alexander V. Kiselev
Если у Вас вопросы по поводу этих макросов и шаблонов, пишите на один из этих трех адресов:
akiselev@mph.phys.spbu.ru , ap-slash@tfs.kiev.ua или a@avenarius.sk (webmaster).
Последняя актуализация: 24 августа 2001 (TB! версия 1.54 Beta/7) |
||
|
![]() |