Skip to content
Snippets Groups Projects
Verified Commit 1ad1fbe8 authored by Thomas Lambert's avatar Thomas Lambert :helicopter:
Browse files

refactor(options): improve option validation

parent 95ea8905
No related branches found
No related tags found
No related merge requests found
...@@ -137,19 +137,18 @@ DEFAULT_LIMIT = 'last'; ...@@ -137,19 +137,18 @@ DEFAULT_LIMIT = 'last';
ALLOWED_METHODS = {'Viterna'}; ALLOWED_METHODS = {'Viterna'};
ALLOWED_LIMITS = {'stall', 'last'}; ALLOWED_LIMITS = {'stall', 'last'};
% Option validator
validMethod = @(x) any(validatestring(x, ALLOWED_METHODS, mfilename()));
validLimit = @(x) any(validatestring(x, ALLOWED_LIMITS, mfilename()));
% Parse options % Parse options
p = inputParser; p = inputParser;
addParameter(p,'method',DEFAULT_METHOD); addParameter(p,'method',DEFAULT_METHOD, validMethod);
addParameter(p,'limit',DEFAULT_LIMIT); addParameter(p,'limit',DEFAULT_LIMIT, validLimit);
parse(p,varargin{:}); parse(p,varargin{:});
method = p.Results.method; method = p.Results.method;
limit = p.Results.limit; limit = p.Results.limit;
% Validate options
method = validatestring(method, ALLOWED_METHODS, mfilename(), 'method');
limit = validatestring(limit, ALLOWED_LIMITS, mfilename(), 'limit');
end end
......
...@@ -124,16 +124,18 @@ DEFAULT_SPACING = 'halfcosine'; ...@@ -124,16 +124,18 @@ DEFAULT_SPACING = 'halfcosine';
DEFAULT_ZEROTE = true; DEFAULT_ZEROTE = true;
ALLOWED_SPACING = {'linear', 'cosine', 'halfcosine'}; ALLOWED_SPACING = {'linear', 'cosine', 'halfcosine'};
% Option validator
validLogical = @(x) validateattributes(x, {'logical'},{'scalar'}, mfilename());
validSpacing = @(x) any(validatestring(x, ALLOWED_SPACING, mfilename()));
% Parse options % Parse options
p = inputParser; p = inputParser;
addParameter(p,'spacing',DEFAULT_SPACING); addParameter(p,'spacing',DEFAULT_SPACING, validSpacing);
addParameter(p,'zerote',DEFAULT_ZEROTE); addParameter(p,'zerote',DEFAULT_ZEROTE, validLogical);
parse(p,varargin{:}); parse(p,varargin{:});
spacing = p.Results.spacing; spacing = p.Results.spacing;
zerote = p.Results.zerote; zerote = p.Results.zerote;
% Validate options
spacing = validatestring(spacing, ALLOWED_SPACING, mfilename(), 'spacing');
validateattributes(zerote, {'logical'},{'scalar'}, mfilename(), 'zerote')
end end
...@@ -86,15 +86,15 @@ import af_tools.utils.* ...@@ -86,15 +86,15 @@ import af_tools.utils.*
DEFAULT_SPACING = 'halfcosine'; DEFAULT_SPACING = 'halfcosine';
ALLOWED_SPACING = {'linear', 'cosine', 'halfcosine'}; ALLOWED_SPACING = {'linear', 'cosine', 'halfcosine'};
% Option validator
validSpacing = @(x) any(validatestring(x, ALLOWED_SPACING, mfilename()));
% Parse options % Parse options
p = inputParser; p = inputParser;
addParameter(p,'spacing',DEFAULT_SPACING); addParameter(p,'spacing',DEFAULT_SPACING, validSpacing);
parse(p,varargin{:}); parse(p,varargin{:});
spacing = p.Results.spacing; spacing = p.Results.spacing;
% Validate options
spacing = validatestring(spacing, ALLOWED_SPACING, mfilename(), 'spacing');
end end
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment