blob: c22fb33c4650514d43c421fc32b3d3e7528cf9ec [file] [log] [blame]
/*
Copyright 2019 Alain Dargelas
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
/*
* File: StringUtils.h
* Author: alain
*
* Created on March 14, 2017, 10:43 PM
*/
#ifndef STRINGUTILS_H
#define STRINGUTILS_H
#include <string>
#include <vector>
#include <map>
namespace SURELOG {
class StringUtils {
public:
static void tokenize(std::string str, std::string separators,
std::vector<std::string>& args);
static void tokenizeMulti(std::string str, std::string multichar_separator,
std::vector<std::string>& args);
static void tokenizeBalanced(std::string str, std::string separator,
std::vector<std::string>& args);
static void replaceInTokenVector(std::vector<std::string>& tokens,
std::vector<std::string> pattern,
std::string news);
static void replaceInTokenVector(std::vector<std::string>& tokens,
std::string pattern, std::string news);
static std::string getFirstNonEmptyToken(std::vector<std::string>& tokens);
static std::string& trim(std::string& str);
static std::string& ltrim(std::string& str);
static std::string& ltrim(std::string& str, char c);
static bool ltrimStat(std::string& str, char c);
static std::string& rtrim(std::string& str);
static std::string& rtrimEqual(std::string& str);
static std::string& rtrim(std::string& str, char c);
static std::string leaf(std::string str);
static std::string& getRootFileName(std::string& str);
static std::string eliminateRelativePath(std::string path);
static std::string replaceAll(std::string str, const std::string& from,
const std::string& to);
static std::string getLineInString(std::string& bulk, unsigned int line);
static std::string to_string(double a_value, const int n = 3);
static std::string removeComments(std::string text);
static std::string evaluateEnvVars(std::string text);
static void autoExpandEnvironmentVariables( std::string & text );
static void registerEnvVar(std::string var, std::string value) {
envVars.insert(std::make_pair(var, value));
}
private:
StringUtils();
StringUtils(const StringUtils& orig);
virtual ~StringUtils();
static std::map<std::string, std::string> envVars;
private:
};
}; // namespace SURELOG
#endif /* STRINGUTILS_H */