mirror of
https://github.com/ralsina/tartrazine.git
synced 2025-05-24 16:21:14 -03:00
Merge pull request #35 from lafriks-fork/feat/manpage_strategy
Add support for Roff man pages filenames
This commit is contained in:
commit
0fb4b8a768
21
common.go
21
common.go
@ -22,6 +22,7 @@ var DefaultStrategies = []Strategy{
|
|||||||
GetLanguagesByFilename,
|
GetLanguagesByFilename,
|
||||||
GetLanguagesByShebang,
|
GetLanguagesByShebang,
|
||||||
GetLanguagesByExtension,
|
GetLanguagesByExtension,
|
||||||
|
GetLanguagesByManpage,
|
||||||
GetLanguagesByContent,
|
GetLanguagesByContent,
|
||||||
GetLanguagesByClassifier,
|
GetLanguagesByClassifier,
|
||||||
}
|
}
|
||||||
@ -383,6 +384,26 @@ func GetLanguagesByExtension(filename string, _ []byte, _ []string) []string {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
manpageExtension = regex.MustCompile(`\.(?:[1-9](?:[a-z_]+[a-z_0-9]*)?|0p|n|man|mdoc)(?:\.in)?$`)
|
||||||
|
)
|
||||||
|
|
||||||
|
// GetLanguagesByManpage returns a slice of possible manpage languages for the given filename.
|
||||||
|
// It complies with the signature to be a Strategy type.
|
||||||
|
func GetLanguagesByManpage(filename string, _ []byte, _ []string) []string {
|
||||||
|
filename = strings.ToLower(filename)
|
||||||
|
|
||||||
|
// Check if matches Roff man page filenames
|
||||||
|
if manpageExtension.Match([]byte(filename)) {
|
||||||
|
return []string{
|
||||||
|
"Roff Manpage",
|
||||||
|
"Roff",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func getDotIndexes(filename string) []int {
|
func getDotIndexes(filename string) []int {
|
||||||
dots := make([]int, 0, 2)
|
dots := make([]int, 0, 2)
|
||||||
for i, letter := range filename {
|
for i, letter := range filename {
|
||||||
|
@ -290,6 +290,30 @@ func (s *EnryTestSuite) TestGetLanguagesByExtension() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *EnryTestSuite) TestGetLanguagesByManpage() {
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
filename string
|
||||||
|
content []byte
|
||||||
|
candidates []string
|
||||||
|
expected []string
|
||||||
|
}{
|
||||||
|
{name: "TestGetLanguagesByManpage_1", filename: "bsdmalloc.3malloc", expected: []string{"Roff Manpage", "Roff"}},
|
||||||
|
{name: "TestGetLanguagesByManpage_2", filename: "dirent.h.0p", expected: []string{"Roff Manpage", "Roff"}},
|
||||||
|
{name: "TestGetLanguagesByManpage_3", filename: "linguist.1gh", expected: []string{"Roff Manpage", "Roff"}},
|
||||||
|
{name: "TestGetLanguagesByManpage_4", filename: "test.1.in", expected: []string{"Roff Manpage", "Roff"}},
|
||||||
|
{name: "TestGetLanguagesByManpage_5", filename: "test.man.in", expected: []string{"Roff Manpage", "Roff"}},
|
||||||
|
{name: "TestGetLanguagesByManpage_6", filename: "test.mdoc.in", expected: []string{"Roff Manpage", "Roff"}},
|
||||||
|
{name: "TestGetLanguagesByManpage_7", filename: "foo.h", expected: nil},
|
||||||
|
{name: "TestGetLanguagesByManpage_8", filename: "", expected: nil},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, test := range tests {
|
||||||
|
languages := GetLanguagesByManpage(test.filename, test.content, test.candidates)
|
||||||
|
assert.Equal(s.T(), test.expected, languages, fmt.Sprintf("%v: languages = %v, expected: %v", test.name, languages, test.expected))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (s *EnryTestSuite) TestGetLanguagesByClassifier() {
|
func (s *EnryTestSuite) TestGetLanguagesByClassifier() {
|
||||||
test := []struct {
|
test := []struct {
|
||||||
name string
|
name string
|
||||||
|
Loading…
x
Reference in New Issue
Block a user