|
461 | 461 | end
|
462 | 462 |
|
463 | 463 | %% handle data link
|
464 |
| - if(isfield(data,N_('_DataLink_'))) |
465 |
| - if(ischar(data.N('_DataLink_'))) |
466 |
| - datalink=data.N('_DataLink_'); |
467 |
| - [pat, ref]=regexp(datalink, '(^.+)(:($\d*\..*)*', 'match', 'tokens'); |
468 |
| - if(~isempty(pat) && ~isempty(ref)) |
469 |
| - [fpath, fname, fext]=fileparts(ref{1}); |
| 464 | + if(opt.maxlinklevel>0 && isfield(data,N_('_DataLink_'))) |
| 465 | + if(ischar(data.(N_('_DataLink_')))) |
| 466 | + datalink=data.(N_('_DataLink_')); |
| 467 | + ref=regexp(datalink, '^(?<proto>[a-zA-Z]+://)*(?<path>[^:]+)(?<delim>\:)*(?<jsonpath>\$\d*\..*)*', 'names'); |
| 468 | + if(~isempty(ref.path)) |
| 469 | + uripath=[ref.proto ref.path]; |
| 470 | + [fpath, fname, fext]=fileparts(uripath); |
| 471 | + opt.maxlinklevel=opt.maxlinklevel-1; |
470 | 472 | switch(lower(fext))
|
471 | 473 | case {'.json','.jnii','.jdt','.jdat','.jmsh','.jnirs'}
|
472 |
| - newdata=loadjson([fpath, filesep, fname], varargin{:}); |
| 474 | + newdata=loadjson(uripath, opt); |
473 | 475 | case {'.bjd' ,'.bnii','.jdb','.jbat','.bmsh','.bnirs', '.jamm'}
|
474 |
| - newdata=loadbj([fpath, filesep, fname], varargin{:}); |
| 476 | + newdata=loadbj(uripath, opt); |
475 | 477 | case {'.ubj'}
|
476 |
| - newdata=loadubjson([fpath, filesep, fname], varargin{:}); |
| 478 | + newdata=loadubjson(uripath, opt); |
477 | 479 | case {'.msgpack'}
|
478 |
| - newdata=loadmsgpack([fpath, filesep, fname], varargin{:}); |
| 480 | + newdata=loadmsgpack(uripath, opt); |
479 | 481 | case {'.h5','.hdf5','.snirf'} % this requires EasyH5 toolbox
|
480 |
| - newdata=loadh5([fpath, filesep, fname], varargin{:}); |
| 482 | + newdata=loadh5(uripath, opt); |
481 | 483 | otherwise
|
482 |
| - warning('datalink file is not supported'); |
| 484 | + warning('_DataLink_ file type is not supported'); |
483 | 485 | end
|
484 |
| - if(length(ref)>=2) |
485 |
| - newdata=getfromjsonpath(newdata,ref{2}{1}); |
| 486 | + if(~isempty(ref.jsonpath)) |
| 487 | + newdata=getfromjsonpath(newdata,ref.jsonpath); |
486 | 488 | end
|
487 | 489 | end
|
488 | 490 | end
|
|
0 commit comments