Skip to content

Commit bd75965

Browse files
wewarktechknowlogick
authored andcommitted
Prioritize "readme.md" (#5691)
* prioritize readme.md * Improve IsReadmeFile * Add more tests
1 parent 6868378 commit bd75965

File tree

3 files changed

+47
-7
lines changed

3 files changed

+47
-7
lines changed

modules/markup/markup.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,9 +111,14 @@ func IsMarkupFile(name, markup string) bool {
111111
}
112112

113113
// IsReadmeFile reports whether name looks like a README file
114-
// based on its name.
115-
func IsReadmeFile(name string) bool {
114+
// based on its name. If an extension is provided, it will strictly
115+
// match that extension.
116+
// Note that the '.' should be provided in ext, e.g ".md"
117+
func IsReadmeFile(name string, ext ...string) bool {
116118
name = strings.ToLower(name)
119+
if len(ext) > 0 {
120+
return name == "readme"+ext[0]
121+
}
117122
if len(name) < 6 {
118123
return false
119124
} else if len(name) == 6 {

modules/markup/markup_test.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ func TestMisc_IsReadmeFile(t *testing.T) {
1919
"README",
2020
"readME.mdown",
2121
"README.md",
22+
"readme.i18n.md",
2223
}
2324
falseTestCases := []string{
2425
"test.md",
@@ -37,4 +38,25 @@ func TestMisc_IsReadmeFile(t *testing.T) {
3738
for _, testCase := range falseTestCases {
3839
assert.False(t, IsReadmeFile(testCase))
3940
}
41+
42+
trueTestCasesStrict := [][]string{
43+
{"readme", ""},
44+
{"readme.md", ".md"},
45+
{"readme.txt", ".txt"},
46+
}
47+
falseTestCasesStrict := [][]string{
48+
{"readme", ".md"},
49+
{"readme.md", ""},
50+
{"readme.md", ".txt"},
51+
{"readme.md", "md"},
52+
{"readmee.md", ".md"},
53+
{"readme.i18n.md", ".md"},
54+
}
55+
56+
for _, testCase := range trueTestCasesStrict {
57+
assert.True(t, IsReadmeFile(testCase[0], testCase[1]))
58+
}
59+
for _, testCase := range falseTestCasesStrict {
60+
assert.False(t, IsReadmeFile(testCase[0], testCase[1]))
61+
}
4062
}

routers/repo/view.go

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,18 +56,31 @@ func renderDirectory(ctx *context.Context, treeLink string) {
5656
return
5757
}
5858

59-
var readmeFile *git.Blob
59+
// 3 for the extensions in exts[] in order
60+
// the last one is for a readme that doesn't
61+
// strictly match an extension
62+
var readmeFiles [4]*git.Blob
63+
var exts = []string{".md", ".txt", ""} // sorted by priority
6064
for _, entry := range entries {
6165
if entry.IsDir() {
6266
continue
6367
}
6468

65-
if !markup.IsReadmeFile(entry.Name()) {
66-
continue
69+
for i, ext := range exts {
70+
if markup.IsReadmeFile(entry.Name(), ext) {
71+
readmeFiles[i] = entry.Blob()
72+
}
6773
}
6874

69-
readmeFile = entry.Blob()
70-
if markup.Type(entry.Name()) != "" {
75+
if markup.IsReadmeFile(entry.Name()) {
76+
readmeFiles[3] = entry.Blob()
77+
}
78+
}
79+
80+
var readmeFile *git.Blob
81+
for _, f := range readmeFiles {
82+
if f != nil {
83+
readmeFile = f
7184
break
7285
}
7386
}

0 commit comments

Comments
 (0)