Skip to content
Snippets Groups Projects
Select Git revision
  • 4a0dc9133bd2067d429c783f8079cf8726a3118b
  • master default
  • 1.1
  • 1.0
4 results

strops.cpp

Blame
  • strops.cpp 3.83 KiB
    #include "strops.h"
    #include <algorithm>
    #include <cassert>
    
    #include "log.h"
    
    char getOpposingBracketChar(const char ch)
    {
    	switch(ch)
    	{
    		case '(':
    			return ')';
    		case ')':
    			return '(';
    		case '{':
    			return '}';
    		case '}':
    			return '{';
    		case '[':
    			return ']';
    		case ']':
    			return '[';
    		case '<':
    			return '>';
    		default:
    			eis::Log(eis::Log::ERROR)<<ch<<" is not a valid bracket char";
    			assert(false);
    	}
    	return 'x';
    }
    
    std::vector<std::string> tokenize(const std::string& str, const char delim, const char ignBracketStart, const char ignBracketEnd, const char escapeChar)
    {
    	std::vector<std::string> tokens;
    
    	std::string token;
    	size_t bracketCounter = 0;
    	for(size_t i = 0; i < str.size(); ++i)
    	{
    		if(str[i] == delim && bracketCounter == 0 && (i == 0 || str[i-1] != escapeChar))
    		{
    			tokens.push_back(token);
    			token.clear();
    		}
    		else
    		{
    			token.push_back(str[i]);
    		}
    
    		if(ignBracketStart == str[i])
    			++bracketCounter;
    		else if(ignBracketEnd == str[i])
    			--bracketCounter;
    	}
    	if(bracketCounter == 0)
    		tokens.push_back(token);
    	return tokens;
    }
    
    std::vector<std::string> tokenizeBinaryIgnore(const std::string& str, const char delim, const char ignoreBraket, const char escapeChar)
    {
    	std::vector<std::string> tokens;
    
    	std::string token;
    	bool inBaracket = false;
    	for(size_t i = 0; i < str.size(); ++i)
    	{
    		if(str[i] == delim && !inBaracket && (i == 0 || str[i-1] != escapeChar))
    		{
    			tokens.push_back(token);