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 #ifndef STRINGFILTERS_H
0011 #define STRINGFILTERS_H
0012 
0013 // krazy:excludeall=includes
0014 
0015 #include "filter.h"
0016 
0017 using namespace KTextTemplate;
0018 
0019 class AddSlashesFilter : public Filter
0020 {
0021 public:
0022     bool isSafe() const override
0023     {
0024         return true;
0025     }
0026 
0027     QVariant doFilter(const QVariant &input, const QVariant &argument = {}, bool autoescape = {}) const override;
0028 };
0029 
0030 class CapFirstFilter : public Filter
0031 {
0032 public:
0033     bool isSafe() const override
0034     {
0035         return true;
0036     }
0037 
0038     QVariant doFilter(const QVariant &input, const QVariant &argument = {}, bool autoescape = {}) const override;
0039 };
0040 
0041 class EscapeJsFilter : public Filter
0042 {
0043 public:
0044     EscapeJsFilter();
0045 
0046     QVariant doFilter(const QVariant &input, const QVariant &argument = {}, bool autoescape = {}) const override;
0047 
0048 private:
0049     QList<std::pair<QString, QString>> m_jsEscapes;
0050 };
0051 
0052 class FixAmpersandsFilter : public Filter
0053 {
0054 public:
0055     bool isSafe() const override
0056     {
0057         return true;
0058     }
0059 
0060     QVariant doFilter(const QVariant &input, const QVariant &argument = {}, bool autoescape = {}) const override;
0061 };
0062 
0063 class CutFilter : public Filter
0064 {
0065 public:
0066     QVariant doFilter(const QVariant &input, const QVariant &argument = {}, bool autoescape = {}) const override;
0067 };
0068 
0069 class SafeFilter : public Filter
0070 {
0071 public:
0072     bool isSafe() const override
0073     {
0074         return true;
0075     }
0076 
0077     QVariant doFilter(const QVariant &input, const QVariant &argument = {}, bool autoescape = {}) const override;
0078 };
0079 
0080 class LineNumbersFilter : public Filter
0081 {
0082 public:
0083     bool isSafe() const override
0084     {
0085         return true;
0086     }
0087 
0088     QVariant doFilter(const QVariant &input, const QVariant &argument = {}, bool autoescape = {}) const override;
0089 };
0090 
0091 class LowerFilter : public Filter
0092 {
0093 public:
0094     bool isSafe() const override
0095     {
0096         return true;
0097     }
0098 
0099     QVariant doFilter(const QVariant &input, const QVariant &argument = {}, bool autoescape = {}) const override;
0100 };
0101 
0102 class StringFormatFilter : public Filter
0103 {
0104 public:
0105     bool isSafe() const override
0106     {
0107         return true;
0108     }
0109 
0110     QVariant doFilter(const QVariant &input, const QVariant &argument = {}, bool autoescape = {}) const override;
0111 };
0112 
0113 class TitleFilter : public Filter
0114 {
0115 public:
0116     bool isSafe() const override
0117     {
0118         return true;
0119     }
0120 
0121     QVariant doFilter(const QVariant &input, const QVariant &argument = {}, bool autoescape = {}) const override;
0122 };
0123 
0124 class TruncateWordsFilter : public Filter
0125 {
0126 public:
0127     bool isSafe() const override
0128     {
0129         return true;
0130     }
0131 
0132     QVariant doFilter(const QVariant &input, const QVariant &argument = {}, bool autoescape = {}) const override;
0133 };
0134 
0135 class UpperFilter : public Filter
0136 {
0137 public:
0138     // &amp; may be safe, but it will be changed to &AMP; which is not safe.
0139     bool isSafe() const override
0140     {
0141         return false;
0142     }
0143 
0144     QVariant doFilter(const QVariant &input, const QVariant &argument = {}, bool autoescape = {}) const override;
0145 };
0146 
0147 class WordCountFilter : public Filter
0148 {
0149 public:
0150     bool isSafe() const override
0151     {
0152         return true;
0153     }
0154 
0155     QVariant doFilter(const QVariant &input, const QVariant &argument = {}, bool autoescape = {}) const override;
0156 };
0157 
0158 class LJustFilter : public Filter
0159 {
0160 public:
0161     bool isSafe() const override
0162     {
0163         return true;
0164     }
0165 
0166     QVariant doFilter(const QVariant &input, const QVariant &argument = {}, bool autoescape = {}) const override;
0167 };
0168 
0169 class RJustFilter : public Filter
0170 {
0171 public:
0172     bool isSafe() const override
0173     {
0174         return true;
0175     }
0176 
0177     QVariant doFilter(const QVariant &input, const QVariant &argument = {}, bool autoescape = {}) const override;
0178 };
0179 
0180 class CenterFilter : public Filter
0181 {
0182 public:
0183     bool isSafe() const override
0184     {
0185         return true;
0186     }
0187 
0188     QVariant doFilter(const QVariant &input, const QVariant &argument = {}, bool autoescape = {}) const override;
0189 };
0190 
0191 class EscapeFilter : public Filter
0192 {
0193 public:
0194     bool isSafe() const override
0195     {
0196         return true;
0197     }
0198 
0199     QVariant doFilter(const QVariant &input, const QVariant &argument = {}, bool autoescape = {}) const override;
0200 };
0201 
0202 class ForceEscapeFilter : public Filter
0203 {
0204 public:
0205     bool isSafe() const override
0206     {
0207         return true;
0208     }
0209 
0210     QVariant doFilter(const QVariant &input, const QVariant &argument = {}, bool autoescape = {}) const override;
0211 };
0212 
0213 class RemoveTagsFilter : public Filter
0214 {
0215 public:
0216     QVariant doFilter(const QVariant &input, const QVariant &argument = {}, bool autoescape = {}) const override;
0217 };
0218 
0219 class StripTagsFilter : public Filter
0220 {
0221 public:
0222     QVariant doFilter(const QVariant &input, const QVariant &argument = {}, bool autoescape = {}) const override;
0223 };
0224 
0225 class WordWrapFilter : public Filter
0226 {
0227 public:
0228     QVariant doFilter(const QVariant &input, const QVariant &argument = {}, bool autoescape = {}) const override;
0229 
0230     bool isSafe() const override
0231     {
0232         return true;
0233     }
0234 };
0235 
0236 class FloatFormatFilter : public Filter
0237 {
0238 public:
0239     QVariant doFilter(const QVariant &input, const QVariant &argument = {}, bool autoescape = {}) const override;
0240 
0241     bool isSafe() const override
0242     {
0243         return true;
0244     }
0245 };
0246 
0247 class SafeSequenceFilter : public Filter
0248 {
0249 public:
0250     QVariant doFilter(const QVariant &input, const QVariant &argument = {}, bool autoescape = {}) const override;
0251 
0252     bool isSafe() const override
0253     {
0254         return true;
0255     }
0256 };
0257 
0258 class LineBreaksFilter : public Filter
0259 {
0260 public:
0261     QVariant doFilter(const QVariant &input, const QVariant &argument = {}, bool autoescape = {}) const override;
0262 
0263     bool isSafe() const override
0264     {
0265         return true;
0266     }
0267 };
0268 
0269 class LineBreaksBrFilter : public Filter
0270 {
0271 public:
0272     QVariant doFilter(const QVariant &input, const QVariant &argument = {}, bool autoescape = {}) const override;
0273 
0274     bool isSafe() const override
0275     {
0276         return true;
0277     }
0278 };
0279 
0280 class SlugifyFilter : public Filter
0281 {
0282 public:
0283     QVariant doFilter(const QVariant &input, const QVariant &argument = {}, bool autoescape = {}) const override;
0284 
0285     bool isSafe() const override
0286     {
0287         return true;
0288     }
0289 };
0290 
0291 class FileSizeFormatFilter : public Filter
0292 {
0293 public:
0294     QVariant doFilter(const QVariant &input, const QVariant &argument = QVariant(), bool autoescape = {}) const override;
0295 
0296     bool isSafe() const override
0297     {
0298         return true;
0299     }
0300 };
0301 
0302 class TruncateCharsFilter : public Filter
0303 {
0304 public:
0305     QVariant doFilter(const QVariant &input, const QVariant &argument = QVariant(), bool autoescape = {}) const override;
0306 
0307     bool isSafe() const override
0308     {
0309         return true;
0310     }
0311 };
0312 
0313 #endif