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 }