diff --git a/autotests/syntaxrepository_test.cpp b/autotests/syntaxrepository_test.cpp --- a/autotests/syntaxrepository_test.cpp +++ b/autotests/syntaxrepository_test.cpp @@ -148,6 +148,25 @@ QCOMPARE(def.foldingIgnoreList(), QStringList() << QLatin1String("(?:\\s+|\\s*#.*)")); } + void testFormatData() + { + auto def = m_repo.definitionForName(QLatin1String("ChangeLog")); + QVERIFY(def.isValid()); + auto formats = def.formats(); + QVERIFY(!formats.isEmpty()); + + QStringList formatNames; + foreach (const auto & format, formats) { + formatNames.append(format.name()); + } + QVERIFY(formatNames.contains(QStringLiteral("Normal Text"))); + QVERIFY(formatNames.contains(QStringLiteral("Name"))); + QVERIFY(formatNames.contains(QStringLiteral("E-Mail"))); + QVERIFY(formatNames.contains(QStringLiteral("Date"))); + QVERIFY(formatNames.contains(QStringLiteral("Entry"))); + QVERIFY(!formatNames.contains(QStringLiteral("Does not Exist"))); + } + void testIncludedDefinitions() { auto def = m_repo.definitionForName(QLatin1String("C++")); diff --git a/src/lib/definition.h b/src/lib/definition.h --- a/src/lib/definition.h +++ b/src/lib/definition.h @@ -172,6 +172,12 @@ */ QStringList foldingIgnoreList() const; + /** + * Returns a list of all Format items used by this definition. + * @since 5.49 + */ + QVector formats() const; + /** * Returns a list of Definitions that are referenced with the IncludeRules rule. * The returned list includes this Definition as well as any recursively used diff --git a/src/lib/definition.cpp b/src/lib/definition.cpp --- a/src/lib/definition.cpp +++ b/src/lib/definition.cpp @@ -187,6 +187,12 @@ return d->foldingIgnoreList; } +QVector Definition::formats() const +{ + d->load(); + return QVector::fromList(d->formats.values()); +} + QVector Definition::includedDefinitions() const { d->load();