Fix Emojfy for certain text patterns

Fixes #2198
This commit is contained in:
Bjørn Erik Pedersen 2016-06-11 20:40:56 +02:00
parent 683888ebc8
commit 2564f46a68
2 changed files with 11 additions and 6 deletions

View file

@ -51,14 +51,11 @@ func Emojify(source []byte) []byte {
}
endEmoji := bytes.Index(source[j+1:upper], emojiDelim)
if endEmoji < 0 {
break
}
nextWordDelim := bytes.Index(source[j:upper], emojiWordDelim)
if endEmoji == 0 || (nextWordDelim != -1 && nextWordDelim < endEmoji) {
if endEmoji < 0 {
start += upper + 1
} else if endEmoji == 0 || (nextWordDelim != -1 && nextWordDelim < endEmoji) {
start += endEmoji + 1
} else {
endKey := endEmoji + j + 2

View file

@ -44,7 +44,15 @@ func TestEmojiCustom(t *testing.T) {
{" The motto: no smiles! ", []byte(" The motto: no smiles! ")},
{":hugo_is_the_best_static_gen:", []byte(":hugo_is_the_best_static_gen:")},
{"은행 :smile: 은행", []byte("은행 😄 은행")},
// #2198
{"See: A :beer:!", []byte("See: A 🍺!")},
{`Aaaaaaaaaa: aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa.
:beer:`, []byte(`Aaaaaaaaaa: aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa.
🍺`)},
} {
result := Emojify([]byte(this.input))
if !reflect.DeepEqual(result, this.expect) {