Utility library for MTS Socket Modem Arduino Shield devices from Multi-Tech Systems

Dependents:   mtsas mtsas thermostat_fan_demo--fan mtsas ... more

NOTE: MTS-Utils has moved to GitHub. This version will not be updated. For updates, go to the GitHub version.

Committer:
Mike Fiore
Date:
Mon Mar 23 16:37:56 2015 -0500
Revision:
12:7818d55b35c6
Parent:
2:7779ede60c3d
Child:
13:4709c2dfcd11
synchronize with internal git repo revision 9322e85a3e69a8beda2a83c3b9fbc2567dcca3af

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Mike Fiore 2:7779ede60c3d 1 #include "MTSText.h"
Mike Fiore 12:7818d55b35c6 2 #include "ctype.h"
Mike Fiore 2:7779ede60c3d 3
Mike Fiore 2:7779ede60c3d 4 using namespace mts;
Mike Fiore 2:7779ede60c3d 5
Mike Fiore 2:7779ede60c3d 6 std::string Text::getLine(const std::string& source, const size_t& start, size_t& cursor) {
Mike Fiore 2:7779ede60c3d 7 char delimiters[2];
Mike Fiore 2:7779ede60c3d 8 delimiters[0] = '\n';
Mike Fiore 2:7779ede60c3d 9 delimiters[1] = '\r';
Mike Fiore 2:7779ede60c3d 10 size_t end = source.find_first_of(delimiters, start, 2);
Mike Fiore 2:7779ede60c3d 11 std::string line(source.substr(start, end - start));
Mike Fiore 2:7779ede60c3d 12 if (end < source.size()) {
Mike Fiore 2:7779ede60c3d 13 if (end < source.size() - 1)
Mike Fiore 2:7779ede60c3d 14 if ((source[end] == '\n' && source[end + 1] == '\r') || (source[end] == '\r' && source[end + 1] == '\n')) {
Mike Fiore 2:7779ede60c3d 15 //Advance an additional character in scenarios where lines end in \r\n or \n\r
Mike Fiore 2:7779ede60c3d 16 end++;
Mike Fiore 2:7779ede60c3d 17 }
Mike Fiore 2:7779ede60c3d 18 end++;
Mike Fiore 2:7779ede60c3d 19 }
Mike Fiore 2:7779ede60c3d 20 cursor = end;
Mike Fiore 2:7779ede60c3d 21 return line;
Mike Fiore 2:7779ede60c3d 22 }
Mike Fiore 2:7779ede60c3d 23
Mike Fiore 2:7779ede60c3d 24 std::vector<std::string> Text::split(const std::string& str, char delimiter, int limit) {
Mike Fiore 2:7779ede60c3d 25 return split(str, std::string(1, delimiter), limit);
Mike Fiore 2:7779ede60c3d 26 }
Mike Fiore 2:7779ede60c3d 27
Mike Fiore 2:7779ede60c3d 28 std::vector<std::string> Text::split(const std::string& str, const std::string& delimiter, int limit) {
Mike Fiore 2:7779ede60c3d 29 std::vector<std::string> result;
Mike Fiore 2:7779ede60c3d 30 if(str.size() == 0) {
Mike Fiore 2:7779ede60c3d 31 return result;
Mike Fiore 2:7779ede60c3d 32 }
Mike Fiore 2:7779ede60c3d 33 size_t start = 0;
Mike Fiore 2:7779ede60c3d 34 size_t end = str.find(delimiter, start);
Mike Fiore 2:7779ede60c3d 35 for (int i = 1; i < limit || (limit <= 0 && (end != std::string::npos)); ++i) {
Mike Fiore 2:7779ede60c3d 36 result.push_back(str.substr(start, end - start));
Mike Fiore 2:7779ede60c3d 37 start = end + delimiter.length();
Mike Fiore 2:7779ede60c3d 38 end = str.find(delimiter, start);
Mike Fiore 2:7779ede60c3d 39 }
Mike Fiore 2:7779ede60c3d 40 result.push_back(str.substr(start));
Mike Fiore 2:7779ede60c3d 41 return result;
Mike Fiore 2:7779ede60c3d 42 }
Mike Fiore 2:7779ede60c3d 43
Mike Fiore 2:7779ede60c3d 44 std::string Text::readString(char* index, int length)
Mike Fiore 2:7779ede60c3d 45 {
Mike Fiore 2:7779ede60c3d 46 std::string result = std::string(index, length);
Mike Fiore 2:7779ede60c3d 47 index += length;
Mike Fiore 2:7779ede60c3d 48 return result;
Mike Fiore 12:7818d55b35c6 49 }
Mike Fiore 12:7818d55b35c6 50
Mike Fiore 12:7818d55b35c6 51 std::string Text::toUpper(const std::string str)
Mike Fiore 12:7818d55b35c6 52 {
Mike Fiore 12:7818d55b35c6 53 std::string ret = str;
Mike Fiore 12:7818d55b35c6 54
Mike Fiore 12:7818d55b35c6 55 for (unsigned int i = 0; i < ret.size(); i++)
Mike Fiore 12:7818d55b35c6 56 {
Mike Fiore 12:7818d55b35c6 57 ret[i] = toupper(ret[i]);
Mike Fiore 12:7818d55b35c6 58 }
Mike Fiore 12:7818d55b35c6 59
Mike Fiore 12:7818d55b35c6 60 return ret;
Mike Fiore 12:7818d55b35c6 61 }