Mercurial > repos > public > sbplib
annotate TextTable.m @ 911:f7306f03f77a feature/utux2D
Improve comments and names. Change InterfaceOptions.union to merge.
author | Martin Almquist <malmquist@stanford.edu> |
---|---|
date | Sat, 24 Nov 2018 15:43:34 -0800 |
parents | a5cebdaad10b |
children | 11a39b274260 |
rev | line source |
---|---|
465
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
1 classdef TextTable < handle |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
2 properties |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
3 data |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
4 fmtArray |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
5 vertDiv |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
6 horzDiv |
271
3c25601f1fe3
Started adding a function for texttables.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
7 |
465
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
8 nCols |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
9 nRows |
271
3c25601f1fe3
Started adding a function for texttables.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
10 end |
3c25601f1fe3
Started adding a function for texttables.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
11 |
465
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
12 methods |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
13 function obj = TextTable(data, vertDiv, horzDiv); |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
14 default_arg('vertDiv', []); |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
15 default_arg('horzDiv', []); |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
16 |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
17 |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
18 obj.data = data; |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
19 obj.vertDiv = vertDiv; |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
20 obj.horzDiv = horzDiv; |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
21 |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
22 [obj.nRows, obj.nCols] = size(data); |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
23 obj.fmtArray = cell(size(data)); |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
24 obj.formatAll('%s'); |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
25 |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
26 end |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
27 |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
28 function formatAll(obj, fmt) |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
29 obj.fmtArray(:,:) = {fmt}; |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
30 end |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
31 |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
32 function formatCell(obj, i, j, fmt) |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
33 obj.fmtArray{i,j} = fmt; |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
34 end |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
35 |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
36 function formatRow(obj, i, fmt) |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
37 obj.fmtArray(i,:) = {fmt}; |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
38 end |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
39 |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
40 function formatColumn(obj, j, fmt) |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
41 obj.fmtArray(:,j) = {fmt}; |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
42 end |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
43 |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
44 function widths = getWidths(obj) |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
45 strArray = obj.getStringArray(); |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
46 |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
47 widths = zeros(1,obj.nCols); |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
48 for j = 1:obj.nCols |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
49 for i = 1:obj.nRows |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
50 widths(j) = max(widths(j), length(strArray{i,j})); |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
51 end |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
52 end |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
53 end |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
54 |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
55 function str = toString(obj) |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
56 strArray = obj.getStringArray(); |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
57 widths = obj.getWidths(); |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
58 |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
59 str = ''; |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
60 |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
61 % First horzDiv |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
62 if ismember(0, obj.horzDiv) |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
63 str = [str, obj.getHorzDiv(widths)]; |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
64 end |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
65 |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
66 for i = 1:obj.nRows |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
67 str = [str, TextTable.rowToString(strArray(i,:), widths, obj.vertDiv, obj.horzDiv)]; |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
68 |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
69 % Interior horzDiv |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
70 if ismember(i, obj.horzDiv) |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
71 str = [str, obj.getHorzDiv(widths)]; |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
72 end |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
73 end |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
74 end |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
75 |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
76 function str = getHorzDiv(obj, widths) |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
77 str = TextTable.rowToString(cell(1,obj.nCols), widths, obj.vertDiv, obj.horzDiv); |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
78 str(find(' ' == str)) = '-'; |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
79 str(find('|' == str)) = '+'; |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
80 end |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
81 |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
82 function strArray = getStringArray(obj) |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
83 strArray = cell(size(obj.data)); |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
84 |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
85 for i = 1:obj.nRows |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
86 for j = 1:obj.nCols |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
87 strArray{i,j} = sprintf(obj.fmtArray{i,j}, obj.data{i,j}); |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
88 end |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
89 end |
286
fdee7f66a5e9
plainTextTable working.
Martin Almquist <martin.almquist@it.uu.se>
parents:
271
diff
changeset
|
90 end |
fdee7f66a5e9
plainTextTable working.
Martin Almquist <martin.almquist@it.uu.se>
parents:
271
diff
changeset
|
91 end |
271
3c25601f1fe3
Started adding a function for texttables.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
92 |
465
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
93 methods (Static) |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
94 function str = rowToString(strs, widths, vertDiv, horzDiv) |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
95 % First vertDiv |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
96 if ismember(0, vertDiv) |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
97 str = '| '; |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
98 else |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
99 str = ' '; |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
100 end |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
101 |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
102 % Interior cols |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
103 for j = 1:length(strs) - 1 |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
104 str = [str, sprintf('%*s ', widths(j), strs{j})]; |
271
3c25601f1fe3
Started adding a function for texttables.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
105 |
465
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
106 % Interior vertDiv |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
107 if ismember(j, vertDiv) |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
108 str = [str, '| ']; |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
109 end |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
110 end |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
111 |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
112 % Last col |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
113 str = [str, sprintf('%*s ', widths(end), strs{end})]; |
271
3c25601f1fe3
Started adding a function for texttables.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
114 |
465
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
115 if ismember(length(strs), vertDiv) |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
116 str = [str, '|']; |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
117 end |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
118 |
a5cebdaad10b
Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents:
286
diff
changeset
|
119 str = [str, sprintf('\n')]; |
271
3c25601f1fe3
Started adding a function for texttables.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
120 end |
3c25601f1fe3
Started adding a function for texttables.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
121 end |
3c25601f1fe3
Started adding a function for texttables.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
122 end |