Fix Emojfy for certain text patterns
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sat, 11 Jun 2016 18:40:56 +0000 (20:40 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sat, 11 Jun 2016 18:40:56 +0000 (20:40 +0200)
Fixes #2198

helpers/emoji.go
helpers/emoji_test.go

index 3b0b1605f169eead6e2239f2a5a0df3a75c06b8d..72550545518c41d50c135a4c8788d246761f536f 100644 (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
index 98005511d84f8721de2f54b44e8fbec525a6795a..c4e6dcf89c4f3aa88176adaec1ef37872c349805 100644 (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) {