diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2018-04-28 16:34:57 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2018-04-28 16:34:57 +0200 |
commit | eba3042910f063ae638a7e0134b79175978e2fca (patch) | |
tree | c17863f5f87f578cdb80736154e22a4f1d187205 /libbutl/utility.cxx | |
parent | b32579bad74e1b7f3a719fa49aad8566d20a6d2b (diff) |
Move trim(), next_word() basic string utilities from build2
Diffstat (limited to 'libbutl/utility.cxx')
-rw-r--r-- | libbutl/utility.cxx | 38 |
1 files changed, 37 insertions, 1 deletions
diff --git a/libbutl/utility.cxx b/libbutl/utility.cxx index c8e4e85..4645b68 100644 --- a/libbutl/utility.cxx +++ b/libbutl/utility.cxx @@ -35,7 +35,6 @@ import std.io; #endif - namespace butl { using namespace std; @@ -88,6 +87,43 @@ namespace butl win32::error_msg (system_code)); #endif } + + string& + trim (string& l) + { + /* + assert (trim (r = "") == ""); + assert (trim (r = " ") == ""); + assert (trim (r = " \t\r") == ""); + assert (trim (r = "a") == "a"); + assert (trim (r = " a") == "a"); + assert (trim (r = "a ") == "a"); + assert (trim (r = " \ta") == "a"); + assert (trim (r = "a \r") == "a"); + assert (trim (r = " a ") == "a"); + assert (trim (r = " \ta \r") == "a"); + */ + + size_t i (0), n (l.size ()); + + for (char c; + i != n && ((c = l[i]) == ' ' || c == '\t' || c == '\r'); + ++i) ; + + for (char c; + n != i && ((c = l[n - 1]) == ' ' || c == '\t' || c == '\r'); + --n) ; + + if (i != 0) + { + string s (l, i, n - i); + l.swap (s); + } + else if (n != l.size ()) + l.resize (n); + + return l; + } } namespace std |