diff options
-rw-r--r-- | ttystatus/status.py | 5 | ||||
-rw-r--r-- | ttystatus/status_tests.py | 6 |
2 files changed, 11 insertions, 0 deletions
diff --git a/ttystatus/status.py b/ttystatus/status.py index b5d743a..722d69f 100644 --- a/ttystatus/status.py +++ b/ttystatus/status.py @@ -44,6 +44,11 @@ class TerminalStatus(object): else: for key in widget.interesting_keys: self._interests[key] = self._interests.get(key, []) + [widget] + + def format(self, format_string): + '''Add new widgets based on format string.''' + for widget in ttystatus.fmt.parse(format_string): + self.add(widget) def clear(self): '''Remove all widgets.''' diff --git a/ttystatus/status_tests.py b/ttystatus/status_tests.py index 9e6d0ac..3583028 100644 --- a/ttystatus/status_tests.py +++ b/ttystatus/status_tests.py @@ -78,6 +78,12 @@ class TerminalStatusTests(unittest.TestCase): w = W() self.ts.add(w) self.assert_(w in self.ts._wildcards) + + def test_adds_widgets_from_format_string(self): + self.ts.format('hello, %String(name)') + self.assertEqual(len(self.ts._widgets), 2) + self.assertEqual(type(self.ts._widgets[0]), ttystatus.Literal) + self.assertEqual(type(self.ts._widgets[1]), ttystatus.String) def test_removes_all_widgets(self): self.ts.add(ttystatus.Literal('foo')) |