Mercurial > repos > public > sbplib
annotate +util/ReplaceableString.m @ 944:a35ed1d124d3 feature/utux2D
Change from opts to type in a few schemes
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Wed, 05 Dec 2018 10:52:37 +0100 |
parents | f30eafd6d4dc |
children |
rev | line source |
---|---|
130
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
1 classdef ReplaceableString < handle |
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
2 properties |
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
3 n |
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
4 fmt |
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
5 param |
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
6 end |
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
7 |
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
8 methods |
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
9 function obj = ReplaceableString(fmt, varargin) |
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
10 default_arg('fmt', ''); |
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
11 obj.n = 0; |
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
12 |
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
13 obj.setFormat(fmt); |
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
14 obj.param = varargin; |
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
15 end |
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
16 |
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
17 function setFormat(obj, fmt) |
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
18 obj.fmt = fmt; |
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
19 end |
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
20 |
131
26e047194383
ReplaceableString: Added .appendFormat()
Jonatan Werpers <jonatan@werpers.com>
parents:
130
diff
changeset
|
21 function appendFormat(obj, fmt) |
26e047194383
ReplaceableString: Added .appendFormat()
Jonatan Werpers <jonatan@werpers.com>
parents:
130
diff
changeset
|
22 obj.fmt = [obj.fmt, fmt]; |
26e047194383
ReplaceableString: Added .appendFormat()
Jonatan Werpers <jonatan@werpers.com>
parents:
130
diff
changeset
|
23 end |
26e047194383
ReplaceableString: Added .appendFormat()
Jonatan Werpers <jonatan@werpers.com>
parents:
130
diff
changeset
|
24 |
130
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
25 function update(obj, fmt, varargin) |
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
26 obj.setFormat(fmt); |
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
27 obj.param = varargin; |
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
28 |
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
29 obj.display(); |
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
30 end |
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
31 |
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
32 function updateParam(obj, varargin) |
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
33 obj.param = varargin; |
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
34 obj.display(); |
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
35 end |
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
36 |
241
09d964b850ee
ReplacableString: Added a more intuitive function name.
Jonatan Werpers <jonatan@werpers.com>
parents:
229
diff
changeset
|
37 function show(obj, varargin) |
09d964b850ee
ReplacableString: Added a more intuitive function name.
Jonatan Werpers <jonatan@werpers.com>
parents:
229
diff
changeset
|
38 obj.param = varargin; |
09d964b850ee
ReplacableString: Added a more intuitive function name.
Jonatan Werpers <jonatan@werpers.com>
parents:
229
diff
changeset
|
39 obj.display(); |
09d964b850ee
ReplacableString: Added a more intuitive function name.
Jonatan Werpers <jonatan@werpers.com>
parents:
229
diff
changeset
|
40 end |
09d964b850ee
ReplacableString: Added a more intuitive function name.
Jonatan Werpers <jonatan@werpers.com>
parents:
229
diff
changeset
|
41 |
229 | 42 function remove(obj) |
43 obj.update(''); | |
44 end | |
45 | |
130
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
46 function display(obj) |
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
47 reverseStr = repmat(sprintf('\b'), 1, obj.n); |
229 | 48 cleareStr = repmat(sprintf(' '), 1, obj.n); |
49 newStr = sprintf(obj.fmt, obj.param{:}); | |
50 fprintf([reverseStr, cleareStr, reverseStr, newStr]); | |
130
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
51 |
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
52 obj.n = length(newStr); |
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
53 end |
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
54 end |
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
55 |
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
56 end |
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
57 |
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
58 function b = padStr(a, n) |
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
59 b = sprintf('%-*s', n, a); |
9797a74a94ec
Added a class for replacable strings. Works with linebreaks.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
60 end |
894
f30eafd6d4dc
Add new formatting method to TextTable
Jonatan Werpers <jonatan@werpers.com>
parents:
241
diff
changeset
|
61 |
f30eafd6d4dc
Add new formatting method to TextTable
Jonatan Werpers <jonatan@werpers.com>
parents:
241
diff
changeset
|
62 % TODO: Add a debug mode which prints without replacing? |