Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Braha Stoll <alexbrahastoll@gmail.com>2016-12-27 01:12:15 +0300
committerAlex Braha Stoll <alexbrahastoll@gmail.com>2016-12-31 21:55:50 +0300
commitc8a1e9682656b6b3ec714e38459e089df2ee106c (patch)
tree7fb4ce41c0145d8eb6b9d3a38e69b522da076bd7 /app/models/wiki_page.rb
parentb361a67fb019e5c7f5361bbd3c43545da3ab0288 (diff)
Change WikiPage.group_by_directory to use WikiDirectory
Diffstat (limited to 'app/models/wiki_page.rb')
-rw-r--r--app/models/wiki_page.rb18
1 files changed, 14 insertions, 4 deletions
diff --git a/app/models/wiki_page.rb b/app/models/wiki_page.rb
index 0e905cb9a00..63e5aa0e519 100644
--- a/app/models/wiki_page.rb
+++ b/app/models/wiki_page.rb
@@ -16,12 +16,22 @@ class WikiPage
#
# pages - an array of WikiPage objects.
#
- # Returns a hash whose keys are directories and whose values are WikiPage
- # arrays.
+ # Returns an array of WikiPage and WikiDirectory objects. The entries are
+ # sorted by alphabetical order (directories and pages inside each directory).
+ # Pages at the root level come before everything.
def self.group_by_directory(pages)
- return {} if pages.blank?
+ return [] if pages.blank?
+
pages.sort_by { |page| [page.directory, page.slug] }.
- group_by { |page| page.directory }
+ group_by { |page| page.directory }.
+ map do |dir, pages|
+ if dir == '/'
+ pages
+ else
+ WikiDirectory.new(dir, pages)
+ end
+ end.
+ flatten
end
def to_key