Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package poxml for openSUSE:Factory checked in at 2024-08-26 22:10:00 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/poxml (Old) and /work/SRC/openSUSE:Factory/.poxml.new.2698 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "poxml" Mon Aug 26 22:10:00 2024 rev:137 rq:1196032 version:24.08.0 Changes: -------- --- /work/SRC/openSUSE:Factory/poxml/poxml.changes 2024-07-05 19:56:45.598544133 +0200 +++ /work/SRC/openSUSE:Factory/.poxml.new.2698/poxml.changes 2024-08-26 22:13:09.761364196 +0200 @@ -1,0 +2,17 @@ +Mon Aug 19 07:14:48 UTC 2024 - Christophe Marin <[email protected]> + +- Update to 24.08.0 + * New feature release + * For more details please see: + * https://kde.org/announcements/gear/24.08.0/ +- Changes since 24.05.2: + * Port to modern KDE_COMPILERSETTINGS_LEVEL + * Increase QT_MIN_VERSION and KF_MIN_VERSION to reflect truth + * cmake_minimum_required needs to be called before project + * KF5_MIN_VERSION -> KF_MIN_VERSION + * Port to Qt 6 + * Port away from QRegExp + * Port away from QMultiMap API + * Enforce passing tests on all platforms + +------------------------------------------------------------------- Old: ---- poxml-24.05.2.tar.xz poxml-24.05.2.tar.xz.sig New: ---- poxml-24.08.0.tar.xz poxml-24.08.0.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ poxml.spec ++++++ --- /var/tmp/diff_new_pack.OOfsQv/_old 2024-08-26 22:13:10.237384073 +0200 +++ /var/tmp/diff_new_pack.OOfsQv/_new 2024-08-26 22:13:10.241384240 +0200 @@ -16,9 +16,12 @@ # +%define kf6_version 6.3.0 +%define qt6_version 6.6.0 + %bcond_without released Name: poxml -Version: 24.05.2 +Version: 24.08.0 Release: 0 Summary: Tools for translating DocBook XML files with Gettext License: GPL-2.0-only AND GFDL-1.2-only @@ -30,11 +33,11 @@ %endif BuildRequires: antlr BuildRequires: antlr-devel -BuildRequires: extra-cmake-modules +BuildRequires: kf6-extra-cmake-modules >= %{kf6_version} BuildRequires: gettext-devel -BuildRequires: cmake(KF5DocTools) -BuildRequires: cmake(Qt5Core) -BuildRequires: cmake(Qt5Xml) +BuildRequires: cmake(KF6DocTools) >= %{kf6_version} +BuildRequires: cmake(Qt6Core) >= %{qt6_version} +BuildRequires: cmake(Qt6Xml) >= %{qt6_version} %description This is a collection of tools that facilitate translating DocBook XML @@ -42,10 +45,10 @@ %package -n kde-l10n-devel Summary: Tools for translating DocBook XML files with Gettext -Recommends: %{name}-lang +Recommends: poxml-lang Obsoletes: kde4-l10n-devel < %{version} Provides: kde4-l10n-devel = %{version} -Provides: %{name} = %{version} +Provides: poxml = %{version} %description -n kde-l10n-devel This is a collection of tools that facilitate translating DocBook XML @@ -62,11 +65,12 @@ %endif export CXXFLAGS="%{optflags} -fPIC" export CFLAGS="%{optflags} -fPIC" -%cmake_kf5 -d build -- -DCMAKE_CXXFLAGS="%{optflags}" -DCMAKE_CFLAGS="%{optflags}" -%cmake_build +%cmake_kf6 -DCMAKE_CXXFLAGS="%{optflags}" -DCMAKE_CFLAGS="%{optflags}" + +%kf6_build %install -%kf5_makeinstall -C build +%kf6_install %find_lang %{name} --with-man --all-name @@ -74,11 +78,11 @@ %files -n kde-l10n-devel %license COPYING* -%{_kf5_bindir}/po2xml -%{_kf5_bindir}/split2po -%{_kf5_bindir}/swappo -%{_kf5_bindir}/xml2pot -%{_kf5_mandir}/man1/*.*%{ext_man} +%{_kf6_bindir}/po2xml +%{_kf6_bindir}/split2po +%{_kf6_bindir}/swappo +%{_kf6_bindir}/xml2pot +%{_kf6_mandir}/man1/*.*%{ext_man} %files lang -f %{name}.lang ++++++ poxml-24.05.2.tar.xz -> poxml-24.08.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poxml-24.05.2/.gitlab-ci.yml new/poxml-24.08.0/.gitlab-ci.yml --- old/poxml-24.05.2/.gitlab-ci.yml 2024-06-19 05:38:20.000000000 +0200 +++ new/poxml-24.08.0/.gitlab-ci.yml 2024-05-04 16:22:36.000000000 +0200 @@ -4,5 +4,5 @@ include: - project: sysadmin/ci-utilities file: - - /gitlab-templates/linux.yml - - /gitlab-templates/freebsd.yml + - /gitlab-templates/linux-qt6.yml + - /gitlab-templates/freebsd-qt6.yml diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poxml-24.05.2/.kde-ci.yml new/poxml-24.08.0/.kde-ci.yml --- old/poxml-24.05.2/.kde-ci.yml 2024-06-19 05:38:20.000000000 +0200 +++ new/poxml-24.08.0/.kde-ci.yml 2024-05-04 16:22:36.000000000 +0200 @@ -4,5 +4,8 @@ Dependencies: - 'on': ['@all'] 'require': - 'frameworks/extra-cmake-modules': '@stable' - 'frameworks/kdoctools': '@stable' + 'frameworks/extra-cmake-modules': '@stable-kf6' + 'frameworks/kdoctools': '@stable-kf6' + +Options: + require-passing-tests-on: ['Linux', 'FreeBSD', 'Windows'] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poxml-24.05.2/CMakeLists.txt new/poxml-24.08.0/CMakeLists.txt --- old/poxml-24.05.2/CMakeLists.txt 2024-06-19 05:38:20.000000000 +0200 +++ new/poxml-24.08.0/CMakeLists.txt 2024-05-04 16:22:36.000000000 +0200 @@ -1,11 +1,11 @@ -project(poxml) - cmake_minimum_required (VERSION 3.16 FATAL_ERROR) -set (QT_MIN_VERSION "5.12.0") -set (KF5_MIN_VERSION "5.68.0") +project(poxml) + +set (QT_MIN_VERSION "6.5.0") +set (KF_MIN_VERSION "6.0.0") -find_package(ECM ${KF5_MIN_VERSION} REQUIRED NO_MODULE) +find_package(ECM ${KF_MIN_VERSION} REQUIRED NO_MODULE) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules) include(FeatureSummary) @@ -23,8 +23,8 @@ PURPOSE "Required to build the poxml tools.") find_package(Gettext) -find_package(Qt5 ${QT_MIN_VERSION} REQUIRED NO_MODULE COMPONENTS Core Xml) -find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS DocTools) +find_package(Qt6 ${QT_MIN_VERSION} REQUIRED NO_MODULE COMPONENTS Core Xml) +find_package(KF6 ${KF_MIN_VERSION} REQUIRED COMPONENTS DocTools) add_subdirectory( doc ) @@ -39,7 +39,7 @@ add_executable(split2po ${split2po_SRCS}) -target_link_libraries(split2po ${GETTEXTPO_LIBRARY} Qt5::Xml Qt5::Core) +target_link_libraries(split2po ${GETTEXTPO_LIBRARY} Qt6::Xml Qt6::Core) install(TARGETS split2po ${KDE_INSTALL_TARGETS_DEFAULT_ARGS}) @@ -51,7 +51,7 @@ add_executable(xml2pot ${xml2pot_SRCS}) -target_link_libraries(xml2pot ${GETTEXTPO_LIBRARY} Qt5::Xml Qt5::Core) +target_link_libraries(xml2pot ${GETTEXTPO_LIBRARY} Qt6::Xml Qt6::Core) install(TARGETS xml2pot ${KDE_INSTALL_TARGETS_DEFAULT_ARGS}) @@ -66,7 +66,7 @@ add_executable(po2xml ${po2xml_SRCS}) -target_link_libraries(po2xml ${GETTEXTPO_LIBRARY} Qt5::Xml Qt5::Core) +target_link_libraries(po2xml ${GETTEXTPO_LIBRARY} Qt6::Xml Qt6::Core) install(TARGETS po2xml ${KDE_INSTALL_TARGETS_DEFAULT_ARGS}) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poxml-24.05.2/doc/CMakeLists.txt new/poxml-24.08.0/doc/CMakeLists.txt --- old/poxml-24.05.2/doc/CMakeLists.txt 2024-06-19 05:38:20.000000000 +0200 +++ new/poxml-24.08.0/doc/CMakeLists.txt 2024-05-04 16:22:36.000000000 +0200 @@ -1,4 +1,4 @@ -kdoctools_create_manpage(man-po2xml.1.docbook 1 INSTALL_DESTINATION ${MAN_INSTALL_DIR}) -kdoctools_create_manpage(man-split2po.1.docbook 1 INSTALL_DESTINATION ${MAN_INSTALL_DIR}) -kdoctools_create_manpage(man-swappo.1.docbook 1 INSTALL_DESTINATION ${MAN_INSTALL_DIR}) -kdoctools_create_manpage(man-xml2pot.1.docbook 1 INSTALL_DESTINATION ${MAN_INSTALL_DIR}) +kdoctools_create_manpage(man-po2xml.1.docbook 1 INSTALL_DESTINATION ${KDE_INSTALL_MANDIR}) +kdoctools_create_manpage(man-split2po.1.docbook 1 INSTALL_DESTINATION ${KDE_INSTALL_MANDIR}) +kdoctools_create_manpage(man-swappo.1.docbook 1 INSTALL_DESTINATION ${KDE_INSTALL_MANDIR}) +kdoctools_create_manpage(man-xml2pot.1.docbook 1 INSTALL_DESTINATION ${KDE_INSTALL_MANDIR}) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poxml-24.05.2/parser.cpp new/poxml-24.08.0/parser.cpp --- old/poxml-24.05.2/parser.cpp 2024-06-19 05:38:20.000000000 +0200 +++ new/poxml-24.08.0/parser.cpp 2024-05-04 16:22:36.000000000 +0200 @@ -4,7 +4,6 @@ #include <iostream> #include <stdlib.h> #include <assert.h> -#include <qregexp.h> #include <QDebug> #include <QFile> @@ -30,7 +29,7 @@ "anchor", "xref", "area", "footnoteref", "void", "inlinegraphic", "glosssee", "graphic", "xi:include", - 0}; + nullptr}; static const char *cuttingtags[] = {"bridgehead", "trans_comment", "para", "title", "term", "entry", "contrib", "keyword", "example", "note", "footnote", "caution", @@ -63,15 +62,15 @@ "revdescription", "glossentry", "partinfo", "segmentedlist", "segtitle", "seg", "seglistitem", "screenco", "titleabbrev", "date", "authorinitials", "holder", "releaseinfo", - 0}; + nullptr}; static const char *literaltags[] = {"literallayout", "synopsis", "screen", - "programlisting", 0}; + "programlisting", nullptr}; void StructureParser::startDocument() { - infos_reg = QRegExp("\\s*poxml_line=\"(\\d+)\" poxml_col=\"(\\d+)\""); - do_not_split_reg = QRegExp("\\s*condition=\"do-not-split\""); - message = ""; + infos_reg = QRegularExpression(QStringLiteral("\\s*poxml_line=\"(\\d+)\" poxml_col=\"(\\d+)\"")); + do_not_split_reg = QRegularExpression(QStringLiteral("\\s*condition=\"do-not-split\"")); + message = QString(); inside = 0; } @@ -86,7 +85,7 @@ return isLiteralTag(qName); } -bool StructureParser::isSingleTag(const QStringRef &qName) +bool StructureParser::isSingleTag(QStringView qName) { int index = 0; while (singletags[index]) { @@ -108,13 +107,13 @@ return false; } -void StructureParser::skippedEntity ( const QStringRef & name ) +void StructureParser::skippedEntity ( QStringView name ) { if (inside) message += QString::fromLatin1("&%1;").arg(name); } -void StructureParser::startElement( int lineNumber, int columnNumber, const QStringRef& qName, const QXmlStreamAttributes & attr ) +void StructureParser::startElement( int lineNumber, int columnNumber, QStringView qName, const QXmlStreamAttributes & attr ) { const QString tname = qName.toString().toLower(); @@ -133,7 +132,7 @@ if (inside) { - QString tmp = '<' + tname; + QString tmp = QLatin1Char('<') + tname; for (int i = 0; i < attr.length(); i++) { tmp += QString::fromLatin1(" %1=\"%2\"").arg(attr[i].qualifiedName(), attr[i].value()); } @@ -143,19 +142,19 @@ if (isSingleTag(qName)) tmp += QString::fromLatin1("/>"); else - tmp += '>'; + tmp += QLatin1Char('>'); message += tmp; if (first) startcol -= message.length(); } - if (tname == QLatin1String("anchor") || tname.leftRef(4) == QLatin1String("sect") || tname == QLatin1String("chapter")) + if (tname == QLatin1String("anchor") || QStringView(tname).left(4) == QLatin1String("sect") || tname == QLatin1String("chapter")) if (!attr.value("id").isEmpty()) list.pc.addAnchor(attr.value("id").toString()); } bool StructureParser::isClosure(const QString &message) { - assert(message.at(0) == '<'); + assert(message.at(0) == QLatin1Char('<')); int endindex = 1; while (!message.at(endindex).isSpace() && message.at(endindex) != QLatin1Char('>')) endindex++; @@ -174,8 +173,8 @@ const int messageLength = message.length(); while (true) { - int nextclose = message.indexOf(QRegExp(QString::fromLatin1("</%1[\\s>]").arg(tag)), index); - int nextstart = message.indexOf(QRegExp(QString::fromLatin1("<%1[>\\s]").arg(tag)), index); + int nextclose = message.indexOf(QRegularExpression(QString::fromLatin1("</%1[\\s>]").arg(tag)), index); + int nextstart = message.indexOf(QRegularExpression(QString::fromLatin1("<%1[>\\s]").arg(tag)), index); // qDebug("finding %d %d %d %d", nextstart, nextclose, index, inside); if (nextclose == -1) { #ifdef POXML_DEBUG @@ -220,19 +219,19 @@ case '\t': case '\r': if (!inside) - message[index] = ' '; + message[index] = QLatin1Char(' '); case ' ': if (!inside && lastws) - message[index] = '\010'; + message[index] = QLatin1Char('\010'); lastws = true; break; case '<': { int endindex = index+1; while (endindex < message.length() && !message.at(endindex).isSpace() && - message.at(endindex) != '>') + message.at(endindex) != QLatin1Char('>')) endindex++; QString tag = message.mid(index + 1, endindex - index - 1); - if (tag.at(0) == '/') { + if (tag.at(0) == QLatin1Char('/')) { if (isLiteralTag(tag.mid(1))) inside--; } else @@ -246,7 +245,7 @@ index++; } - message.remove('\010'); + message.remove(QLatin1Char('\010')); } bool StructureParser::formatMessage(MsgBlock &msg) const @@ -272,7 +271,7 @@ int slen = strlen(singletags[index]); if (!msg.msgid.isEmpty() && - msg.msgid.at(0) == QLatin1Char('<') && msg.msgid.midRef(1, slen) == QLatin1String(singletags[index]) && + msg.msgid.at(0) == QLatin1Char('<') && QStringView(msg.msgid).mid(1, slen) == QLatin1String(singletags[index]) && !msg.msgid.at( slen + 1 ).isLetterOrNumber() ) { #ifdef POXML_DEBUG @@ -289,7 +288,7 @@ } } - while (msg.msgid.right(2) == "/>" && msg.msgid.startsWith(QLatin1Char('<'))) + while (msg.msgid.right(2) == QStringLiteral("/>") && msg.msgid.startsWith(QLatin1Char('<'))) { int strindex = msg.msgid.length() - 2; strindex = msg.msgid.lastIndexOf(QLatin1Char('<'), strindex); @@ -312,7 +311,7 @@ strindex++; QString starttag = msg.msgid.mid(1, strindex - 1); int endindex = msg.msgid.length() - 2; - while (msg.msgid.at(endindex) != QLatin1Char('<') && msg.msgid.at(endindex + 1) != '/') + while (msg.msgid.at(endindex) != QLatin1Char('<') && msg.msgid.at(endindex + 1) != QLatin1Char('/')) endindex--; #ifdef POXML_DEBUG qDebug("endIndex %d", endindex); @@ -332,7 +331,7 @@ strindex = msg.msgid.indexOf(QLatin1Char('>'), 0); QString attr = msg.msgid.left(strindex); QString real_attr = attr.mid(starttag.length() + 1); - const int real_attr_infos_reg_pos = infos_reg.indexIn(real_attr); + const int real_attr_infos_reg_pos = infos_reg.match(real_attr).capturedStart(); if (real_attr_infos_reg_pos >= 0) { real_attr = real_attr.left(real_attr_infos_reg_pos); } @@ -344,20 +343,20 @@ stripWhiteSpace( msg.msgid ); msg.tag = starttag; - if (infos_reg.indexIn(attr) >= 0) { - msg.lines.first().start_line = infos_reg.cap(1).toInt(); - msg.lines.first().start_col = infos_reg.cap(2).toInt(); + if (const auto match = infos_reg.match(attr); match.hasMatch()) { + msg.lines.first().start_line = match.capturedView(1).toInt(); + msg.lines.first().start_col = match.capturedView(2).toInt(); #ifdef POXML_DEBUG qDebug("col %s %s %d", qPrintable(attr), qPrintable(msg.msgid), msg.lines.first().start_col); #endif offset = 0; - if (infos_reg.indexIn(endtag_attr) >= 0) { - msg.lines.first().end_line = infos_reg.cap(1).toInt(); - msg.lines.first().end_col = infos_reg.cap(2).toInt() + 1; + if (const auto match = infos_reg.match(endtag_attr); match.hasMatch()) { + msg.lines.first().end_line = match.capturedView(1).toInt(); + msg.lines.first().end_col = match.capturedView(2).toInt() + 1; } } - if (do_not_split_reg.indexIn(attr) >= 0) { + if (do_not_split_reg.match(attr).hasMatch()) { msg.do_not_split = true; break; } @@ -418,9 +417,9 @@ #endif // the exception for poxml_* attributes is made in the closing tag - int closing_index = message.indexOf(QRegExp(QString::fromLatin1("</%1[\\s>]").arg(tag)), + int closing_index = message.indexOf(QRegularExpression(QString::fromLatin1("</%1[\\s>]").arg(tag)), strindex); - int starting_index = message.indexOf(QRegExp(QString::fromLatin1("<%1[\\s>]").arg(tag)), + int starting_index = message.indexOf(QRegularExpression(QString::fromLatin1("<%1[\\s>]").arg(tag)), strindex); #ifdef POXML_DEBUG @@ -529,9 +528,9 @@ qDebug("inside %s %d", qPrintable(message.mid(strindex, 35)), inside); #endif - int closing_index = message.lastIndexOf(QRegExp(QString::fromLatin1("</%1[\\s>]").arg(tag)), + int closing_index = message.lastIndexOf(QRegularExpression(QString::fromLatin1("</%1[\\s>]").arg(tag)), strindex - 1); - int starting_index = message.lastIndexOf(QRegExp(QString::fromLatin1("<%1[\\s>]").arg(tag)), + int starting_index = message.lastIndexOf(QRegularExpression(QString::fromLatin1("<%1[\\s>]").arg(tag)), strindex - 1); #ifdef POXML_DEBUG @@ -593,7 +592,7 @@ return result; } -void StructureParser::endElement( int lineNumber, int columnNumber, const QStringRef& qName) +void StructureParser::endElement( int lineNumber, int columnNumber, QStringView qName) { const QString tname = qName.toString().toLower(); @@ -632,9 +631,9 @@ // if the remaining text still starts with a tag, the poxml_ info // is most probably more correct if (!(*it).msgid.isEmpty() && (*it).msgid.at(0) == QLatin1Char('<') && isClosure((*it).msgid)) { - if (infos_reg.indexIn((*it).msgid) >= 0) { - (*it).lines.first().start_line = infos_reg.cap(1).toInt(); - (*it).lines.first().start_col = infos_reg.cap(2).toInt();; + if (const auto match = infos_reg.match((*it).msgid); match.hasMatch()) { + (*it).lines.first().start_line = match.capturedView(1).toInt(); + (*it).lines.first().start_col = match.capturedView(2).toInt();; (*it).lines.first().offset = 0; } } @@ -647,7 +646,7 @@ } } -void StructureParser::comment ( const QStringRef &c ) +void StructureParser::comment ( QStringView c ) { if (c.left(7) != QLatin1String(" TRANS:")) return; @@ -708,8 +707,8 @@ contents.replace(QChar::fromLatin1('&'), QString::fromLatin1("!POXML_AMP!")); for (int index = 0; literaltags[index]; index++) { - QRegExp start(QString::fromLatin1("<%1[\\s>]").arg(literaltags[index])); - QRegExp end(QString::fromLatin1("</%1[\\s>]").arg(literaltags[index])); + const QRegularExpression start(QString::fromLatin1("<%1[\\s>]").arg(QString::fromLatin1(literaltags[index]))); + const QRegularExpression end(QString::fromLatin1("</%1[\\s>]").arg(QString::fromLatin1(literaltags[index]))); int strindex = 0; while (true) { strindex = contents.indexOf(start, strindex); @@ -726,50 +725,53 @@ } } - QRegExp unclosed("</(\\w*)\\s\\s*>"); - int index = -1; + const QRegularExpression unclosed(QStringLiteral("</(\\w*)\\s\\s*>")); + int index = 0; while (true) { - index = unclosed.indexIn(contents, index + 1); - if (index < 0) + const auto match = unclosed.match(contents, index ); + if (!match.hasMatch()) break; - QString tag = unclosed.cap(1); - contents.replace(index, unclosed.matchedLength(), QString::fromLatin1("</%1>").arg(tag)); + index = match.capturedStart(); + QString tag = match.captured(1); + contents.replace(index, match.capturedLength(), QString::fromLatin1("</%1>").arg(tag)); } - QRegExp start("<((\\s*[^<>\\s])*)\\s\\s*(/*)>"); - start.setMinimal(true); + const QRegularExpression start(QStringLiteral("<((\\s*[^<>\\s])*)\\s\\s*(/*)>"), QRegularExpression::InvertedGreedinessOption); index = -1; while (true) { - index = start.indexIn(contents, index + 1); - if (index < 0) + const auto match = start.match(contents, index + 1); + if (!match.hasMatch()) break; - QString tag = start.cap(1); - QString cut = start.capturedTexts().last(); + index = match.capturedStart(); + QString tag = match.captured(1); + QString cut = match.capturedTexts().last(); // qDebug("UNCLO %s %d -%s- -%s-", qPrintable(start.cap(0)), index, qPrintable(tag), qPrintable(cut)); - contents.replace(index, start.matchedLength(), QString::fromLatin1("<%1%2>").arg(tag, cut)); + contents.replace(index, match.capturedLength(), QString::fromLatin1("<%1%2>").arg(tag, cut)); } - QRegExp singletag("<(\\w*)\\s([^><]*)/>"); + const QRegularExpression singletag(QStringLiteral("<(\\w*)\\s([^><]*)/>")); index = -1; while (true) { - index = singletag.indexIn(contents, index + 1); - if (index < 0) + const auto match = singletag.match(contents, index + 1); + if (!match.hasMatch()) break; - const QString tag = singletag.cap(1); - if (!StructureParser::isSingleTag(QStringRef(&tag))) { - contents.replace(index, singletag.matchedLength(), QString::fromLatin1("<%1 %2></%3>").arg(tag, singletag.cap(2), tag)); + index = match.capturedStart(); + const QString tag = match.captured(1); + if (!StructureParser::isSingleTag(tag)) { + contents.replace(index, match.capturedLength(), QString::fromLatin1("<%1 %2></%3>").arg(tag, match.captured(2), tag)); } } - QRegExp trans_comment("<!-- TRANS:([^<>]*)-->"); + const QRegularExpression trans_comment(QStringLiteral("<!-- TRANS:([^<>]*)-->")); index = -1; while (true) { - index = trans_comment.indexIn(contents, index + 1); - if (index < 0) + const auto match = trans_comment.match(contents, index + 1); + if (!match.hasMatch()) break; - QString msgid = trans_comment.cap(1); - contents.replace(index, trans_comment.matchedLength(), QString::fromLatin1("<trans_comment>%1</trans_comment>").arg(msgid)); + index = match.capturedStart(); + QString msgid = match.captured(1); + contents.replace(index, match.capturedLength(), QString::fromLatin1("<trans_comment>%1</trans_comment>").arg(msgid)); } #ifdef POXML_DEBUG @@ -782,14 +784,15 @@ { // qDebug("cont %s %s", qPrintable(contents), qPrintable(tag)); - QRegExp empty(QString::fromLatin1("<%1[^>]*>[\\s\n]+</%2\\s*>").arg(tag, tag)); + const QRegularExpression empty(QString::fromLatin1("<%1[^>]*>[\\s\n]+</%2\\s*>").arg(tag, tag)); int strindex = 0; while (true) { - strindex = contents.indexOf(empty, strindex); - if (strindex < 0) + const auto match = empty.match(contents, strindex); + if (!match.hasMatch()) break; + strindex = match.capturedStart(); qDebug("found empty tag %s", qPrintable(tag)); - contents.replace(strindex, empty.matchedLength(), ' '); + contents.replace(strindex, match.capturedLength(), QLatin1Char(' ')); strindex++; return true; } @@ -816,7 +819,7 @@ } while (removed); } -void StructureParser::characters(const QStringRef &ch) +void StructureParser::characters(QStringView ch) { if (inside && !ch.isEmpty()) message += ch; @@ -858,7 +861,7 @@ // QXmlStreamReader is annoying and won't accept custom entities like &POXML_LINEFEED; // unless the file has a DTD, so if we fail parsing, inject a DTD into the XML contents and parse again if (!foundDtd) { - const QRegularExpression xmlDeclarationRegExp("^.*<\\?xml.*?\\?>"); + const QRegularExpression xmlDeclarationRegExp(QStringLiteral("^.*<\\?xml.*?\\?>")); const QRegularExpressionMatch match = xmlDeclarationRegExp.match(contents); const QString fakeDTD = QStringLiteral("<!DOCTYPE fake PUBLIC \"fake\" \"fake\" []>"); if (match.hasMatch()) { @@ -896,23 +899,28 @@ { // find internal entities that start with "i18n-", and extract // their replacement texts: - QRegExp rx( "<!ENTITY\\s+([^\\s]+)\\s+([\"'])" ); - for ( int index = rx.indexIn( contents, 0 ) ; index >= 0 ; index = rx.indexIn( contents, index ) ) { - const QString name = rx.cap( 1 ); - const QChar delim = rx.cap( 2 ).at( 0 ); + const QRegularExpression rx( QStringLiteral("<!ENTITY\\s+([^\\s]+)\\s+([\"'])") ); + for ( int index = 0 ;; ) { + const auto match = rx.match(contents, index); + if (!match.hasMatch()) { + break; + } + index = match.capturedStart(); + const QString name = match.captured( 1 ); + const QChar delim = match.captured( 2 ).at( 0 ); const int start = index; - index = contents.indexOf( delim, index + rx.matchedLength() ); - index = contents.indexOf( '>', index ); + index = contents.indexOf( delim, index + match.capturedLength() ); + index = contents.indexOf( QLatin1Char('>'), index ); if ( !name.startsWith( QLatin1String("i18n-") ) ) continue; const QString entity = contents.mid( start, index - start + 1 ); MsgBlock block; - block.tag = "!ENTITY"; + block.tag = QStringLiteral("!ENTITY"); BlockInfo bi; - bi.start_line = countRev( contents, '\n', index ) + 1; - bi.start_col = start - contents.lastIndexOf( '\n', start ) - 1; - bi.end_line = bi.start_line + entity.count( '\n' ); - bi.end_col = index - contents.lastIndexOf( '\n', index ) + 1; + bi.start_line = countRev( contents, QLatin1Char('\n'), index ) + 1; + bi.start_col = start - contents.lastIndexOf( QLatin1Char('\n'), start ) - 1; + bi.end_line = bi.start_line + entity.count( QLatin1Char('\n') ); + bi.end_col = index - contents.lastIndexOf( QLatin1Char('\n'), index ) + 1; #ifdef POXML_DEBUG qDebug( "ENTITY %s @ i:%d l:%d c:%d->l:%d c:%d", qPrintable( name ), index, bi.start_line, bi.start_col, bi.end_line, bi.end_col ); @@ -925,13 +933,13 @@ // Remove all entity definitions now: while (true) { - int index = contents.indexOf("<!ENTITY"); + int index = contents.indexOf(QStringLiteral("<!ENTITY")); if (index < 0) break; int inside = 0; int endindex = index + 1; - QString replacement = ""; - while (contents.at(endindex) != '>' || inside) + QString replacement; + while (contents.at(endindex) != QLatin1Char('>') || inside) { switch (contents.at(endindex).toLatin1()) { case '<': @@ -939,7 +947,7 @@ case '>': inside--; break; case '\n': - replacement += '\n'; + replacement += QLatin1Char('\n'); break; default: break; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poxml-24.05.2/parser.h new/poxml-24.08.0/parser.h --- old/poxml-24.05.2/parser.h 2024-06-19 05:38:20.000000000 +0200 +++ new/poxml-24.08.0/parser.h 2024-05-04 16:22:36.000000000 +0200 @@ -2,9 +2,9 @@ #define PARSER_H #include <qmap.h> -#include <qregexp.h> #include <QList> +#include <QRegularExpression> class QXmlStreamAttributes; @@ -69,7 +69,7 @@ ParaCounter & operator+=( const ParaCounter & other ) { current += other.current; - anchors.unite( other.anchors ); + anchors.insert( other.anchors ); return *this; } @@ -94,14 +94,14 @@ { public: void startDocument(); - void startElement( int lineNumber, int columnNumber, const QStringRef& qName, const QXmlStreamAttributes & attr ); - void endElement( int lineNumber, int columnNumber, const QStringRef& qName); - void characters( const QStringRef &ch); + void startElement( int lineNumber, int columnNumber, QStringView qName, const QXmlStreamAttributes & attr ); + void endElement( int lineNumber, int columnNumber, QStringView qName); + void characters( QStringView ch); static bool isCuttingTag(const QString &tag); - static bool isSingleTag(const QStringRef &qName); + static bool isSingleTag(QStringView qName); static bool isLiteralTag(const QString &qName); - void skippedEntity ( const QStringRef & name ); - void comment ( const QStringRef & ); + void skippedEntity ( QStringView name ); + void comment ( QStringView ); MsgList getList() const { return list; } MsgList splitMessage(const MsgBlock &message); @@ -121,8 +121,8 @@ int inside, startline, startcol; int line; MsgList list; - mutable QRegExp infos_reg; - mutable QRegExp do_not_split_reg; + QRegularExpression infos_reg; + QRegularExpression do_not_split_reg; }; MsgList parseXML(const char *filename); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poxml-24.05.2/po/sl/docs/poxml/man-po2xml.1.docbook new/poxml-24.08.0/po/sl/docs/poxml/man-po2xml.1.docbook --- old/poxml-24.05.2/po/sl/docs/poxml/man-po2xml.1.docbook 2024-06-19 05:38:20.000000000 +0200 +++ new/poxml-24.08.0/po/sl/docs/poxml/man-po2xml.1.docbook 1970-01-01 01:00:00.000000000 +0100 @@ -1,100 +0,0 @@ -<?xml version="1.0" ?> -<!DOCTYPE refentry PUBLIC "-//KDE//DTD DocBook XML V4.5-Based Variant V1.1//EN" "dtd/kdedbx45.dtd" [ -<!ENTITY % Slovenian "INCLUDE"> -]> - -<refentry lang="&language;"> -<refentryinfo> -<author -><personname -><firstname ->Ben</firstname -><surname ->Burton</surname -></personname -> <email ->[email protected]</email -></author> -<date ->08.04.2003</date> -</refentryinfo> - -<refmeta> -<refentrytitle -><command ->po2xml</command -></refentrytitle> -<manvolnum ->1</manvolnum> -</refmeta> - -<refnamediv> -<refname -><command ->po2xml</command -></refname> -<refpurpose ->Prevede datoteko DocBook XML z uporabo datoteke PO</refpurpose> -</refnamediv> - -<refsynopsisdiv> -<cmdsynopsis -><command ->po2xml</command -> <group -><option -><replaceable ->original-XML</replaceable -> <replaceable ->translated-PO</replaceable -></option -></group -> </cmdsynopsis> -</refsynopsisdiv> - -<refsect1> -<title ->Opis</title> - -<para -><command ->po2xml</command -> je orodje ukazne vrstice, ki prevaja datoteko DocBook XML <replaceable ->original-XML</replaceable -> z uporabo datoteke sporoÄila gettext <replaceable ->translated-PO</replaceable ->. Nastala prevedena datoteka XML se poÅ¡lje na standardni izhod.</para> - -<para ->Ta pripomoÄek je del kompleta za razvoj programske opreme KDE.</para> - -</refsect1> - -<refsect1> -<title ->Poglejte tudi</title> - -<para ->split2po(1), swappo(1), xml2pot(1)</para> - -</refsect1> - -<refsect1> -<title ->Avtorji</title> -<para ->Orodja PO-XML je napisal &Stephan.Kulow; &Stephan.Kulow.mail;</para> -<para ->To stran priroÄnika je pripravil <personname -><firstname ->Ben</firstname -><surname ->Burton</surname -></personname -><email ->[email protected]</email -></para> - -</refsect1> - -</refentry> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poxml-24.05.2/po/sl/docs/poxml/man-split2po.1.docbook new/poxml-24.08.0/po/sl/docs/poxml/man-split2po.1.docbook --- old/poxml-24.05.2/po/sl/docs/poxml/man-split2po.1.docbook 2024-06-19 05:38:20.000000000 +0200 +++ new/poxml-24.08.0/po/sl/docs/poxml/man-split2po.1.docbook 1970-01-01 01:00:00.000000000 +0100 @@ -1,108 +0,0 @@ -<?xml version="1.0" ?> -<!DOCTYPE refentry PUBLIC "-//KDE//DTD DocBook XML V4.5-Based Variant V1.1//EN" "dtd/kdedbx45.dtd" [ -<!ENTITY % Slovenian "INCLUDE"> -]> - -<refentry lang="&language;"> -<refentryinfo> -<author -><personname -><firstname ->Ben</firstname -><surname ->Burton</surname -></personname -><email ->[email protected]</email -></author> -<date ->07.04.2003</date> -</refentryinfo> - -<refmeta> -<refentrytitle -><command ->split2po</command -></refentrytitle> -<manvolnum ->1</manvolnum> -</refmeta> - -<refnamediv> -<refname -><command ->split2po</command -></refname> -<refpurpose ->Ustvari datoteko po iz dveh datotek XML DocBook</refpurpose> -</refnamediv> - -<refsynopsisdiv> -<cmdsynopsis -><command ->split2po</command -> <group choice="req" -><option -><replaceable ->Original-XML</replaceable -></option -> <option -><replaceable ->Translated-XML</replaceable -></option -> </group -> </cmdsynopsis> -</refsynopsisdiv> - -<refsect1> -<title ->Opis</title> - -<para -><command ->split2po</command -> je orodje ukazne vrstice, ki vzame dve dani datoteki XML DocBook in ustvari datoteko sporoÄil <command ->gettext</command -> (datoteko PO), ki predstavlja spremembe med njima. Nastala PO-datoteka se poÅ¡lje na standardni izhod.</para> - -<para -><filename ->translated-XML</filename -> mora biti rezultat prevoda <filename ->original-XML</filename -> v drug jezik. Ta prevod bo predstavljala nastala datoteka PO.</para> - -<para ->Ta pripomoÄek je del kompleta za razvoj programske opreme KDE. </para> - -</refsect1> - -<refsect1> -<title ->Poglejte tudi</title> - -<para ->po2xml(1), swappo(1), xml2pot(1)</para> - -</refsect1> - -<refsect1> -<title ->Avtorji</title> - -<para ->Orodja PO XML je napisal &Stephan.Kulow; &Stephan.Kulow.mail;</para> -<para ->To stran priroÄnika je pripravil <personname -><firstname ->Ben</firstname -><surname ->Burton</surname -></personname -><email ->[email protected]</email -></para> - -</refsect1> - -</refentry> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poxml-24.05.2/po/sl/docs/poxml/man-swappo.1.docbook new/poxml-24.08.0/po/sl/docs/poxml/man-swappo.1.docbook --- old/poxml-24.05.2/po/sl/docs/poxml/man-swappo.1.docbook 2024-06-19 05:38:20.000000000 +0200 +++ new/poxml-24.08.0/po/sl/docs/poxml/man-swappo.1.docbook 1970-01-01 01:00:00.000000000 +0100 @@ -1,98 +0,0 @@ -<?xml version="1.0" ?> -<!DOCTYPE refentry PUBLIC "-//KDE//DTD DocBook XML V4.5-Based Variant V1.1//EN" "dtd/kdedbx45.dtd" [ -<!ENTITY % Slovenian "INCLUDE"> -]> - -<refentry lang="&language;"> -<refentryinfo> -<author -><personname -><firstname ->Ben</firstname -><surname ->Burton</surname -></personname -><email ->[email protected]</email -></author> -<date ->07.04.2003</date> -</refentryinfo> - -<refmeta> -<refentrytitle -><command ->swappo</command -></refentrytitle> -<manvolnum ->1</manvolnum> -</refmeta> - -<refnamediv> -<refname -><command ->swappo</command -></refname> -<refpurpose ->zamenja polji msgid in msgstr v datoteki PO</refpurpose> -</refnamediv> - -<refsynopsisdiv> -<cmdsynopsis -><command ->swappo</command -> <group -><option -><replaceable ->filename.po</replaceable -></option -></group -> </cmdsynopsis> -</refsynopsisdiv> - -<refsect1> -<title ->Opis</title> - -<para -><command ->swappo</command -> prebere dano datoteko PO in zamenja polji msgid in msgstr za vsako sporoÄilo. Rezultat je nova datoteka PO, ki se prevaja v nasprotno smer. Na primer, Äe se datoteka PO prevede iz angleÅ¡Äine v francoÅ¡Äino, se bo nova datoteka PO prevedla iz francoÅ¡Äine v angleÅ¡Äino.</para> - -<para ->Nova PO-datoteka bo zapisana na standardni izhod. Stara datoteka PO bo ostala nedotaknjena.</para> - -<para ->Ta pripomoÄek je del programa &kde; Komplet za razvoj programske opreme</para -> - -</refsect1> - -<refsect1> -<title ->Poglejte tudi</title> - -<para ->po2xml(1), split2po(1), xml2pot(1)</para> - -</refsect1> - -<refsect1> -<title ->Avtorji</title> -<para ->Orodja PO-XML je napisal &Stephan.Kulow; &Stephan.Kulow.mail;</para> -<para ->To stran priroÄnika je pripravil <personname -><firstname ->Ben</firstname -><surname ->Burton</surname -></personname -><email ->[email protected]</email -></para> - -</refsect1> - -</refentry> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poxml-24.05.2/po/sl/docs/poxml/man-xml2pot.1.docbook new/poxml-24.08.0/po/sl/docs/poxml/man-xml2pot.1.docbook --- old/poxml-24.05.2/po/sl/docs/poxml/man-xml2pot.1.docbook 2024-06-19 05:38:20.000000000 +0200 +++ new/poxml-24.08.0/po/sl/docs/poxml/man-xml2pot.1.docbook 1970-01-01 01:00:00.000000000 +0100 @@ -1,103 +0,0 @@ -<?xml version="1.0" ?> -<!DOCTYPE refentry PUBLIC "-//KDE//DTD DocBook XML V4.5-Based Variant V1.1//EN" "dtd/kdedbx45.dtd" [ -<!ENTITY % Slovenian "INCLUDE"> -]> - -<refentry lang="&language;"> -<refentryinfo> -<author -><personname -><firstname ->Ben</firstname -><surname ->Burton</surname -></personname -><email ->[email protected]</email -></author> -<date ->07.04.2003</date> -</refentryinfo> - -<refmeta> -<refentrytitle -><command ->xml2pot</command -></refentrytitle> -<manvolnum ->1</manvolnum> -</refmeta> - -<refnamediv> -<refname -><command ->xml2pot</command -></refname> -<refpurpose ->Ustvari datoteko predloge PO iz datoteke DocBook XML.</refpurpose> -</refnamediv> - -<refsynopsisdiv> -<cmdsynopsis -><command ->xml2pot</command -> <group -><option -><replaceable ->original-XML</replaceable -></option -></group -> </cmdsynopsis> -</refsynopsisdiv> - -<refsect1> -<title ->Opis</title> - -<para -><command ->xml2pot</command -> je orodje ukazne vrstice, ki ustvari datoteko s predlogo sporoÄila gettext iz datoteke DocBook XML <filename ->original-XML</filename ->. Datoteka predloge se poÅ¡lje na standardni izhod.</para> - -<para ->Dobljeno datoteko predloge je mogoÄe uporabiti za ustvarjanje datotek gettext message (PO-datotek) za razliÄne jezike. Te lahko nato uporabite v povezavi z <command ->po2xml</command ->(1) za prevajanje izvirne datoteke XML v te druge jezike.</para> - - -<para ->Ta pripomoÄek je del kompleta za razvoj programske opreme KDE.</para -> - -</refsect1> - -<refsect1> -<title ->Poglejte tudi</title> - -<para ->po2xml(1), split2po(1), swappo(1)</para> - -</refsect1> - -<refsect1> -<title ->Avtorji</title> - -<para ->Orodja PO XML je napisal &Stephan.Kulow; &Stephan.Kulow.mail;</para> -<para ->To stran priroÄnika je pripravil <personname -><firstname ->Ben</firstname -><surname ->Burton</surname -></personname -><email ->[email protected]</email -></para> -</refsect1> - -</refentry> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poxml-24.05.2/po2xml.cpp new/poxml-24.08.0/po2xml.cpp --- old/poxml-24.05.2/po2xml.cpp 2024-06-19 05:38:20.000000000 +0200 +++ new/poxml-24.08.0/po2xml.cpp 2024-05-04 16:22:36.000000000 +0200 @@ -5,10 +5,10 @@ #include <stdlib.h> #include <iostream> #include <assert.h> -#include <qregexp.h> #include <QFile> #include <QList> +#include <QRegularExpression> #include <QTextStream> using namespace std; @@ -35,12 +35,12 @@ QString translate(QString xml, const QString &orig, const QString &translation) { QString prefix; - while (xml.at(0) == '<' && orig.at(0) != '<') { + while (xml.at(0) == QLatin1Char('<') && orig.at(0) != QLatin1Char('<')) { // a XML tag as prefix - int index = xml.indexOf('>'); + int index = xml.indexOf(QLatin1Char('>')); assert(index != -1); index++; - while (xml.at(index) == ' ') + while (xml.at(index) == QLatin1Char(' ')) index++; prefix = prefix + xml.left(index); xml = xml.mid(index, xml.length()); @@ -72,11 +72,11 @@ } QMap<QString, QString> translations; - foreach (const MsgBlock &block, translated) + for (const MsgBlock &block : std::as_const(translated)) { QString msgstr; const QString msgid = block.msgid; - if (block.comment.indexOf("fuzzy") < 0) + if (block.comment.indexOf(QStringLiteral("fuzzy")) < 0) msgstr = block.msgstr; #ifdef POXML_DEBUG @@ -88,7 +88,7 @@ QFile xml(QFile::decodeName(argv[1])); xml.open(QIODevice::ReadOnly); QTextStream ds(&xml); - ds.setCodec("UTF-8"); + ds.setEncoding(QStringConverter::Utf8); QString xml_text = ds.readAll(); xml.close(); QString output; @@ -99,7 +99,7 @@ line_offsets.append(0); int index = 0; while (true) { - index = xml_text.indexOf('\n', index) + 1; + index = xml_text.indexOf(QLatin1Char('\n'), index) + 1; if (index <= 0) break; line_offsets.append(index); @@ -148,13 +148,13 @@ QString xml = xml_text.mid(start_pos, end_pos - start_pos); int positionOfCommentStart = 0; while (true) { - positionOfCommentStart = xml.indexOf("<!--"); + positionOfCommentStart = xml.indexOf(QStringLiteral("<!--")); if (positionOfCommentStart == -1) break; int end_index = positionOfCommentStart + 4; - while (xml.at(end_index) != '>' || - xml.at(end_index-1) != '-' || - xml.at(end_index-2) != '-') + while (xml.at(end_index) != QLatin1Char('>') || + xml.at(end_index-1) != QLatin1Char('-') || + xml.at(end_index-2) != QLatin1Char('-')) { end_index++; } @@ -170,40 +170,40 @@ // assert(!descaped.isEmpty()); #endif - if ((*it).msgid.at(0) == '<' && StructureParser::isClosure((*it).msgid)) { + if ((*it).msgid.at(0) == QLatin1Char('<') && StructureParser::isClosure((*it).msgid)) { // if the id starts with a tag, then we remembered the // correct line information and need to strip the target // now, so it fits int index = 0; - while ((*it).msgid.at(index) != '>') + while ((*it).msgid.at(index) != QLatin1Char('>')) index++; index++; - while ((*it).msgid.at(index) == ' ') + while ((*it).msgid.at(index) == QLatin1Char(' ')) index++; QString omsgid = (*it).msgid; (*it).msgid = (*it).msgid.mid(index); index = (*it).msgid.length() - 1; - while ((*it).msgid.at(index) != '<') + while ((*it).msgid.at(index) != QLatin1Char('<')) index--; (*it).msgid = (*it).msgid.left(index); if (!descaped.isEmpty()) { - if (descaped.at(0) != '<') { + if (descaped.at(0) != QLatin1Char('<')) { qWarning("the translation of '%s' doesn't start with a tag.", qPrintable(omsgid)); exit(1); } index = 0; - while (index <= (int)descaped.length() && descaped.at(index) != '>') + while (index <= (int)descaped.length() && descaped.at(index) != QLatin1Char('>')) index++; index++; - while (descaped.at(index) == ' ') + while (descaped.at(index) == QLatin1Char(' ')) index++; descaped = descaped.mid(index); index = descaped.length() - 1; - while (index >= 0 && descaped.at(index) != '<') + while (index >= 0 && descaped.at(index) != QLatin1Char('<')) index--; descaped = descaped.left(index); @@ -246,21 +246,21 @@ ts << xml_text.mid(old_pos); - output.remove(QRegExp("<trans_comment\\s*>")); - output.remove(QRegExp("</trans_comment\\s*>")); + output.remove(QRegularExpression(QStringLiteral("<trans_comment\\s*>"))); + output.remove(QRegularExpression(QStringLiteral("</trans_comment\\s*>"))); StructureParser::removeEmptyTags(output); index = 0; while (true) { - index = output.indexOf(QRegExp(">[^\n]"), index ); + index = output.indexOf(QRegularExpression(QStringLiteral(">[^\n]")), index ); if ( index == -1 ) break; - if ( output.at( index - 1 ) == '/' || output.at( index - 1 ) == '-' || - output.at( index - 1 ) == ']' || output.at( index - 1 ) == '?' ) + if ( output.at( index - 1 ) == QLatin1Char('/') || output.at( index - 1 ) == QLatin1Char('-') || + output.at( index - 1 ) == QLatin1Char(']') || output.at( index - 1 ) == QLatin1Char('?') ) index = index + 1; else { - output.replace( index, 1, "\n>" ); + output.replace( index, 1, QStringLiteral("\n>") ); index = index + 2; } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poxml-24.05.2/split.cpp new/poxml-24.08.0/split.cpp --- old/poxml-24.05.2/split.cpp 2024-06-19 05:38:20.000000000 +0200 +++ new/poxml-24.08.0/split.cpp 2024-05-04 16:22:36.000000000 +0200 @@ -46,7 +46,7 @@ // of the following ones for (int index = index2; index < j; ++index) { if (!list1[index1 - 1].msgstr.isEmpty()) { - list1[index1 - 1].msgstr += " "; + list1[index1 - 1].msgstr += QLatin1Char(' '); } list1[index1 - 1].msgstr += QString::fromLatin1("<%1>%2</%3>").arg(list2[index].tag, list2[index].msgid, list2[index].tag); } @@ -167,13 +167,13 @@ { "PO-Revision-Date", "YEAR-MO-DA HO:MI+ZONE" }, { "Last-Translator", "FULL NAME <EMAIL@ADDRESS>" }, { "Content-Type", "text/plain; charset=utf-8" }, - { 0, 0 } + { nullptr, nullptr } }; if (!createPOWithHeader(headers, NULL, &po, &out_it)) { return 1; } - foreach (const MsgBlock &block, english) + for (const MsgBlock &block : std::as_const(english)) { po_message_t msg = po_message_create(); if (!msg) { @@ -182,7 +182,7 @@ return 1; } - foreach (const BlockInfo &bi, block.lines) { + for (const BlockInfo &bi : block.lines) { po_message_add_filepos(msg, "index.docbook", bi.start_line); } po_message_set_msgid(msg, StructureParser::descapeLiterals(block.msgid).toUtf8().constData()); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poxml-24.05.2/tests/CMakeLists.txt new/poxml-24.08.0/tests/CMakeLists.txt --- old/poxml-24.05.2/tests/CMakeLists.txt 2024-06-19 05:38:20.000000000 +0200 +++ new/poxml-24.08.0/tests/CMakeLists.txt 2024-05-04 16:22:36.000000000 +0200 @@ -5,7 +5,7 @@ add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lauri.pot - COMMAND checkXML5 ${lauri_xml} + COMMAND checkXML6 ${lauri_xml} COMMAND xml2pot ${lauri_xml} > lauri.pot COMMAND msgmerge -o lauri.pot lauri.pot lauri.pot DEPENDS ${lauri_xml} @@ -38,7 +38,7 @@ add_test( NAME lauri_de - COMMAND checkXML5 lauri_de.xml + COMMAND checkXML6 lauri_de.xml WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poxml-24.05.2/xml2pot.cpp new/poxml-24.08.0/xml2pot.cpp --- old/poxml-24.05.2/xml2pot.cpp 2024-06-19 05:38:20.000000000 +0200 +++ new/poxml-24.08.0/xml2pot.cpp 2024-05-04 16:22:36.000000000 +0200 @@ -37,7 +37,7 @@ } const QDateTime now = QDateTime::currentDateTime().toUTC(); - const QByteArray datestring = now.toString("yyyy-MM-dd hh:mm").toUtf8() + "+0000"; + const QByteArray datestring = now.toString(QStringLiteral("yyyy-MM-dd hh:mm")).toUtf8() + "+0000"; po_file_t po = NULL; po_message_iterator_t out_it = NULL; @@ -52,7 +52,7 @@ { "MIME-Version", "1.0" }, { "Content-Type", "text/plain; charset=UTF-8" }, { "Content-Transfer-Encoding", "8bit" }, - { 0, 0 } + { nullptr, nullptr } }; const char headercomment[] = "SOME DESCRIPTIVE TITLE.\n" "FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.\n" @@ -66,7 +66,7 @@ const QByteArray fname = QFileInfo(QFile::decodeName(argv[1])).fileName().toUtf8(); - foreach (const MsgBlock &block, english) + for (const MsgBlock &block : std::as_const(english)) { #ifdef POXML_DEBUG qDebug("adding message: %s", qPrintable(block.msgid)); @@ -80,7 +80,7 @@ const QByteArray tagstring = "Tag: " + block.tag.toUtf8(); po_message_set_extracted_comments(msg, tagstring.constData()); - foreach (const BlockInfo &bi, block.lines) { + for (const BlockInfo &bi : block.lines) { po_message_add_filepos(msg, fname.constData(), bi.start_line); } po_message_set_format(msg, "c-format", 0);
