aboutsummaryrefslogtreecommitdiffstats
path: root/src/qmldom/qqmldomitem.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/qmldom/qqmldomitem.cpp')
-rw-r--r--src/qmldom/qqmldomitem.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/qmldom/qqmldomitem.cpp b/src/qmldom/qqmldomitem.cpp
index 272f88a66c..a2bffdb06d 100644
--- a/src/qmldom/qqmldomitem.cpp
+++ b/src/qmldom/qqmldomitem.cpp
@@ -41,6 +41,9 @@
#include "qqmldomexternalitems_p.h"
#include "qqmldommock_p.h"
#include "qqmldomastdumper_p.h"
+#include "qqmldomfilewriter_p.h"
+#include "qqmldomfieldfilter_p.h"
+#include "qqmldomcompare_p.h"
#include <QtQml/private/qqmljslexer_p.h>
#include <QtQml/private/qqmljsparser_p.h>
@@ -1923,6 +1926,32 @@ void DomItem::dump(Sink s, int indent,
visitEl([this, s, indent, filter](auto &&e) { e->dump(*this, s, indent, filter); });
}
+FileWriter::Status
+DomItem::dump(QString path,
+ function_ref<bool(DomItem &, const PathEls::PathComponent &, DomItem &)> filter,
+ int nBackups, int indent, FileWriter *fw)
+{
+ FileWriter localFw;
+ if (!fw)
+ fw = &localFw;
+ switch (fw->write(
+ path,
+ [this, indent, filter](QTextStream &ts) {
+ this->dump([&ts](QStringView s) { ts << s; }, indent, filter);
+ return true;
+ },
+ nBackups)) {
+ case FileWriter::Status::ShouldWrite:
+ case FileWriter::Status::SkippedDueToFailure:
+ qWarning() << "Failure dumping " << canonicalPath() << " to " << path;
+ break;
+ case FileWriter::Status::DidWrite:
+ case FileWriter::Status::SkippedEqual:
+ break;
+ }
+ return fw->status;
+}
+
QString DomItem::toString()
{
return dumperToString([this](Sink s){ dump(s); });