1
0
mirror of https://github.com/misskey-dev/misskey.git synced 2026-05-05 05:26:03 +02:00
Files
misskey/src/mfm/parse/elements/mention.ts
2018-11-16 21:57:19 +09:00

30 lines
710 B
TypeScript

/**
* Mention
*/
import parseAcct from '../../../misc/acct/parse';
import { toUnicode } from 'punycode';
export type TextElementMention = {
type: 'mention';
content: string;
canonical: string;
username: string;
host: string;
};
export default function(text: string, before: string) {
const match = text.match(/^@[a-z0-9_]+(?:@[a-z0-9\.\-]+[a-z0-9])?/i);
if (!match) return null;
if (/[a-zA-Z0-9]$/.test(before)) return null;
const mention = match[0];
const { username, host } = parseAcct(mention.substr(1));
const canonical = host != null ? `@${username}@${toUnicode(host)}` : mention;
return {
type: 'mention',
content: mention,
canonical,
username,
host
} as TextElementMention;
}