Skip to content

Commit a587696

Browse files
committed
is_absolute, absolute: any size array
1 parent 272d279 commit a587696

File tree

3 files changed

+21
-18
lines changed

3 files changed

+21
-18
lines changed

+stdlib/absolute.m

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,18 @@
1717

1818
function c = absolute(p, base)
1919
arguments
20-
p {mustBeTextScalar}
20+
p string
2121
base {mustBeTextScalar} = pwd()
2222
end
2323

24-
if stdlib.is_absolute(p)
25-
c = p;
26-
return
24+
i = stdlib.is_absolute(p);
25+
c(i) = p(i);
26+
27+
% avoid infinite recursion
28+
if ~stdlib.is_absolute(base)
29+
base = fullfile(pwd(), base);
2730
end
2831

29-
c = fullfile(stdlib.absolute(base), p);
32+
c(~i) = fullfile(base, p(~i));
3033

3134
end

+stdlib/is_absolute.m

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,17 @@
66

77
function y = is_absolute(p)
88
arguments
9-
p {mustBeTextScalar}
9+
p string
1010
end
1111

12-
% not Octave is_absolute_filename() because this is a stricter check for "c:" false
12+
y = false(size(p));
1313

14-
y = ~stdlib.strempty(stdlib.root_dir(p));
14+
i = ~stdlib.strempty(stdlib.root_dir(p));
15+
16+
y(i) = true;
1517

1618
if ispc()
17-
y = y && ~stdlib.strempty(stdlib.root_name(p));
19+
y(i) = ~stdlib.strempty(stdlib.root_name(p(i)));
1820
end
1921

2022
end

test/TestAbsolute.m

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
properties (TestParameter)
88
p1 = {'', "", "hi", "./hi", "../hi"};
9-
p2 = {{'', ''}, {'', ""}, {"", ''}, {"", ""}, {"", "hi"}, {"hi", ""}, {'there', "hi"}};
9+
p2 = {{'', ""}, {'', ""}, {"", ""}, {"", ""}, {"", "hi"}, {"hi", ""}, {'there', "hi"}};
1010
end
1111

1212

@@ -47,11 +47,10 @@ function test_absolute1arg(tc, p1)
4747
r = fullfile(r, p1);
4848
end
4949

50-
if isstring(p1)
51-
r = string(r);
52-
end
50+
rabs = stdlib.absolute(p1);
5351

54-
tc.verifyEqual(stdlib.absolute(p1), r)
52+
tc.verifyClass(rabs, 'string')
53+
tc.verifyEqual(rabs, string(r))
5554
end
5655

5756

@@ -67,11 +66,10 @@ function test_absolute2arg(tc, p2)
6766
r = fullfile(r, p2{1});
6867
end
6968

70-
if isstring(p2{1}) || isstring(p2{2})
71-
r = string(r);
72-
end
69+
rabs = stdlib.absolute(p2{1}, p2{2});
7370

74-
tc.verifyEqual(stdlib.absolute(p2{1}, p2{2}), r)
71+
tc.verifyClass(rabs, 'string')
72+
tc.verifyEqual(rabs, string(r))
7573
end
7674

7775
end

0 commit comments

Comments
 (0)