Вакансии творцов и интеллектуалов    

FidoQuoter


О программе

Квотинг сообщений согласно правилам принятым в Fido. Для специализированных агрегатов, типа GoldEd, не актуально, поскольку и так есть. А вот для всех остальных news/mail клиентов, степень актуальности обсуждаема.

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


Требования к программному окружению

Первое: news/mail-клиент должен уметь сохранять предварительный текст сообщения во временном файле (plain text), а также, уметь передавать название этого файла внешнему редактору (потоковые данные FidoQuoter, пока, не воспринимает).

Примечание 1: в виденных мною newsreader-ах (а видел я их немного, поскольку FIDO через Интернет освоил относительно недавно), а именно в KNode и Pine, возможность подключения внешних редакторов, с передачей названия файла я видел и использовал/использую - в KNode на полную, в Pine наполовину (по причине описанной в разделе 'Специфика применения'). В slrn же подобной возможности вообще не нашёл - поскольку мне он почти сразу не понравился и работал я с ним недолго. Поэтому, можно сказать, что, пока, FidoQuoter-а гарантированно заточен под KNode. Хотя по результатам, собственных, небольших, полевых изысканий, предполагаю, что по аналогии с KNode, FidoQuoter можно будет приспособить и к другим, программам (в частности к KMail).

Примечание 2: в виденных мною news/mail-клиентах, название временного файла передавалось внешнему редактору, по умолчанию, в качестве первого аргумента.

Второе: в FidoQuoter-е не реализован механизм распознавания кодировок. Поэтому, для того чтобы текст сообщения поступившего на вход FidoQuoter-а был обработан корректно и с ожидаемым результатом. Локаль, под которой запускается FidoQuoter, должна быть совместима с кодировкой сообщения. Уровни подготовки бывают разными, поэтому на всякий случай я добавил пример (filter.sh) - изменяющий параметры локали в соотв. с той кодировкой в которой было создано сообщение; в случае с примером, это koi8-r.

Третье: news/mail клиент должен уметь подставлять, в заданный ему приветственный темплейт, имя получателя сообщения (а опциально и название news-группы), и, причём, именно в то место темплейта, которое Вы укажите. В KNode, например, подобное делается с помощью метапеременной '%NAME' ('%GROUP').


Специфика применения

Возможно, при совместном использовании FidoQuoter-a, с некоторыми news/mail-клиентами, придётся отказаться от встроенного редактора сообщений, в пользу любого, подходящего, внешнего редактора - поскольку FidoQuoter не более чем фильтр, вызываемый перед, запуском основного редактора. С этим фактом, либо, придётся смириться, либо, отказаться от использования FidoQuoter-а в пользу какого-нибудь полноценного FIDO-style редактора/фильтра. Или вообще забить на Fido-style квотинг.

Если news/mail-клиент вызывает, указанный в его настройках, внешний редактор лишь один раз - в момент создания или при начале повторного редактирования, сообщения - проблем быть не должно, и можно будет обойтись только встроенными средствами редактирования news/mail-клиента. Если же, встроенные средства редактирования _полностью_ блокируются, заменяясь на указанные в настройках внешние - придется использовать внешний редактор (подробности искать в filter.sh).


Встроенный метаязык

Пугаться не надо, ничего серьезного. Весь язык состоит из четырех парных тегов, вводимых в состав темплейтов (приветственный, прощательный и т.д.) участвующих в формировании текста сообщения. Наличие подобных тегов объясняется просто. Программа, FidoQuoter, изначально ничего не знает сообщении. Она даже не знает, что именно Вы, автор этого сообщения. Не говоря уже об имени получателя и прочем. Маркируя входной текст с использованием тегов понимаемых FidoQuoter-ом мы получаем возможность передать FidoQuoter-у всё, необходимое, для формирования текста сообщения.

Теги имеют два уровня вложенности. Первый, обеспечивается парным тегом ('-||s||-'); назовём его корневым, или, тегом-контейнером. Второй, внутри первого соотв., обеспечивается тремя оставшимися тегами ('-||r||-', '-||e||-' и '-||f||-').

