diff --git a/app/assets/javascripts/discourse/app/helpers/emoji.js b/app/assets/javascripts/discourse/app/helpers/emoji.js new file mode 100644 index 0000000000..54e5f3faa0 --- /dev/null +++ b/app/assets/javascripts/discourse/app/helpers/emoji.js @@ -0,0 +1,11 @@ +import { emojiUnescape } from "discourse/lib/text"; +import { escapeExpression } from "discourse/lib/utilities"; +import { htmlSafe } from "@ember/template"; +import { helper } from "@ember/component/helper"; + +function emoji(code, options) { + const escaped = escapeExpression(`:${code}:`); + return htmlSafe(emojiUnescape(escaped, options)); +} + +export default helper(emoji); diff --git a/app/assets/javascripts/discourse/tests/integration/helpers/emoji-test.js b/app/assets/javascripts/discourse/tests/integration/helpers/emoji-test.js new file mode 100644 index 0000000000..1378ac0d60 --- /dev/null +++ b/app/assets/javascripts/discourse/tests/integration/helpers/emoji-test.js @@ -0,0 +1,14 @@ +import { module, test } from "qunit"; +import { setupRenderingTest } from "discourse/tests/helpers/component-test"; +import { render } from "@ember/test-helpers"; +import { exists } from "discourse/tests/helpers/qunit-helpers"; +import { hbs } from "ember-cli-htmlbars"; + +module("Integration | Helper | emoji", function (hooks) { + setupRenderingTest(hooks); + + test("it renders", async function (assert) { + await render(hbs`{{emoji "tada"}}`); + assert.ok(exists(`.emoji[title="tada"]`)); + }); +});