Mercurial > repos > public > sbplib
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
--- /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