FEATURE: Perform a server side replacement of unicode emoji

This commit is contained in:
Robin Ward 2015-12-29 16:27:56 -05:00
parent 98eee2b5de
commit c064dc1322
2 changed files with 22 additions and 1 deletions

View file

@ -246,13 +246,24 @@ module PrettyText
end end
end end
def self.emoji_unicode(text)
return text unless SiteSetting.enable_emoji?
Emoji.db.each do |e|
text.gsub!(e['emoji'], ":#{e['aliases'][0]}:")
end
text
end
def self.cook(text, opts={}) def self.cook(text, opts={})
options = opts.dup options = opts.dup
# we have a minor inconsistency # we have a minor inconsistency
options[:topicId] = opts[:topic_id] options[:topicId] = opts[:topic_id]
sanitized = markdown(text.dup, options) working_text = emoji_unicode(text.dup)
sanitized = markdown(working_text, options)
doc = Nokogiri::HTML.fragment(sanitized) doc = Nokogiri::HTML.fragment(sanitized)

View file

@ -378,7 +378,17 @@ HTML
table = "<table><thead><tr><th>test</th></tr></thead><tbody><tr><td>a</td></tr></tbody></table>" table = "<table><thead><tr><th>test</th></tr></thead><tbody><tr><td>a</td></tr></tbody></table>"
expect(PrettyText.cook(table)).to match_html("") expect(PrettyText.cook(table)).to match_html("")
end end
end
describe "emoji" do
it "replaces unicode emoji with our emoji sets if emoji is enabled" do
expect(PrettyText.cook("💣")).to match(/\:bomb\:/)
end
it "doesn't replace unicode emoji if emoji is disabled" do
SiteSetting.enable_emoji = false
expect(PrettyText.cook("💣")).not_to match(/\:bomb\:/)
end
end end
end end