mirror of
https://iceshrimp.dev/iceshrimp/iceshrimp
synced 2024-11-24 23:26:07 +09:00
Better hashtag parsing
This commit is contained in:
parent
4eb539c4e0
commit
20c4d59c85
@ -9,9 +9,9 @@ export type TextElementHashtag = {
|
||||
};
|
||||
|
||||
export default function(text: string, i: number) {
|
||||
if (!(/^\s#[^\s]+/.test(text) || (i == 0 && /^#[^\s]+/.test(text)))) return null;
|
||||
if (!(/^\s#[^\s\.,]+/.test(text) || (i == 0 && /^#[^\s\.,]+/.test(text)))) return null;
|
||||
const isHead = text.startsWith('#');
|
||||
const hashtag = text.match(/^\s?#[^\s]+/)[0];
|
||||
const hashtag = text.match(/^\s?#[^\s\.,]+/)[0];
|
||||
const res: any[] = !isHead ? [{
|
||||
type: 'text',
|
||||
content: text[0]
|
||||
|
13
test/mfm.ts
13
test/mfm.ts
@ -71,11 +71,20 @@ describe('Text', () => {
|
||||
});
|
||||
|
||||
it('hashtag', () => {
|
||||
const tokens = analyze('Strawberry Pasta #alice');
|
||||
const tokens1 = analyze('Strawberry Pasta #alice');
|
||||
assert.deepEqual([
|
||||
{ type: 'text', content: 'Strawberry Pasta ' },
|
||||
{ type: 'hashtag', content: '#alice', hashtag: 'alice' }
|
||||
], tokens);
|
||||
], tokens1);
|
||||
|
||||
const tokens2 = analyze('Foo #bar, baz #piyo.');
|
||||
assert.deepEqual([
|
||||
{ type: 'text', content: 'Foo ' },
|
||||
{ type: 'hashtag', content: '#bar', hashtag: 'bar' },
|
||||
{ type: 'text', content: ', baz ' },
|
||||
{ type: 'hashtag', content: '#piyo', hashtag: 'piyo' },
|
||||
{ type: 'text', content: '.' }
|
||||
], tokens2);
|
||||
});
|
||||
|
||||
it('url', () => {
|
||||
|
Loading…
Reference in New Issue
Block a user