aboutsummaryrefslogtreecommitdiff
path: root/libbutl/utility.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2018-04-28 16:34:57 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2018-04-28 16:34:57 +0200
commiteba3042910f063ae638a7e0134b79175978e2fca (patch)
treec17863f5f87f578cdb80736154e22a4f1d187205 /libbutl/utility.cxx
parentb32579bad74e1b7f3a719fa49aad8566d20a6d2b (diff)
Move trim(), next_word() basic string utilities from build2
Diffstat (limited to 'libbutl/utility.cxx')
-rw-r--r--libbutl/utility.cxx38
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