Skip to content

Commit

Permalink
fixes replacements which end in numbers
Browse files Browse the repository at this point in the history
  • Loading branch information
chanced committed Aug 31, 2022
1 parent 09ee259 commit 4cbbe5d
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 14 deletions.
27 changes: 23 additions & 4 deletions token/token.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,14 @@ func Append(caser Caser, t Token, elems ...Token) Token {
if e.Len() == 0 {
continue
}
// just incase the first rune is a Title
if unicode.IsTitle(e.value[0]) {
e.value[0] = caser.ToUpper(e.value[0])
if t.Len() > 0 {
// just incase the first rune is a Title
if unicode.IsTitle(e.value[0]) {
e.value[0] = caser.ToUpper(e.value[0])
}
e.upper[0] = caser.ToUpper(e.upper[0])
}
e.upper[0] = caser.ToUpper(e.upper[0])

t = Token{
value: append(t.value, e.value...),
lower: append(t.lower, e.lower...),
Expand Down Expand Up @@ -329,3 +332,19 @@ func (t Token) HasLower() bool {
}
return false
}

func (t Token) Clone() Token {
val := make([]rune, len(t.value))
lower := make([]rune, len(t.lower))
upper := make([]rune, len(t.upper))
for i, v := range t.value {
val[i] = v
lower[i] = t.lower[i]
upper[i] = t.upper[i]
}
return Token{
value: val,
lower: lower,
upper: upper,
}
}
29 changes: 19 additions & 10 deletions token/token_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,18 +26,27 @@ func TestTurkish(t *testing.T) {
}

func TestAppend(t *testing.T) {
tok := token.FromString(nil, "abc")
res := token.Append(nil, tok, token.FromString(nil, "def"))
if res.String() != "abcdef" {
t.Error("expected \"abcdef\", got", res)
}
titleDZ := token.FromRune(nil, unicode.ToTitle('dz'))
var res token.Token
// tok := token.FromString(nil, "abc")
// res = token.Append(nil, tok, token.FromString(nil, "def"), token.FromRune(nil, 'g'), token.FromString(nil, "hij"))
// if res.String() != "abcdefghij" {
// t.Error("expected \"abcdefghij\", got", res)
// }
titleDZ := unicode.ToTitle('dz')
upperDZ := unicode.ToUpper('dz')

res = token.Append(nil, tok, titleDZ, titleDZ)

if unicode.IsTitle(upperDZ) {
t.Error("expected upperDZ to not be title")
}
// fmt.Println("is title to upperDZ", unicode.IsTitle(upperDZ))
// fmt.Println("is title to titleDZ", unicode.IsTitle(titleDZ))
// fmt.Println("is title to titleDZ after ToUpper", unicode.IsTitle(unicode.ToUpper(titleDZ)))
titleDZTok := token.FromRune(nil, titleDZ)
res = token.Append(nil, titleDZTok, titleDZTok.Clone())
if res.Runes()[0] != titleDZ {
t.Errorf("expected %U to be title, got %U", titleDZ, res.Runes()[0])
}
if res.Runes()[1] != upperDZ {
t.Errorf("expected %U, got %U", upperDZ, res.Runes()[1])
t.Errorf("expected %U to be upper, got %U", upperDZ, res.Runes()[1])
}
}

Expand Down

0 comments on commit 4cbbe5d

Please sign in to comment.