Made Ctrl-V importer work more robust.

This commit is contained in:
Tomasz Wegrzanowski 2013-11-12 11:46:38 +00:00
parent 92ff503832
commit b57d628278

View file

@ -417,6 +417,7 @@ bool DeckList::loadFromStream_Plain(QTextStream &in)
cleanList();
InnerDecklistNode *main = 0, *side = 0;
bool inSideboard = false;
int okRows = 0;
while (!in.atEnd()) {
@ -425,11 +426,18 @@ bool DeckList::loadFromStream_Plain(QTextStream &in)
continue;
InnerDecklistNode *zone;
if (line.startsWith("SB:", Qt::CaseInsensitive)) {
if (line.startsWith("Sideboard", Qt::CaseInsensitive)) {
inSideboard = true;
continue;
} else if (line.startsWith("SB:", Qt::CaseInsensitive)) {
line = line.mid(3).trimmed();
if (!side)
side = new InnerDecklistNode("side", root);
zone = side;
} else if (inSideboard) {
if (!side)
side = new InnerDecklistNode("side", root);
zone = side;
} else {
if (!main)
main = new InnerDecklistNode("main", root);
@ -448,8 +456,21 @@ bool DeckList::loadFromStream_Plain(QTextStream &in)
int number = line.left(i).toInt(&ok);
if (!ok)
continue;
QString cardName = line.mid(i + 1);
// Common differences between cockatrice's card names
// and what's commonly used in decklists
rx.setPattern("");
cardName.replace(rx, "'");
rx.setPattern("Æ");
cardName.replace(rx, "AE");
rx.setPattern("^Aether");
cardName.replace(rx, "AEther");
rx.setPattern("\\s*[&|/]{1,2}\\s*");
cardName.replace(rx, " // ");
++okRows;
new DecklistCardNode(line.mid(i + 1), number, zone);
new DecklistCardNode(cardName, number, zone);
}
updateDeckHash();
return (okRows > 0);