Mercurial > octave
annotate scripts/miscellaneous/inputParser.m @ 27923:bd51beb6205e
update formatting of copyright notices
* Use <https://octave.org/copyright/> instead of
<https://octave.org/COPYRIGHT.html/>.
* For consistency with other comments in the Octave sources, use
C++-style comments for copyright blocks in C and C++ files.
* Use delimiters above and below copyright blocks that are appropriate
for the language used in the file.
* Eliminate extra spacing inside copyright blocks.
* lex.ll (looks_like_copyright): Also allow newlines and carriage
returns before the word "Copyright".
* scripts/mk-doc.pl (gethelp): Also skip empty comment lines.
* bp-table.cc, type.m: Adjust tests.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 08 Jan 2020 11:59:41 -0500 |
parents | 1891570abac8 |
children | a4268efb7334 |
rev | line source |
---|---|
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
1 ######################################################################## |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
2 ## |
27919
1891570abac8
update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents:
27918
diff
changeset
|
3 ## Copyright (C) 2011-2020 The Octave Project Developers |
27918
b442ec6dda5c
use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents:
27216
diff
changeset
|
4 ## |
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
5 ## See the file COPYRIGHT.md in the top-level directory of this |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
6 ## distribution or <https://octave.org/copyright/>. |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
7 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
8 ## 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
|
9 ## |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
24491
diff
changeset
|
10 ## 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
|
11 ## under the terms of the GNU General Public License as published by |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
24491
diff
changeset
|
12 ## the Free Software Foundation, either version 3 of the License, or |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22559
diff
changeset
|
13 ## (at your option) any later version. |
19035
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 ## 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
|
16 ## WITHOUT ANY WARRANTY; without even the implied warranty of |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22559
diff
changeset
|
17 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22559
diff
changeset
|
18 ## GNU General Public License for more details. |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
19 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
20 ## 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
|
21 ## along with Octave; see the file COPYING. If not, see |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
24491
diff
changeset
|
22 ## <https://www.gnu.org/licenses/>. |
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
23 ## |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
24 ######################################################################## |
19035
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 ## -*- texinfo -*- |
20852
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20735
diff
changeset
|
27 ## @deftypefn {} {@var{p} =} inputParser () |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
28 ## 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
|
29 ## |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
30 ## 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
|
31 ## 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
|
32 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
33 ## @enumerate |
26293
095eb3a04f43
doc: grammarcheck m-file scripts ahead of 5.0 release.
Rik <rik@octave.org>
parents:
25628
diff
changeset
|
34 ## @item mandatory (see @code{addRequired}); |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
35 ## |
26293
095eb3a04f43
doc: grammarcheck m-file scripts ahead of 5.0 release.
Rik <rik@octave.org>
parents:
25628
diff
changeset
|
36 ## @item optional (see @code{addOptional}); |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
37 ## |
26293
095eb3a04f43
doc: grammarcheck m-file scripts ahead of 5.0 release.
Rik <rik@octave.org>
parents:
25628
diff
changeset
|
38 ## @item named (see @code{addParameter}); |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
39 ## |
26293
095eb3a04f43
doc: grammarcheck m-file scripts ahead of 5.0 release.
Rik <rik@octave.org>
parents:
25628
diff
changeset
|
40 ## @item switch (see @code{addSwitch}). |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
41 ## @end enumerate |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
42 ## |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
43 ## After defining the function API with these methods, the supplied arguments |
26293
095eb3a04f43
doc: grammarcheck m-file scripts ahead of 5.0 release.
Rik <rik@octave.org>
parents:
25628
diff
changeset
|
44 ## can be parsed with the @code{parse} method and the parsing results |
095eb3a04f43
doc: grammarcheck m-file scripts ahead of 5.0 release.
Rik <rik@octave.org>
parents:
25628
diff
changeset
|
45 ## accessed with the @code{Results} accessor. |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
46 ## |
19039
f45b60897316
dox: fix inputParser help text for newer Texinfo versions.
Carnë Draug <carandraug@octave.org>
parents:
19037
diff
changeset
|
47 ## @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
|
48 ## @deftypefn {} {} inputParser.Parameters |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
49 ## 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
|
50 ## |
19039
f45b60897316
dox: fix inputParser help text for newer Texinfo versions.
Carnë Draug <carandraug@octave.org>
parents:
19037
diff
changeset
|
51 ## @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
|
52 ## @deftypefn {} {} inputParser.Results |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
53 ## 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
|
54 ## |
19039
f45b60897316
dox: fix inputParser help text for newer Texinfo versions.
Carnë Draug <carandraug@octave.org>
parents:
19037
diff
changeset
|
55 ## @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
|
56 ## @deftypefn {} {} inputParser.Unmatched |
26293
095eb3a04f43
doc: grammarcheck m-file scripts ahead of 5.0 release.
Rik <rik@octave.org>
parents:
25628
diff
changeset
|
57 ## Return structure similar to @code{Results}, but for unmatched parameters. |
095eb3a04f43
doc: grammarcheck m-file scripts ahead of 5.0 release.
Rik <rik@octave.org>
parents:
25628
diff
changeset
|
58 ## See the @code{KeepUnmatched} property. |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
59 ## |
19039
f45b60897316
dox: fix inputParser help text for newer Texinfo versions.
Carnë Draug <carandraug@octave.org>
parents:
19037
diff
changeset
|
60 ## @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
|
61 ## @deftypefn {} {} inputParser.UsingDefaults |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
62 ## 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
|
63 ## |
19039
f45b60897316
dox: fix inputParser help text for newer Texinfo versions.
Carnë Draug <carandraug@octave.org>
parents:
19037
diff
changeset
|
64 ## @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
|
65 ## @deftypefn {} {} inputParser.CaseSensitive = @var{boolean} |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
66 ## 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
|
67 ## to false. |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
68 ## |
19039
f45b60897316
dox: fix inputParser help text for newer Texinfo versions.
Carnë Draug <carandraug@octave.org>
parents:
19037
diff
changeset
|
69 ## @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
|
70 ## @deftypefn {} {} inputParser.FunctionName = @var{name} |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
71 ## 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
|
72 ## |
19039
f45b60897316
dox: fix inputParser help text for newer Texinfo versions.
Carnë Draug <carandraug@octave.org>
parents:
19037
diff
changeset
|
73 ## @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
|
74 ## @deftypefn {} {} inputParser.KeepUnmatched = @var{boolean} |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
75 ## 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
|
76 ## 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
|
77 ## @code{Unmatched} after the @code{parse} method. Note that since |
26293
095eb3a04f43
doc: grammarcheck m-file scripts ahead of 5.0 release.
Rik <rik@octave.org>
parents:
25628
diff
changeset
|
78 ## @code{Switch} and @code{Parameter} arguments can be mixed, it is |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
79 ## not possible to know the unmatched type. If argument is found unmatched |
26293
095eb3a04f43
doc: grammarcheck m-file scripts ahead of 5.0 release.
Rik <rik@octave.org>
parents:
25628
diff
changeset
|
80 ## it is assumed to be of the @code{Parameter} type and it is expected to |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
81 ## 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
|
82 ## |
19039
f45b60897316
dox: fix inputParser help text for newer Texinfo versions.
Carnë Draug <carandraug@octave.org>
parents:
19037
diff
changeset
|
83 ## @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
|
84 ## @deftypefn {} {} inputParser.StructExpand = @var{boolean} |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
85 ## Set whether a structure can be passed to the function instead of |
21667
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
86 ## parameter/value pairs. Defaults to true. |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
87 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
88 ## 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
|
89 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
90 ## @example |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
91 ## function check (varargin) |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
92 ## @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
|
93 ## p = inputParser (); # create object |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
94 ## p.FunctionName = "check"; # set function name |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
95 ## p.addRequired ("pack", @@ischar); # mandatory argument |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
96 ## 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
|
97 ## |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
98 ## ## 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
|
99 ## 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
|
100 ## 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
|
101 ## |
21677
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
102 ## ## create two arguments of type "Parameter" |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
103 ## val_type = @@(x) any (strcmp (x, @{"linear", "quadratic"@})); |
21677
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
104 ## p.addParameter ("type", "linear", val_type); |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
105 ## val_verb = @@(x) any (strcmp (x, @{"low", "medium", "high"@})); |
21677
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
106 ## p.addParameter ("tolerance", "low", val_verb); |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
107 ## |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
108 ## ## create a switch type of argument |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
109 ## p.addSwitch ("verbose"); |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
110 ## |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
111 ## 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
|
112 ## |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
113 ## ## 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
|
114 ## ## 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
|
115 ## endfunction |
21316
6cc091426e52
doc: Periodic grammarcheck of documentation.
Rik <rik@octave.org>
parents:
20937
diff
changeset
|
116 ## @end example |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
117 ## |
21316
6cc091426e52
doc: Periodic grammarcheck of documentation.
Rik <rik@octave.org>
parents:
20937
diff
changeset
|
118 ## @example |
6cc091426e52
doc: Periodic grammarcheck of documentation.
Rik <rik@octave.org>
parents:
20937
diff
changeset
|
119 ## @group |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
120 ## check ("mech"); # valid, use defaults for other arguments |
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
121 ## 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
|
122 ## check (1); # error, since ! ischar |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
123 ## 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
|
124 ## |
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], "type", "linear"); # valid |
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 is also valid. Note how the Switch argument type can |
21677
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
128 ## ## be mixed into or before the Parameter argument type (but it |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
129 ## ## 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
|
130 ## 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
|
131 ## |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
132 ## ## following returns an error since not all optional arguments, |
27216
823b4bcf79fc
unless necessary for formatting or code, use ' instead of `
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
133 ## ## '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
|
134 ## check ("mech", "~/dev", "type", "linear"); |
21316
6cc091426e52
doc: Periodic grammarcheck of documentation.
Rik <rik@octave.org>
parents:
20937
diff
changeset
|
135 ## @end group |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
136 ## @end example |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
137 ## |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
138 ## @emph{Note 1}: A function can have any mixture of the four API types but |
26293
095eb3a04f43
doc: grammarcheck m-file scripts ahead of 5.0 release.
Rik <rik@octave.org>
parents:
25628
diff
changeset
|
139 ## they must appear in a specific order. @code{Required} arguments must be |
095eb3a04f43
doc: grammarcheck m-file scripts ahead of 5.0 release.
Rik <rik@octave.org>
parents:
25628
diff
changeset
|
140 ## first and can be followed by any @code{Optional} arguments. Only |
095eb3a04f43
doc: grammarcheck m-file scripts ahead of 5.0 release.
Rik <rik@octave.org>
parents:
25628
diff
changeset
|
141 ## the @code{Parameter} and @code{Switch} arguments may be mixed |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
142 ## 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
|
143 ## |
26293
095eb3a04f43
doc: grammarcheck m-file scripts ahead of 5.0 release.
Rik <rik@octave.org>
parents:
25628
diff
changeset
|
144 ## @emph{Note 2}: If both @code{Optional} and @code{Parameter} arguments |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
145 ## are mixed in a function API then once a string Optional argument fails to |
26293
095eb3a04f43
doc: grammarcheck m-file scripts ahead of 5.0 release.
Rik <rik@octave.org>
parents:
25628
diff
changeset
|
146 ## validate it will be considered the end of the @code{Optional} |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
147 ## arguments. The remaining arguments will be compared against any |
26293
095eb3a04f43
doc: grammarcheck m-file scripts ahead of 5.0 release.
Rik <rik@octave.org>
parents:
25628
diff
changeset
|
148 ## @code{Parameter} or @code{Switch} arguments. |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
149 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
150 ## @seealso{nargin, validateattributes, validatestring, varargin} |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
151 ## @end deftypefn |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
152 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
153 ## -*- texinfo -*- |
20852
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20735
diff
changeset
|
154 ## @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
|
155 ## @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
|
156 ## 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
|
157 ## 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
|
158 ## |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
159 ## @var{argname} must be a string with the name of the new argument. The order |
26293
095eb3a04f43
doc: grammarcheck m-file scripts ahead of 5.0 release.
Rik <rik@octave.org>
parents:
25628
diff
changeset
|
160 ## in which new arguments are added with @code{addOptional}, represents the |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
161 ## expected order of arguments. |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
162 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
163 ## @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
|
164 ## |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
165 ## @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
|
166 ## 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
|
167 ## 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
|
168 ## |
26293
095eb3a04f43
doc: grammarcheck m-file scripts ahead of 5.0 release.
Rik <rik@octave.org>
parents:
25628
diff
changeset
|
169 ## See @code{help inputParser} for examples. |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
170 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
171 ## @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
|
172 ## 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
|
173 ## 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
|
174 ## 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
|
175 ## 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
|
176 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
177 ## @end deftypefn |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
178 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
179 ## -*- texinfo -*- |
21677
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
180 ## @deftypefn {} {} addParameter (@var{argname}, @var{default}) |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
181 ## @deftypefnx {} {} addParameter (@var{argname}, @var{default}, @var{validator}) |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
182 ## 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
|
183 ## 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
|
184 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
185 ## @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
|
186 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
187 ## @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
|
188 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
189 ## @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
|
190 ## 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
|
191 ## can be used. |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
192 ## |
26293
095eb3a04f43
doc: grammarcheck m-file scripts ahead of 5.0 release.
Rik <rik@octave.org>
parents:
25628
diff
changeset
|
193 ## See @code{help inputParser} for examples. |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
194 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
195 ## @end deftypefn |
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 ## -*- texinfo -*- |
21677
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
198 ## @deftypefn {} {} addParamValue (@var{argname}, @var{default}) |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
199 ## @deftypefnx {} {} addParamValue (@var{argname}, @var{default}, @var{validator}) |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
200 ## Add new parameter to the object @var{parser} of the class inputParser to |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
201 ## implement a name/value pair type of API. |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
202 ## |
26293
095eb3a04f43
doc: grammarcheck m-file scripts ahead of 5.0 release.
Rik <rik@octave.org>
parents:
25628
diff
changeset
|
203 ## This is an alias for @code{addParameter} method without the |
21677
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
204 ## @qcode{"PartialMatchPriority"} option. See it for the help text. |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
205 ## |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
206 ## @end deftypefn |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
207 |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
208 ## -*- texinfo -*- |
20852
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20735
diff
changeset
|
209 ## @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
|
210 ## @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
|
211 ## 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
|
212 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
213 ## 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
|
214 ## arguments type of API. |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
215 ## |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
216 ## @var{argname} must be a string with the name of the new argument. The order |
26293
095eb3a04f43
doc: grammarcheck m-file scripts ahead of 5.0 release.
Rik <rik@octave.org>
parents:
25628
diff
changeset
|
217 ## in which new arguments are added with @code{addrequired}, represents the |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
218 ## expected order of arguments. |
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 ## @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
|
221 ## 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
|
222 ## can be used. |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
223 ## |
26293
095eb3a04f43
doc: grammarcheck m-file scripts ahead of 5.0 release.
Rik <rik@octave.org>
parents:
25628
diff
changeset
|
224 ## See @code{help inputParser} for examples. |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
225 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
226 ## @emph{Note}: this can be used together with the other type of arguments but |
26293
095eb3a04f43
doc: grammarcheck m-file scripts ahead of 5.0 release.
Rik <rik@octave.org>
parents:
25628
diff
changeset
|
227 ## it must be the first (see @code{@@inputParser}). |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
228 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
229 ## @end deftypefn |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
230 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
231 ## -*- texinfo -*- |
20852
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20735
diff
changeset
|
232 ## @deftypefn {} {} addSwitch (@var{argname}) |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
233 ## 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
|
234 ## class. |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
235 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
236 ## 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
|
237 ## arguments type of API. |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
238 ## |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
239 ## @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
|
240 ## of this type can be specified at the end, after @code{Required} and |
21677
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
241 ## @code{Optional}, and mixed between the @code{Parameter}. They default to |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
242 ## 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
|
243 ## 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
|
244 ## true. |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
245 ## |
26293
095eb3a04f43
doc: grammarcheck m-file scripts ahead of 5.0 release.
Rik <rik@octave.org>
parents:
25628
diff
changeset
|
246 ## See @code{help inputParser} for examples. |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
247 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
248 ## @end deftypefn |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
249 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
250 ## -*- texinfo -*- |
20852
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20735
diff
changeset
|
251 ## @deftypefn {} {} parse (@var{varargin}) |
19037
d900f863335c
inputParser.m: Format docstring to Octave guidelines.
Rik <rik@octave.org>
parents:
19035
diff
changeset
|
252 ## 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
|
253 ## the class inputParser. |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
254 ## |
26293
095eb3a04f43
doc: grammarcheck m-file scripts ahead of 5.0 release.
Rik <rik@octave.org>
parents:
25628
diff
changeset
|
255 ## After parsing, the results can be accessed with the @code{Results} |
095eb3a04f43
doc: grammarcheck m-file scripts ahead of 5.0 release.
Rik <rik@octave.org>
parents:
25628
diff
changeset
|
256 ## accessor. See @code{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
|
257 ## |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
258 ## @end deftypefn |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
259 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
260 ## 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
|
261 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
262 classdef inputParser < handle |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
263 properties |
21578
683a1beee538
maint: Use "FIXME:" for all code blocks needing further attention.
Rik <rik@octave.org>
parents:
21568
diff
changeset
|
264 ## FIXME: set input checking for these properties |
21568
3d60ed163b70
maint: Eliminate bad spacing around '='.
Rik <rik@octave.org>
parents:
21546
diff
changeset
|
265 CaseSensitive = false; |
3d60ed163b70
maint: Eliminate bad spacing around '='.
Rik <rik@octave.org>
parents:
21546
diff
changeset
|
266 FunctionName = ""; |
3d60ed163b70
maint: Eliminate bad spacing around '='.
Rik <rik@octave.org>
parents:
21546
diff
changeset
|
267 KeepUnmatched = false; |
21937
55f7de37b618
maint: Strip trailing whitespace from source files.
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
268 PartialMatching = false; # FIXME: unimplemented (and default should be true) |
21667
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
269 StructExpand = true; |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
270 endproperties |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
271 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
272 properties (SetAccess = protected) |
19833
9fc020886ae9
maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19597
diff
changeset
|
273 Parameters = cell (); |
9fc020886ae9
maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19597
diff
changeset
|
274 Results = struct (); |
9fc020886ae9
maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19597
diff
changeset
|
275 Unmatched = struct (); |
9fc020886ae9
maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19597
diff
changeset
|
276 UsingDefaults = cell (); |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
277 endproperties |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
278 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
279 properties (Access = protected) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
280 ## 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
|
281 ## structs with the fields "name", "def" (default), and "val" (validator). |
23164
99ca557fd34f
maint: Use Octave whitespace conventions for scripts/general/inputParser.m.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22755
diff
changeset
|
282 Required = cell (); |
99ca557fd34f
maint: Use Octave whitespace conventions for scripts/general/inputParser.m.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22755
diff
changeset
|
283 Optional = cell (); |
21677
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
284 ## Parameter 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
|
285 ## are the argname, and values are a struct with fields "def" and "val" |
23164
99ca557fd34f
maint: Use Octave whitespace conventions for scripts/general/inputParser.m.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22755
diff
changeset
|
286 Parameter = struct (); |
99ca557fd34f
maint: Use Octave whitespace conventions for scripts/general/inputParser.m.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22755
diff
changeset
|
287 Switch = struct (); |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
288 |
21677
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
289 ## List of Parameter and Switch names to ease searches |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
290 ParameterNames = cell (); |
23164
99ca557fd34f
maint: Use Octave whitespace conventions for scripts/general/inputParser.m.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22755
diff
changeset
|
291 SwitchNames = cell (); |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
292 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
293 ## 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
|
294 ## 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
|
295 ## is_argname method. |
21568
3d60ed163b70
maint: Eliminate bad spacing around '='.
Rik <rik@octave.org>
parents:
21546
diff
changeset
|
296 last_name = ""; |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
297 endproperties |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
298 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
299 properties (Access = protected, Constant = true) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
300 ## 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
|
301 def_val = @() true; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
302 endproperties |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
303 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
304 methods |
21668
58f5a6347851
inpputParser.m: fix display method.
Carnë Draug <carandraug@octave.org>
parents:
21667
diff
changeset
|
305 function set.PartialMatching (this, val) |
58f5a6347851
inpputParser.m: fix display method.
Carnë Draug <carandraug@octave.org>
parents:
21667
diff
changeset
|
306 if (val) |
58f5a6347851
inpputParser.m: fix display method.
Carnë Draug <carandraug@octave.org>
parents:
21667
diff
changeset
|
307 error ("inputParser: PartialMatching is not yet implemented"); |
58f5a6347851
inpputParser.m: fix display method.
Carnë Draug <carandraug@octave.org>
parents:
21667
diff
changeset
|
308 endif |
58f5a6347851
inpputParser.m: fix display method.
Carnë Draug <carandraug@octave.org>
parents:
21667
diff
changeset
|
309 endfunction |
58f5a6347851
inpputParser.m: fix display method.
Carnë Draug <carandraug@octave.org>
parents:
21667
diff
changeset
|
310 |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
311 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
|
312 if (nargin < 2 || nargin > 3) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
313 print_usage (); |
21677
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
314 elseif (numel (this.Optional) || numfields (this.Parameter) |
20937
3b2cc6ef0624
use numfields (x) instead of numel (fieldnames (x))
John W. Eaton <jwe@octave.org>
parents:
20852
diff
changeset
|
315 || numfields (this.Switch)) |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
316 error (["inputParser.addRequired: can't have a Required argument " ... |
21677
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
317 "after Optional, Parameter, or Switch"]); |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
318 endif |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
319 this.validate_name ("Required", name); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
320 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
|
321 endfunction |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
322 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
323 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
|
324 if (nargin < 3 || nargin > 4) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
325 print_usage (); |
21677
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
326 elseif (numfields (this.Parameter) || numfields (this.Switch)) |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
327 error (["inputParser.Optional: can't have Optional arguments " ... |
21677
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
328 "after Parameter or Switch"]); |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
329 endif |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
330 this.validate_name ("Optional", name); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
331 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
|
332 endfunction |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
333 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
334 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
|
335 if (nargin < 3 || nargin > 4) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
336 print_usage (); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
337 endif |
21677
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
338 this.addParameter (name, def, val); |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
339 endfunction |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
340 |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
341 function addParameter (this, name, def, varargin) |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
342 if (nargin < 3 || nargin > 6) |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
343 print_usage (); |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
344 endif |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
345 |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
346 n_opt = numel (varargin); |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
347 |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
348 if (n_opt == 0 || n_opt == 2) |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
349 val = inputParser.def_val; |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
350 else # n_opt is 1 or 3 |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
351 val = varargin{1}; |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
352 endif |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
353 |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
354 if (n_opt == 0 || n_opt == 1) |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
355 match_priority = 1; |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
356 else # n_opt is 2 or 3 |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
357 if (! strcmpi (varargin{end-1}, "PartialMatchPriority")) |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
358 error ("inputParser.addParameter: unrecognized option"); |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
359 endif |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
360 match_priority = varargin{end}; |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
361 validateattributes (match_priority, {"numeric"}, {"positive", "integer"}, |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
362 "inputParser.addParameter", |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
363 "PartialMatchPriority"); |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
364 endif |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
365 |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
366 this.validate_name ("Parameter", name); |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
367 this.Parameter.(name).def = def; |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
368 this.Parameter.(name).val = val; |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
369 endfunction |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
370 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
371 function addSwitch (this, name) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
372 if (nargin != 2) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
373 print_usage (); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
374 endif |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
375 this.validate_name ("Switch", name); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
376 this.Switch.(name).def = false; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
377 endfunction |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
378 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
379 function parse (this, varargin) |
22541
4b7ab10b5c38
inputParser clear previous results before new parse (bug #49198)
Carlo de Falco <carlo.defalco@polimi.it>
parents:
22489
diff
changeset
|
380 this.Results = struct (); |
22559
27f2a7a3b55d
inputParser reset more parse results before new parse. (bug #49198)
Carlo de Falco <carlo.defalco@polimi.it>
parents:
22541
diff
changeset
|
381 this.Unmatched = struct (); |
27f2a7a3b55d
inputParser reset more parse results before new parse. (bug #49198)
Carlo de Falco <carlo.defalco@polimi.it>
parents:
22541
diff
changeset
|
382 this.UsingDefaults = cell (); |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
383 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
|
384 if (this.FunctionName) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
385 print_usage (this.FunctionName); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
386 else |
20726
25d676f9619c
Preface error() messages with name of function when possible.
Rik <rik@octave.org>
parents:
20575
diff
changeset
|
387 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
|
388 endif |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
389 endif |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
390 pnargin = numel (varargin); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
391 |
23167
a2d6b84ce5c5
scripts/general/inputParser.m: refactor two xtest cases to normal test cases.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23165
diff
changeset
|
392 this.ParameterNames = fieldnames (this.Parameter); |
a2d6b84ce5c5
scripts/general/inputParser.m: refactor two xtest cases to normal test cases.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23165
diff
changeset
|
393 this.SwitchNames = fieldnames (this.Switch); |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
394 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
395 ## Evaluate the Required arguments first |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
396 nReq = numel (this.Required); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
397 for idx = 1:nReq |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
398 req = this.Required{idx}; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
399 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
|
400 endfor |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
401 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
402 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
|
403 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
404 ## 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
|
405 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
|
406 nOpt = numel (this.Optional); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
407 while (vidx < pnargin && idx < nOpt) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
408 opt = this.Optional{++idx}; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
409 in = varargin{++vidx}; |
23377
f1bf2590272a
inputParser.m: do not confuse Switch options with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23365
diff
changeset
|
410 if ((this.is_argname ("Parameter", in) && vidx < pnargin) |
f1bf2590272a
inputParser.m: do not confuse Switch options with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23365
diff
changeset
|
411 || this.is_argname ("Switch", in)) |
f1bf2590272a
inputParser.m: do not confuse Switch options with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23365
diff
changeset
|
412 ## This looks like an optional parameter/value pair or a |
f1bf2590272a
inputParser.m: do not confuse Switch options with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23365
diff
changeset
|
413 ## switch, not an positional option. This does mean that |
f1bf2590272a
inputParser.m: do not confuse Switch options with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23365
diff
changeset
|
414 ## positional options cannot be strings named like parameter |
f1bf2590272a
inputParser.m: do not confuse Switch options with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23365
diff
changeset
|
415 ## keys. See bug #50752. |
23365
7b594fcfa32b
improve inputParser compatibility for optional args (bug #50752)
John W. Eaton <jwe@octave.org>
parents:
23337
diff
changeset
|
416 idx -= 1; |
7b594fcfa32b
improve inputParser compatibility for optional args (bug #50752)
John W. Eaton <jwe@octave.org>
parents:
23337
diff
changeset
|
417 vidx -= 1; |
7b594fcfa32b
improve inputParser compatibility for optional args (bug #50752)
John W. Eaton <jwe@octave.org>
parents:
23337
diff
changeset
|
418 break |
7b594fcfa32b
improve inputParser compatibility for optional args (bug #50752)
John W. Eaton <jwe@octave.org>
parents:
23337
diff
changeset
|
419 endif |
21666
09517e0a8aa0
inputParser.m: handle errors in Optional parameters (maybe is a param key).
Carnë Draug <carandraug@octave.org>
parents:
21634
diff
changeset
|
420 try |
09517e0a8aa0
inputParser.m: handle errors in Optional parameters (maybe is a param key).
Carnë Draug <carandraug@octave.org>
parents:
21634
diff
changeset
|
421 valid_option = opt.val (in); |
09517e0a8aa0
inputParser.m: handle errors in Optional parameters (maybe is a param key).
Carnë Draug <carandraug@octave.org>
parents:
21634
diff
changeset
|
422 catch |
09517e0a8aa0
inputParser.m: handle errors in Optional parameters (maybe is a param key).
Carnë Draug <carandraug@octave.org>
parents:
21634
diff
changeset
|
423 valid_option = false; |
09517e0a8aa0
inputParser.m: handle errors in Optional parameters (maybe is a param key).
Carnë Draug <carandraug@octave.org>
parents:
21634
diff
changeset
|
424 end_try_catch |
09517e0a8aa0
inputParser.m: handle errors in Optional parameters (maybe is a param key).
Carnë Draug <carandraug@octave.org>
parents:
21634
diff
changeset
|
425 if (! valid_option) |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
426 ## 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
|
427 ## 1) input is actually wrong and we should error; |
23377
f1bf2590272a
inputParser.m: do not confuse Switch options with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23365
diff
changeset
|
428 ## 2) it's a Parameter or Switch name and we should use |
f1bf2590272a
inputParser.m: do not confuse Switch options with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23365
diff
changeset
|
429 ## the default for the rest; |
21677
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
430 ## 3) it's a struct with the Parameter pairs. |
21667
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
431 if (ischar (in) || (this.StructExpand && isstruct (in) |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
432 && isscalar (in))) |
20735
418ae0cb752f
Replace ++,-- with in-place operators for performance.
Rik <rik@octave.org>
parents:
20726
diff
changeset
|
433 idx -= 1; |
418ae0cb752f
Replace ++,-- with in-place operators for performance.
Rik <rik@octave.org>
parents:
20726
diff
changeset
|
434 vidx -= 1; |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
435 break |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
436 else |
23165
5291b67ff124
More verbose information when inputParser fails validating argument (patch #9241)
Georg Wiora
parents:
23164
diff
changeset
|
437 this.error (sprintf (["failed validation of %s\n", ... |
5291b67ff124
More verbose information when inputParser fails validating argument (patch #9241)
Georg Wiora
parents:
23164
diff
changeset
|
438 "Validation function: %s"], |
5291b67ff124
More verbose information when inputParser fails validating argument (patch #9241)
Georg Wiora
parents:
23164
diff
changeset
|
439 toupper (opt.name), disp(opt.val))); |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
440 endif |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
441 endif |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
442 this.Results.(opt.name) = in; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
443 endwhile |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
444 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
445 ## 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
|
446 while (idx++ < nOpt) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
447 opt = this.Optional{idx}; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
448 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
|
449 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
|
450 endwhile |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
451 |
21677
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
452 ## Search unordered Options (Switch and Parameter) |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
453 while (vidx++ < pnargin) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
454 name = varargin{vidx}; |
21667
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
455 |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
456 if (this.StructExpand && isstruct (name) && isscalar (name)) |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
457 expanded_options = [fieldnames(name) struct2cell(name)]'(:); |
25628
a0d642f24349
Parse empty struct input correctly (bug #54318).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
458 if (isempty (expanded_options)) |
a0d642f24349
Parse empty struct input correctly (bug #54318).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
459 continue; # empty, continue to next argument |
a0d642f24349
Parse empty struct input correctly (bug #54318).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
460 endif |
21667
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
461 n_new_args = numel (expanded_options) -1; |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
462 pnargin += n_new_args; |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
463 varargin(vidx+n_new_args+1:pnargin) = varargin(vidx+1:end); |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
464 varargin(vidx:vidx+n_new_args) = expanded_options; |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
465 name = varargin{vidx}; |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
466 endif |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
467 |
23383
62320e943696
inputParser.m: check if Param key and Switch are strings for better errors.
Carnë Draug <carandraug@octave.org>
parents:
23382
diff
changeset
|
468 if (! ischar (name)) |
62320e943696
inputParser.m: check if Param key and Switch are strings for better errors.
Carnë Draug <carandraug@octave.org>
parents:
23382
diff
changeset
|
469 this.error ("non-string for Parameter name or Switch"); |
62320e943696
inputParser.m: check if Param key and Switch are strings for better errors.
Carnë Draug <carandraug@octave.org>
parents:
23382
diff
changeset
|
470 endif |
62320e943696
inputParser.m: check if Param key and Switch are strings for better errors.
Carnë Draug <carandraug@octave.org>
parents:
23382
diff
changeset
|
471 |
21677
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
472 if (this.is_argname ("Parameter", name)) |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
473 if (vidx++ > pnargin) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
474 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
|
475 toupper (name))); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
476 endif |
19833
9fc020886ae9
maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19597
diff
changeset
|
477 this.validate_arg (this.last_name, |
21677
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
478 this.Parameter.(this.last_name).val, |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
479 varargin{vidx}); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
480 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
|
481 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
|
482 else |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
483 if (vidx++ < pnargin && this.KeepUnmatched) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
484 this.Unmatched.(name) = varargin{vidx}; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
485 else |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
486 this.error (sprintf ("argument '%s' is not a valid parameter", |
23167
a2d6b84ce5c5
scripts/general/inputParser.m: refactor two xtest cases to normal test cases.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23165
diff
changeset
|
487 toupper (name))); |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
488 endif |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
489 endif |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
490 endwhile |
23337
f04f32f08590
Override disp rather than display for class objects (bug #50640).
Rik <rik@octave.org>
parents:
23333
diff
changeset
|
491 ## Add them to the UsingDefaults list |
21677
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
492 this.add_missing ("Parameter"); |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
493 this.add_missing ("Switch"); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
494 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
495 endfunction |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
496 |
23337
f04f32f08590
Override disp rather than display for class objects (bug #50640).
Rik <rik@octave.org>
parents:
23333
diff
changeset
|
497 function disp (this) |
23333
b636f10ce53f
fix display methods to only expect one argument
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
498 if (nargin != 1) |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
499 print_usage (); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
500 endif |
23337
f04f32f08590
Override disp rather than display for class objects (bug #50640).
Rik <rik@octave.org>
parents:
23333
diff
changeset
|
501 printf ("inputParser object with properties:\n\n"); |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
502 b2s = @(x) ifelse (any (x), "true", "false"); |
21634
96518f623c91
Backed out changeset dcf8922b724b
Mike Miller <mtmiller@octave.org>
parents:
21633
diff
changeset
|
503 printf ([" CaseSensitive : %s\n FunctionName : %s\n" ... |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
504 " 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
|
505 " StructExpand : %s\n\n"], |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
506 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
|
507 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
|
508 b2s (this.StructExpand)); |
21634
96518f623c91
Backed out changeset dcf8922b724b
Mike Miller <mtmiller@octave.org>
parents:
21633
diff
changeset
|
509 printf ("Defined parameters:\n\n {%s}\n", |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
510 strjoin (this.Parameters, ", ")); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
511 endfunction |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
512 endmethods |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
513 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
514 methods (Access = private) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
515 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
|
516 if (! isvarname (name)) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
517 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
|
518 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
|
519 ## 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
|
520 ## 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
|
521 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
|
522 type, name); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
523 endif |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
524 this.Parameters{end+1} = name; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
525 endfunction |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
526 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
527 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
|
528 if (! val (in)) |
23165
5291b67ff124
More verbose information when inputParser fails validating argument (patch #9241)
Georg Wiora
parents:
23164
diff
changeset
|
529 this.error (sprintf ("failed validation of %s with %s", |
5291b67ff124
More verbose information when inputParser fails validating argument (patch #9241)
Georg Wiora
parents:
23164
diff
changeset
|
530 toupper (name), func2str (val))); |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
531 endif |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
532 this.Results.(name) = in; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
533 endfunction |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
534 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
535 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
|
536 if (this.CaseSensitive) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
537 r = isfield (this.(type), name); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
538 this.last_name = name; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
539 else |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
540 fnames = this.([type "Names"]); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
541 l = strcmpi (name, fnames); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
542 r = any (l(:)); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
543 if (r) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
544 this.last_name = fnames{l}; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
545 endif |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
546 endif |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
547 endfunction |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
548 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
549 function add_missing (this, type) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
550 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
|
551 for namec = unmatched(:)' |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
552 name = namec{1}; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
553 this.UsingDefaults{end+1} = name; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
554 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
|
555 endfor |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
556 endfunction |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
557 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
558 function error (this, msg) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
559 where = ""; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
560 if (this.FunctionName) |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
561 where = [this.FunctionName ": "]; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
562 endif |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
563 error ("%s%s", where, msg); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
564 endfunction |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
565 endmethods |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
566 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
567 endclassdef |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
568 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
569 %!function p = create_p () |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
570 %! p = inputParser (); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
571 %! p.CaseSensitive = true; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
572 %! 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
|
573 %! 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
|
574 %! 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
|
575 %! p.addSwitch ("verbose"); |
21677
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
576 %! p.addParameter ("line", "tree", @(x) any (strcmp (x, {"tree", "circle"}))); |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
577 %!endfunction |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
578 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
579 ## 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
|
580 %!test |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
581 %! p = create_p (); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
582 %! p.parse ("file"); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
583 %! r = p.Results; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
584 %! assert (r.req1, "file"); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
585 %! 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
|
586 %! assert ({r.req1, r.op1, r.op2, r.verbose, r.line}, |
21580
ecce63c99c3f
maint: Add semicolons to terminate code in %! blocks.
Rik <rik@octave.org>
parents:
21578
diff
changeset
|
587 %! {"file", "val", 78, false, "tree"}); |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
588 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
589 ## 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
|
590 %!test |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
591 %! p = create_p (); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
592 %! 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
|
593 %! r = p.Results; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
594 %! 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
|
595 %! {"file", "foo", 80, true, "circle"}); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
596 |
21677
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
597 ## check optional is skipped and considered Parameter if unvalidated string |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
598 %!test |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
599 %! p = create_p (); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
600 %! p.parse ("file", "line", "circle"); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
601 %! r = p.Results; |
19597
db92e7e28e1f
strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents:
19039
diff
changeset
|
602 %! 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
|
603 %! {"file", "val", 78, false, "circle"}); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
604 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
605 ## check case insensitivity |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
606 %!test |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
607 %! p = create_p (); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
608 %! p.CaseSensitive = false; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
609 %! 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
|
610 %! r = p.Results; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
611 %! 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
|
612 %! {"file", "foo", 80, true, "circle"}); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
613 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
614 ## check KeepUnmatched |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
615 %!test |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
616 %! p = create_p (); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
617 %! p.KeepUnmatched = true; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
618 %! p.parse ("file", "foo", 80, "line", "circle", "verbose", "extra", 50); |
21580
ecce63c99c3f
maint: Add semicolons to terminate code in %! blocks.
Rik <rik@octave.org>
parents:
21578
diff
changeset
|
619 %! assert (p.Unmatched.extra, 50); |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
620 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
621 ## check error when missing required |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
622 %!error <not enough input arguments> |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
623 %! p = create_p (); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
624 %! p.parse (); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
625 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
626 ## 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
|
627 %!error <failed validation of > |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
628 %! p = create_p (); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
629 %! p.parse (50); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
630 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
631 ## 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
|
632 %!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
|
633 %! p = create_p (); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
634 %! p.parse ("file", "no-val"); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
635 |
21677
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
636 ## check error when given Parameter does not validate |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
637 %!error <failed validation of > |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
638 %! p = create_p (); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
639 %! 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
|
640 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
641 ## check alternative method (obj, ...) API |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
642 %!function p2 = create_p2 (); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
643 %! p2 = inputParser; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
644 %! 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
|
645 %! 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
|
646 %! 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
|
647 %! addSwitch (p2, "verbose"); |
21677
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
648 %! addParameter (p2, "line", "tree", @(x) any (strcmp (x, {"tree", "circle"}))); |
19035
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
649 %!endfunction |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
650 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
651 ## 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
|
652 %!test |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
653 %! p2 = create_p2 (); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
654 %! parse (p2, "file"); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
655 %! r = p2.Results; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
656 %! 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
|
657 %! {"file", "val", 78, false, "tree"}); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
658 %! 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
|
659 |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
660 ## 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
|
661 %!test |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
662 %! p2 = create_p2 (); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
663 %! 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
|
664 %! r = p2.Results; |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
665 %! 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
|
666 %! {"file", "foo", 80, true, "circle"}); |
ff820f92cbb5
inputParser: classdef port of @inputParser from Octave Forge general pkg.
Carnë Draug <carandraug@octave.org>
parents:
diff
changeset
|
667 |
22489
93ea313301f9
test: Add bug ids (<#####>) to BIST tests.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
668 ## We must not perform validation of default values |
23573
1b4f4ec53b4a
use new script to tag fixed bugs in tests
John W. Eaton <jwe@octave.org>
parents:
23572
diff
changeset
|
669 %!test <*45837> |
20575
a61f0d6beb71
inputParser: do not perform validation of default values (bug #45837)
Carnë Draug <carandraug@octave.org>
parents:
20470
diff
changeset
|
670 %! p = inputParser; |
21677
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
671 %! p.addParameter ("Dir", [], @ischar); |
20575
a61f0d6beb71
inputParser: do not perform validation of default values (bug #45837)
Carnë Draug <carandraug@octave.org>
parents:
20470
diff
changeset
|
672 %! p.parse (); |
21580
ecce63c99c3f
maint: Add semicolons to terminate code in %! blocks.
Rik <rik@octave.org>
parents:
21578
diff
changeset
|
673 %! assert (p.Results.Dir, []); |
20575
a61f0d6beb71
inputParser: do not perform validation of default values (bug #45837)
Carnë Draug <carandraug@octave.org>
parents:
20470
diff
changeset
|
674 |
a61f0d6beb71
inputParser: do not perform validation of default values (bug #45837)
Carnë Draug <carandraug@octave.org>
parents:
20470
diff
changeset
|
675 %!test |
a61f0d6beb71
inputParser: do not perform validation of default values (bug #45837)
Carnë Draug <carandraug@octave.org>
parents:
20470
diff
changeset
|
676 %! p = inputParser; |
21677
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
677 %! p.addParameter ("positive", -1, @(x) x > 5); |
20575
a61f0d6beb71
inputParser: do not perform validation of default values (bug #45837)
Carnë Draug <carandraug@octave.org>
parents:
20470
diff
changeset
|
678 %! p.parse (); |
21580
ecce63c99c3f
maint: Add semicolons to terminate code in %! blocks.
Rik <rik@octave.org>
parents:
21578
diff
changeset
|
679 %! assert (p.Results.positive, -1); |
20575
a61f0d6beb71
inputParser: do not perform validation of default values (bug #45837)
Carnë Draug <carandraug@octave.org>
parents:
20470
diff
changeset
|
680 |
21666
09517e0a8aa0
inputParser.m: handle errors in Optional parameters (maybe is a param key).
Carnë Draug <carandraug@octave.org>
parents:
21634
diff
changeset
|
681 ## Throw an error on validation of optional argument to check that it |
09517e0a8aa0
inputParser.m: handle errors in Optional parameters (maybe is a param key).
Carnë Draug <carandraug@octave.org>
parents:
21634
diff
changeset
|
682 ## is caught without preventing continuation into param/value pairs. |
09517e0a8aa0
inputParser.m: handle errors in Optional parameters (maybe is a param key).
Carnë Draug <carandraug@octave.org>
parents:
21634
diff
changeset
|
683 %!test |
09517e0a8aa0
inputParser.m: handle errors in Optional parameters (maybe is a param key).
Carnë Draug <carandraug@octave.org>
parents:
21634
diff
changeset
|
684 %! p = inputParser (); |
09517e0a8aa0
inputParser.m: handle errors in Optional parameters (maybe is a param key).
Carnë Draug <carandraug@octave.org>
parents:
21634
diff
changeset
|
685 %! p.addOptional ("err", "foo", @error); |
21677
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
686 %! p.addParameter ("not_err", "bar", @ischar); |
21666
09517e0a8aa0
inputParser.m: handle errors in Optional parameters (maybe is a param key).
Carnë Draug <carandraug@octave.org>
parents:
21634
diff
changeset
|
687 %! p.parse ("not_err", "qux"); |
09517e0a8aa0
inputParser.m: handle errors in Optional parameters (maybe is a param key).
Carnë Draug <carandraug@octave.org>
parents:
21634
diff
changeset
|
688 %! assert (p.Results.err, "foo") |
09517e0a8aa0
inputParser.m: handle errors in Optional parameters (maybe is a param key).
Carnë Draug <carandraug@octave.org>
parents:
21634
diff
changeset
|
689 %! assert (p.Results.not_err, "qux") |
09517e0a8aa0
inputParser.m: handle errors in Optional parameters (maybe is a param key).
Carnë Draug <carandraug@octave.org>
parents:
21634
diff
changeset
|
690 |
09517e0a8aa0
inputParser.m: handle errors in Optional parameters (maybe is a param key).
Carnë Draug <carandraug@octave.org>
parents:
21634
diff
changeset
|
691 |
21677
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
692 ## With more Parameters to test StructExpand |
21667
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
693 %!function p3 = create_p3 (); |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
694 %! p3 = inputParser; |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
695 %! addOptional (p3, "op1", "val", @(x) any (strcmp (x, {"val", "foo"}))); |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
696 %! addOptional (p3, "op2", 78, @(x) x > 50); |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
697 %! addSwitch (p3, "verbose"); |
21677
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
698 %! addParameter (p3, "line", "tree", @(x) any (strcmp (x, {"tree", "circle"}))); |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
699 %! addParameter (p3, "color", "red", @(x) any (strcmp (x, {"red", "green"}))); |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
700 %! addParameter (p3, "style", "tt", @(x) any (strcmp (x, {"tt", "f", "i"}))); |
21667
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
701 %!endfunction |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
702 |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
703 ## Test StructExpand |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
704 %!test |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
705 %! p3 = create_p3 (); |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
706 %! p3.parse (struct ("line", "circle", "color", "green")); |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
707 %! assert (p3.Results, struct ("op1", "val", "op2", 78, "verbose", false, |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
708 %! "line", "circle", "color", "green", |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
709 %! "style", "tt")) |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
710 |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
711 %!test |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
712 %! p3 = create_p3 (); |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
713 %! p3.parse (struct ("line", "circle", "color", "green"), "line", "tree"); |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
714 %! assert (p3.Results.line, "tree") |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
715 %! p3.parse ("line", "tree", struct ("line", "circle", "color", "green")); |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
716 %! assert (p3.Results.line, "circle") |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
717 |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
718 %!test # unmatched parameters with StructExpand |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
719 %! p3 = create_p3 (); |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
720 %! p3.KeepUnmatched = true; |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
721 %! p3.parse (struct ("line", "circle", "color", "green", "bar", "baz")); |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
722 %! assert (p3.Unmatched.bar, "baz") |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
723 |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
724 ## The validation for the second optional argument throws an error with |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
725 ## a struct so check that we can handle it. |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
726 %!test |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
727 %! p3 = create_p3 (); |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
728 %! p3.parse ("foo", struct ("color", "green"), "line", "tree"); |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
729 %! assert (p3.Results.op1, "foo") |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
730 %! assert (p3.Results.line, "tree") |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
731 %! assert (p3.Results.color, "green") |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
732 %! assert (p3.Results.verbose, false) |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
733 |
84092ccb45e2
inputParser.m: implement StructExpand option (struct with param/value pairs).
Carnë Draug <carandraug@octave.org>
parents:
21666
diff
changeset
|
734 |
21677
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
735 ## Some simple tests for addParamValue since all the other ones use add |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
736 ## addParameter but they use the same codepath. |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
737 %!test |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
738 %! p = inputParser; |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
739 %! addParameter (p, "line", "tree", @(x) any (strcmp (x, {"tree", "circle"}))); |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
740 %! addParameter (p, "color", "red", @(x) any (strcmp (x, {"red", "green"}))); |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
741 %! p.parse ("line", "circle"); |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
742 %! assert ({p.Results.line, p.Results.color}, {"circle", "red"}) |
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
743 |
23167
a2d6b84ce5c5
scripts/general/inputParser.m: refactor two xtest cases to normal test cases.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23165
diff
changeset
|
744 %!test |
a2d6b84ce5c5
scripts/general/inputParser.m: refactor two xtest cases to normal test cases.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23165
diff
changeset
|
745 %! p = inputParser; |
a2d6b84ce5c5
scripts/general/inputParser.m: refactor two xtest cases to normal test cases.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23165
diff
changeset
|
746 %! p.addParameter ("foo", "bar", @ischar); |
a2d6b84ce5c5
scripts/general/inputParser.m: refactor two xtest cases to normal test cases.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23165
diff
changeset
|
747 %! p.parse (); |
a2d6b84ce5c5
scripts/general/inputParser.m: refactor two xtest cases to normal test cases.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23165
diff
changeset
|
748 %! assert (p.Results, struct ("foo", "bar")) |
a2d6b84ce5c5
scripts/general/inputParser.m: refactor two xtest cases to normal test cases.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23165
diff
changeset
|
749 %! p.parse ("foo", "qux"); |
a2d6b84ce5c5
scripts/general/inputParser.m: refactor two xtest cases to normal test cases.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23165
diff
changeset
|
750 %! assert (p.Results, struct ("foo", "qux")) |
21508
04923b7b0d89
inputParser.m: add failing test due to bug in the parser (bug #44779)
Carnë Draug <carandraug@octave.org>
parents:
21505
diff
changeset
|
751 |
23377
f1bf2590272a
inputParser.m: do not confuse Switch options with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23365
diff
changeset
|
752 ## This behaviour means that a positional option can never be a string |
f1bf2590272a
inputParser.m: do not confuse Switch options with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23365
diff
changeset
|
753 ## that is the name of a parameter key. This is required for Matlab |
f1bf2590272a
inputParser.m: do not confuse Switch options with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23365
diff
changeset
|
754 ## compatibility. |
23573
1b4f4ec53b4a
use new script to tag fixed bugs in tests
John W. Eaton <jwe@octave.org>
parents:
23572
diff
changeset
|
755 %!test <*50752> |
23382
5a3c3ff03167
inputParser.m: more tests for mix Param keys with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23377
diff
changeset
|
756 %! p = inputParser (); |
21505
7f7d7cb73e0d
inputParser.m: uncomment failing test and use %!xtest instead.
Carnë Draug <carandraug@octave.org>
parents:
21316
diff
changeset
|
757 %! p.addOptional ("op1", "val"); |
21677
1cd04fb745f6
inputParser: new method addParameter --- just like addParamValue (bug #45367)
Carnë Draug <carandraug@octave.org>
parents:
21668
diff
changeset
|
758 %! p.addParameter ("line", "tree"); |
21505
7f7d7cb73e0d
inputParser.m: uncomment failing test and use %!xtest instead.
Carnë Draug <carandraug@octave.org>
parents:
21316
diff
changeset
|
759 %! p.parse ("line", "circle"); |
23377
f1bf2590272a
inputParser.m: do not confuse Switch options with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23365
diff
changeset
|
760 %! assert (p.Results, struct ("op1", "val", "line", "circle")) |
f1bf2590272a
inputParser.m: do not confuse Switch options with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23365
diff
changeset
|
761 %! |
f1bf2590272a
inputParser.m: do not confuse Switch options with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23365
diff
changeset
|
762 %! p = inputParser (); |
23382
5a3c3ff03167
inputParser.m: more tests for mix Param keys with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23377
diff
changeset
|
763 %! p.addOptional ("op1", "val1"); |
5a3c3ff03167
inputParser.m: more tests for mix Param keys with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23377
diff
changeset
|
764 %! p.addOptional ("op2", "val2"); |
5a3c3ff03167
inputParser.m: more tests for mix Param keys with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23377
diff
changeset
|
765 %! p.addParameter ("line", "tree"); |
5a3c3ff03167
inputParser.m: more tests for mix Param keys with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23377
diff
changeset
|
766 %! p.parse ("line", "circle"); |
23377
f1bf2590272a
inputParser.m: do not confuse Switch options with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23365
diff
changeset
|
767 %! assert (p.Results.op1, "val1") |
f1bf2590272a
inputParser.m: do not confuse Switch options with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23365
diff
changeset
|
768 %! assert (p.Results.op2, "val2") |
f1bf2590272a
inputParser.m: do not confuse Switch options with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23365
diff
changeset
|
769 %! assert (p.Results.line, "circle") |
23382
5a3c3ff03167
inputParser.m: more tests for mix Param keys with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23377
diff
changeset
|
770 %! |
5a3c3ff03167
inputParser.m: more tests for mix Param keys with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23377
diff
changeset
|
771 %! ## If there's enough arguments to fill the positional options and |
5a3c3ff03167
inputParser.m: more tests for mix Param keys with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23377
diff
changeset
|
772 %! ## param/key, it still skips positional options. |
5a3c3ff03167
inputParser.m: more tests for mix Param keys with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23377
diff
changeset
|
773 %! p = inputParser (); |
5a3c3ff03167
inputParser.m: more tests for mix Param keys with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23377
diff
changeset
|
774 %! p.addOptional ("op1", "val1"); |
5a3c3ff03167
inputParser.m: more tests for mix Param keys with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23377
diff
changeset
|
775 %! p.addOptional ("op2", "val2"); |
5a3c3ff03167
inputParser.m: more tests for mix Param keys with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23377
diff
changeset
|
776 %! p.addParameter ("line", "tree"); |
5a3c3ff03167
inputParser.m: more tests for mix Param keys with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23377
diff
changeset
|
777 %! p.parse ("line", "circle", "line", "rectangle"); |
5a3c3ff03167
inputParser.m: more tests for mix Param keys with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23377
diff
changeset
|
778 %! assert (p.Results, struct ("op1", "val1", "op2", "val2", |
5a3c3ff03167
inputParser.m: more tests for mix Param keys with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23377
diff
changeset
|
779 %! "line", "rectangle")) |
5a3c3ff03167
inputParser.m: more tests for mix Param keys with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23377
diff
changeset
|
780 %! |
5a3c3ff03167
inputParser.m: more tests for mix Param keys with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23377
diff
changeset
|
781 %! ## Even if the key/param fails validation, it does not backtrack to |
5a3c3ff03167
inputParser.m: more tests for mix Param keys with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23377
diff
changeset
|
782 %! ## check if the values are valid positional options. |
5a3c3ff03167
inputParser.m: more tests for mix Param keys with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23377
diff
changeset
|
783 %! p = inputParser (); |
5a3c3ff03167
inputParser.m: more tests for mix Param keys with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23377
diff
changeset
|
784 %! p.addOptional ("op1", "val1", @ischar); |
5a3c3ff03167
inputParser.m: more tests for mix Param keys with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23377
diff
changeset
|
785 %! p.addOptional ("op2", "val2", @isnumeric); |
5a3c3ff03167
inputParser.m: more tests for mix Param keys with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23377
diff
changeset
|
786 %! p.addParameter ("line", "circle", @ischar); |
5a3c3ff03167
inputParser.m: more tests for mix Param keys with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23377
diff
changeset
|
787 %! fail ('p.parse ("line", 89)', "failed validation of LINE") |
5a3c3ff03167
inputParser.m: more tests for mix Param keys with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23377
diff
changeset
|
788 %! |
5a3c3ff03167
inputParser.m: more tests for mix Param keys with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23377
diff
changeset
|
789 %! p = inputParser (); |
5a3c3ff03167
inputParser.m: more tests for mix Param keys with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23377
diff
changeset
|
790 %! p.addOptional ("op1", "val1"); |
5a3c3ff03167
inputParser.m: more tests for mix Param keys with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23377
diff
changeset
|
791 %! p.addParamValue ("line", "circle", @ischar); |
23383
62320e943696
inputParser.m: check if Param key and Switch are strings for better errors.
Carnë Draug <carandraug@octave.org>
parents:
23382
diff
changeset
|
792 %! fail ('p.parse ("line", "line", 89)', |
62320e943696
inputParser.m: check if Param key and Switch are strings for better errors.
Carnë Draug <carandraug@octave.org>
parents:
23382
diff
changeset
|
793 %! "non-string for Parameter name or Switch") |
23382
5a3c3ff03167
inputParser.m: more tests for mix Param keys with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23377
diff
changeset
|
794 |
23573
1b4f4ec53b4a
use new script to tag fixed bugs in tests
John W. Eaton <jwe@octave.org>
parents:
23572
diff
changeset
|
795 %!test <*50752> |
23382
5a3c3ff03167
inputParser.m: more tests for mix Param keys with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23377
diff
changeset
|
796 %! ## This fails in Matlab but works in Octave. It is a bug there |
5a3c3ff03167
inputParser.m: more tests for mix Param keys with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23377
diff
changeset
|
797 %! ## that we do not replicate. |
5a3c3ff03167
inputParser.m: more tests for mix Param keys with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23377
diff
changeset
|
798 %! p = inputParser (); |
5a3c3ff03167
inputParser.m: more tests for mix Param keys with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23377
diff
changeset
|
799 %! p.addOptional ("op1", "val1"); |
5a3c3ff03167
inputParser.m: more tests for mix Param keys with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23377
diff
changeset
|
800 %! p.addParameter ("line", "circle"); |
5a3c3ff03167
inputParser.m: more tests for mix Param keys with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23377
diff
changeset
|
801 %! p.parse ("line"); |
5a3c3ff03167
inputParser.m: more tests for mix Param keys with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23377
diff
changeset
|
802 %! assert (p.Results, struct ("op1", "line", "line", "circle")) |
23377
f1bf2590272a
inputParser.m: do not confuse Switch options with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23365
diff
changeset
|
803 |
23573
1b4f4ec53b4a
use new script to tag fixed bugs in tests
John W. Eaton <jwe@octave.org>
parents:
23572
diff
changeset
|
804 %!test <*50752> |
23377
f1bf2590272a
inputParser.m: do not confuse Switch options with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23365
diff
changeset
|
805 %! p = inputParser; |
f1bf2590272a
inputParser.m: do not confuse Switch options with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23365
diff
changeset
|
806 %! p.addOptional ("op1", "val1"); |
f1bf2590272a
inputParser.m: do not confuse Switch options with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23365
diff
changeset
|
807 %! p.addSwitch ("line"); |
f1bf2590272a
inputParser.m: do not confuse Switch options with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23365
diff
changeset
|
808 %! p.parse ("line"); |
f1bf2590272a
inputParser.m: do not confuse Switch options with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23365
diff
changeset
|
809 %! assert (p.Results.op1, "val1") |
f1bf2590272a
inputParser.m: do not confuse Switch options with positional options (bug #50752)
Carnë Draug <carandraug@octave.org>
parents:
23365
diff
changeset
|
810 %! assert (p.Results.line, true) |
22541
4b7ab10b5c38
inputParser clear previous results before new parse (bug #49198)
Carlo de Falco <carlo.defalco@polimi.it>
parents:
22489
diff
changeset
|
811 |
4b7ab10b5c38
inputParser clear previous results before new parse (bug #49198)
Carlo de Falco <carlo.defalco@polimi.it>
parents:
22489
diff
changeset
|
812 %!test |
4b7ab10b5c38
inputParser clear previous results before new parse (bug #49198)
Carlo de Falco <carlo.defalco@polimi.it>
parents:
22489
diff
changeset
|
813 %! p = inputParser; |
4b7ab10b5c38
inputParser clear previous results before new parse (bug #49198)
Carlo de Falco <carlo.defalco@polimi.it>
parents:
22489
diff
changeset
|
814 %! p.addParameter ("a", []); |
4b7ab10b5c38
inputParser clear previous results before new parse (bug #49198)
Carlo de Falco <carlo.defalco@polimi.it>
parents:
22489
diff
changeset
|
815 %! p.addParameter ("b", []); |
4b7ab10b5c38
inputParser clear previous results before new parse (bug #49198)
Carlo de Falco <carlo.defalco@polimi.it>
parents:
22489
diff
changeset
|
816 %! p.parse ("a", 1); |
4b7ab10b5c38
inputParser clear previous results before new parse (bug #49198)
Carlo de Falco <carlo.defalco@polimi.it>
parents:
22489
diff
changeset
|
817 %! p.parse ("b", 1); |
4b7ab10b5c38
inputParser clear previous results before new parse (bug #49198)
Carlo de Falco <carlo.defalco@polimi.it>
parents:
22489
diff
changeset
|
818 %! assert (p.Results, struct ("a", [], "b", 1)); |
22559
27f2a7a3b55d
inputParser reset more parse results before new parse. (bug #49198)
Carlo de Falco <carlo.defalco@polimi.it>
parents:
22541
diff
changeset
|
819 %! assert (p.UsingDefaults, {"a"}); |
22541
4b7ab10b5c38
inputParser clear previous results before new parse (bug #49198)
Carlo de Falco <carlo.defalco@polimi.it>
parents:
22489
diff
changeset
|
820 |
22559
27f2a7a3b55d
inputParser reset more parse results before new parse. (bug #49198)
Carlo de Falco <carlo.defalco@polimi.it>
parents:
22541
diff
changeset
|
821 %!test |
27f2a7a3b55d
inputParser reset more parse results before new parse. (bug #49198)
Carlo de Falco <carlo.defalco@polimi.it>
parents:
22541
diff
changeset
|
822 %! p = inputParser; |
27f2a7a3b55d
inputParser reset more parse results before new parse. (bug #49198)
Carlo de Falco <carlo.defalco@polimi.it>
parents:
22541
diff
changeset
|
823 %! p.addParameter ("b", []); |
27f2a7a3b55d
inputParser reset more parse results before new parse. (bug #49198)
Carlo de Falco <carlo.defalco@polimi.it>
parents:
22541
diff
changeset
|
824 %! p.KeepUnmatched = true; |
27f2a7a3b55d
inputParser reset more parse results before new parse. (bug #49198)
Carlo de Falco <carlo.defalco@polimi.it>
parents:
22541
diff
changeset
|
825 %! p.parse ("a", 1); |
27f2a7a3b55d
inputParser reset more parse results before new parse. (bug #49198)
Carlo de Falco <carlo.defalco@polimi.it>
parents:
22541
diff
changeset
|
826 %! p.parse ("b", 1); |
27f2a7a3b55d
inputParser reset more parse results before new parse. (bug #49198)
Carlo de Falco <carlo.defalco@polimi.it>
parents:
22541
diff
changeset
|
827 %! assert (p.Results, struct ("b", 1)); |
27f2a7a3b55d
inputParser reset more parse results before new parse. (bug #49198)
Carlo de Falco <carlo.defalco@polimi.it>
parents:
22541
diff
changeset
|
828 %! assert (p.Unmatched, struct ()); |
23165
5291b67ff124
More verbose information when inputParser fails validating argument (patch #9241)
Georg Wiora
parents:
23164
diff
changeset
|
829 |
5291b67ff124
More verbose information when inputParser fails validating argument (patch #9241)
Georg Wiora
parents:
23164
diff
changeset
|
830 ## Test for patch #9241 |
5291b67ff124
More verbose information when inputParser fails validating argument (patch #9241)
Georg Wiora
parents:
23164
diff
changeset
|
831 %!error<failed validation of A with ischar> |
5291b67ff124
More verbose information when inputParser fails validating argument (patch #9241)
Georg Wiora
parents:
23164
diff
changeset
|
832 %! p = inputParser; |
5291b67ff124
More verbose information when inputParser fails validating argument (patch #9241)
Georg Wiora
parents:
23164
diff
changeset
|
833 %! p.addParameter ("a", [], @ischar); |
5291b67ff124
More verbose information when inputParser fails validating argument (patch #9241)
Georg Wiora
parents:
23164
diff
changeset
|
834 %! p.parse ("a", 1); |