commit: cc0a63736a159bc03b77bbd4c62a684d1294e3d2
parent f059c1f314be5979d32cd5726b28fd1b21738972
Author: HJ <30-hj@users.noreply.git.pleroma.social>
Date: Tue, 22 Aug 2023 20:37:29 +0000
Merge branch 'tusooa/1274-nonascii-tags' into 'develop'
Fix parsing non-ascii tags
Closes #1274
See merge request pleroma/pleroma-fe!1848
Diffstat:
3 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/changelog.d/nonascii-tags.fix b/changelog.d/nonascii-tags.fix
@@ -0,0 +1 @@
+Fix parsing non-ascii tags
diff --git a/src/services/matcher/matcher.service.js b/src/services/matcher/matcher.service.js
@@ -14,8 +14,11 @@ export const mentionMatchesUrl = (attention, url) => {
* @param {string} url
*/
export const extractTagFromUrl = (url) => {
- const regex = /tag[s]*\/(\w+)$/g
- const result = regex.exec(url)
+ const decoded = decodeURI(url)
+ // https://git.pleroma.social/pleroma/elixir-libraries/linkify/-/blob/master/lib/linkify/parser.ex
+ // https://www.pcre.org/original/doc/html/pcrepattern.html
+ const regex = /tag[s]*\/([\p{L}\p{N}_]*[\p{Alphabetic}_·\u{200c}][\p{L}\p{N}_·\p{M}\u{200c}]*)$/ug
+ const result = regex.exec(decoded)
if (!result) {
return false
}
diff --git a/test/unit/specs/services/matcher/matcher.spec.js b/test/unit/specs/services/matcher/matcher.spec.js
@@ -78,5 +78,11 @@ describe('MatcherService', () => {
expect(MatcherService.extractTagFromUrl(url)).to.eql(false)
})
+
+ it('should return tag name from non-ascii tags', () => {
+ const url = encodeURI('https://website.com/tag/喵喵喵')
+
+ expect(MatcherService.extractTagFromUrl(url)).to.eql('喵喵喵')
+ })
})
})