Мои статьи [6] |
Модули Цитаты
[0]
Загрузка модулей Цитаты
|
О будущем Цитаты из Библии. (3) | [16.07.2013] |
Готовится новый билд Цитаты 6 (0) | [19.07.2013] |
Исправления (0) | [21.12.2013] |
Нововведения (0) | [25.01.2014] |
О преобразовании из формата e-Sword (1) | [20.02.2014] |
В защиту формата модулей Цитаты (1) | [28.05.2014] |
Главная » Статьи » Мои статьи |
Одним из слабых мест "Цитаты" является сравнение библейских текстов: вы
можете выбрать только одну "параллельную" Библию, и если повезет, она
будет отображаться дополнительным столбцом. Другие, "импортные"
программы способны на большее. Код, генерирющий текст главы, изначально
был итальянским(спагетти), и мои заплатки, латающие в нем дыры, не
сделали его лучше.
Размышяя над тем, что нужно для добавления нового механизма сравнения текстов Св. Писания, я, прежде всего думал, "а как выбирать" эти модули? Многим нравится сделанное мною окошко "Моя библиотека", и поддержка Тегов/Категорий, так что модули уже как-то умели у меня группироваться. Но категории выставляются создателем модуля, а нужен был механизм, доступных каждому пользователю. Так появились "Группы". Чтобы сравнить несколько тестов Библии, можно выбрать Группу. Цитата сама выберет из модулей,в ней содержащихся те, что имеют нужный отрывок. Что же до групп, то можно создать несколько именованных групп, вставлять(перетаскиванием), удалять(щелчком на круглой кнопке "-") модули, менять перетаскиванием их порядок(автоматически они не сортируются), перетаскивать модуль из одной групы в другую. Мне пришлось перелопатить половину, если не большую часть кода "Библиотеки", чтобы это заработало. Но вчерне это уже работает. Хотелось бы , чтобы принадлежность к группам была видна и в главном списке, но пока оставил это занятие. Во всяком случае, вы не сможете добавить в одну группу два одинаковых модуля. Сохранение групп уже тоже работает, но там есть еще шероховатости. Другой задачей было решить, как будут выглядеть это сравнение? Некоторые программы используют столбцы. Но реально, больше 3-4 модулей на экране не сможет поместиться. Другие программы текст вариантов стиха выдают списком, и это неплохой вариант. Только уж совсем спартанский. Самому мне хотелась плитка: чтобы стихи были помещены на разноцветных подлжках в несколько( но не много, два или три) стобцов. Но понятно, как бы я не сделал, нашлись бы такие, которые сказали бы "арргх! Не, не то. Вот в программе X, там ваще клево все, а тут - кисло". Можно, конечно было реализовать все варианты, но,
во-первых, я боялся, что нужный для это код будет не лучше прежнего "итальянского". А во-вторых гибкости угодить всем все равно бы не хватило. Для понимания, что произошло дальше, нужно пояснить: я склонен к рекурсии. Я не ищу простых путей, напротив, склонен использовать наилучшие, трудные, те, что бросают вызов. Трудность была в том, что поддержка юникода появилась в ней недавно, так что мне хотелось включить в Цитату самую последнюю, и, надеюсь, наиболее отлаженную версию (для справки, это 8.34). А стало быть компилировать ее вручную(ибо я хотел интегрировать ее в тело исполняемого файла) старичком C++ Builder(тут отдельная эпопея, поскольку нет для него волшебного make-файла). Вдобавок, даже собрав движок с поддержкой UTF-16 и Unicode Properies(что бы PCRE мог отличать, например , букву кириллицы от буквы латинницы, это может пригодиться), я оказался перед фактом, что не существует для старой версии Delphi, компилятора самой Цитаты, юникодной обертки PCRE. А она нужна, PCRE - это голый C(да,без крестов), необъектный. Такая скомпилируется и под тостер, но для прикладного прораммиста - по нашим временам дикость. К счастью нашелся код для новых, чисто юникодных Дельфей, который был мной перетолмачен под нашу старушку. Работа пошла. Однако, по мере того, как шаблонизатор из идей в голове перетекал в программный код, мне становилось все более очевидно, что, если для чего-то простого, вроде отображения главы, такой подстановочный шаблонизатор и годится, для сравнения стихов Писания с различными вариантами отображения, гибкости не хватает. Шаблон должен быть "умным", а стало быть, он не может быть статичным.Ergo, раз в самом шаблоне должен быть код, то где-то должен найтись и интерпретатор. Честно, берясь за работу, не думал я, что все так повернется.
К сожалению, очень многое еще нужно сделать: поддержку шрифтов для каждого модуля в сравнении, нужно еще подружить остальной код Ц. с новым способом отображения. В На шаблонизаторе еще есть узкие места(баги). Будем надеятся, что у нас все получится.
Алексадр Снигерев, 2014 | |
Просмотров: 1521 | Рейтинг: 0.0/0 |
Всего комментариев: 0 | |