Skip to content

Commit e2a6628

Browse files
committed
Add the whitespace item names sanitization
1 parent d50e9ab commit e2a6628

File tree

3 files changed

+18
-1
lines changed

3 files changed

+18
-1
lines changed

pbom/io/bb/__test__/sanitizedstring_test.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ namespace pboman3::io::test {
2222
SanitizedStringTestParam{"?1?", "%3f1%3f"},
2323
SanitizedStringTestParam{"*1*", "%2a1%2a"},
2424
SanitizedStringTestParam{"1///", "1%2f%2f%2f"},
25-
SanitizedStringTestParam{"\\2", "%5c2"}
25+
SanitizedStringTestParam{"\\2", "%5c2"},
26+
SanitizedStringTestParam{" ", "%20%20%20%20"}
2627
));
2728

2829
class SanitizedStringRestrictedKeywordsTest : public testing::TestWithParam<SanitizedStringTestParam> {

pbom/io/bb/sanitizedstring.cpp

+12
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ namespace pboman3::io {
1414
sanitizedText_ = doCharacterSanitization(text, firstInvalidCharIndex);
1515
} else if (QString keyWord; needsKeywordSanitization(text, &keyWord)) {
1616
sanitizedText_ = doKeywordSanitization(text, keyWord);
17+
} else if (needsWhitespaceSanitization(text)) {
18+
sanitizedText_ = doWhitespaceSanitization(text);
1719
} else {
1820
sanitizedText_ = text;
1921
}
@@ -77,6 +79,16 @@ namespace pboman3::io {
7779
return result;
7880
}
7981

82+
bool SanitizedString::needsWhitespaceSanitization(const QString& text) {
83+
return !text.trimmed().length();
84+
}
85+
86+
QString SanitizedString::doWhitespaceSanitization(const QString& text) {
87+
QString result(text);
88+
result = result.replace(' ', "%20");
89+
return result;
90+
}
91+
8092
bool SanitizedString::isCharLegal(const QChar& chr) {
8193
if (chr == '<' || chr == '>' || chr == ':' || chr == ':' || chr == '"' || chr == '\\' || chr == '/' ||
8294
chr == '|' || chr == '?' || chr == '*' || chr == '{' || chr == '}') {

pbom/io/bb/sanitizedstring.h

+4
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ namespace pboman3::io {
2323

2424
static QString doKeywordSanitization(const QString& text, const QString& keyword);
2525

26+
static bool needsWhitespaceSanitization(const QString& text);
27+
28+
static QString doWhitespaceSanitization(const QString& text);
29+
2630
static bool isCharLegal(const QChar& chr);
2731

2832
static QString sanitizeChar(const QChar& chr);

0 commit comments

Comments
 (0)