1
0
mirror of https://github.com/biergaizi/codecrypt synced 2024-06-26 00:38:16 +00:00
codecrypt/src/str_match.cpp

65 lines
1.9 KiB
C++
Raw Normal View History

2013-04-21 08:20:15 +00:00
/*
* This file is part of Codecrypt.
*
2016-04-17 13:47:47 +00:00
* Copyright (C) 2013-2016 Mirek Kratochvil <exa.exa@gmail.com>
*
2013-04-21 08:20:15 +00:00
* Codecrypt is free software: you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or (at
* your option) any later version.
*
* Codecrypt is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
* License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Codecrypt. If not, see <http://www.gnu.org/licenses/>.
*/
#include "str_match.h"
#include <algorithm>
#include <cctype> //for tolower()
using namespace std;
2013-04-21 08:20:15 +00:00
bool algorithm_name_matches (const std::string& search,
const std::string&name)
{
2015-10-31 21:58:17 +00:00
if (search.length() > name.length()) return false;
2013-04-21 08:20:15 +00:00
for (size_t i = 0; i < search.length(); ++i)
2015-10-31 21:58:17 +00:00
if (tolower (search[i]) != tolower (name[i])) return false;
2013-04-21 08:20:15 +00:00
return true;
}
2013-04-21 08:32:24 +00:00
2014-02-02 16:50:30 +00:00
bool matches_icase (string name, string s)
{
2014-02-02 16:50:30 +00:00
transform (name.begin(), name.end(), name.begin(), ::tolower);
transform (s.begin(), s.end(), s.begin(), ::tolower);
return name.find (s) != name.npos;
}
2013-04-21 08:52:02 +00:00
bool keyspec_matches (const std::string&search,
const std::string&name,
const std::string&keyid)
2013-04-21 08:32:24 +00:00
{
2015-10-31 21:58:17 +00:00
if (!search.length()) return true;
2013-04-21 08:32:24 +00:00
if (search[0] == '@') { //match for keyID
if (search.length() > keyid.length() + 1) return false;
for (size_t i = 1; i < search.length(); ++i)
2015-10-31 21:58:17 +00:00
if (tolower (search[i] != tolower (keyid[i - 1])))
2013-04-21 08:32:24 +00:00
return false;
return true;
}
return matches_icase (name, search);
2013-04-21 08:32:24 +00:00
}
2014-04-06 11:37:26 +00:00
std::string to_unicase (std::string str)
{
transform (str.begin(), str.end(), str.begin(), ::toupper);
return str;
}