From 70214bfedf68e23494401a2e1b3c4f8eca6cc66c Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Fri, 16 May 2014 07:46:56 +0200 Subject: [PATCH] Add elide() --- qutebrowser/test/utils/test_misc.py | 20 ++++++++++++++++++++ qutebrowser/utils/misc.py | 10 ++++++++++ 2 files changed, 30 insertions(+) diff --git a/qutebrowser/test/utils/test_misc.py b/qutebrowser/test/utils/test_misc.py index db6afd33c..ef71f9f10 100644 --- a/qutebrowser/test/utils/test_misc.py +++ b/qutebrowser/test/utils/test_misc.py @@ -34,6 +34,26 @@ import qutebrowser.utils.misc as utils from qutebrowser.test.helpers import environ_set_temp +class ElidingTests(TestCase): + + """Test elide.""" + + ELLIPSIS = '\u2026' + + def test_too_small(self): + with self.assertRaises(ValueError): + utils.elide('foo', 0) + + def test_length_one(self): + self.assertEqual(utils.elide('foo', 1), self.ELLIPSIS) + + def test_fits(self): + self.assertEqual(utils.elide('foo', 3), 'foo') + + def test_elided(self): + self.assertEqual(utils.elide('foobar', 3), 'fo' + self.ELLIPSIS) + + class CheckOverflowTests(TestCase): """Test check_overflow.""" diff --git a/qutebrowser/utils/misc.py b/qutebrowser/utils/misc.py index badf12681..142e34d3e 100644 --- a/qutebrowser/utils/misc.py +++ b/qutebrowser/utils/misc.py @@ -47,6 +47,16 @@ MINVALS = { } +def elide(text, length): + """Elide text so it uses a maximum of length chars.""" + if length < 1: + raise ValueError("length must be >= 1!") + if len(text) <= length: + return text + else: + return text[:length-1] + '\u2026' + + def check_overflow(arg, ctype, fatal=True): """Check if the given argument is in bounds for the given type.