From cdc6b6105ceb0040c8373bcb5db1fa8628591706 Mon Sep 17 00:00:00 2001 From: veelenga Date: Tue, 23 Jun 2015 08:53:33 +0300 Subject: [PATCH] Match only wrapped in :_: words --- spec/emoji_spec.cr | 10 +++++++++- src/emoji.cr | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/spec/emoji_spec.cr b/spec/emoji_spec.cr index 1e0b17d..1d7ef0f 100644 --- a/spec/emoji_spec.cr +++ b/spec/emoji_spec.cr @@ -15,11 +15,19 @@ describe "Emoji" do describe ".emojize" do cat = "🐱" - it_emojizes(":cat:", "#{cat}") it_emojizes(":cat:s are awesome", "#{cat}s are awesome") it_emojizes("Sweet :cat:s", "Sweet #{cat}s") it_emojizes("I have a :cat:", "I have a #{cat}") it_emojizes("Why :cat:s? 'cause :cat:s rock", "Why #{cat}s? 'cause #{cat}s rock") + it_emojizes("Talk to your :cat:: say 'meow'", "Talk to your #{cat}: say 'meow'") + it_emojizes("Who rocks? For sure ::cat:s", "Who rocks? For sure :#{cat}s") + + it_emojizes(":cat:", "#{cat}") + it_emojizes("::cat::", ":#{cat}:") + it_emojizes("-:cat:-", "-#{cat}-") + it_emojizes(" :cat: ", " #{cat} ") + it_emojizes(": :cat: ", ": #{cat} ") + it_emojizes(":cat: :", "#{cat} :") it_emojizes(":thumbsup:", "👍") it_emojizes(":+1:", "👍") diff --git a/src/emoji.cr b/src/emoji.cr index 4a005a9..67e2fb6 100644 --- a/src/emoji.cr +++ b/src/emoji.cr @@ -6,7 +6,7 @@ module Emoji @@map = Emoji::CodepointMap.new def self.emojize(s) - s.scan(/:[\S]+:/).map { |data| data[0] } + s.scan(/:[^(: )]+?:/).map { |data| data[0] } .uniq! .each do |name| s = s.gsub(name, @@map[name]) if @@map.includes? name