Skip to content

Commit 13b193d

Browse files
committedJan 16, 2021
feat: поддержка @ в хештегах
1 parent 09e7131 commit 13b193d

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed
 

Diff for: ‎src/components/UI/VKText.vue

+10-8
Original file line numberDiff line numberDiff line change
@@ -94,25 +94,27 @@ export default {
9494
}
9595
};
9696
97+
// Хештеги парсятся после масс меншнов потому что #abc@all
98+
// будет упоминать всю беседу, а не игнорировать @all
99+
const hashtagParser = createParser({
100+
regexp: /#[a-zа-яё0-9_@]+/ig,
101+
parseText: (value) => [{ type: 'text', value }],
102+
parseElement: (value, match, isMention) => [{ type: isMention ? 'text' : 'hashtag', value }]
103+
});
104+
97105
const massMentionParser = createParser({
98106
regexp: /(?:@|\*)(?:(all|everyone|все)|(online|here|здесь|тут))/ig,
99-
parseText: (value) => [{ type: 'text', value }],
107+
parseText: hashtagParser,
100108
parseElement: (value, match, isMention) => [{
101109
type: isMention ? 'text' : 'massMention',
102110
subtype: match[1] ? 'all' : 'online',
103111
value
104112
}]
105113
});
106114
107-
const hashtagParser = createParser({
108-
regexp: /#[a-zа-яё0-9_]+/ig,
109-
parseText: massMentionParser,
110-
parseElement: (value, match, isMention) => [{ type: isMention ? 'text' : 'hashtag', value }]
111-
});
112-
113115
const linkParser = createParser({
114116
regexp: /((https?:\/\/)?([a-zа-яё0-9.\-@]+\.([a-zа-яё]{2,18})|(?<localhost>(?<![a-zа-яё0-9])localhost)|(?<ip>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}))(?<port>:\d{1,5})?(\/(\S*[^.,!?()"';\n\\ ])?)?)(?=$|\s|[^a-zа-яё0-9])/ig,
115-
parseText: hashtagParser,
117+
parseText: massMentionParser,
116118
parseElement(value, match, isMention) {
117119
const { localhost, port, ip } = match.groups;
118120
const isValidIP = !ip || !ip.split('.').find((v) => v > 255);

0 commit comments

Comments
 (0)