summaryrefslogtreecommitdiff
path: root/src/mfm/prelude.ts
blob: e18625bc7d4ab9f38bfe793be2e6d9bc7aaa505e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import { Tree } from '../prelude/tree';
import * as T from '../prelude/tree';

type Node<T, P> = { type: T, props: P };

export type MentionNode = Node<'mention', {
	canonical: string,
	username: string,
	host: string,
	acct: string
}>;

export type HashtagNode = Node<'hashtag', {
	hashtag: string
}>;

export type EmojiNode = Node<'emoji', {
	name: string
}>;

export type MfmNode =
	MentionNode |
	HashtagNode |
	EmojiNode |
	Node<string, any>;

export type MfmTree = Tree<MfmNode>;

export type MfmForest = MfmTree[];

export function createLeaf(type: string, props: any): MfmTree {
	return T.createLeaf({ type, props });
}

export function createTree(type: string, children: MfmForest, props: any): MfmTree {
	return T.createTree({ type, props }, children);
}

export const urlRegex = /^https?:\/\/[\w\/:%#@$&?!()\[\]~.,=+\-]+/;