From eba3042910f063ae638a7e0134b79175978e2fca Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Sat, 28 Apr 2018 16:34:57 +0200 Subject: Move trim(), next_word() basic string utilities from build2 --- libbutl/utility.cxx | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) (limited to 'libbutl/utility.cxx') 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 -- cgit v1.1