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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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