summaryrefslogtreecommitdiffstats
path: root/util/string/strip.h
diff options
context:
space:
mode:
authorIvan Korostelev <[email protected]>2022-02-10 16:46:41 +0300
committerDaniil Cherednik <[email protected]>2022-02-10 16:46:41 +0300
commitb5e813096385b2d9e16b572711fec5bf2eb5058d (patch)
tree49e222ea1c5804306084bb3ae065bb702625360f /util/string/strip.h
parentf3a52f9d3e18d1159abbc85fa65eeda69d971657 (diff)
Restoring authorship annotation for Ivan Korostelev <[email protected]>. Commit 2 of 2.
Diffstat (limited to 'util/string/strip.h')
-rw-r--r--util/string/strip.h62
1 files changed, 31 insertions, 31 deletions
diff --git a/util/string/strip.h b/util/string/strip.h
index f462e8a17f7..d5ef6da96db 100644
--- a/util/string/strip.h
+++ b/util/string/strip.h
@@ -196,40 +196,40 @@ inline TString Strip(const TString& s) {
return ret;
}
-template <class TChar, class TWhitespaceFunc>
-size_t CollapseImpl(TChar* s, size_t n, const TWhitespaceFunc& isWhitespace) {
- size_t newLen = 0;
- for (size_t i = 0; i < n; ++i, ++newLen) {
- size_t nextNonSpace = i;
- while (nextNonSpace < n && isWhitespace(s[nextNonSpace])) {
- ++nextNonSpace;
- }
- size_t numSpaces = nextNonSpace - i;
- if (numSpaces > 1 || (numSpaces == 1 && s[i] != ' ')) {
- s[newLen] = ' ';
- i = nextNonSpace - 1;
- } else {
- s[newLen] = s[i];
- }
- }
- return newLen;
-}
-
+template <class TChar, class TWhitespaceFunc>
+size_t CollapseImpl(TChar* s, size_t n, const TWhitespaceFunc& isWhitespace) {
+ size_t newLen = 0;
+ for (size_t i = 0; i < n; ++i, ++newLen) {
+ size_t nextNonSpace = i;
+ while (nextNonSpace < n && isWhitespace(s[nextNonSpace])) {
+ ++nextNonSpace;
+ }
+ size_t numSpaces = nextNonSpace - i;
+ if (numSpaces > 1 || (numSpaces == 1 && s[i] != ' ')) {
+ s[newLen] = ' ';
+ i = nextNonSpace - 1;
+ } else {
+ s[newLen] = s[i];
+ }
+ }
+ return newLen;
+}
+
template <class TStringType, class TWhitespaceFunc>
bool CollapseImpl(const TStringType& from, TStringType& to, size_t maxLen, const TWhitespaceFunc& isWhitespace) {
- to = from;
+ to = from;
maxLen = maxLen ? Min(maxLen, to.size()) : to.size();
- for (size_t i = 0; i < maxLen; ++i) {
- if (isWhitespace(to[i]) && (to[i] != ' ' || isWhitespace(to[i + 1]))) {
- size_t tailSize = maxLen - i;
- size_t newTailSize = CollapseImpl(to.begin() + i, tailSize, isWhitespace);
- to.remove(i + newTailSize, tailSize - newTailSize);
- return true;
- }
- }
- return false;
-}
-
+ for (size_t i = 0; i < maxLen; ++i) {
+ if (isWhitespace(to[i]) && (to[i] != ' ' || isWhitespace(to[i + 1]))) {
+ size_t tailSize = maxLen - i;
+ size_t newTailSize = CollapseImpl(to.begin() + i, tailSize, isWhitespace);
+ to.remove(i + newTailSize, tailSize - newTailSize);
+ return true;
+ }
+ }
+ return false;
+}
+
bool Collapse(const TString& from, TString& to, size_t maxLen = 0);
/// Replaces several consequtive space symbols with one (processing is limited to maxLen bytes)