pyLCDstring — утилита для подготовки русских строк к выдаче на символьные ЖКИ

История развития программы

Новое в версии 2.7 (28 января 2005)

  • Добавлен префикс выравнивания M для полуцентрирования. Отличие от центрирования (при использовании префикса C) заключается в том, что исходная строка сначала центрируется в поле указанной ширины, а затем в ней отбрасываются все пробелы в конце строки. Полуцентрирование полезно для обработки строк, в конце которых присутствует символ \n (перевод строки). Пример:
Исходный файл:
d = c16"abc"
e = m16"abc"
После обработки:
char d[] = "      abc       ";  /* c16"abc" */
char e[] = "      abc";         /* m16"abc" */
  • В шапку генерируемых c- и h- файлов больше не выводится дата и время обработки файла. Это сделано для того, чтобы выходные файлы при неизменном входном оставались также неизменными. Продиктовано жизненной необходимостью при использовании CVS. Опция вывода информации о дате-времени будет восстановлена в последующих версиях после того, как будет произведено отделение разбора и анализа входного файла от генерации выходного файла (одного или нескольких).

Новое в версии 2.6 (21 декабря 2004)

  • Исправлена ошибка с обработкой строк со строковыми литералами — если в начале строки перед именем переменной имелись пробелы, то такая строка не обрабатывалась;

  • Добавлен словарь перекодировки koi2win для перекодировки текстов из кодировки КОИ-8 в cp1251 (Windows);

  • Переработан движок утилиты. Скорость работы утилиты увеличилась на 40% (тестировалось на очень длинных файлах в Python 2.3); При использовании Python 2.4 скорость дополнительно возрастает еще на 15%;

  • Добавлен минимальный генератор массивов указателей на строки;

  • В пакет с утилитой добавлен скрипт recoding.py для перекодировки текстовых файлов с использованием имеющихся словарей перекодировки.

  • В директиве Align больше не допускается указывать выравнивание по умолчанию в форме:

    //// Align =
    

необходимо явно указать ключевое слово none или None.

Новое в версии 2.5 (12 сентября 2004)

  • Протестирована работа утилиты в среде Windows/Linux с Python версий 2.3/2.2. Для обеспечения полной переносимости между разными системами и версиями Python в текст скрипта внесены непринципиальные изменения. Для пользователей скомпилированного консольного приложения под Windows эти изменения практически незаметны. Поэтому решено новую версию консольного exe-файла и дистрибутива не выкладывать. На сайте выложена только новая версия скриптов.
  • Изменена рабочая структура каталогов. Словари перекодировки вынесены в отдельный каталог [dict], который преобразован в python-пакет.

Новое в версии 2.4 (26 августа 2004)

  • добавлена поддержка символов форматирования (%%, %d, ...)
  • если в непосредственном префиксе выравнивания указано поле длиной 0, то выравнивание и любые проверки длины исходной строки не производятся
  • добавлен вывод в шапку си-файла текущей даты/времени
  • причесан код утилиты (без принципиальных изменений)
  • несколько изменен дистрибутив утилиты
  • добавлен полноценный инсталлятор (для Windows)

Новое в версии 2.3а (29 июня 2004)

  • Протестирована работы утилиты в среде Linux. Сделаны мелкие непринципиальные улучшения для большей универсальности и переносимости программы в виде python-скрипта.

Новое в версии 2.3 (19 июня 2004)

  • При выдаче предупреждения о слишком большой длине строки (больше, чем заданное поле выравнивания) теперь кроме информации о заданной ширине выводится и реальная длина строки. Текст предупреждения выглядит так:

    String too long for field size=NN (MM)
    

здесь

  • NN — заданное поле выравнивания, `
  • MM — реальная длина строки
  • Доработан обработчик директивы Map. Теперь при перекодировке символы двойной кавычки (") или обратной косой черты (\) экранируются при помощи обратной косой (\), как того требуют правила языка Си.

Новое в версии 2.2a (18 мая 2004)

  • Добавлены два новых словаря перекодировок:
  • win2dos — для перекодировки букв кириллицы из кодировки Windows (cp1251) в кодировку DOS (cp866)
  • dos2win — для перекодировки букв кириллицы из кодировки DOS (cp866) в кодировку Windows (cp1251)

В обоих словарях реализована поддержка русских, украинских и белорусских букв.

Новое в версии 2.2 (5 мая 2004)

  • Исправлена недоработка при выравнивании строк, содержащих эскейп-последовательности

  • Префиксы выравнивания lNN, rNN, cNN теперь можно указывать и с заглавной буквы: LNN, RNN, CNN

  • Добавлен новый аргумент директивы Align для указания утилите, что выравнивание производить не требуется:

    //// Align = none
    
  • Введен механизм проверки корректности префиксов выравнивания строк и правильности аргумента директивы Align. В случае указания неверного префикса выдается соответствующее предупреждение

  • Добавлена опция командной строки --nowarnings, по смыслу противоположная опции --warnings. А опция --warnings теперь включена по умолчанию.

Новое в версии 2.0 (21 апреля 2004)

Значительно переработана и улучшена утилита. Кроме мелких улучшений алгоритма работы, переделан вывод предупреждений на консоль (соответствует стандарту де-факто для трансляторов), добавлен ключ командной строки --warnings, который влияет на выдачу возвращаемого кода при обнаружении предупреждений. Добавлены словари перекодировок: none, keil (замена букв э и я на соответствующие восьмеричные константы).

Новое в версии 1.8 (28 марта 2004)

Расширены возможности утилиты по автоматическому определению и выделению строк, длина которых больше чем заданное поле в префиксе выравнивания. Добавлен новый префикс #NN, который позволяет производить только проверку длины строки, без выравнивания. Его можно использовать по тем же правилам, что и другие префиксы (lNN, rNN, cNN).

В архивы с утилитой включен файл ToDo.htm, который отражает мои размышления о будущем развитии утилиты. Если у вас тоже имеются идеи по внесению каких-то полезных свойств — напишите мне.

Новое в версии 1.7 (20 марта 2004)

Добавлена возможность автоматического определения и выделения строк, длина которых больше, чем заданное поле выравнивания (в префиксе lNN, rNN, cNN). Для таких строк выводится предупреждение на экран (если не задан молчаливый режим) и в Си-файл (перед длинной строкой вставляется строка-комментарий с сообщением:

String too long for field size=NN

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

В архивы с утилитой включен файл test.lcd, который я использую для тестирования работы утилиты. Он содержит различные варианты строк, в том числе и "длинную" строку, которая не умещается в поле 16 символов.

Версия 1.6 (первый публичный релиз, 11 марта 2004)

Первая рабочая версия, опубликованная в интернете. Реализована вся базовая функциональность.