[1f77fb]: devel / @svg / getpath.m Maximize Restore History

Download this file

getpath.m    74 lines (56 with data), 2.0 kB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
## Copyright (C) 2011 CarnĂŤ Draug <carandraug+dev@gmail.com>
## Copyright (c) 2011 Juan Pablo Carbajal <carbajal@ifi.uzh.ch>
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 3 of the License, or
## (at your option) any later version.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with this program; if not, see <http://www.gnu.org/licenses/>.
## -*- texinfo -*-
## @deftypefn {Function File} {} function_name ()
## @end deftypefn
function paths = getpath(obj, ids={})
if !isempty(ids)
if iscell (ids) && iscell(ids{1}) % dealing with ids given as cell
ids = ids{1};
if !all ( cellfun (@ischar, ids) )
print_usage
end
elseif !all ( cellfun (@ischar, ids) )
print_usage
end
else
paths = obj.Path;
return
end
tf = ismember (ids, fieldnames (obj.Path));
cellfun (@(s) printf("'%s' is not a valid path id.\n", s) , {ids{!tf}});
paths = [];
if any (tf)
stuff = {ids{tf}};
%{
for i = 1: numel(stuff)
paths{i} = obj.Path.(ids{i}).data;
endfor
%}
% Variation
% paths = cellfun(@(s) obj.Path.(s).data, stuff,'UniformOutput',false);
% Another variation
% paths = cellfun(@(s) getfield(obj,'Path').(s).data, stuff,'UniformOutput',false);
% Yet another
% paths = cellfun(@(s) getfield(obj.Path,s).data, stuff,'UniformOutput',false);
% Yet yet another
dummy = @(s) obj.Path.(s).data;
paths = cellfun(dummy, stuff,'UniformOutput',false);
if numel(paths) == 1
paths = paths{1};
end
end
endfunction