Cockatrice 2026-06-01-Development-3.1.0-beta.3
A virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
card_picture_loader_local_schemes.h
Go to the documentation of this file.
1#ifndef COCKATRICE_CARD_PICTURE_LOADER_LOCAL_SCHEMES_H
2#define COCKATRICE_CARD_PICTURE_LOADER_LOCAL_SCHEMES_H
3
4#include <QList>
5#include <QRegularExpression>
6#include <QString>
7#include <QStringList>
8
10{
11
22
24{
26 QString displayName;
27 QString pattern;
28};
29
30inline const QList<NamingSchemeInfo> &importSchemes()
31{
32 static QList<NamingSchemeInfo> list = {
33 {NamingScheme::Name_ProviderId, "Card Name + Provider ID", "{name}_{providerId}"},
34 {NamingScheme::Name_Set_Collector, "Card Name + Set + Collector", "{name}_{set}_{collector}"},
35 {NamingScheme::Set_Collector_Name, "Set + Collector + Card Name", "{set}_{collector}_{name}"},
36 {NamingScheme::Name_Set, "Card Name + Set", "{name}_{set}"},
37 {NamingScheme::NameOnly, "Card Name", "{name}"},
38 };
39 return list;
40}
41
42inline const QList<NamingSchemeInfo> &exportSchemes()
43{
44 static QList<NamingSchemeInfo> list = {
45 {NamingScheme::Set_Folder_Name_ProviderId, "Set Folder / Name + Provider ID", "{set}/{name}_{providerId}"},
46 {NamingScheme::Set_Folder_Name_Set_Collector, "Set Folder / Name + Set Name + Collector",
47 "{set}/{name}_{set}_{collector}"},
48 {NamingScheme::Name_ProviderId, "Card Name + Provider ID", "{name}_{providerId}"},
49 {NamingScheme::Name_Set_Collector, "Card Name + Set + Collector", "{name}_{set}_{collector}"},
50 {NamingScheme::Set_Collector_Name, "Set + Collector + Card Name", "{set}_{collector}_{name}"},
51 };
52 return list;
53}
54
55inline QString expandPattern(const QString &pattern,
56 const QString &name,
57 const QString &set,
58 const QString &collector,
59 const QString &providerId)
60{
61 QString result = pattern;
62
63 auto replaceIfPresent = [&](const QString &token, const QString &value) -> bool {
64 if (!result.contains(token)) {
65 return true;
66 }
67
68 if (value.isEmpty()) {
69 return false;
70 }
71
72 result.replace(token, value);
73 return true;
74 };
75
76 if (!replaceIfPresent("{name}", name)) {
77 return {};
78 }
79 if (!replaceIfPresent("{set}", set)) {
80 return {};
81 }
82 if (!replaceIfPresent("{collector}", collector)) {
83 return {};
84 }
85 if (!replaceIfPresent("{providerId}", providerId)) {
86 return {};
87 }
88
89 return result;
90}
91
92inline QStringList
93generateImportVariants(const QString &name, const QString &set, const QString &collector, const QString &providerId)
94{
95 QStringList variants;
96 const QStringList separators = {"_", "-"};
97
98 for (const auto &scheme : importSchemes()) {
99 for (const QString &sep : separators) {
100
101 QString pattern = scheme.pattern;
102 pattern.replace("_", sep);
103
104 QString v = expandPattern(pattern, name, set, collector, providerId);
105 if (!v.isEmpty()) {
106 variants << v;
107 }
108 }
109 }
110
111 return variants;
112}
113
114} // namespace CardPictureLoaderLocalSchemes
115
116#endif // COCKATRICE_CARD_PICTURE_LOADER_LOCAL_SCHEMES_H
Definition card_picture_loader_local_schemes.h:10
QStringList generateImportVariants(const QString &name, const QString &set, const QString &collector, const QString &providerId)
Definition card_picture_loader_local_schemes.h:93
NamingScheme
Definition card_picture_loader_local_schemes.h:13
@ Name_Set
Definition card_picture_loader_local_schemes.h:15
@ Name_ProviderId
Definition card_picture_loader_local_schemes.h:18
@ NameOnly
Definition card_picture_loader_local_schemes.h:14
@ Set_Folder_Name_ProviderId
Definition card_picture_loader_local_schemes.h:19
@ Set_Folder_Name_Set_Collector
Definition card_picture_loader_local_schemes.h:20
@ Set_Collector_Name
Definition card_picture_loader_local_schemes.h:17
@ Name_Set_Collector
Definition card_picture_loader_local_schemes.h:16
const QList< NamingSchemeInfo > & exportSchemes()
Definition card_picture_loader_local_schemes.h:42
const QList< NamingSchemeInfo > & importSchemes()
Definition card_picture_loader_local_schemes.h:30
QString expandPattern(const QString &pattern, const QString &name, const QString &set, const QString &collector, const QString &providerId)
Definition card_picture_loader_local_schemes.h:55
Definition card_picture_loader_local_schemes.h:24
QString pattern
Definition card_picture_loader_local_schemes.h:27
NamingScheme id
Definition card_picture_loader_local_schemes.h:25
QString displayName
Definition card_picture_loader_local_schemes.h:26