Merge pull request #4676 from jmarshallnz/dont_set_scraper_on_tvshow_on_nfo
[vuplus_xbmc] / xbmc / utils / StringValidation.cpp
1 /*
2  *      Copyright (C) 2013 Team XBMC
3  *      http://xbmc.org
4  *
5  *  This Program is free software; you can redistribute it and/or modify
6  *  it under the terms of the GNU General Public License as published by
7  *  the Free Software Foundation; either version 2, or (at your option)
8  *  any later version.
9  *
10  *  This Program is distributed in the hope that it will be useful,
11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  *  GNU General Public License for more details.
14  *
15  *  You should have received a copy of the GNU General Public License
16  *  along with XBMC; see the file COPYING.  If not, see
17  *  <http://www.gnu.org/licenses/>.
18  *
19  */
20
21 #include "StringValidation.h"
22 #include "utils/StringUtils.h"
23 #include "utils/Variant.h"
24
25 bool StringValidation::IsInteger(const std::string &input, void *data)
26 {
27   return StringUtils::IsInteger(input);
28 }
29
30 bool StringValidation::IsPositiveInteger(const std::string &input, void *data)
31 {
32   return StringUtils::IsNaturalNumber(input);
33 }
34
35 bool StringValidation::IsTime(const std::string &input, void *data)
36 {
37   std::string strTime = input;
38   StringUtils::Trim(strTime);
39
40   if (StringUtils::EndsWithNoCase(strTime, " min"))
41   {
42     strTime = StringUtils::Left(strTime, strTime.size() - 4);
43     StringUtils::TrimRight(strTime);
44
45     return IsPositiveInteger(strTime, NULL);
46   }
47   else
48   {
49     size_t pos = strTime.find(":");
50     // if there's no ":", the value must be in seconds only
51     if (pos == std::string::npos)
52       return IsPositiveInteger(strTime, NULL);
53
54     std::string strMin = StringUtils::Left(strTime, pos);
55     std::string strSec = StringUtils::Mid(strTime, pos + 1);
56     return IsPositiveInteger(strMin, NULL) && IsPositiveInteger(strSec, NULL);
57   }
58   return false;
59 }