Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion parseagle/board/board.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ Board::~Board() noexcept

void Board::load(const QByteArray& content, QStringList* errors)
{
const DomElement root = DomElement::parse(content);
const DomElement root = DomElement::parseDocument(content);
const DomElement drawing = root.getFirstChild("drawing");

if (drawing.hasChild("grid")) {
Expand Down
15 changes: 9 additions & 6 deletions parseagle/common/domelement.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,18 +51,21 @@ DomElement DomElement::parse(QXmlStreamReader& reader)
return root;
}

DomElement DomElement::parse(const QString& data)
DomElement DomElement::parse(const QByteArray& data)
{
QXmlStreamReader reader;
reader.addData(data);
return parse(reader);
}

DomElement DomElement::parse(const QByteArray& data)
DomElement DomElement::parseDocument(QByteArray data)
{
QXmlStreamReader reader;
reader.addData(data);
return parse(reader);
// Workaround for garbage in some Eagle XML files, see
// https://gitlab.com/kicad/code/kicad/-/work_items/11008
data.replace("\x0c", "");
data.replace("\x06", "");

return parse(data);
}

QString DomElement::getAttributeAsString(const QString& name) const
Expand All @@ -72,7 +75,7 @@ QString DomElement::getAttributeAsString(const QString& name) const
} else {
throw std::runtime_error(
QString("Attribute '%1' not found in XML element '%2'.")
.arg(name).arg(mName).toStdString());
.arg(name, mName).toStdString());
}
}

Expand Down
2 changes: 1 addition & 1 deletion parseagle/common/domelement.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ class DomElement final

// Parsers
static DomElement parse(QXmlStreamReader& reader);
static DomElement parse(const QString& data);
static DomElement parse(const QByteArray& data);
static DomElement parseDocument(QByteArray data);

// Getters
const QString& getTagName() const noexcept {return mName;}
Expand Down
4 changes: 2 additions & 2 deletions parseagle/library.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ Library::Library(const QByteArray& content, QStringList* errors)

Library::Library(const DomElement& root, QStringList* errors)
{
load(root, errors);
load(root, errors);
}

Library::~Library() noexcept
Expand All @@ -33,7 +33,7 @@ Library::~Library() noexcept

void Library::load(const QByteArray& content, QStringList* errors)
{
const DomElement root = DomElement::parse(content);
const DomElement root = DomElement::parseDocument(content);
const DomElement drawing = root.getFirstChild("drawing");
const DomElement library = drawing.getFirstChild("library");
load(library, errors);
Expand Down
2 changes: 1 addition & 1 deletion parseagle/schematic/schematic.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ Schematic::~Schematic() noexcept
}

void Schematic::load(const QByteArray& content, QStringList* errors) {
const DomElement root = DomElement::parse(content);
const DomElement root = DomElement::parseDocument(content);
const DomElement drawing = root.getFirstChild("drawing");

if (drawing.hasChild("grid")) {
Expand Down
Loading