changeset 130:9797a74a94ec

Added a class for replacable strings. Works with linebreaks.
author Jonatan Werpers <jonatan@werpers.com>
date Thu, 04 Feb 2016 16:29:03 +0100
parents 0a881a3dc9a9
children 26e047194383
files +util/ReplaceableString.m
diffstat 1 files changed, 46 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
diff -r 0a881a3dc9a9 -r 9797a74a94ec +util/ReplaceableString.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+util/ReplaceableString.m	Thu Feb 04 16:29:03 2016 +0100
@@ -0,0 +1,46 @@
+classdef ReplaceableString < handle
+    properties
+        n
+        fmt
+        param
+    end
+
+    methods
+        function obj = ReplaceableString(fmt, varargin)
+            default_arg('fmt', '');
+            obj.n = 0;
+
+            obj.setFormat(fmt);
+            obj.param = varargin;
+        end
+
+        function setFormat(obj, fmt)
+            obj.fmt = fmt;
+        end
+
+        function update(obj, fmt, varargin)
+            obj.setFormat(fmt);
+            obj.param = varargin;
+
+            obj.display();
+        end
+
+        function updateParam(obj, varargin)
+            obj.param = varargin;
+            obj.display();
+        end
+
+        function display(obj)
+            reverseStr = repmat(sprintf('\b'), 1, obj.n);
+            newStr = padStr(sprintf(obj.fmt, obj.param{:}),obj.n);
+            fprintf([reverseStr, newStr]);
+
+            obj.n = length(newStr);
+        end
+    end
+
+end
+
+function b = padStr(a, n)
+    b = sprintf('%-*s', n, a);
+end