forked from srxl/akkoma-fe
fix regex shortcode problem
This commit is contained in:
parent
aadd36f3ec
commit
a2923570c3
2 changed files with 14 additions and 1 deletions
|
@ -196,9 +196,11 @@ export const parseAttachment = (data) => {
|
|||
return output
|
||||
}
|
||||
export const addEmojis = (string, emojis) => {
|
||||
const matchOperatorsRegex = /[|\\{}()[\]^$+*?.-]/g
|
||||
return emojis.reduce((acc, emoji) => {
|
||||
const regexSafeShortCode = emoji.shortcode.replace(matchOperatorsRegex, '\\$&')
|
||||
return acc.replace(
|
||||
new RegExp(`:${emoji.shortcode}:`, 'g'),
|
||||
new RegExp(`:${regexSafeShortCode}:`, 'g'),
|
||||
`<img src='${emoji.url}' alt='${emoji.shortcode}' title='${emoji.shortcode}' class='emoji' />`
|
||||
)
|
||||
}, string)
|
||||
|
|
|
@ -345,5 +345,16 @@ describe('API Entities normalizer', () => {
|
|||
const result = addEmojis('Admin add the :tenshi: emoji', emojis)
|
||||
expect(result).to.equal('Admin add the :tenshi: emoji')
|
||||
})
|
||||
|
||||
it('Doesn\'t blow up on regex special characters', () => {
|
||||
const emojis = makeMockEmojiMasto([{
|
||||
shortcode: 'c++'
|
||||
}, {
|
||||
shortcode: '[a-z] {|}*'
|
||||
}])
|
||||
const result = addEmojis('This post has :c++: emoji and :[a-z] {|}*: emoji', emojis)
|
||||
expect(result).to.include('title=\'c++\'')
|
||||
expect(result).to.include('title=\'[a-z] {|}*\'')
|
||||
})
|
||||
})
|
||||
})
|
||||
|
|
Loading…
Reference in a new issue