fix(emojos): actually fix trademark character (#693)
another fix for #679
This commit is contained in:
parent
41d7e40662
commit
9c74a072bf
|
@ -1,5 +1,8 @@
|
||||||
import { getEmojiRegex } from './emojiRegex'
|
import { getEmojiRegex } from './emojiRegex'
|
||||||
|
|
||||||
|
// \ufe0f is a variation selector, which seems to appear for some reason in e.g. ™
|
||||||
|
let NON_EMOJI_REGEX = new RegExp('^[0-9#*™®\ufe0f]+$')
|
||||||
|
|
||||||
// replace emoji in HTML with something else, safely skipping HTML tags
|
// replace emoji in HTML with something else, safely skipping HTML tags
|
||||||
export function replaceEmoji (string, replacer) {
|
export function replaceEmoji (string, replacer) {
|
||||||
let output = ''
|
let output = ''
|
||||||
|
@ -9,7 +12,7 @@ export function replaceEmoji (string, replacer) {
|
||||||
|
|
||||||
function safeReplacer (substring) {
|
function safeReplacer (substring) {
|
||||||
// emoji regex matches digits and pound sign https://git.io/fpl6J
|
// emoji regex matches digits and pound sign https://git.io/fpl6J
|
||||||
if (substring.match(/^[0-9#*™®]+$/)) {
|
if (substring.match(NON_EMOJI_REGEX)) {
|
||||||
return substring
|
return substring
|
||||||
}
|
}
|
||||||
return replacer(substring)
|
return replacer(substring)
|
||||||
|
|
|
@ -70,6 +70,17 @@ describe('test-emoji.js', function () {
|
||||||
replaceEmoji(`woot !@#$%^&*()~` + '`' + `{[}]:;"'<,>.?/£™℠®`, replacer),
|
replaceEmoji(`woot !@#$%^&*()~` + '`' + `{[}]:;"'<,>.?/£™℠®`, replacer),
|
||||||
`woot !@#$%^&*()~` + '`' + `{[}]:;"'<,>.?/£™℠®`
|
`woot !@#$%^&*()~` + '`' + `{[}]:;"'<,>.?/£™℠®`
|
||||||
)
|
)
|
||||||
|
|
||||||
|
assert.strictEqual(
|
||||||
|
replaceEmoji(`woot !@#$%^&*()~` + '`' + `{[}]:;"'<,>.?/£™℠®`, replacer),
|
||||||
|
`woot !@#$%^&*()~` + '`' + `{[}]:;"'<,>.?/£™℠®`
|
||||||
|
)
|
||||||
|
|
||||||
|
// hidden VARIATION SELECTOR character is in here
|
||||||
|
assert.strictEqual(
|
||||||
|
replaceEmoji("<p>It's shapes™️ ... continued</p>", replacer),
|
||||||
|
"<p>It's shapes™️ ... continued</p>"
|
||||||
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('does not replace emoji inside HTML tags', function () {
|
it('does not replace emoji inside HTML tags', function () {
|
||||||
|
|
Loading…
Reference in a new issue