Skip to content

Commit 5c66474

Browse files
author
fangq
committed
jsonlab compact output polish
git-svn-id: http://svn.code.sf.net/p/iso2mesh/code/trunk/jsonlab@450 786e58fb-9377-0410-9ff7-e4ac0ac0635c
1 parent 32b9490 commit 5c66474

File tree

4 files changed

+45
-42
lines changed

4 files changed

+45
-42
lines changed

ChangeLog.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@
66

77
JSONlab ChangeLog (key features marked by *):
88

9+
== JSONlab 1.0.0-RC2 (codename: Optimus - RC2), FangQ <fangq (at) nmr.mgh.harvard.edu> ==
10+
11+
2014/11/17 add Compact option in savejson to output compact JSON format
12+
2014/11/17 add FastArrayParser in loadjson to specify fast parser applicable levels
13+
914
== JSONlab 1.0.0-RC1 (codename: Optimus - RC1), FangQ <fangq (at) nmr.mgh.harvard.edu> ==
1015

1116
2014/09/17 fix several compatibility issues when running on octave versions 3.2-3.8

README.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
*Copyright (c) 2011-2014 Qianqian Fang <fangq at nmr.mgh.harvard.edu>
77
*License: BSD or GNU General Public License version 3 (GPL v3), see License*.txt
8-
*Version: 1.0.0-RC1 (Optimus - RC1)
8+
*Version: 1.0.0-RC1 (Optimus - RC2)
99

1010
-------------------------------------------------------------------------------
1111

examples/jsonlab_selftest.m

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
fprintf(1,'===============================================\n>> %s\n',fname);
99
json=savejson('data',loadjson(fname));
1010
fprintf(1,'%s\n',json);
11+
fprintf(1,'%s\n',savejson('data',loadjson(fname),'Compact',1));
1112
data=loadjson(json);
1213
savejson('data',data,'selftest.json');
1314
data=loadjson('selftest.json');
@@ -19,9 +20,8 @@
1920
fprintf(1,'===============================================\n>> %s\n',fname);
2021
json=saveubjson('data',loadjson(fname));
2122
fprintf(1,'%s\n',json);
22-
data=loadubjson(json)
23-
savejson('',data)
24-
i
23+
data=loadubjson(json);
24+
savejson('',data);
2525
saveubjson('data',data,'selftest.ubj');
2626
data=loadubjson('selftest.ubj');
2727
end

savejson.m

Lines changed: 36 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -109,11 +109,17 @@
109109
if((isstruct(obj) || iscell(obj))&& isempty(rootname) && forceroot)
110110
rootname='root';
111111
end
112-
nl=sprintf('\n');
112+
113+
whitespaces=struct('tab',sprintf('\t'),'newline',sprintf('\n'),'sep',sprintf(',\n'));
113114
if(jsonopt('Compact',0,opt)==1)
114-
nl='';
115+
whitespaces=struct('tab','','newline','','sep',',');
116+
end
117+
if(~isfield(opt,'whitespaces_'))
118+
opt.whitespaces_=whitespaces;
115119
end
116120

