Update search for colon-syntax emoji to ignore case (#3443)
* Add tests for existing replaceColons functionality * Update to lowercase before matching short names * Update lib_test.ts
This commit is contained in:
parent
cb272111ab
commit
f2dd10cd1a
2 changed files with 31 additions and 0 deletions
|
@ -255,6 +255,7 @@ export function replaceColons(str: string) {
|
|||
return str.replace(/:[a-z0-9-_+]+:(?::skin-tone-[1-5]:)?/gi, m => {
|
||||
const [shortName = '', skinTone = '0'] = m
|
||||
.replace('skin-tone-', '')
|
||||
.toLowerCase()
|
||||
.split(':')
|
||||
.filter(Boolean);
|
||||
|
||||
|
|
30
ts/test/components/emoji/lib_test.ts
Normal file
30
ts/test/components/emoji/lib_test.ts
Normal file
|
@ -0,0 +1,30 @@
|
|||
import { assert } from 'chai';
|
||||
|
||||
import { replaceColons } from '../../../components/emoji/lib';
|
||||
|
||||
describe('replaceColons', () => {
|
||||
it('replaces known emoji short names between colons', () => {
|
||||
const anEmoji = replaceColons('hello :grinning:');
|
||||
assert.equal(anEmoji, 'hello 😀');
|
||||
});
|
||||
|
||||
it('understands skin tone modifiers', () => {
|
||||
const skinToneModifierEmoji = replaceColons('hello :wave::skin-tone-5:!');
|
||||
assert.equal(skinToneModifierEmoji, 'hello 👋🏿!');
|
||||
});
|
||||
|
||||
it('passes through strings with no colons', () => {
|
||||
const noEmoji = replaceColons('hello');
|
||||
assert.equal(noEmoji, 'hello');
|
||||
});
|
||||
|
||||
it('ignores unknown emoji', () => {
|
||||
const unknownEmoji = replaceColons(':Unknown: :unknown:');
|
||||
assert.equal(unknownEmoji, ':Unknown: :unknown:');
|
||||
});
|
||||
|
||||
it('converts short names to lowercase before matching them', () => {
|
||||
const emojiWithCaps = replaceColons('hello :Grinning:');
|
||||
assert.equal(emojiWithCaps, 'hello 😀');
|
||||
});
|
||||
});
|
Loading…
Reference in a new issue