Russian Qt Forum
Ноябрь 27, 2024, 06:28 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Программа для генерирования статических веб-сайтов[обсуждение программы и кода]  (Прочитано 6412 раз)
xwicked
Гость
« : Сентябрь 13, 2015, 01:29 »

Здравствуйте!

Очередная моя разработка. Понимаю, что другие программы ещё сырые, но мне уже стало тяжело поддерживать свой статический html-сайт. В связи с этим представляю программу для генерирования статических html-сайтов.
Программа разделена на интерфейс и ядро(динамическая библиотека). Уже есть ошибки при вызове одной фукции из библиотеки
Код
C++ (Qt)
QString replaceTagsInText(const QString& sTags, const QString& sText)
{
   int iBegin;
   int iEnd;
   QString sOpenedTag;
   QString sClosedTag;
   QString sTextTag;
   QString sTemp;
   QString slTags;
   QString slText;
   sTemp = QByteArray::fromBase64(sTags.toAscii());
   slTags = sTemp;
   sTemp = QByteArray::fromBase64(sText.toAscii());
   slText = sTemp;
   iEnd = 0;
   while (iEnd < slTags.count() - sClosedTag.count())
   {
       iBegin = slTags.indexOf("<tag=",iEnd);//найти начальную позицию тега
       iEnd = slTags.indexOf(">", iBegin);//найти конечную позицию тега
       sOpenedTag = slTags.mid(iBegin, iEnd - iBegin + 1);//Получить открывающий тег
       sClosedTag = sOpenedTag;
       sClosedTag.insert(1, "/");//Получить закрывающий тег
       sTextTag = slTags.mid(iEnd + 1, slTags.indexOf(sClosedTag) - (iEnd + 1));//Получить текст тега
       slText.replace(sOpenedTag, sTextTag);//Заменить тег на соответсвующий текст
   }
   return slText;
}
Параметры как бы меняются местами sText с sTags и происходят различные ошибки.
Вызывается таким образом
Код
C++ (Qt)
QString mainFormErsh::replaceTagsInText(QString sTags, QString sText)
{
       typedef int (*TfReplaceTagsInText) (const QString&, const QString&);
       TfReplaceTagsInText fReplaceTagsInText = (TfReplaceTagsInText)(lib.resolve("replaceTagsInText"));
       if (fReplaceTagsInText) {
           sText = fReplaceTagsInText(sTags, sText);
       }
   return sText;
}
 
Код GNU GPLv2. SourceForge.net
Благодарю за ответы!
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #1 : Сентябрь 13, 2015, 11:54 »

Что-то какая-то уж больно хардкорная функция replaceTagsInText..

С помощью обычного regex_replace это в пару строчек делается. Советую посмотреть в сторону boost::xpressive.
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
xwicked
Гость
« Ответ #2 : Сентябрь 14, 2015, 00:11 »

Спасибо, но у меня там ещё проблема с адресами переменных при передачи их в библиотеку, они или меняются местами или вообще второй параметр куда-то исчезает, причём функции с двумя параметрами для открытия-сохранения работают. Долгое сисадминство плохо повлияло на моё программерство, походу...
Записан
xwicked
Гость
« Ответ #3 : Сентябрь 17, 2015, 15:00 »

Ошибки нашёл, исправил, код перезалил.
Записан
xwicked
Гость
« Ответ #4 : Ноябрь 23, 2015, 13:29 »

Почти готова пререлизная альфа-версия программы 0.2.3. Сделал перевод на русский язык, собрал для ОС Windows 32 бит и статически для ОС GNU / Linux 32 и 64 бит.
Уже опробована на собственном сайте. Актуализированы заголовоки страниц и период работы проекта(2009-2015).

Скачать сборки 0.2.3 + исходник,

Пример файла с новыми ёрш-тегами:
Код:
<tag=Title>LabFreeTech.org - Лаборатория свободных технологий: </tag=Title>
<tag=Title_manual>LabFreeTech.org - Лаборатория свободных технологий: Руководство пользователя</tag=Title_manual>
<tag=Title_en>LabFreeTech.org - Lab Free Technologies: </tag=Title_en>
<tag=Title_manual_en>LabFreeTech.org - Lab Free Technologies: User's Guide</tag=Title_manual_en>
<tag=Copyright>Лаборатория свободных технологий. © 2009 - 2015</tag=Copyright>
<tag=Copyright_en>Lab Free Technologies. © 2009 - 2015</tag=Copyright_en>
Для того, чтобы генерирование html-страниц было полным и безошибочным, необходимо в выходной папке создать точную структуру подкатологов, как и  в оригинальном сайте.
« Последнее редактирование: Ноябрь 23, 2015, 13:44 от xwicked » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.24 секунд. Запросов: 23.