From 9cd4cf6df82f9246c07896def2f0316ad8247a70 Mon Sep 17 00:00:00 2001 From: John Wiegley Date: Fri, 28 Jan 2005 07:53:10 +0000 Subject: (format): Pay attention to the max_width setting for each formatting element. This means that "%.20N" can no longer exceed 20 characters of width. --- format.cc | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/format.cc b/format.cc index 57bd3c88..534a592a 100644 --- a/format.cc +++ b/format.cc @@ -210,9 +210,11 @@ element_t * format_t::parse_elements(const std::string& fmt) return result.release(); } -void format_t::format(std::ostream& out, const details_t& details) const +void format_t::format(std::ostream& out_str, const details_t& details) const { for (const element_t * elem = elements; elem; elem = elem->next) { + std::ostringstream out; + if (elem->align_left) out << std::left; else @@ -430,6 +432,11 @@ void format_t::format(std::ostream& out, const details_t& details) const assert(0); break; } + + std::string temp = out.str(); + if (elem->max_width > 0 && elem->max_width < temp.length()) + temp.erase(elem->max_width); + out_str << temp; } } -- cgit v1.2.3