summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/gitlab/string_path.rb16
1 files changed, 14 insertions, 2 deletions
diff --git a/lib/gitlab/string_path.rb b/lib/gitlab/string_path.rb
index 3add56d2213..a2dc63db2f2 100644
--- a/lib/gitlab/string_path.rb
+++ b/lib/gitlab/string_path.rb
@@ -43,12 +43,24 @@ module Gitlab
new(@path.sub(basename, ''))
end
+ def descendants
+ return [] unless directory?
+ children = @universe.select { |entry| entry =~ /^#{@path}.+/ }
+ children.map { |path| new(path) }
+ end
+
+ def children
+ descendants.select { |descendant| descendant.parent == self }
+ end
+
def directories
- raise NotImplementedError
+ return [] unless directory?
+ children.select { |child| child.directory? }
end
def files
- raise NotImplementedError
+ return [] unless directory?
+ children.select { |child| child.file? }
end
def basename