ing156 / vacuum-im

Automatically exported from code.google.com/p/vacuum-im
GNU General Public License v3.0
0 stars 0 forks source link

Поддержка phpBB code #853

Closed GoogleCodeExporter closed 8 years ago

GoogleCodeExporter commented 8 years ago
При получении сообщений процессор 
анализирует текст на наличие ссылок...
Было бы удобно добавить поддержку 
phpBB-тегов. В стиле 

[b]1[/b] - жирный текст
[i]2[/i] - наклонный текст

Реализовать можно разными способами
1) Создать плагин поддержки phpBB
2) Внедрить готовый код в messageprocessor.cpp

Добавляем функцию

    QString MessageProcessor::parseBB(const QString &AString) const
{
    QString result = AString;
    QMap<QString, QString> mDefaults;

    mDefaults.insert("\\[b\\](.*)\\[/b\\]", "<b>\\1</b>");
    mDefaults.insert("\\[i\\](.*)\\[/i\\]", "<i>\\1<\/i>");
    mDefaults.insert("\\[u\\](.*)\\[\/u\\]", "<u>\\1</u>");
    mDefaults.insert("\\[img\\](.*)\\[\/img\\]", "<img src=\"\\1\">");
    mDefaults.insert("\\[url\\=(.*)\\](.*)\\[\/url\\]", "<a href=\"\\1\">\\2</a>");
    mDefaults.insert("\\[code\\](.*)\\[\/code\\]", "<code>\\1</code>");
    int j = 0;
    QMap<QString, QString>::iterator i;
    for (i = mDefaults.begin(); i!= mDefaults.end(); ++i)
    {
        QRegExp rx = QRegExp(i.key());
        rx.setMinimal(true);
        result.replace(rx, i.value());
    }

    return result;
}

Затем правим 

QString MessageProcessor::prepareBodyForReceive(const QString &AString) const
{
    QString result = Qt::escape(AString);
    result = this->parseBB(AString); //Qt::escape(AString);

    result.replace('\n',"<br>");
    result.replace("  ","&nbsp; ");
    result.replace('\t',"&nbsp; &nbsp; ");

    return result;
}

Можно пользоваться).
С уважением Newcss

Original issue reported on code.google.com by newc...@gmail.com on 30 Mar 2015 at 3:33

GoogleCodeExporter commented 8 years ago
Для этих целей в XMPP есть специальный 
стандарт XEP-71 XHTML-IM, он есть в планах на 
реализацию.

Original comment by potapov.s.a on 30 Mar 2015 at 7:02