From 8fe81617ba93e45ffb674c1fcb9e8be63762a95c Mon Sep 17 00:00:00 2001 From: MichelJuillard <michel.juillard@mjui.fr> Date: Fri, 14 Oct 2022 09:36:42 +0200 Subject: [PATCH] fix compatibility with Octave v7.2 --- src/initialize_mdbnomics.m | 16 +++++++++------- src/utils/fetch_series_page.m | 16 ++++++++-------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/src/initialize_mdbnomics.m b/src/initialize_mdbnomics.m index da46695..633caac 100644 --- a/src/initialize_mdbnomics.m +++ b/src/initialize_mdbnomics.m @@ -50,14 +50,16 @@ end P = cellfun(@(c)[mdbnomics_src_root c], p, 'uni', false); addpath(P{:}); -% Check minimal MATLAB requirements. -if matlab_ver_less_than('8.5') - error('The minimum MATLAB requirement of this package is R2015a.'); -end +if ~isoctave() + % Check minimal MATLAB requirements. + if matlab_ver_less_than('8.5') + error('The minimum MATLAB requirement of this package is R2015a.'); + end -% Add jsonlab if MATLAB version < R2016b -if matlab_ver_less_than('9.1') - addpath([mdbnomics_src_root '/../contrib/jsonlab']); + % Add jsonlab if MATLAB version < R2016b + if matlab_ver_less_than('9.1') + addpath([mdbnomics_src_root '/../contrib/jsonlab']); + end end mdb_options.api_base_url = 'https://api.db.nomics.world'; diff --git a/src/utils/fetch_series_page.m b/src/utils/fetch_series_page.m index 8ecfc35..94d73b0 100644 --- a/src/utils/fetch_series_page.m +++ b/src/utils/fetch_series_page.m @@ -30,7 +30,7 @@ function response_json = fetch_series_page(series_endpoint_url, offset) % You should have received a copy of the GNU General Public License % along with Dynare. If not, see <http://www.gnu.org/licenses/>. -if contains(series_endpoint_url, '?') +if strfind(series_endpoint_url, '?') series_page_url = sprintf('%s%soffset=%i', series_endpoint_url, '&', offset); else series_page_url = sprintf('%s%soffset=%i', series_endpoint_url, '?', offset); @@ -38,18 +38,18 @@ end options = weboptions('ContentType','json'); try - response_json = webread(series_page_url, options); + if isoctave() + disp(webread(series_page_url, options)) + response_json = jsondecode(webread(series_page_url, options)); + else + response_json = webread(series_page_url, options); + end catch ME error_message = ['Could not fetch data from URL: ' series_page_url ' because: ' ME.identifier]; error(error_message); end -if isempty(response_json.errors) - series_page = response_json.series; - if ~isempty(series_page) - assert(series_page.offset == offset); - end -else +if ~isempty(response_json.errors) error_ = response_json.errors; if ~isempty(error_.dataset_code) && isempty(error_.series_code) error('%s for: %s. Please revise your input for dataset code.', error_.message, error_.dataset_code); -- GitLab