121+
nl=whitespaces.newline;
122+
117123
json=obj2json(rootname,obj,rootlevel,opt);
118124
if(rootisarray)
119125
json=sprintf('%s%s',json,nl);
@@ -164,12 +170,10 @@
164170
dim=size(item);
165171
end
166172
len=numel(item);
167-
padding0=repmat(sprintf('\t'),1,level);
168-
padding2=repmat(sprintf('\t'),1,level+1);
169-
nl=sprintf('\n');
170-
if(jsonopt('Compact',0,varargin{:})==1)
171-
padding0='';padding2='';nl='';
172-
end
173+
ws=jsonopt('whitespaces_',struct('tab',sprintf('\t'),'newline',sprintf('\n'),'sep',sprintf(',\n')),varargin{:});
174+
padding0=repmat(ws.tab,1,level);
175+
padding2=repmat(ws.tab,1,level+1);
176+
nl=ws.newline;
173177
if(len>1)
174178
if(~isempty(name))
175179
txt=sprintf('%s"%s": [%s',padding0, checkname(name,varargin{:}),nl); name='';
@@ -207,13 +211,12 @@
207211
dim=size(item);
208212
end
209213
len=numel(item);
210-
padding0=repmat(sprintf('\t'),1,level);
211-
padding2=repmat(sprintf('\t'),1,level+1);
212-
padding1=repmat(sprintf('\t'),1,level+(dim(1)>1)+(len>1));
213-
nl=sprintf('\n');
214-
if(jsonopt('Compact',0,varargin{:})==1)
215-
padding0='';padding1='';padding2='';nl='';
216-
end
214+
ws=struct('tab',sprintf('\t'),'newline',sprintf('\n'));
215+
ws=jsonopt('whitespaces_',ws,varargin{:});
216+
padding0=repmat(ws.tab,1,level);
217+
padding2=repmat(ws.tab,1,level+1);
218+
padding1=repmat(ws.tab,1,level+(dim(1)>1)+(len>1));
219+
nl=ws.newline;
217220

218221
if(~isempty(name))
219222
if(len>1) txt=sprintf('%s"%s": [%s',padding0,checkname(name,varargin{:}),nl); end
@@ -253,15 +256,12 @@
253256
end
254257
item=reshape(item, max(size(item),[1 0]));
255258
len=size(item,1);
256-
nl=sprintf('\n');
257-
padding1=repmat(sprintf('\t'),1,level);
258-
padding0=repmat(sprintf('\t'),1,level+1);
259-
if(jsonopt('Compact',0,varargin{:})==1)
260-
padding0='';
261-
padding1='';
262-
nl='';
263-
end
264-
sep=sprintf(',%s',nl);
259+
ws=struct('tab',sprintf('\t'),'newline',sprintf('\n'),'sep',sprintf(',\n'));
260+
ws=jsonopt('whitespaces_',ws,varargin{:});
261+
padding1=repmat(ws.tab,1,level);
262+
padding0=repmat(ws.tab,1,level+1);
263+
nl=ws.newline;
264+
sep=ws.sep;
265265

266266
if(~isempty(name))
267267
if(len>1) txt=sprintf('%s"%s": [%s',padding1,checkname(name,varargin{:}),nl); end
@@ -297,13 +297,12 @@
297297
if(~isnumeric(item) && ~islogical(item))
298298
error('input is not an array');
299299
end
300-
nl=sprintf('\n');
301-
padding1=repmat(sprintf('\t'),1,level);
302-
padding0=repmat(sprintf('\t'),1,level+1);
303-
if(jsonopt('Compact',0,varargin{:})==1)
304-
padding0='';padding1='';nl='';
305-
end
306-
sep=sprintf(',%s',nl);
300+
ws=struct('tab',sprintf('\t'),'newline',sprintf('\n'),'sep',sprintf(',\n'));
301+
ws=jsonopt('whitespaces_',ws,varargin{:});
302+
padding1=repmat(ws.tab,1,level);
303+
padding0=repmat(ws.tab,1,level+1);
304+
nl=ws.newline;
305+
sep=ws.sep;
307306

308307
if(length(size(item))>2 || issparse(item) || ~isreal(item) || ...
309308
isempty(item) ||jsonopt('ArrayToStruct',0,varargin{:}))
@@ -369,13 +368,12 @@
369368

370369
%%-------------------------------------------------------------------------
371370
function txt=matdata2json(mat,level,varargin)
372-
if(jsonopt('Compact',0,varargin{:})==1)
373-
tab='';
374-
nl='';
375-
else
376-
tab=sprintf('\t');
377-
nl=sprintf('\n');
378-
end
371+
372+
ws=struct('tab',sprintf('\t'),'newline',sprintf('\n'),'sep',sprintf(',\n'));
373+
ws=jsonopt('whitespaces_',ws,varargin{:});
374+
tab=ws.tab;
375+
nl=ws.newline;
376+
379377
if(size(mat,1)==1)
380378
pre='';
381379
post='';

0 commit comments

Comments
 (0)