This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
package util
|
||||
|
||||
import (
|
||||
"strings"
|
||||
)
|
||||
|
||||
// RemoveNPCAttribution removes NPC attribution.
|
||||
func RemoveNPCAttribution(str string) string {
|
||||
lastOpen := strings.LastIndex(str, "(")
|
||||
lastClose := strings.LastIndex(str, ")")
|
||||
ending := len(str) - 1
|
||||
|
||||
if lastOpen > 0 && str[lastOpen-1] != '(' && (lastClose == -1 || lastClose == ending) {
|
||||
cutoff := lastOpen
|
||||
for cutoff > 1 && str[cutoff-1] == ' ' {
|
||||
cutoff--
|
||||
}
|
||||
|
||||
return str[:cutoff]
|
||||
}
|
||||
|
||||
return str
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
package util_test
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"git.aiterp.net/rpdata/logbot3/internal/util"
|
||||
)
|
||||
|
||||
func TestRemoveNPCAttribution(t *testing.T) {
|
||||
table := []struct {
|
||||
Input string
|
||||
Output string
|
||||
}{
|
||||
{
|
||||
Input: "Character does stuff. (Player_Name)",
|
||||
Output: "Character does stuff.",
|
||||
},
|
||||
{
|
||||
Input: "Text (with some clarification) about stuff.",
|
||||
Output: "Text (with some clarification) about stuff.",
|
||||
},
|
||||
{
|
||||
Input: "Text without anything.",
|
||||
Output: "Text without anything.",
|
||||
},
|
||||
{
|
||||
Input: "((*Correction))",
|
||||
Output: "((*Correction))",
|
||||
},
|
||||
}
|
||||
|
||||
for i, row := range table {
|
||||
t.Run(fmt.Sprintf("Row_%d", i), func(t *testing.T) {
|
||||
result := util.RemoveNPCAttribution(row.Input)
|
||||
|
||||
if result != row.Output {
|
||||
t.Errorf("Row %d failed", i)
|
||||
t.Errorf("Expected: %#+v", row.Output)
|
||||
t.Errorf("Result: %#+v", result)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user