File indexing completed on 2025-02-09 04:28:33
0001 /* 0002 This file is part of the KTextTemplate library 0003 0004 SPDX-FileCopyrightText: 2009, 2010 Stephen Kelly <steveire@gmail.com> 0005 0006 SPDX-License-Identifier: LGPL-2.1-or-later 0007 0008 */ 0009 0010 #include "logic.h" 0011 0012 #include "util.h" 0013 0014 QVariant DefaultFilter::doFilter(const QVariant &input, const QVariant &argument, bool autoescape) const 0015 { 0016 Q_UNUSED(autoescape) 0017 if (!input.isValid() || getSafeString(input).get().isEmpty()) 0018 return argument; 0019 return getSafeString(input); 0020 } 0021 0022 QVariant DefaultIfNoneFilter::doFilter(const QVariant &input, const QVariant &argument, bool autoescape) const 0023 { 0024 Q_UNUSED(autoescape) 0025 if (!input.isValid()) 0026 return argument; 0027 return getSafeString(input); 0028 } 0029 0030 QVariant DivisibleByFilter::doFilter(const QVariant &input, const QVariant &argument, bool autoescape) const 0031 { 0032 Q_UNUSED(autoescape) 0033 return (getSafeString(input).get().toInt() % QVariant(argument).value<int>() == 0) ? QStringLiteral("true") : QString(); 0034 } 0035 0036 QVariant YesNoFilter::doFilter(const QVariant &input, const QVariant &argument, bool autoescape) const 0037 { 0038 Q_UNUSED(autoescape) 0039 auto arg = getSafeString(argument); 0040 QString yes; 0041 QString no; 0042 QString maybe; 0043 if (arg.get().isEmpty()) { 0044 yes = QStringLiteral("yes"); 0045 no = QStringLiteral("no"); 0046 maybe = QStringLiteral("maybe"); 0047 } else { 0048 auto argList = arg.get().split(QLatin1Char(',')); 0049 auto numArgs = argList.size(); 0050 if ((numArgs < 2) || (numArgs > 3)) { 0051 return input.value<QString>(); 0052 } 0053 if (numArgs == 2) { 0054 yes = argList.first(); 0055 no = argList.at(1); 0056 maybe = argList.at(1); 0057 } else if (numArgs == 3) { 0058 yes = argList.first(); 0059 no = argList.at(1); 0060 maybe = argList.at(2); 0061 } 0062 } 0063 if (!input.isValid()) 0064 return maybe; 0065 if (!getSafeString(input).get().isEmpty()) 0066 return yes; 0067 return no; 0068 }