Skip to content

Commit 0d90b84

Browse files
committed
- Add support for mixed sort order
1 parent 53cb43e commit 0d90b84

6 files changed

Lines changed: 20 additions & 3 deletions

File tree

lib/madness/navigation.rb

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ module Madness
22
# Handle the navigation links for a given directory
33
class Navigation
44
include ServerHelper
5+
using ArrayRefinements
56
using StringRefinements
67

78
attr_reader :dir
@@ -11,7 +12,11 @@ def initialize(dir)
1112
end
1213

1314
def links
14-
@links ||= directory.list
15+
@links ||= if config.sort_order == 'mixed'
16+
directory.list.nat_sort(by: :href)
17+
else
18+
directory.list
19+
end
1520
end
1621

1722
def caption
@@ -27,5 +32,9 @@ def with_search?
2732
def directory
2833
@directory ||= Directory.new(dir)
2934
end
35+
36+
def config
37+
Settings.instance
38+
end
3039
end
3140
end

lib/madness/refinements/array_refinements.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
module Madness
44
module ArrayRefinements
55
refine Array do
6-
def nat_sort
7-
Naturally.sort self
6+
def nat_sort(by: nil)
7+
Naturally.sort self, by: by
88
end
99
end
1010
end

lib/madness/settings.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ def defaults
5757
port: 3000,
5858
bind: '0.0.0.0',
5959
base_uri: nil,
60+
sort_order: 'dirs_first',
6061
sidebar: true,
6162
auto_h1: true,
6263
auto_nav: true,

lib/madness/templates/madness.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@ bind: 0.0.0.0
1515
# base_uri: /docs
1616
base_uri: ~
1717

18+
# choose navigation sort order:
19+
# sort_order: dirs_first # alphabetic directories then alphabetic files
20+
# sort_order: mixed # alphabetic regardless of type
21+
sort_order: dirs_first
22+
1823
# enable sidebar
1924
sidebar: true
2025

spec/approvals/cli/config/show

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
port: 3000
33
bind: 0.0.0.0
44
base_uri: ~
5+
sort_order: dirs_first
56
sidebar: true
67
auto_h1: true
78
auto_nav: true

spec/approvals/cli/config/show-non-default

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
port: 1337
33
bind: 4.3.2.1
44
base_uri: ~
5+
sort_order: dirs_first
56
sidebar: true
67
auto_h1: true
78
auto_nav: true

0 commit comments

Comments
 (0)