File indexing completed on 2024-05-12 15:59:16

0001 /*
0002  *  SPDX-FileCopyrightText: 2009 Cyrille Berger <cberger@cberger.net>
0003  *
0004  *  SPDX-License-Identifier: LGPL-2.1-or-later
0005  */
0006 
0007 #include "kis_meta_data_parser.h"
0008 
0009 #include "kis_meta_data_value.h"
0010 
0011 using namespace KisMetaData;
0012 
0013 Parser::~Parser()
0014 {
0015 }
0016 
0017 #include "kis_meta_data_parser_p.h"
0018 
0019 #include <QDateTime>
0020 #include <QRegExp>
0021 #include <QStringList>
0022 #include <QVariant>
0023 
0024 
0025 Value IntegerParser::parse(const QString& _v) const
0026 {
0027     return Value(_v.toInt());
0028 }
0029 
0030 Value TextParser::parse(const QString& _v) const
0031 {
0032     return Value(_v);
0033 }
0034 
0035 Value DateParser::parse(const QString& _v) const
0036 {
0037     if (_v.length() <= 4) {
0038         return Value(QDateTime::fromString(_v, "yyyy"));
0039     } else if (_v.length() <= 7) {
0040         return Value(QDateTime::fromString(_v, "yyyy-MM"));
0041     } else if (_v.length() <= 10) {
0042         return Value(QDateTime::fromString(_v, "yyyy-MM-dd"));
0043     } else if (_v.length() <= 16) {
0044         return Value(QDateTime::fromString(_v, "yyyy-MM-ddThh:mm"));
0045     } else if (_v.length() <= 19) {
0046         return Value(QDateTime::fromString(_v, "yyyy-MM-ddThh:mm:ss"));
0047     } else {
0048         return Value(QDateTime::fromString(_v));
0049     }
0050 }
0051 
0052 Value RationalParser::parse(const QString& _v) const
0053 {
0054     QRegExp regexp("(\\-?\\d+)/(\\d+)");
0055     regexp.indexIn(_v);
0056     if (regexp.capturedTexts().size() > 2)
0057         return Value(Rational(regexp.capturedTexts()[1].toInt(), regexp.capturedTexts()[2].toInt()));
0058     return Value();
0059 }