From 1725b714331ed820cf4284a0ea6808fcd1c155d7 Mon Sep 17 00:00:00 2001
From: patrick96
Date: Sun, 6 May 2018 21:59:40 +0200
Subject: [PATCH] fix(builder): Respect label-ellipsis option
---
src/components/builder.cpp | 17 +++++++++++++++--
tests/unit_tests/components/builder.cpp | 1 +
2 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/src/components/builder.cpp b/src/components/builder.cpp
index ce008900..c87bbd47 100644
--- a/src/components/builder.cpp
+++ b/src/components/builder.cpp
@@ -559,8 +559,21 @@ string builder::foreground_hex() {
string builder::get_label_text(const label_t& label) {
string text{label->get()};
- if (label->m_maxlen > 0 && string_util::char_len(text) > label->m_maxlen) {
- text = string_util::utf8_truncate(std::move(text), label->m_maxlen) + "...";
+ size_t maxlen = label->m_maxlen;
+
+ if (maxlen > 0 && string_util::char_len(text) > maxlen ) {
+ if(label->m_ellipsis) {
+ if(maxlen < 3) {
+ throw application_error(sstream()
+ << "Label has maxlen (" << maxlen
+ << ") that is smaller than size of ellipsis(3)");
+ }
+
+ text = string_util::utf8_truncate(std::move(text), maxlen - 3) + "...";
+ }
+ else {
+ text = string_util::utf8_truncate(std::move(text), maxlen);
+ }
}
return text;
diff --git a/tests/unit_tests/components/builder.cpp b/tests/unit_tests/components/builder.cpp
index bee20fc8..dac48b2a 100644
--- a/tests/unit_tests/components/builder.cpp
+++ b/tests/unit_tests/components/builder.cpp
@@ -44,6 +44,7 @@ class GetLabelTextTest :
vector>> get_label_text_list = {
{"...", make_tuple("abcd", true, 3)},
+ {"abc", make_tuple("abc", true, 3)},
{"abc", make_tuple("abcdefgh", false, 3)},
{"a...", make_tuple("abcdefgh", true, 4)},
{"abcd...", make_tuple("abcdefgh", true, 7)},