File indexing completed on 2025-02-09 04:28:32
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 "integers.h" 0011 0012 #include "util.h" 0013 0014 QVariant AddFilter::doFilter(const QVariant &input, const QVariant &argument, bool autoescape) const 0015 { 0016 Q_UNUSED(autoescape) 0017 0018 if (isSafeString(input)) { 0019 if (isSafeString(argument)) 0020 return getSafeString(input) + getSafeString(argument); 0021 return input; 0022 } 0023 0024 if (input.userType() == qMetaTypeId<QVariantList>()) { 0025 if (argument.userType() == qMetaTypeId<QVariantList>()) 0026 return input.value<QVariantList>() + argument.value<QVariantList>(); 0027 return input; 0028 } 0029 0030 if (input.userType() == qMetaTypeId<QStringList>()) { 0031 if (argument.userType() == QMetaType::QStringList) 0032 return input.value<QStringList>() + argument.value<QStringList>(); 0033 return input; 0034 } 0035 0036 if (input.userType() == qMetaTypeId<int>()) { 0037 if (argument.userType() == qMetaTypeId<int>()) 0038 return input.value<int>() + argument.value<int>(); 0039 return input; 0040 } 0041 0042 if (input.userType() == qMetaTypeId<uint>()) { 0043 if (argument.userType() == qMetaTypeId<uint>()) 0044 return input.value<uint>() + argument.value<uint>(); 0045 return input; 0046 } 0047 0048 if (input.canConvert<double>()) { 0049 if (argument.canConvert<double>()) 0050 return input.value<double>() + argument.value<double>(); 0051 return input; 0052 } 0053 0054 if (input.userType() == qMetaTypeId<long long>()) { 0055 if (argument.userType() == qMetaTypeId<long long>()) 0056 return input.value<long long>() + argument.value<long long>(); 0057 return input; 0058 } 0059 0060 if (input.userType() == qMetaTypeId<unsigned long long>()) { 0061 if (input.userType() == qMetaTypeId<unsigned long long>()) 0062 return input.value<unsigned long long>() + argument.value<unsigned long long>(); 0063 return input; 0064 } 0065 return input; 0066 } 0067 0068 QVariant GetDigitFilter::doFilter(const QVariant &input, const QVariant &argument, bool autoescape) const 0069 { 0070 Q_UNUSED(autoescape) 0071 auto value = getSafeString(input); 0072 0073 bool ok; 0074 (void)value.get().toInt(&ok); 0075 if (!ok) 0076 return QString(); 0077 0078 if (value.get().size() < 1) 0079 return value; 0080 0081 auto arg = getSafeString(argument).get().toInt(); 0082 0083 if (value.get().size() < arg) 0084 return value; 0085 0086 return SafeString(value.get().at(value.get().size() - arg)); 0087 }