From 279b028c5e14252d9279e4e3398ac3c05da9e7bf Mon Sep 17 00:00:00 2001 From: Nathan Lowe Date: Wed, 20 May 2015 10:16:19 -0400 Subject: [PATCH] Fix #1012: /Pages should render Folders First, then files, alphabetically --- lib/gollum/views/pages.rb | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/lib/gollum/views/pages.rb b/lib/gollum/views/pages.rb index bd020d2a..ff11fcf7 100644 --- a/lib/gollum/views/pages.rb +++ b/lib/gollum/views/pages.rb @@ -31,9 +31,11 @@ module Precious def files_folders if has_results - folder_links = [] + folders = {} + page_files = {} - @results.map { |page| + # 1012: Folders and Pages need to be separated + @results.each do |page| page_path = page.path.sub(/^#{@path}\//, '') if page_path.include?('/') @@ -41,19 +43,23 @@ module Precious folder_path = @path ? "#{@path}/#{folder}" : folder folder_link = %{
  • #{folder}
  • } - unless folder_links.include?(folder_link) - folder_links << folder_link - - folder_link - end + folders[folder] = folder_link unless folders.key?(folder) elsif page_path != ".gitkeep" if defined? page.format - %{
  • #{page.name}
  • } + page_link = %{
  • #{page.name}
  • } + page_files[page.name] = page_link else - %{
  • #{page.name}
  • } + page_link = %{
  • #{page.name}
  • } + page_files[page.name] = page_link end end - }.compact.join("\n") + end + + # 1012: All Pages should be rendered as Folders first, then Pages, each sorted alphabetically + result = Hash[folders.sort_by{| key, value | key.downcase} ].values.join("\n") + "\n" + result += Hash[page_files.sort_by{ | key, value | key.downcase } ].values.join("\n") + + result else "" end