Skip to content

Commit 19ae5c5

Browse files
committed
- Add support for named directory cover pages
1 parent 6fa2afb commit 19ae5c5

5 files changed

Lines changed: 50 additions & 14 deletions

File tree

.envrc.example

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
11
# for git-changelog (https://github.com/dannyben/git-changelog)
22
export CHANGELOG_COMMIT_URL=https://github.com/DannyBen/madness/commit/%h
33
export CHANGELOG_COMPARE_URL=https://github.com/dannyben/madness/compare/%s
4+
5+
# enable debugging with the debug gem
6+
export DEBUGGER=1

Runfile

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
require 'madness'
2-
require "sasstool"
3-
require "slim"
4-
require "pretty_trace/enable-trim"
2+
require 'sasstool'
3+
require 'slim'
4+
require 'pretty_trace/enable-trim'
5+
require 'debug' rescue nil
56

67
title "Madness Runfile"
78
summary "Runfile tasks for building the Madness gem"

lib/madness.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,5 @@
44
requires 'madness/settings'
55
requires 'madness/server_helper'
66
requires 'madness'
7+
8+
require 'debug' rescue nil if ENV['DEBUGGER']

lib/madness/directory.rb

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,29 @@ def list
1717
private
1818

1919
def files
20-
result = Dir["#{dir}/#{config.dir_glob}"]
21-
result.reject! do |f|
22-
['README.md', 'index.md'].include? File.basename(f)
20+
@files ||= begin
21+
result = Dir["#{dir}/#{config.dir_glob}"]
22+
result.reject! do |f|
23+
['README.md', 'index.md'].include? File.basename(f)
24+
end
25+
result.nat_sort.map { |path| Item.new path, :file }
2326
end
24-
result.nat_sort.map { |path| Item.new path, :file }
2527
end
2628

2729
def dirs
28-
result = Dir["#{dir}/*"].select { |f| File.directory? f }
29-
result.reject! { |f| exclude? f }
30-
result.nat_sort.map { |path| Item.new path, :dir }
30+
@dirs ||= begin
31+
result = Dir["#{dir}/*"].select { |f| File.directory? f }
32+
result.reject! { |f| exclude?(f) || has_named_cover_page?(f) }
33+
result.nat_sort.map { |path| Item.new path, :dir }
34+
end
35+
end
36+
37+
def paths
38+
@paths ||= files.map(&:path)
39+
end
40+
41+
def has_named_cover_page?(path)
42+
paths.include? "#{path}.md"
3143
end
3244

3345
def exclude?(path)

lib/madness/document.rb

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,8 @@ def set_base_attributes_for_directory
5555
@dir = base
5656
@type = :readme
5757

58-
if File.exist? "#{base}/index.md"
59-
@file = "#{base}/index.md"
60-
elsif File.exist? "#{base}/README.md"
61-
@file = "#{base}/README.md"
58+
if cover_page
59+
@file = cover_page
6260
else
6361
@type = :empty
6462
end
@@ -79,5 +77,25 @@ def md_file?
7977
def md_filename
8078
File.extname(base) == '.md' ? base : "#{base}.md"
8179
end
80+
81+
def cover_page
82+
@cover_page ||= cover_page!
83+
end
84+
85+
def cover_page!
86+
cover_page_candidates.each do |candidate|
87+
return candidate if File.exist? candidate
88+
end
89+
90+
nil
91+
end
92+
93+
def cover_page_candidates
94+
@cover_page_candidates ||= [
95+
File.expand_path('index.md', base),
96+
File.expand_path("../#{File.basename(base)}.md", base),
97+
File.expand_path('README.md', base),
98+
]
99+
end
82100
end
83101
end

0 commit comments

Comments
 (0)