Skip to content

Commit 63f2e3b

Browse files
Merge pull request #501 from robertoffmoura/compress-m2json-output
Compress output of 'm2json'
2 parents b8d7d6b + 053660a commit 63f2e3b

File tree

1 file changed

+31
-20
lines changed

1 file changed

+31
-20
lines changed

plotly/plotly_aux/m2json.m

+31-20
Original file line numberDiff line numberDiff line change
@@ -3,49 +3,60 @@
33
valstr = struct2json(val);
44
elseif iscell(val)
55
valstr = cell2json(val);
6-
elseif isa(val, 'numeric')
6+
elseif isa(val, "numeric")
77
sz = size(val);
8+
if isa(val,"single")
9+
precision = "7";
10+
else
11+
precision = "15";
12+
end
13+
fmt = "%." + precision + "g,";
814
if length(find(sz>1))>1 % 2D or higher array
9-
valstr = '';
15+
valstr = "";
1016
for i = 1:sz(1)
11-
valsubstr = [sprintf('%.15g, ', val(i,:))];
12-
valsubstr = valsubstr(1:(end-2));
13-
valstr = [valstr ', [' valsubstr ']'];
17+
valsubstr = sprintf(fmt, val(i,:));
18+
valsubstr = valsubstr(1:(end-1));
19+
valstr = valstr + ", [" + valsubstr + "]";
1420
end
1521
valstr = valstr(3:end); % trail leading commas
1622
else
17-
valstr = [sprintf('%.15g, ', val)];
18-
valstr = valstr(1:(end-2));
23+
valstr = [sprintf(fmt, val)];
24+
valstr = valstr(1:(end-1));
1925
end
2026
if length(val)>1
21-
valstr = ['[' valstr ']'];
22-
elseif length(val) == 0
23-
valstr = '[]';
27+
valstr = "[" + valstr + "]";
28+
elseif isempty(val)
29+
valstr = "[]";
2430
end
25-
valstr = strrep(valstr,'-Inf', 'null');
26-
valstr = strrep(valstr, 'Inf', 'null');
27-
valstr = strrep(valstr, 'NaN', 'null');
31+
valstr = strrep(valstr,"-Inf", "null");
32+
valstr = strrep(valstr, "Inf", "null");
33+
valstr = strrep(valstr, "NaN", "null");
2834
elseif ischar(val)
2935
[r, ~] = size(val);
3036
% We can't use checkescape() if we have ['abc'; 'xyz']
3137
if r > 1
3238
valstr = cell2json(cellstr(val));
3339
else
34-
val = checkescape(val); %add escape characters
35-
valstr = ['"' val '"'];
40+
val = checkescape(val); % add escape characters
41+
valstr = sprintf('"%s"', val);
3642
end
3743
elseif islogical(val)
3844
if val
39-
valstr = 'true';
45+
valstr = "true";
4046
else
41-
valstr = 'false';
47+
valstr = "false";
4248
end
4349
elseif isdatetime(val)
4450
valstr = m2json(convertDate(val));
4551
elseif isstring(val)
46-
fh = ifel(isscalar(val),@char,@cellstr);
52+
if isscalar(val)
53+
fh = @char;
54+
else
55+
fh = @cellstr;
56+
end
4757
valstr = m2json(fh(val));
4858
else
49-
valstr = ''; % wtf is it?
50-
warning("Failed to m2json encode class of type: %s",class(val));
59+
valstr = "";
60+
warning("Failed to m2json encode class of type: %s", class(val));
5161
end
62+
end

0 commit comments

Comments
 (0)