23 #include "abstractlocalizer.h" 25 #include "exception.h" 26 #include "metaenumvariable_p.h" 30 #include <QtCore/QMetaEnum> 31 #include <QtCore/QStringList> 33 #include <QJsonDocument> 34 #include <QJsonObject> 70 d_ptr->m_varString = other.d_ptr->m_varString;
71 d_ptr->m_literal = other.d_ptr->m_literal;
72 d_ptr->m_lookups = other.d_ptr->m_lookups;
73 d_ptr->m_localize = other.d_ptr->m_localize;
87 localVar = var.
mid(2, var.
size() - 3);
93 QStringLiteral(
"Variable may not end with a dot: %1").arg(localVar));
96 auto processedNumber =
false;
99 if (processedNumber) {
100 d->m_literal = intResult;
102 const auto doubleResult
104 if (processedNumber) {
105 d->m_literal = doubleResult;
109 if (!processedNumber) {
117 d->m_literal = QVariant::fromValue<Cutelee::SafeString>(ss);
119 if (localVar.contains(QStringLiteral(
"._"))
125 "Variables and attributes may not begin with underscores: %1")
136 return !d->m_varString.isEmpty();
142 return !d->m_literal.isNull();
150 return d->m_localize;
168 static const QMetaObject *_smo() {
return &QObject::staticMetaObject; }
175 if (!d->m_lookups.isEmpty()) {
177 if (d->m_lookups.at(i) == QStringLiteral(
"Qt")) {
179 if (d->m_lookups.size() <= i)
182 const auto nextPart = d->m_lookups.at(i);
185 static auto globalMetaObject = StaticQtMetaObject::_smo();
187 auto breakout =
false;
188 for (
auto j = 0; j < globalMetaObject->enumeratorCount(); ++j) {
189 const auto me = globalMetaObject->enumerator(j);
192 const MetaEnumVariable mev(me);
197 for (
auto k = 0; k < me.keyCount(); ++k) {
199 const MetaEnumVariable mev(me, k);
212 var = c->
lookup(d->m_lookups.at(i++));
215 if (jsonDoc.isArray()) {
216 var = jsonDoc.array().toVariantList();
217 }
else if (jsonDoc.isObject()) {
218 var = jsonDoc.object().toVariantHash();
225 switch(jsonVal.type()) {
237 var = jsonVal.toVariant();
248 while (i < d->m_lookups.size()) {
249 var = MetaType::lookup(var, d->m_lookups.at(i++));
bool variantIsTrue(const QVariant &variant)
QVariantHash toVariantHash() const const
bool isTrue(Context *c) const
The Context class holds the context to render a Template with.
QJsonDocument toJsonDocument() const const
Variable & operator=(const Variable &other)
QStringList lookups() const
Cutelee::SafeString markSafe(const Cutelee::SafeString &input)
The Cutelee namespace holds all public Cutelee API.
QVariant fromValue(T &&value)
qsizetype size() const const
A container for static variables defined in Templates.
bool isSafeString(const QVariant &input)
QString unescapeStringLiteral(const QString &input)
QJsonObject toJsonObject() const const
QVariantList toVariantList() const const
bool startsWith(QChar c, Qt::CaseSensitivity cs) const const
Utility functions used throughout Cutelee.
int toInt(QStringView s, bool *ok) const const
int userType() const const
double toDouble(QStringView s, bool *ok) const const
QString mid(qsizetype position, qsizetype n) const const
std::shared_ptr< AbstractLocalizer > localizer() const
bool endsWith(QChar c, Qt::CaseSensitivity cs) const const
QJsonArray toJsonArray() const const
bool toBool() const const
QJsonValue toJsonValue() const const
bool isValid() const const
double toDouble(bool *ok) const const
QVariant resolve(Context *c) const
virtual QVariant lookup(const QString &str) const
QString toString() const const
Cutelee::SafeString getSafeString(const QVariant &input)
An exception for use when implementing template tags.