diff --git a/MATLAB/+qc/load_dict.m b/MATLAB/+qc/load_dict.m index c1674074e..c875a07f0 100644 --- a/MATLAB/+qc/load_dict.m +++ b/MATLAB/+qc/load_dict.m @@ -1,4 +1,4 @@ -function dict_string_or_struct = load_dict(dict_string_or_struct) +function dict_string_or_struct = load_dict(dict_string_or_struct, create_dict) % Load dict if d is a string. Otherwise leave d untouched. % % Important: this does not (re)load a dict if the passed in variable is @@ -12,6 +12,10 @@ global plsdata delim = '___'; + if nargin < 2 || isempty(create_dict) + create_dict = false; + end + if ischar(dict_string_or_struct) dict_string_or_struct = strsplit(dict_string_or_struct, ' '); @@ -27,8 +31,14 @@ text = fileread(file_name); dict_string_or_struct = jsondecode(text); dict_string_or_struct = qc.array2row(dict_string_or_struct); + elseif create_dict + if strcmp(suffix, '') + dict_string_or_struct = struct(strcat('dict', delim, 'name'), dict_string_or_struct, 'global', struct()); + else + error('Cannot create dictionary ''%s %s'' since it contains a space', dict_string_or_struct, suffix(2:end)); + end else - dict_string_or_struct = struct(strcat('dict', delim, 'name'), dict_string_or_struct, 'global', struct()); + error('Dictionary ''%s'' does not exist', dict_string_or_struct); end if ~strcmp(suffix, '')