annotate scripts/prefs/ispref.m @ 23219:3ac9f9ecfae5 stable

maint: Update copyright dates.
author John W. Eaton <jwe@octave.org>
date Wed, 22 Feb 2017 12:39:29 -0500
parents e9a0469dedd9
children 092078913d54
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
23219
3ac9f9ecfae5 maint: Update copyright dates.
John W. Eaton <jwe@octave.org>
parents: 23083
diff changeset
1 ## Copyright (C) 2012-2017 John W. Eaton
13261
9134ca9d4ec8 new functions for Matlab compatibility
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2 ##
9134ca9d4ec8 new functions for Matlab compatibility
John W. Eaton <jwe@octave.org>
parents:
diff changeset
3 ## This file is part of Octave.
9134ca9d4ec8 new functions for Matlab compatibility
John W. Eaton <jwe@octave.org>
parents:
diff changeset
4 ##
9134ca9d4ec8 new functions for Matlab compatibility
John W. Eaton <jwe@octave.org>
parents:
diff changeset
5 ## Octave is free software; you can redistribute it and/or modify it
9134ca9d4ec8 new functions for Matlab compatibility
John W. Eaton <jwe@octave.org>
parents:
diff changeset
6 ## under the terms of the GNU General Public License as published by
9134ca9d4ec8 new functions for Matlab compatibility
John W. Eaton <jwe@octave.org>
parents:
diff changeset
7 ## the Free Software Foundation; either version 3 of the License, or (at
9134ca9d4ec8 new functions for Matlab compatibility
John W. Eaton <jwe@octave.org>
parents:
diff changeset
8 ## your option) any later version.
9134ca9d4ec8 new functions for Matlab compatibility
John W. Eaton <jwe@octave.org>
parents:
diff changeset
9 ##
9134ca9d4ec8 new functions for Matlab compatibility
John W. Eaton <jwe@octave.org>
parents:
diff changeset
10 ## Octave is distributed in the hope that it will be useful, but
9134ca9d4ec8 new functions for Matlab compatibility
John W. Eaton <jwe@octave.org>
parents:
diff changeset
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of
9134ca9d4ec8 new functions for Matlab compatibility
John W. Eaton <jwe@octave.org>
parents:
diff changeset
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
9134ca9d4ec8 new functions for Matlab compatibility
John W. Eaton <jwe@octave.org>
parents:
diff changeset
13 ## General Public License for more details.
9134ca9d4ec8 new functions for Matlab compatibility
John W. Eaton <jwe@octave.org>
parents:
diff changeset
14 ##
9134ca9d4ec8 new functions for Matlab compatibility
John W. Eaton <jwe@octave.org>
parents:
diff changeset
15 ## You should have received a copy of the GNU General Public License
9134ca9d4ec8 new functions for Matlab compatibility
John W. Eaton <jwe@octave.org>
parents:
diff changeset
16 ## along with Octave; see the file COPYING. If not, see
9134ca9d4ec8 new functions for Matlab compatibility
John W. Eaton <jwe@octave.org>
parents:
diff changeset
17 ## <http://www.gnu.org/licenses/>.
9134ca9d4ec8 new functions for Matlab compatibility
John W. Eaton <jwe@octave.org>
parents:
diff changeset
18
9134ca9d4ec8 new functions for Matlab compatibility
John W. Eaton <jwe@octave.org>
parents:
diff changeset
19 ## -*- texinfo -*-
20852
516bb87ea72e 2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents: 20834
diff changeset
20 ## @deftypefn {} {} ispref ("@var{group}", "@var{pref}")
516bb87ea72e 2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents: 20834
diff changeset
21 ## @deftypefnx {} {} ispref ("@var{group}", @{"@var{pref1}", "@var{pref2"}, @dots{}@})
516bb87ea72e 2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents: 20834
diff changeset
22 ## @deftypefnx {} {} ispref ("@var{group}")
20160
03b9d17a2d95 doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19833
diff changeset
23 ## Return true if the named preference @var{pref} exists in the preference
03b9d17a2d95 doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19833
diff changeset
24 ## group @var{group}.
13261
9134ca9d4ec8 new functions for Matlab compatibility
John W. Eaton <jwe@octave.org>
parents:
diff changeset
25 ##
20834
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
26 ## The named preference group must be a string.
13261
9134ca9d4ec8 new functions for Matlab compatibility
John W. Eaton <jwe@octave.org>
parents:
diff changeset
27 ##
20834
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
28 ## The preference @var{pref} may be a string or a cell array of strings.
13261
9134ca9d4ec8 new functions for Matlab compatibility
John W. Eaton <jwe@octave.org>
parents:
diff changeset
29 ##
20160
03b9d17a2d95 doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19833
diff changeset
30 ## If @var{pref} is not specified, return true if the preference group
03b9d17a2d95 doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19833
diff changeset
31 ## @var{group} exists.
13943
5820f8ce683e doc: Add undocumented functions to manual for 3.6.0 release
Rik <octave@nomad.inbox5.com>
parents: 13929
diff changeset
32 ## @seealso{getpref, addpref, setpref, rmpref}
13261
9134ca9d4ec8 new functions for Matlab compatibility
John W. Eaton <jwe@octave.org>
parents:
diff changeset
33 ## @end deftypefn
9134ca9d4ec8 new functions for Matlab compatibility
John W. Eaton <jwe@octave.org>
parents:
diff changeset
34
9134ca9d4ec8 new functions for Matlab compatibility
John W. Eaton <jwe@octave.org>
parents:
diff changeset
35 ## Author: jwe
9134ca9d4ec8 new functions for Matlab compatibility
John W. Eaton <jwe@octave.org>
parents:
diff changeset
36
20834
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
37 function retval = ispref (group, pref = "")
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
38
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
39 if (nargin == 0 || nargin > 2)
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
40 print_usage ();
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
41 endif
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
42
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
43 if (! ischar (group))
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
44 error ("ispref: GROUP must be a string");
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
45 endif
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
46 if (! (ischar (pref) || iscellstr (pref)))
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
47 error ("ispref: PREF must be a string or cellstr");
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
48 endif
13261
9134ca9d4ec8 new functions for Matlab compatibility
John W. Eaton <jwe@octave.org>
parents:
diff changeset
49
9134ca9d4ec8 new functions for Matlab compatibility
John W. Eaton <jwe@octave.org>
parents:
diff changeset
50 if (nargin == 1)
9134ca9d4ec8 new functions for Matlab compatibility
John W. Eaton <jwe@octave.org>
parents:
diff changeset
51 retval = isfield (loadprefs (), group);
20834
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
52 else
13839
13287562863b load preferences before trying to query them
John W. Eaton <jwe@octave.org>
parents: 13261
diff changeset
53 prefs = loadprefs ();
13261
9134ca9d4ec8 new functions for Matlab compatibility
John W. Eaton <jwe@octave.org>
parents:
diff changeset
54 if (isfield (prefs, group))
20834
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
55 retval = isfield (prefs.(group), pref);
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
56 else
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
57 if (ischar (pref))
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
58 retval = false;
13261
9134ca9d4ec8 new functions for Matlab compatibility
John W. Eaton <jwe@octave.org>
parents:
diff changeset
59 else
20834
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
60 retval = false (size (pref));
13261
9134ca9d4ec8 new functions for Matlab compatibility
John W. Eaton <jwe@octave.org>
parents:
diff changeset
61 endif
9134ca9d4ec8 new functions for Matlab compatibility
John W. Eaton <jwe@octave.org>
parents:
diff changeset
62 endif
9134ca9d4ec8 new functions for Matlab compatibility
John W. Eaton <jwe@octave.org>
parents:
diff changeset
63 endif
9134ca9d4ec8 new functions for Matlab compatibility
John W. Eaton <jwe@octave.org>
parents:
diff changeset
64
9134ca9d4ec8 new functions for Matlab compatibility
John W. Eaton <jwe@octave.org>
parents:
diff changeset
65 endfunction
9134ca9d4ec8 new functions for Matlab compatibility
John W. Eaton <jwe@octave.org>
parents:
diff changeset
66
17338
1c89599167a6 maint: End m-files with 1 blank line.
Rik <rik@octave.org>
parents: 14138
diff changeset
67
20834
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
68 %!test
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
69 %! HOME = getenv ("HOME");
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
70 %! unwind_protect
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
71 %! setenv ("HOME", P_tmpdir ());
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
72 %! addpref ("group1", "pref1", [1 2 3]);
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
73 %! addpref ("group2", {"prefA", "prefB"}, {"StringA", {"StringB"}});
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
74 %!
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
75 %! assert (ispref ("group1"));
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
76 %! assert (! ispref ("group3"));
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
77 %!
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
78 %! assert (ispref ("group2", "prefB"));
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
79 %! assert (! ispref ("group2", "prefC"));
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
80 %!
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
81 %! assert (ispref ("group2", {"prefB", "prefC"}), [true, false]);
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
82 %!
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
83 %! assert (ispref ("group3", "prefB"), false);
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
84 %! assert (ispref ("group3", {"prefB", "prefC"}), [false, false]);
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
85 %!
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
86 %! unwind_protect_cleanup
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
87 %! unlink (fullfile (P_tmpdir (), ".octave_prefs"));
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
88 %! if (isempty (HOME))
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
89 %! unsetenv ("HOME");
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
90 %! else
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
91 %! setenv ("HOME", HOME);
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
92 %! endif
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
93 %! end_unwind_protect
17338
1c89599167a6 maint: End m-files with 1 blank line.
Rik <rik@octave.org>
parents: 14138
diff changeset
94
20834
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
95 %!error ispref ()
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
96 %!error ispref (1,2,3)
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
97 %!error <GROUP must be a string> ispref (1, "pref1")
27b333c88c8e Overhaul m-files in prefs directory.
Rik <rik@octave.org>
parents: 20160
diff changeset
98 %!error <PREF must be a string> ispref ("group1", 1)