summaryrefslogtreecommitdiff
path: root/src/Format.cpp
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-12-09 00:14:48 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-12-09 00:14:48 (GMT)
commit05148e8a8db3a413edb711108fd860d3ee83154f (patch)
treedd14ac13354b581580570a91a990ba80f672d19d /src/Format.cpp
parent226de5b6f88c95a4f76675be067de1af5de13902 (diff)
downloadpowder-05148e8a8db3a413edb711108fd860d3ee83154f.zip
powder-05148e8a8db3a413edb711108fd860d3ee83154f.tar.gz
C++erific text cleaner function, also, it's a good idea to actually clean text coming from signs...
Diffstat (limited to 'src/Format.cpp')
-rw-r--r--src/Format.cpp52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/Format.cpp b/src/Format.cpp
index 5f9741d..f7c3c09 100644
--- a/src/Format.cpp
+++ b/src/Format.cpp
@@ -71,6 +71,58 @@ std::string format::UnixtimeToDateMini(time_t unixtime)
}
}
+std::string format::CleanString(std::string dirtyString, int maxStringLength)
+{
+ return CleanString(dirtyString, std::string::npos, maxStringLength);
+}
+
+std::string format::CleanString(std::string dirtyString, int maxVisualSize, int maxStringLength)
+{
+ std::string newString = dirtyString;
+ if(maxStringLength != std::string::npos && newString.size() > maxStringLength)
+ {
+ newString = newString.substr(0, maxStringLength);
+ }
+ if(maxVisualSize != std::string::npos && newString.size()*10 > maxVisualSize)
+ {
+ newString = newString.substr(0, maxVisualSize/10);
+ }
+ for(int i = 0; i < newString.size(); i++){
+ if(!(newString[i]>=' ' && newString[i]<127)){ //Clamp to ASCII range
+ newString[i] = '?'; //Replace with "huh" char
+ }
+ }
+ return newString;
+}
+
+std::string format::CleanString(char * dirtyData, int maxStringLength)
+{
+ return CleanString(dirtyData, std::string::npos, maxStringLength);
+}
+
+std::string format::CleanString(char * dirtyData, int maxVisualSize, int maxStringLength)
+{
+ char * newData = new char[maxStringLength+1];
+ strncpy(newData, dirtyData, maxStringLength);
+ newData[maxStringLength] = 0;
+
+ std::string newString = std::string(newData);
+ delete[] newData;
+
+ if(maxVisualSize != std::string::npos && newString.size()*10 > maxVisualSize)
+ {
+ newString = newString.substr(0, maxVisualSize/10);
+ }
+ for(int i = 0; i < newString.size(); i++){
+ if(!(newString[i]>=' ' && newString[i]<127)){ //Clamp to ASCII range
+ newString[i] = '?'; //Replace with "huh" char
+ }
+ }
+ return newString;
+}
+
+
+
std::vector<char> format::VideoBufferToPTI(const VideoBuffer & vidBuf)
{
std::vector<char> data;