Тег-контейнер, первый уровень вложения, используется для пометки участков текста авторство которых принадлежит именно Вам. Например, тексты приветственных или заключительных темплейтов. Второй уровень вложения, уже внутри тега-контейнера, позволяет с помощью тегов '-||r||-' выделить имя получателя сообщения (для формирования инициалов). С помощью тегов '-||f||-', вставить файл(-ы), указав их полно-путевое именование. И с помощью тегов '-||e||-' выделить название той news-группы в которую направляется сообщение.

О теге '-||e||-' стоит сказать следующее. Поскольку не во всех news-группах принято цитировать собеседника по формату принятому в Fido. А один и тот же news-клиент может легко использоваться для написания сообщений и в Fido-шные, и в не Fido-шные, news-группы. То данный тег позволяет четко разделять, в каких news-группах применять Fido-style цитирование можно, а в каких, нельзя. Названия групп в которых разрешено Fido-style цитирование прописываются в файле $HOME/.fidoquoter/groups.conf; этот файл создается в момент первого запуска FidoQuoter и по-умолчанию, в него прописываются две строчки: 'FIDO' и 'fido'.

Далее, название той news-группы в которую направляется сообщение, переданное FidoQuoter-у посредством темплейта и тегов -||e||-, сравнивается с названиями тех news-групп что прописаны в файле groups.conf. И по результам, этого сравнения, выносится вердикт -- можно или нельзя, использовать Fido-style цитирование в данной news-группе.

Примечание 1: Иногда может оказаться полезным, совместное использование тега '-||e||-' и опции командной строки '-r'; предписывающей удалять из конечного сообщения текст заключенный между тегами '-||e||-'. Например, когда название news-группы в состав темплейта включать приходиться (только ради того, чтобы FidoQuoter мог определить разрешено ли в текущей news-группе Fido-style цитирование или нет), а в конечном тексте сообщения, название news-группы, видеть не хочется.

В качестве наглядного примера. В файле '$HOME/.fidoquoter/groups.conf' в одной из строк прописано 'fido'. Приветственный темплейт, задан, как: '-||s||-One day -||r||-%NAME-||r||- wrote-||e||- to %GROUP-||e||-:-||s||-'. После отработки FidoQuoter-а, без опции '-r', или когда '-r=0', в тексте сообщения, приветственный темплейт, превратится в: 'One day somebody wrote to fido7.su.home:'. C опцией же '-r=1', в тексте сообщения, появится строка вида: 'One day somebody wrote:'. Обратите внимание, что предлог ' to ' тоже будет вырезан, поскольку: '-||e||- to %GROUP-||e||-'.


Примеры

Темплейтов (с использованием мета-переменных используемых в KNode):

'-||s||-%DATE -||r||-%NAME-||r||- wrote-||e||- to %GROUP-||e||-:-||s||-'

'-||s||-Once -||r||-%NAME-||r||- wrote:-||s||-'

'-||s||-Bye.-||f||-/home/pupkin/temp/now_play.xmms-||f||--||s||-'

Настройки news-клентов:

Два скриншота, ниже, показывают пример использования FidoQuoter совместно с KNode. Общий смысл настроек, отображенных на скриншотах, сохраняется, и для любых других news/mail-клиентов. По аналогиям, разумеется.

Персональная информация

рис.1

Настройки редактора

рис.2


Опции командной строки

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


Дела дистрибутивные

FidoQuoter можно загрузить в двух вариантах - в бинарном (Linux, i386), .deb, .rpm и в виде исходников; исходники обработаны и завернуты с помощью KDevelop.


Инсталляция

При установке из бинарного дистрибутива:

Для .deb и .rpm дистрибуций, -- понятно, -- воспользоваться услугами соотв. пакетного менеджера.

Для tar.gz, скопировать исполняемый модуль FidoQuoter, вместе со скриптом filter.sh, в нужную директорию. Отредактировать filter.sh, прописав его в настройках news/mail-клиента в качестве вызываемого по умолчанию внешнего редактора. Также, в настройках news/mail-клиента, не забыть облагородить, используемые при создании сообщений, темплейты, тегами из п. 'Встроенный метаязык', данного README.

При сборке/установке из исходников:

Прочитать файл INSTALL. Полностью/частично выполнить указанную в нём последовательность действий. Далее, поступить также, как и в случае с бинарным дистрибутивом (чуть выше).


Пожеления

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


(с) 2004, Санкт-Петербург, Роман Матвеенко.

fidoquoter@jobman.ru

Вакансии творцов и интеллектуалов

Дата последней модификации: 24.06.04