diff options
author | Nick | 2023-02-13 15:01:09 -0500 |
---|---|---|
committer | GitHub | 2023-02-13 15:01:09 -0500 |
commit | 7b5b739a2f9d9c84ec216ff629dbf0d1dd8a4322 (patch) | |
tree | 80624177b947ebdb8bc33a37bb1d9334a3acd040 /modules | |
parent | 51383ec0841ec2562e5c4a9dadd4fef82974dd5c (diff) |
Move `IsReadmeFile*` from `modules/markup/` to `modules/util` (#22877)
These functions don't examine contents, just filenames, so they don't
fit in well in a markup module.
This was originally part of
https://github.com/go-gitea/gitea/pull/22177.
Signed-off-by: Nick Guenther <nick.guenther@polymtl.ca>
Diffstat (limited to 'modules')
-rw-r--r-- | modules/markup/renderer.go | 38 | ||||
-rw-r--r-- | modules/markup/renderer_test.go | 91 | ||||
-rw-r--r-- | modules/util/path.go | 39 | ||||
-rw-r--r-- | modules/util/path_test.go | 81 |
4 files changed, 120 insertions, 129 deletions
diff --git a/modules/markup/renderer.go b/modules/markup/renderer.go index 5a31e961f..df2c9ebfc 100644 --- a/modules/markup/renderer.go +++ b/modules/markup/renderer.go @@ -317,41 +317,3 @@ func IsMarkupFile(name, markup string) bool { } return false } - -// IsReadmeFile reports whether name looks like a README file -// based on its name. -func IsReadmeFile(name string) bool { - name = strings.ToLower(name) - if len(name) < 6 { - return false - } else if len(name) == 6 { - return name == "readme" - } - return name[:7] == "readme." -} - -// IsReadmeFileExtension reports whether name looks like a README file -// based on its name. It will look through the provided extensions and check if the file matches -// one of the extensions and provide the index in the extension list. -// If the filename is `readme.` with an unmatched extension it will match with the index equaling -// the length of the provided extension list. -// Note that the '.' should be provided in ext, e.g ".md" -func IsReadmeFileExtension(name string, ext ...string) (int, bool) { - name = strings.ToLower(name) - if len(name) < 6 || name[:6] != "readme" { - return 0, false - } - - for i, extension := range ext { - extension = strings.ToLower(extension) - if name[6:] == extension { - return i, true - } - } - - if name[6] == '.' { - return len(ext), true - } - - return 0, false -} diff --git a/modules/markup/renderer_test.go b/modules/markup/renderer_test.go index 624558c3f..0791081f9 100644 --- a/modules/markup/renderer_test.go +++ b/modules/markup/renderer_test.go @@ -2,94 +2,3 @@ // SPDX-License-Identifier: MIT package markup_test - -import ( - "testing" - - . "code.gitea.io/gitea/modules/markup" - - _ "code.gitea.io/gitea/modules/markup/markdown" - - "github.com/stretchr/testify/assert" -) - -func TestMisc_IsReadmeFile(t *testing.T) { - trueTestCases := []string{ - "readme", - "README", - "readME.mdown", - "README.md", - "readme.i18n.md", - } - falseTestCases := []string{ - "test.md", - "wow.MARKDOWN", - "LOL.mDoWn", - "test", - "abcdefg", - "abcdefghijklmnopqrstuvwxyz", - "test.md.test", - "readmf", - } - - for _, testCase := range trueTestCases { - assert.True(t, IsReadmeFile(testCase)) - } - for _, testCase := range falseTestCases { - assert.False(t, IsReadmeFile(testCase)) - } - - type extensionTestcase struct { - name string - expected bool - idx int - } - - exts := []string{".md", ".txt", ""} - testCasesExtensions := []extensionTestcase{ - { - name: "readme", - expected: true, - idx: 2, - }, - { - name: "readme.md", - expected: true, - idx: 0, - }, - { - name: "README.md", - expected: true, - idx: 0, - }, - { - name: "ReAdMe.Md", - expected: true, - idx: 0, - }, - { - name: "readme.txt", - expected: true, - idx: 1, - }, - { - name: "readme.doc", - expected: true, - idx: 3, - }, - { - name: "readmee.md", - }, - { - name: "readme..", - expected: true, - idx: 3, - }, - } - - for _, testCase := range testCasesExtensions { - idx, ok := IsReadmeFileExtension(testCase.name, exts...) - assert.Equal(t, testCase.expected, ok) - assert.Equal(t, testCase.idx, idx) - } -} diff --git a/modules/util/path.go b/modules/util/path.go index e060b527f..74acb7a85 100644 --- a/modules/util/path.go +++ b/modules/util/path.go @@ -11,6 +11,7 @@ import ( "path/filepath" "regexp" "runtime" + "strings" ) // EnsureAbsolutePath ensure that a path is absolute, making it @@ -201,3 +202,41 @@ func CommonSkip(name string) bool { return false } + +// IsReadmeFileName reports whether name looks like a README file +// based on its name. +func IsReadmeFileName(name string) bool { + name = strings.ToLower(name) + if len(name) < 6 { + return false + } else if len(name) == 6 { + return name == "readme" + } + return name[:7] == "readme." +} + +// IsReadmeFileExtension reports whether name looks like a README file +// based on its name. It will look through the provided extensions and check if the file matches +// one of the extensions and provide the index in the extension list. +// If the filename is `readme.` with an unmatched extension it will match with the index equaling +// the length of the provided extension list. +// Note that the '.' should be provided in ext, e.g ".md" +func IsReadmeFileExtension(name string, ext ...string) (int, bool) { + name = strings.ToLower(name) + if len(name) < 6 || name[:6] != "readme" { + return 0, false + } + + for i, extension := range ext { + extension = strings.ToLower(extension) + if name[6:] == extension { + return i, true + } + } + + if name[6] == '.' { + return len(ext), true + } + + return 0, false +} diff --git a/modules/util/path_test.go b/modules/util/path_test.go index 5794df1eb..93f4f67cf 100644 --- a/modules/util/path_test.go +++ b/modules/util/path_test.go @@ -55,3 +55,84 @@ func TestFileURLToPath(t *testing.T) { } } } + +func TestMisc_IsReadmeFileName(t *testing.T) { + trueTestCases := []string{ + "readme", + "README", + "readME.mdown", + "README.md", + "readme.i18n.md", + } + falseTestCases := []string{ + "test.md", + "wow.MARKDOWN", + "LOL.mDoWn", + "test", + "abcdefg", + "abcdefghijklmnopqrstuvwxyz", + "test.md.test", + "readmf", + } + + for _, testCase := range trueTestCases { + assert.True(t, IsReadmeFileName(testCase)) + } + for _, testCase := range falseTestCases { + assert.False(t, IsReadmeFileName(testCase)) + } + + type extensionTestcase struct { + name string + expected bool + idx int + } + + exts := []string{".md", ".txt", ""} + testCasesExtensions := []extensionTestcase{ + { + name: "readme", + expected: true, + idx: 2, + }, + { + name: "readme.md", + expected: true, + idx: 0, + }, + { + name: "README.md", + expected: true, + idx: 0, + }, + { + name: "ReAdMe.Md", + expected: true, + idx: 0, + }, + { + name: "readme.txt", + expected: true, + idx: 1, + }, + { + name: "readme.doc", + expected: true, + idx: 3, + }, + { + name: "readmee.md", + }, + { + name: "readme..", + expected: true, + idx: 3, + }, + } + + for _, testCase := range testCasesExtensions { + idx, ok := IsReadmeFileExtension(testCase.name, exts...) + assert.Equal(t, testCase.expected, ok) + assert.Equal(t, testCase.idx, idx) + } +} |