Mercurial > octave
annotate scripts/general/inputParser.m @ 21546:f7f97d7e9294
doc: Wrap m-file docstrings to 79 characters + newline (80 total).
* isrecording.m, soundsc.m, delaunay3.m, cell2mat.m, cumtrapz.m, del2.m,
inputParser.m, interp1.m, interp3.m, narginchk.m, profile.m,
validateattributes.m, delaunayn.m, tsearchn.m, voronoin.m, brighten.m,
cmunique.m, colorcube.m, imfinfo.m, imshow.m, edit.m, orderfields.m, run.m,
warning_ids.m, ode23.m, ode45.m, odeget.m, integrate_adaptive.m, kahan.m,
ode_struct_value_check.m, runge_kutta_23.m, fminunc.m, fsolve.m, fzero.m,
pkg.m, build.m, specular.m, view.m, bar.m, barh.m, contour3.m, isosurface.m,
line.m, pie.m, pie3.m, quiver3.m, scatter.m, scatter3.m, stem3.m, stemleaf.m,
surfl.m, tetramesh.m, isfigure.m, mkpp.m, pchip.m, residue.m, splinefit.m,
rmpref.m, unique.m, eigs.m, ilu.m, factor.m, factorial.m, gallery.m, hankel.m,
histc.m, ols.m, finv.m, fpdf.m, kruskal_wallis_test.m, weekday.m:
Wrap m-file docstrings to 79 characters + newline (80 total).
author | Rik <rik@octave.org> |
---|---|
date | Sun, 27 Mar 2016 15:50:01 -0700 |
parents | 04923b7b0d89 |
children | 3d60ed163b70 |
rev | line source |
---|---|
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
1 ## Copyright (C) 2011-2014 Carnë Draug |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
2 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
3 ## This file is part of Octave. |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
4 ## |
19833
9fc020886ae9
maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19597
diff
changeset
|
5 ## Octave is free software; you can redistribute it and/or modify it |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
6 ## under the terms of the GNU General Public License as published by |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
7 ## the Free Software Foundation; either version 3 of the License, or (at |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
8 ## your option) any later version. |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
9 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
10 ## Octave is distributed in the hope that it will be useful, but |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
13 ## General Public License for more details. |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
14 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
15 ## You should have received a copy of the GNU General Public License |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
16 ## along with Octave; see the file COPYING. If not, see |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
17 ## <http://www.gnu.org/licenses/>. |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
18 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
19 ## -*- texinfo -*- |
20852
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20735
diff
changeset
|
20 ## @deftypefn {} {@var{p} =} inputParser () |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
21 ## Create object @var{p} of the inputParser class. |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
22 ## |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
23 ## This class is designed to allow easy parsing of function arguments. The |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
24 ## class supports four types of arguments: |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
25 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
26 ## @enumerate |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
27 ## @item mandatory (see @command{addRequired}); |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
28 ## |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
29 ## @item optional (see @command{addOptional}); |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
30 ## |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
31 ## @item named (see @command{addParamValue}); |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
32 ## |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
33 ## @item switch (see @command{addSwitch}). |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
34 ## @end enumerate |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
35 ## |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
36 ## After defining the function API with these methods, the supplied arguments |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
37 ## can be parsed with the @command{parse} method and the parsing results |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
38 ## accessed with the @command{Results} accessor. |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
39 ## |
19039
f45b60897316
dox: fix inputParser help text for newer Texinfo versions.
Carnë Draug <carandraug@octave.org>
parents:
19037
diff
changeset
|
40 ## @end deftypefn |
20852
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20735
diff
changeset
|
41 ## @deftypefn {} {} inputParser.Parameters |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
42 ## Return list of parameter names already defined. |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
43 ## |
19039
f45b60897316
dox: fix inputParser help text for newer Texinfo versions.
Carnë Draug <carandraug@octave.org>
parents:
19037
diff
changeset
|
44 ## @end deftypefn |
20852
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20735
diff
changeset
|
45 ## @deftypefn {} {} inputParser.Results |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
46 ## Return structure with argument names as fieldnames and corresponding values. |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
47 ## |
19039
f45b60897316
dox: fix inputParser help text for newer Texinfo versions.
Carnë Draug <carandraug@octave.org>
parents:
19037
diff
changeset
|
48 ## @end deftypefn |
20852
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20735
diff
changeset
|
49 ## @deftypefn {} {} inputParser.Unmatched |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
50 ## Return structure similar to @command{Results}, but for unmatched parameters. |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
51 ## See the @command{KeepUnmatched} property. |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
52 ## |
19039
f45b60897316
dox: fix inputParser help text for newer Texinfo versions.
Carnë Draug <carandraug@octave.org>
parents:
19037
diff
changeset
|
53 ## @end deftypefn |
20852
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20735
diff
changeset
|
54 ## @deftypefn {} {} inputParser.UsingDefaults |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
55 ## Return cell array with the names of arguments that are using default values. |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
56 ## |
19039
f45b60897316
dox: fix inputParser help text for newer Texinfo versions.
Carnë Draug <carandraug@octave.org>
parents:
19037
diff
changeset
|
57 ## @end deftypefn |
20852
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20735
diff
changeset
|
58 ## @deftypefn {} {} inputParser.CaseSensitive = @var{boolean} |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
59 ## Set whether matching of argument names should be case sensitive. Defaults |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
60 ## to false. |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
61 ## |
19039
f45b60897316
dox: fix inputParser help text for newer Texinfo versions.
Carnë Draug <carandraug@octave.org>
parents:
19037
diff
changeset
|
62 ## @end deftypefn |
20852
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20735
diff
changeset
|
63 ## @deftypefn {} {} inputParser.FunctionName = @var{name} |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
64 ## Set function name to be used in error messages; Defaults to empty string. |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
65 ## |
19039
f45b60897316
dox: fix inputParser help text for newer Texinfo versions.
Carnë Draug <carandraug@octave.org>
parents:
19037
diff
changeset
|
66 ## @end deftypefn |
20852
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20735
diff
changeset
|
67 ## @deftypefn {} {} inputParser.KeepUnmatched = @var{boolean} |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
68 ## Set whether an error should be given for non-defined arguments. Defaults to |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
69 ## false. If set to true, the extra arguments can be accessed through |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
70 ## @code{Unmatched} after the @code{parse} method. Note that since |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
71 ## @command{Switch} and @command{ParamValue} arguments can be mixed, it is |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
72 ## not possible to know the unmatched type. If argument is found unmatched |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
73 ## it is assumed to be of the @command{ParamValue} type and it is expected to |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
74 ## be followed by a value. |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
75 ## |
19039
f45b60897316
dox: fix inputParser help text for newer Texinfo versions.
Carnë Draug <carandraug@octave.org>
parents:
19037
diff
changeset
|
76 ## @end deftypefn |
20852
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20735
diff
changeset
|
77 ## @deftypefn {} {} inputParser.StructExpand = @var{boolean} |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
78 ## Set whether a structure can be passed to the function instead of |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
79 ## parameter/value pairs. Defaults to true. Not implemented yet. |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
80 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
81 ## The following example shows how to use this class: |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
82 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
83 ## @example |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
84 ## @group |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
85 ## function check (varargin) |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
86 ## @c The next two comments need to be indented by one for alignment |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
87 ## p = inputParser (); # create object |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
88 ## p.FunctionName = "check"; # set function name |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
89 ## p.addRequired ("pack", @@ischar); # mandatory argument |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
90 ## p.addOptional ("path", pwd(), @@ischar); # optional argument |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
91 ## |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
92 ## ## create a function handle to anonymous functions for validators |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
93 ## val_mat = @@(x) isvector (x) && all (x <= 1) && all (x >= 0); |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
94 ## p.addOptional ("mat", [0 0], val_mat); |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
95 ## |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
96 ## ## create two arguments of type "ParamValue" |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
97 ## val_type = @@(x) any (strcmp (x, @{"linear", "quadratic"@})); |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
98 ## p.addParamValue ("type", "linear", val_type); |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
99 ## val_verb = @@(x) any (strcmp (x, @{"low", "medium", "high"@})); |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
100 ## p.addParamValue ("tolerance", "low", val_verb); |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
101 ## |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
102 ## ## create a switch type of argument |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
103 ## p.addSwitch ("verbose"); |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
104 ## |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
105 ## p.parse (varargin@{:@}); # Run created parser on inputs |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
106 ## |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
107 ## ## the rest of the function can access inputs by using p.Results. |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
108 ## ## for example, get the tolerance input with p.Results.tolerance |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
109 ## endfunction |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
110 ## @end group |
21316
6cc091426e52
doc: Periodic grammarcheck of documentation.
Rik <rik@octave.org>
parents:
20937
diff
changeset
|
111 ## @end example |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
112 ## |
21316
6cc091426e52
doc: Periodic grammarcheck of documentation.
Rik <rik@octave.org>
parents:
20937
diff
changeset
|
113 ## @example |
6cc091426e52
doc: Periodic grammarcheck of documentation.
Rik <rik@octave.org>
parents:
20937
diff
changeset
|
114 ## @group |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
115 ## check ("mech"); # valid, use defaults for other arguments |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
116 ## check (); # error, one argument is mandatory |
19833
9fc020886ae9
maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19597
diff
changeset
|
117 ## check (1); # error, since ! ischar |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
118 ## check ("mech", "~/dev"); # valid, use defaults for other arguments |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
119 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
120 ## check ("mech", "~/dev", [0 1 0 0], "type", "linear"); # valid |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
121 ## |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
122 ## ## following is also valid. Note how the Switch argument type can |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
123 ## ## be mixed into or before the ParamValue argument type (but it |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
124 ## ## must still appear after any Optional argument). |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
125 ## check ("mech", "~/dev", [0 1 0 0], "verbose", "tolerance", "high"); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
126 ## |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
127 ## ## following returns an error since not all optional arguments, |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
128 ## ## `path' and `mat', were given before the named argument `type'. |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
129 ## check ("mech", "~/dev", "type", "linear"); |
21316
6cc091426e52
doc: Periodic grammarcheck of documentation.
Rik <rik@octave.org>
parents:
20937
diff
changeset
|
130 ## @end group |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
131 ## @end example |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
132 ## |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
133 ## @emph{Note 1}: A function can have any mixture of the four API types but |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
134 ## they must appear in a specific order. @command{Required} arguments must be |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
135 ## first and can be followed by any @command{Optional} arguments. Only |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
136 ## the @command{ParamValue} and @command{Switch} arguments may be mixed |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
137 ## together and they must appear at the end. |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
138 ## |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
139 ## @emph{Note 2}: If both @command{Optional} and @command{ParamValue} arguments |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
140 ## are mixed in a function API then once a string Optional argument fails to |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
141 ## validate it will be considered the end of the @command{Optional} |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
142 ## arguments. The remaining arguments will be compared against any |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
143 ## @command{ParamValue} or @command{Switch} arguments. |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
144 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
145 ## @seealso{nargin, validateattributes, validatestring, varargin} |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
146 ## @end deftypefn |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
147 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
148 ## -*- texinfo -*- |
20852
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20735
diff
changeset
|
149 ## @deftypefn {} {} addOptional (@var{argname}, @var{default}) |
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20735
diff
changeset
|
150 ## @deftypefnx {} {} addOptional (@var{argname}, @var{default}, @var{validator}) |
21546
f7f97d7e9294
doc: Wrap m-file docstrings to 79 characters + newline (80 total).
Rik <rik@octave.org>
parents:
21508
diff
changeset
|
151 ## Add new optional argument to the object @var{parser} of the class |
f7f97d7e9294
doc: Wrap m-file docstrings to 79 characters + newline (80 total).
Rik <rik@octave.org>
parents:
21508
diff
changeset
|
152 ## inputParser to implement an ordered arguments type of API |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
153 ## |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
154 ## @var{argname} must be a string with the name of the new argument. The order |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
155 ## in which new arguments are added with @command{addOptional}, represents the |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
156 ## expected order of arguments. |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
157 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
158 ## @var{default} will be the value used when the argument is not specified. |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
159 ## |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
160 ## @var{validator} is an optional anonymous function to validate the given |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
161 ## values for the argument with name @var{argname}. Alternatively, a |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
162 ## function name can be used. |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
163 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
164 ## See @command{help inputParser} for examples. |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
165 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
166 ## @emph{Note}: if a string argument does not validate, it will be considered a |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
167 ## ParamValue key. If an optional argument is not given a validator, anything |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
168 ## will be valid, and so any string will be considered will be the value of the |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
169 ## optional argument (in @sc{matlab}, if no validator is given and argument is |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
170 ## a string it will also be considered a ParamValue key). |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
171 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
172 ## @end deftypefn |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
173 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
174 ## -*- texinfo -*- |
20852
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20735
diff
changeset
|
175 ## @deftypefn {} {} addParamValue (@var{argname}, @var{default}) |
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20735
diff
changeset
|
176 ## @deftypefnx {} {} addParamValue (@var{argname}, @var{default}, @var{validator}) |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
177 ## Add new parameter to the object @var{parser} of the class inputParser to |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
178 ## implement a name/value pair type of API. |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
179 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
180 ## @var{argname} must be a string with the name of the new parameter. |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
181 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
182 ## @var{default} will be the value used when the parameter is not specified. |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
183 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
184 ## @var{validator} is an optional function handle to validate the given values |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
185 ## for the parameter with name @var{argname}. Alternatively, a function name |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
186 ## can be used. |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
187 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
188 ## See @command{help inputParser} for examples. |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
189 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
190 ## @end deftypefn |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
191 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
192 ## -*- texinfo -*- |
20852
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20735
diff
changeset
|
193 ## @deftypefn {} {} addRequired (@var{argname}) |
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20735
diff
changeset
|
194 ## @deftypefnx {} {} addRequired (@var{argname}, @var{validator}) |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
195 ## Add new mandatory argument to the object @var{parser} of inputParser class. |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
196 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
197 ## This method belongs to the inputParser class and implements an ordered |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
198 ## arguments type of API. |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
199 ## |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
200 ## @var{argname} must be a string with the name of the new argument. The order |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
201 ## in which new arguments are added with @command{addrequired}, represents the |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
202 ## expected order of arguments. |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
203 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
204 ## @var{validator} is an optional function handle to validate the given values |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
205 ## for the argument with name @var{argname}. Alternatively, a function name |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
206 ## can be used. |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
207 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
208 ## See @command{help inputParser} for examples. |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
209 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
210 ## @emph{Note}: this can be used together with the other type of arguments but |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
211 ## it must be the first (see @command{@@inputParser}). |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
212 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
213 ## @end deftypefn |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
214 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
215 ## -*- texinfo -*- |
20852
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20735
diff
changeset
|
216 ## @deftypefn {} {} addSwitch (@var{argname}) |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
217 ## Add new switch type of argument to the object @var{parser} of inputParser |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
218 ## class. |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
219 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
220 ## This method belongs to the inputParser class and implements a switch |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
221 ## arguments type of API. |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
222 ## |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
223 ## @var{argname} must be a string with the name of the new argument. Arguments |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
224 ## of this type can be specified at the end, after @code{Required} and |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
225 ## @code{Optional}, and mixed between the @code{ParamValue}. They default to |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
226 ## false. If one of the arguments supplied is a string like @var{argname}, |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
227 ## then after parsing the value of @var{parse}.Results.@var{argname} will be |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
228 ## true. |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
229 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
230 ## See @command{help inputParser} for examples. |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
231 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
232 ## @end deftypefn |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
233 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
234 ## -*- texinfo -*- |
20852
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20735
diff
changeset
|
235 ## @deftypefn {} {} parse (@var{varargin}) |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
236 ## Parses and validates list of arguments according to object @var{parser} of |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
237 ## the class inputParser. |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
238 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
239 ## After parsing, the results can be accessed with the @command{Results} |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
240 ## accessor. See @command{help inputParser} for a more complete description. |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
241 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
242 ## @end deftypefn |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
243 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
244 ## Author: Carnë Draug <carandraug@octave.org> |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
245 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
246 classdef inputParser < handle |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
247 properties |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
248 ## TODO set input checking for this properties |
19833
9fc020886ae9
maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19597
diff
changeset
|
249 CaseSensitive = false; |
9fc020886ae9
maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19597
diff
changeset
|
250 FunctionName = ""; |
9fc020886ae9
maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19597
diff
changeset
|
251 KeepUnmatched = false; |
9fc020886ae9
maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19597
diff
changeset
|
252 # PartialMatching = true; # TODO unimplemented |
9fc020886ae9
maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19597
diff
changeset
|
253 # StructExpand = true; # TODO unimplemented |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
254 endproperties |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
255 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
256 properties (SetAccess = protected) |
19833
9fc020886ae9
maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19597
diff
changeset
|
257 Parameters = cell (); |
9fc020886ae9
maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19597
diff
changeset
|
258 Results = struct (); |
9fc020886ae9
maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19597
diff
changeset
|
259 Unmatched = struct (); |
9fc020886ae9
maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19597
diff
changeset
|
260 UsingDefaults = cell (); |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
261 endproperties |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
262 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
263 properties (Access = protected) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
264 ## Since Required and Optional are ordered, they get a cell array of |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
265 ## structs with the fields "name", "def" (default), and "val" (validator). |
19833
9fc020886ae9
maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19597
diff
changeset
|
266 Required = cell (); |
9fc020886ae9
maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19597
diff
changeset
|
267 Optional = cell (); |
20470
784ed55fdde8
inputParser.m: Fix typo
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19833
diff
changeset
|
268 ## ParamValue and Switch are unordered so we have a struct whose fieldnames |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
269 ## are the argname, and values are a struct with fields "def" and "val" |
19833
9fc020886ae9
maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19597
diff
changeset
|
270 ParamValue = struct (); |
9fc020886ae9
maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19597
diff
changeset
|
271 Switch = struct (); |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
272 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
273 ## List of ParamValues and Switch names to ease searches |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
274 ParamValueNames = cell (); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
275 SwitchNames = cell (); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
276 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
277 ## When checking for fieldnames in a Case Insensitive way, this variable |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
278 ## holds the correct identifier for the last searched named using the |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
279 ## is_argname method. |
19833
9fc020886ae9
maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19597
diff
changeset
|
280 last_name = ""; |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
281 endproperties |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
282 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
283 properties (Access = protected, Constant = true) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
284 ## Default validator, always returns scalar true. |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
285 def_val = @() true; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
286 endproperties |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
287 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
288 methods |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
289 function addRequired (this, name, val = inputParser.def_val) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
290 if (nargin < 2 || nargin > 3) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
291 print_usage (); |
20937
3b2cc6ef0624
use numfields (x) instead of numel (fieldnames (x))
John W. Eaton <jwe@octave.org>
parents:
20852
diff
changeset
|
292 elseif (numel (this.Optional) || numfields (this.ParamValue) |
3b2cc6ef0624
use numfields (x) instead of numel (fieldnames (x))
John W. Eaton <jwe@octave.org>
parents:
20852
diff
changeset
|
293 || numfields (this.Switch)) |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
294 error (["inputParser.addRequired: can't have a Required argument " ... |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
295 "after Optional, ParamValue, or Switch"]); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
296 endif |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
297 this.validate_name ("Required", name); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
298 this.Required{end+1} = struct ("name", name, "val", val); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
299 endfunction |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
300 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
301 function addOptional (this, name, def, val = inputParser.def_val) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
302 if (nargin < 3 || nargin > 4) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
303 print_usage (); |
20937
3b2cc6ef0624
use numfields (x) instead of numel (fieldnames (x))
John W. Eaton <jwe@octave.org>
parents:
20852
diff
changeset
|
304 elseif (numfields (this.ParamValue) || numfields (this.Switch)) |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
305 error (["inputParser.Optional: can't have Optional arguments " ... |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
306 "after ParamValue or Switch"]); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
307 endif |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
308 this.validate_name ("Optional", name); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
309 this.Optional{end+1} = struct ("name", name, "def", def, "val", val); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
310 endfunction |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
311 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
312 function addParamValue (this, name, def, val = inputParser.def_val) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
313 if (nargin < 3 || nargin > 4) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
314 print_usage (); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
315 endif |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
316 this.validate_name ("ParamValue", name); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
317 this.ParamValue.(name).def = def; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
318 this.ParamValue.(name).val = val; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
319 endfunction |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
320 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
321 function addSwitch (this, name) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
322 if (nargin != 2) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
323 print_usage (); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
324 endif |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
325 this.validate_name ("Switch", name); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
326 this.Switch.(name).def = false; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
327 endfunction |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
328 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
329 function parse (this, varargin) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
330 if (numel (varargin) < numel (this.Required)) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
331 if (this.FunctionName) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
332 print_usage (this.FunctionName); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
333 else |
20726
25d676f9619c
Preface error() messages with name of function when possible.
Rik <rik@octave.org>
parents:
20575
diff
changeset
|
334 this.error ("inputParser.parse: not enough input arguments"); |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
335 endif |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
336 endif |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
337 pnargin = numel (varargin); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
338 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
339 this.ParamValueNames = fieldnames (this.ParamValue); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
340 this.SwitchNames = fieldnames (this.Switch); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
341 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
342 ## Evaluate the Required arguments first |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
343 nReq = numel (this.Required); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
344 for idx = 1:nReq |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
345 req = this.Required{idx}; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
346 this.validate_arg (req.name, req.val, varargin{idx}); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
347 endfor |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
348 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
349 vidx = nReq; # current index in varargin |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
350 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
351 ## Search for a list of Optional arguments |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
352 idx = 0; # current index on the array of Optional |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
353 nOpt = numel (this.Optional); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
354 while (vidx < pnargin && idx < nOpt) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
355 opt = this.Optional{++idx}; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
356 in = varargin{++vidx}; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
357 if (! opt.val (in)) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
358 ## If it does not match there's two options: |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
359 ## 1) input is actually wrong and we should error; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
360 ## 2) it's a ParamValue or Switch name and we should use the |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
361 ## the default for the rest. |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
362 if (ischar (in)) |
20735
418ae0cb752f
Replace ++,-- with in-place operators for performance.
Rik <rik@octave.org>
parents:
20726
diff
changeset
|
363 idx -= 1; |
418ae0cb752f
Replace ++,-- with in-place operators for performance.
Rik <rik@octave.org>
parents:
20726
diff
changeset
|
364 vidx -= 1; |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
365 break |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
366 else |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
367 this.error (sprintf ("failed validation of %s", |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
368 toupper (opt.name))); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
369 endif |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
370 endif |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
371 this.Results.(opt.name) = in; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
372 endwhile |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
373 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
374 ## Fill in with defaults of missing Optional |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
375 while (idx++ < nOpt) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
376 opt = this.Optional{idx}; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
377 this.UsingDefaults{end+1} = opt.name; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
378 this.Results.(opt.name) = opt.def; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
379 endwhile |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
380 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
381 ## Search unordered Options (Switch and ParamValue) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
382 while (vidx++ < pnargin) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
383 name = varargin{vidx}; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
384 if (this.is_argname ("ParamValue", name)) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
385 if (vidx++ > pnargin) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
386 this.error (sprintf ("no matching value for option '%s'", |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
387 toupper (name))); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
388 endif |
19833
9fc020886ae9
maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19597
diff
changeset
|
389 this.validate_arg (this.last_name, |
9fc020886ae9
maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19597
diff
changeset
|
390 this.ParamValue.(this.last_name).val, |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
391 varargin{vidx}); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
392 elseif (this.is_argname ("Switch", name)) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
393 this.Results.(this.last_name) = true; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
394 else |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
395 if (vidx++ < pnargin && this.KeepUnmatched) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
396 this.Unmatched.(name) = varargin{vidx}; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
397 else |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
398 this.error (sprintf ("argument '%s' is not a valid parameter", |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
399 toupper (name))); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
400 endif |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
401 endif |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
402 endwhile |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
403 ## Add them to the UsingDeafults list |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
404 this.add_missing ("ParamValue"); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
405 this.add_missing ("Switch"); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
406 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
407 endfunction |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
408 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
409 function display (this) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
410 if (nargin > 1) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
411 print_usage (); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
412 endif |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
413 printf ("inputParser object with properties:\n\n"); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
414 b2s = @(x) ifelse (any (x), "true", "false"); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
415 printf ([" CaseSensitive : %s\n FunctionName : %s\n" ... |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
416 " KeepUnmatched : %s\n PartialMatching : %s\n" ... |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
417 " StructExpand : %s\n\n"], |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
418 b2s (this.CaseSensitive), b2s (this.FunctionName), |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
419 b2s (this.KeepUnmatched), b2s (this.PartialMatching), |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
420 b2s (this.StructExpand)); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
421 printf ("Defined parameters:\n\n {%s}\n", |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
422 strjoin (this.Parameters, ", ")); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
423 endfunction |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
424 endmethods |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
425 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
426 methods (Access = private) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
427 function validate_name (this, type, name) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
428 if (! isvarname (name)) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
429 error ("inputParser.add%s: NAME is an invalid identifier", method); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
430 elseif (any (strcmpi (this.Parameters, name))) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
431 ## Even if CaseSensitive is "on", we still shouldn't allow |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
432 ## two args with the same name. |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
433 error ("inputParser.add%s: argname '%s' has already been specified", |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
434 type, name); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
435 endif |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
436 this.Parameters{end+1} = name; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
437 endfunction |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
438 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
439 function validate_arg (this, name, val, in) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
440 if (! val (in)) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
441 this.error (sprintf ("failed validation of %s", toupper (name))); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
442 endif |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
443 this.Results.(name) = in; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
444 endfunction |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
445 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
446 function r = is_argname (this, type, name) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
447 if (this.CaseSensitive) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
448 r = isfield (this.(type), name); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
449 this.last_name = name; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
450 else |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
451 fnames = this.([type "Names"]); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
452 l = strcmpi (name, fnames); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
453 r = any (l(:)); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
454 if (r) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
455 this.last_name = fnames{l}; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
456 endif |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
457 endif |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
458 endfunction |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
459 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
460 function add_missing (this, type) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
461 unmatched = setdiff (fieldnames (this.(type)), fieldnames (this.Results)); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
462 for namec = unmatched(:)' |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
463 name = namec{1}; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
464 this.UsingDefaults{end+1} = name; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
465 this.Results.(name) = this.(type).(name).def; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
466 endfor |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
467 endfunction |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
468 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
469 function error (this, msg) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
470 where = ""; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
471 if (this.FunctionName) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
472 where = [this.FunctionName ": "]; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
473 endif |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
474 error ("%s%s", where, msg); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
475 endfunction |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
476 endmethods |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
477 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
478 endclassdef |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
479 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
480 %!function p = create_p () |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
481 %! p = inputParser (); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
482 %! p.CaseSensitive = true; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
483 %! p.addRequired ("req1", @(x) ischar (x)); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
484 %! p.addOptional ("op1", "val", @(x) any (strcmp (x, {"val", "foo"}))); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
485 %! p.addOptional ("op2", 78, @(x) x > 50); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
486 %! p.addSwitch ("verbose"); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
487 %! p.addParamValue ("line", "tree", @(x) any (strcmp (x, {"tree", "circle"}))); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
488 %!endfunction |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
489 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
490 ## check normal use, only required are given |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
491 %!test |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
492 %! p = create_p (); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
493 %! p.parse ("file"); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
494 %! r = p.Results; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
495 %! assert (r.req1, "file"); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
496 %! assert (sort (p.UsingDefaults), sort ({"op1", "op2", "verbose", "line"})); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
497 %! assert ({r.req1, r.op1, r.op2, r.verbose, r.line}, |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
498 %! {"file", "val", 78, false, "tree"}); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
499 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
500 ## check normal use, but give values different than defaults |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
501 %!test |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
502 %! p = create_p (); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
503 %! p.parse ("file", "foo", 80, "line", "circle", "verbose"); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
504 %! r = p.Results; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
505 %! assert ({r.req1, r.op1, r.op2, r.verbose, r.line}, |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
506 %! {"file", "foo", 80, true, "circle"}); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
507 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
508 ## check optional is skipped and considered ParamValue if unvalidated string |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
509 %!test |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
510 %! p = create_p (); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
511 %! p.parse ("file", "line", "circle"); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
512 %! r = p.Results; |
19597
db92e7e28e1f
strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents:
19039
diff
changeset
|
513 %! assert ({r.req1, r.op1, r.op2, r.verbose, r.line}, |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
514 %! {"file", "val", 78, false, "circle"}); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
515 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
516 ## check case insensitivity |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
517 %!test |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
518 %! p = create_p (); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
519 %! p.CaseSensitive = false; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
520 %! p.parse ("file", "foo", 80, "LiNE", "circle", "vERbOSe"); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
521 %! r = p.Results; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
522 %! assert ({r.req1, r.op1, r.op2, r.verbose, r.line}, |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
523 %! {"file", "foo", 80, true, "circle"}); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
524 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
525 ## check KeepUnmatched |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
526 %!test |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
527 %! p = create_p (); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
528 %! p.KeepUnmatched = true; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
529 %! p.parse ("file", "foo", 80, "line", "circle", "verbose", "extra", 50); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
530 %! assert (p.Unmatched.extra, 50) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
531 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
532 ## check error when missing required |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
533 %!error <not enough input arguments> |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
534 %! p = create_p (); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
535 %! p.parse (); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
536 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
537 ## check error when given required does not validate |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
538 %!error <failed validation of > |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
539 %! p = create_p (); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
540 %! p.parse (50); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
541 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
542 ## check error when given optional does not validate |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
543 %!error <is not a valid parameter> |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
544 %! p = create_p (); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
545 %! p.parse ("file", "no-val"); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
546 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
547 ## check error when given ParamValue does not validate |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
548 %!error <failed validation of > |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
549 %! p = create_p (); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
550 %! p.parse ("file", "foo", 51, "line", "round"); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
551 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
552 ## check alternative method (obj, ...) API |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
553 %!function p2 = create_p2 (); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
554 %! p2 = inputParser; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
555 %! addRequired (p2, "req1", @(x) ischar (x)); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
556 %! addOptional (p2, "op1", "val", @(x) any (strcmp (x, {"val", "foo"}))); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
557 %! addOptional (p2, "op2", 78, @(x) x > 50); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
558 %! addSwitch (p2, "verbose"); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
559 %! addParamValue (p2, "line", "tree", @(x) any (strcmp (x, {"tree", "circle"}))); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
560 %!endfunction |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
561 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
562 ## check normal use, only required are given |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
563 %!test |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
564 %! p2 = create_p2 (); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
565 %! parse (p2, "file"); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
566 %! r = p2.Results; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
567 %! assert ({r.req1, r.op1, r.op2, r.verbose, r.line}, |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
568 %! {"file", "val", 78, false, "tree"}); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
569 %! assert (sort (p2.UsingDefaults), sort ({"op1", "op2", "verbose", "line"})); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
570 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
571 ## check normal use, but give values different than defaults |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
572 %!test |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
573 %! p2 = create_p2 (); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
574 %! parse (p2, "file", "foo", 80, "line", "circle", "verbose"); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
575 %! r = p2.Results; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
576 %! assert ({r.req1, r.op1, r.op2, r.verbose, r.line}, |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
577 %! {"file", "foo", 80, true, "circle"}); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
578 |
20575
a61f0d6beb71
inputParser: do not perform validation of default values (bug #45837)
Carnë Draug <carandraug@octave.org>
parents:
20470
diff
changeset
|
579 ## We must not perform validation of default values (bug #45837) |
a61f0d6beb71
inputParser: do not perform validation of default values (bug #45837)
Carnë Draug <carandraug@octave.org>
parents:
20470
diff
changeset
|
580 %!test |
a61f0d6beb71
inputParser: do not perform validation of default values (bug #45837)
Carnë Draug <carandraug@octave.org>
parents:
20470
diff
changeset
|
581 %! p = inputParser; |
a61f0d6beb71
inputParser: do not perform validation of default values (bug #45837)
Carnë Draug <carandraug@octave.org>
parents:
20470
diff
changeset
|
582 %! p.addParamValue ("Dir", [], @ischar); |
a61f0d6beb71
inputParser: do not perform validation of default values (bug #45837)
Carnë Draug <carandraug@octave.org>
parents:
20470
diff
changeset
|
583 %! p.parse (); |
a61f0d6beb71
inputParser: do not perform validation of default values (bug #45837)
Carnë Draug <carandraug@octave.org>
parents:
20470
diff
changeset
|
584 %! assert (p.Results.Dir, []) |
a61f0d6beb71
inputParser: do not perform validation of default values (bug #45837)
Carnë Draug <carandraug@octave.org>
parents:
20470
diff
changeset
|
585 |
a61f0d6beb71
inputParser: do not perform validation of default values (bug #45837)
Carnë Draug <carandraug@octave.org>
parents:
20470
diff
changeset
|
586 %!test |
a61f0d6beb71
inputParser: do not perform validation of default values (bug #45837)
Carnë Draug <carandraug@octave.org>
parents:
20470
diff
changeset
|
587 %! p = inputParser; |
a61f0d6beb71
inputParser: do not perform validation of default values (bug #45837)
Carnë Draug <carandraug@octave.org>
parents:
20470
diff
changeset
|
588 %! p.addParamValue ("positive", -1, @(x) x > 5); |
a61f0d6beb71
inputParser: do not perform validation of default values (bug #45837)
Carnë Draug <carandraug@octave.org>
parents:
20470
diff
changeset
|
589 %! p.parse (); |
a61f0d6beb71
inputParser: do not perform validation of default values (bug #45837)
Carnë Draug <carandraug@octave.org>
parents:
20470
diff
changeset
|
590 %! assert (p.Results.positive, -1) |
a61f0d6beb71
inputParser: do not perform validation of default values (bug #45837)
Carnë Draug <carandraug@octave.org>
parents:
20470
diff
changeset
|
591 |
21508
04923b7b0d89
inputParser.m: add failing test due to bug in the parser (bug #44779)
Carnë Draug <carandraug@octave.org>
parents:
21505
diff
changeset
|
592 %!function r = foobar (varargin) |
04923b7b0d89
inputParser.m: add failing test due to bug in the parser (bug #44779)
Carnë Draug <carandraug@octave.org>
parents:
21505
diff
changeset
|
593 %! p = inputParser (); |
04923b7b0d89
inputParser.m: add failing test due to bug in the parser (bug #44779)
Carnë Draug <carandraug@octave.org>
parents:
21505
diff
changeset
|
594 %! p.addParamValue ("foo", "bar", @ischar); |
04923b7b0d89
inputParser.m: add failing test due to bug in the parser (bug #44779)
Carnë Draug <carandraug@octave.org>
parents:
21505
diff
changeset
|
595 %! p.parse (varargin{2:end}); |
04923b7b0d89
inputParser.m: add failing test due to bug in the parser (bug #44779)
Carnë Draug <carandraug@octave.org>
parents:
21505
diff
changeset
|
596 %! r = p.Results |
04923b7b0d89
inputParser.m: add failing test due to bug in the parser (bug #44779)
Carnë Draug <carandraug@octave.org>
parents:
21505
diff
changeset
|
597 %!endfunction |
04923b7b0d89
inputParser.m: add failing test due to bug in the parser (bug #44779)
Carnë Draug <carandraug@octave.org>
parents:
21505
diff
changeset
|
598 |
04923b7b0d89
inputParser.m: add failing test due to bug in the parser (bug #44779)
Carnë Draug <carandraug@octave.org>
parents:
21505
diff
changeset
|
599 %!xtest assert (foobar (), struct ("foo", "bar")) |
04923b7b0d89
inputParser.m: add failing test due to bug in the parser (bug #44779)
Carnë Draug <carandraug@octave.org>
parents:
21505
diff
changeset
|
600 %!xtest assert (foobar ([], "foo", "qux"), struct ("foo", "qux")) |
04923b7b0d89
inputParser.m: add failing test due to bug in the parser (bug #44779)
Carnë Draug <carandraug@octave.org>
parents:
21505
diff
changeset
|
601 |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
602 ## FIXME: This somehow works in Matlab |
21505
7f7d7cb73e0d
inputParser.m: uncomment failing test and use %!xtest instead.
Carnë Draug <carandraug@octave.org>
parents:
21316
diff
changeset
|
603 %!xtest |
7f7d7cb73e0d
inputParser.m: uncomment failing test and use %!xtest instead.
Carnë Draug <carandraug@octave.org>
parents:
21316
diff
changeset
|
604 %! p = inputParser; |
7f7d7cb73e0d
inputParser.m: uncomment failing test and use %!xtest instead.
Carnë Draug <carandraug@octave.org>
parents:
21316
diff
changeset
|
605 %! p.addOptional ("op1", "val"); |
7f7d7cb73e0d
inputParser.m: uncomment failing test and use %!xtest instead.
Carnë Draug <carandraug@octave.org>
parents:
21316
diff
changeset
|
606 %! p.addParamValue ("line", "tree"); |
7f7d7cb73e0d
inputParser.m: uncomment failing test and use %!xtest instead.
Carnë Draug <carandraug@octave.org>
parents:
21316
diff
changeset
|
607 %! p.parse ("line", "circle"); |
7f7d7cb73e0d
inputParser.m: uncomment failing test and use %!xtest instead.
Carnë Draug <carandraug@octave.org>
parents:
21316
diff
changeset
|
608 %! assert (p.Results, struct ("op1", "val", "line", "circle")); |