Mercurial > repos > public > sbplib
annotate TextTable.m @ 577:e45c9b56d50d feature/grids
Add an Empty grid class
The need turned up for the flexural code when we may or may not have a grid for the open water and want to plot that solution.
In case there is no open water we need an empty grid to plot the empty gridfunction against to avoid errors.
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Thu, 07 Sep 2017 09:16:12 +0200 |
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 |