Russian Qt Forum

Разное => Объявления => Тема начата: xwicked от Сентябрь 13, 2015, 01:29



Название: Программа для генерирования статических веб-сайтов[обсуждение программы и кода]
Отправлено: 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 (http://sourceforge.net/projects/ershgenerator/files/0.0.5/)
Благодарю за ответы!


Название: Re: Программа для генерирования статических веб-сайтов[обсуждение программы и кода]
Отправлено: m_ax от Сентябрь 13, 2015, 11:54
Что-то какая-то уж больно хардкорная функция replaceTagsInText..

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


Название: Re: Программа для генерирования статических веб-сайтов[обсуждение программы и кода]
Отправлено: xwicked от Сентябрь 14, 2015, 00:11
Спасибо, но у меня там ещё проблема с адресами переменных при передачи их в библиотеку, они или меняются местами или вообще второй параметр куда-то исчезает, причём функции с двумя параметрами для открытия-сохранения работают. Долгое сисадминство плохо повлияло на моё программерство, походу...


Название: Re: Программа для генерирования статических веб-сайтов[обсуждение программы и кода]
Отправлено: xwicked от Сентябрь 17, 2015, 15:00
Ошибки нашёл, исправил, код перезалил.


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

Скачать сборки 0.2.3 + исходник (http://sourceforge.net/projects/ershgenerator/files/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-страниц было полным и безошибочным, необходимо в выходной папке создать точную структуру подкатологов, как и  в оригинальном сайте.