From 01955238036ac546ba1e488546101f65d213f4dd Mon Sep 17 00:00:00 2001 From: Pavel Belikov Date: Tue, 14 Nov 2017 21:33:31 +0300 Subject: add leading whitespace support in Wrap --- args.hxx | 39 +++++++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 14 deletions(-) (limited to 'args.hxx') diff --git a/args.hxx b/args.hxx index 655ef12..a381435 100644 --- a/args.hxx +++ b/args.hxx @@ -114,37 +114,48 @@ namespace args std::istringstream stream(in); std::vector output; - std::ostringstream line; - std::string::size_type linesize = 0; + std::string line; + bool empty = true; + + for (char c : in) + { + if (!isspace(c)) + { + break; + } + line += c; + } + while (stream) { std::string item; stream >> item; auto itemsize = Glyphs(item); - if ((linesize + 1 + itemsize) > currentwidth) + if ((line.length() + 1 + itemsize) > currentwidth) { - if (linesize > 0) + if (!empty) { - output.push_back(line.str()); - line.str(std::string()); - linesize = 0; + output.push_back(line); + line.clear(); + empty = true; currentwidth = width; } } if (itemsize > 0) { - if (linesize) + if (!empty) { - ++linesize; - line << " "; + line += ' '; } - line << item; - linesize += itemsize; + + line += item; + empty = false; } } - if (linesize > 0) + + if (!empty) { - output.push_back(line.str()); + output.push_back(line); } return output; } -- cgit v1.2.1