annotate scripts/pkg/private/fix_depends.m @ 17483:bddb9688e41c

feather.m: Overhaul function for Matlab visual compatibility. * scripts/plot/feather.m: Reduce length of arrowhead size to 0.20 of arrow shaft. Change arrow head angle with shaft from 45 to 30 degrees. Use variable 'h' instead of 'retval' to match documentation. Redo input validation. Add %!error input validation tests.
author Rik <rik@octave.org>
date Tue, 24 Sep 2013 13:17:04 -0700
parents 89acf2cd9149
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14473
a46b8b0bd325 doc: Fix the encoding in Søren's name
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 14467
diff changeset
1 ## Copyright (C) 2005-2012 Søren Hauberg
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
2 ## Copyright (C) 2010 VZLU Prague, a.s.
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
3 ##
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
4 ## This file is part of Octave.
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
5 ##
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
6 ## Octave is free software; you can redistribute it and/or modify it
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
7 ## under the terms of the GNU General Public License as published by
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
8 ## the Free Software Foundation; either version 3 of the License, or (at
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
9 ## your option) any later version.
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
10 ##
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
11 ## Octave is distributed in the hope that it will be useful, but
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
12 ## WITHOUT ANY WARRANTY; without even the implied warranty of
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
13 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
14 ## General Public License for more details.
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
15 ##
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
16 ## You should have received a copy of the GNU General Public License
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
17 ## along with Octave; see the file COPYING. If not, see
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
18 ## <http://www.gnu.org/licenses/>.
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
19
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
20 ## -*- texinfo -*-
14479
05b59be209ed doc: grammarcheck new pkg/private functions
Rik <octave@nomad.inbox5.com>
parents: 14473
diff changeset
21 ## @deftypefn {Function File} {@var{deps_cell} =} fix_depends (@var{depends})
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
22 ## Undocumented internal function.
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
23 ## @end deftypefn
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
24
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
25 ## Make sure the depends field is of the right format.
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
26 ## This function returns a cell of structures with the following fields:
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
27 ## package, version, operator
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
28 function deps_cell = fix_depends (depends)
16724
b7667fcb9fbc Substitute ostrsplit() for strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16403
diff changeset
29 deps = strtrim (ostrsplit (tolower (depends), ","));
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
30 deps_cell = cell (1, length (deps));
17028
89acf2cd9149 Simplify the way pkg checks for dependencies.
Carlo de Falco <cdf@users.sourceforge.net>
parents: 16724
diff changeset
31 dep_pat = ...
89acf2cd9149 Simplify the way pkg checks for dependencies.
Carlo de Falco <cdf@users.sourceforge.net>
parents: 16724
diff changeset
32 '\s*(?<name>\w+)+\s*(\(\s*(?<op>[<>=]+)\s*(?<ver>\d+\.\d+(\.\d+)*)\s*\))*\s*';
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
33
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
34 ## For each dependency.
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
35 for i = 1:length (deps)
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
36 dep = deps{i};
17028
89acf2cd9149 Simplify the way pkg checks for dependencies.
Carlo de Falco <cdf@users.sourceforge.net>
parents: 16724
diff changeset
37 [start, nm] = regexp (dep, dep_pat, 'start', 'names');
89acf2cd9149 Simplify the way pkg checks for dependencies.
Carlo de Falco <cdf@users.sourceforge.net>
parents: 16724
diff changeset
38 ## Is the dependency specified
89acf2cd9149 Simplify the way pkg checks for dependencies.
Carlo de Falco <cdf@users.sourceforge.net>
parents: 16724
diff changeset
39 ## in the correct format?
89acf2cd9149 Simplify the way pkg checks for dependencies.
Carlo de Falco <cdf@users.sourceforge.net>
parents: 16724
diff changeset
40 if (! isempty (start))
89acf2cd9149 Simplify the way pkg checks for dependencies.
Carlo de Falco <cdf@users.sourceforge.net>
parents: 16724
diff changeset
41 package = tolower (strtrim (nm.name));
89acf2cd9149 Simplify the way pkg checks for dependencies.
Carlo de Falco <cdf@users.sourceforge.net>
parents: 16724
diff changeset
42 ## Does the dependency specify a version
89acf2cd9149 Simplify the way pkg checks for dependencies.
Carlo de Falco <cdf@users.sourceforge.net>
parents: 16724
diff changeset
43 ## Example: package(>= version).
89acf2cd9149 Simplify the way pkg checks for dependencies.
Carlo de Falco <cdf@users.sourceforge.net>
parents: 16724
diff changeset
44 if (! isempty (nm.ver))
89acf2cd9149 Simplify the way pkg checks for dependencies.
Carlo de Falco <cdf@users.sourceforge.net>
parents: 16724
diff changeset
45 operator = nm.op;
89acf2cd9149 Simplify the way pkg checks for dependencies.
Carlo de Falco <cdf@users.sourceforge.net>
parents: 16724
diff changeset
46 if (! any (strcmp (operator, {">", ">=", "<=", "<", "=="})))
89acf2cd9149 Simplify the way pkg checks for dependencies.
Carlo de Falco <cdf@users.sourceforge.net>
parents: 16724
diff changeset
47 error ("unsupported operator: %s", operator);
89acf2cd9149 Simplify the way pkg checks for dependencies.
Carlo de Falco <cdf@users.sourceforge.net>
parents: 16724
diff changeset
48 endif
89acf2cd9149 Simplify the way pkg checks for dependencies.
Carlo de Falco <cdf@users.sourceforge.net>
parents: 16724
diff changeset
49 version = fix_version (nm.ver);
89acf2cd9149 Simplify the way pkg checks for dependencies.
Carlo de Falco <cdf@users.sourceforge.net>
parents: 16724
diff changeset
50 ## If no version is specified for the dependency
89acf2cd9149 Simplify the way pkg checks for dependencies.
Carlo de Falco <cdf@users.sourceforge.net>
parents: 16724
diff changeset
51 ## we say that the version should be greater than
89acf2cd9149 Simplify the way pkg checks for dependencies.
Carlo de Falco <cdf@users.sourceforge.net>
parents: 16724
diff changeset
52 ## or equal to "0.0.0".
89acf2cd9149 Simplify the way pkg checks for dependencies.
Carlo de Falco <cdf@users.sourceforge.net>
parents: 16724
diff changeset
53 else
89acf2cd9149 Simplify the way pkg checks for dependencies.
Carlo de Falco <cdf@users.sourceforge.net>
parents: 16724
diff changeset
54 package = tolower (strtrim (dep));
89acf2cd9149 Simplify the way pkg checks for dependencies.
Carlo de Falco <cdf@users.sourceforge.net>
parents: 16724
diff changeset
55 operator = ">=";
89acf2cd9149 Simplify the way pkg checks for dependencies.
Carlo de Falco <cdf@users.sourceforge.net>
parents: 16724
diff changeset
56 version = "0.0.0";
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
57 endif
17028
89acf2cd9149 Simplify the way pkg checks for dependencies.
Carlo de Falco <cdf@users.sourceforge.net>
parents: 16724
diff changeset
58 deps_cell{i} = struct ("package", package,
89acf2cd9149 Simplify the way pkg checks for dependencies.
Carlo de Falco <cdf@users.sourceforge.net>
parents: 16724
diff changeset
59 "operator", operator,
89acf2cd9149 Simplify the way pkg checks for dependencies.
Carlo de Falco <cdf@users.sourceforge.net>
parents: 16724
diff changeset
60 "version", version);
89acf2cd9149 Simplify the way pkg checks for dependencies.
Carlo de Falco <cdf@users.sourceforge.net>
parents: 16724
diff changeset
61 else
89acf2cd9149 Simplify the way pkg checks for dependencies.
Carlo de Falco <cdf@users.sourceforge.net>
parents: 16724
diff changeset
62 error ("incorrect syntax for dependency '%s' in the DESCRIPTION file\n",
89acf2cd9149 Simplify the way pkg checks for dependencies.
Carlo de Falco <cdf@users.sourceforge.net>
parents: 16724
diff changeset
63 dep);
89acf2cd9149 Simplify the way pkg checks for dependencies.
Carlo de Falco <cdf@users.sourceforge.net>
parents: 16724
diff changeset
64 endif
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
65 endfor
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
66 endfunction
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
67