7#ifndef INTERFACE_JSON_DECK_PARSER_H
8#define INTERFACE_JSON_DECK_PARSER_H
32 QString deckName = obj.value(
"name").toString();
33 QString deckDescription = obj.value(
"description").toString();
39 QTextStream outStream(&outputText);
41 for (
auto entry : obj.value(
"cards").toArray()) {
42 auto quantity = entry.toObject().value(
"quantity").toInt();
44 auto card = entry.toObject().value(
"card").toObject();
45 auto oracleCard = card.value(
"oracleCard").toObject();
46 QString cardName = oracleCard.value(
"name").toString();
47 QString setName = card.value(
"edition").toObject().value(
"editioncode").toString().toUpper();
48 QString collectorNumber = card.value(
"collectorNumber").toString();
50 outStream << quantity <<
' ' << cardName <<
" (" << setName <<
") " << collectorNumber <<
'\n';
67 QString deckName = obj.value(
"name").toString();
68 QString deckDescription = obj.value(
"description").toString();
74 QTextStream outStream(&outputText);
76 for (
auto entry : obj.value(
"mainboard").toObject()) {
77 auto quantity = entry.toObject().value(
"quantity").toInt();
79 auto card = entry.toObject().value(
"card").toObject();
80 QString cardName = card.value(
"name").toString();
81 QString setName = card.value(
"set").toString().toUpper();
82 QString collectorNumber = card.value(
"cn").toString();
84 outStream << quantity <<
' ' << cardName <<
" (" << setName <<
") " << collectorNumber <<
'\n';
89 for (
auto entry : obj.value(
"sideboard").toObject()) {
90 auto quantity = entry.toObject().value(
"quantity").toInt();
92 auto card = entry.toObject().value(
"card").toObject();
93 QString cardName = card.value(
"name").toString();
94 QString setName = card.value(
"set").toString().toUpper();
95 QString collectorNumber = card.value(
"cn").toString();
97 outStream << quantity <<
' ' << cardName <<
" (" << setName <<
") " << collectorNumber <<
'\n';
103 QJsonObject commandersObj = obj.value(
"commanders").toObject();
104 if (!commandersObj.isEmpty()) {
105 for (
auto it = commandersObj.begin(); it != commandersObj.end(); ++it) {
106 QJsonObject cardData = it.value().toObject().value(
"card").toObject();
107 QString commanderName = cardData.value(
"name").toString();
108 QString setName = cardData.value(
"set").toString().toUpper();
109 QString collectorNumber = cardData.value(
"cn").toString();
110 QString providerId = cardData.value(
"scryfall_id").toString();
Definition interface_json_deck_parser.h:26
DeckList parse(const QJsonObject &obj) override
Definition interface_json_deck_parser.h:28
Represents a complete deck, including metadata, zones, cards, and sideboard plans.
Definition deck_list.h:63
void setBannerCard(const CardRef &_bannerCard={})
Definition deck_list.h:114
void forEachCard(const std::function< void(InnerDecklistNode *, DecklistCardNode *)> &func) const
Apply a function to every card in the deck tree.
Definition deck_list.cpp:498
void setComments(const QString &_comments=QString())
Definition deck_list.h:98
DecklistCardNode * addCard(const QString &cardName, const QString &zoneName, int position=-1, const QString &cardSetName=QString(), const QString &cardSetCollectorNumber=QString(), const QString &cardProviderId=QString(), const bool formatLegal=true)
Definition deck_list.cpp:457
bool loadFromStream_Plain(QTextStream &stream, bool preserveMetadata, const std::function< QString(const QString &)> &cardNameNormalizer)
Definition deck_list.cpp:205
void setName(const QString &_name=QString())
Definition deck_list.h:94
Definition interface_json_deck_parser.h:18
virtual ~IJsonDeckParser()=default
virtual DeckList parse(const QJsonObject &obj)=0
Definition interface_json_deck_parser.h:61
DeckList parse(const QJsonObject &obj) override
Definition interface_json_deck_parser.h:63
Defines the DeckList class, which manages a full deck structure including cards, zones,...
#define DECK_ZONE_MAIN
Constant for the "main" deck zone name.
Definition inner_deck_list_node.h:22
Definition card_name_normalizer.h:11
Sets the providerId of the card based on its set name and collector number.
Definition card_node_function.h:33