interweave-autolink
Version:
URL, IP, email, and hashtag autolinking support for Interweave.
24 lines (19 loc) • 667 B
text/typescript
import React from 'react';
import { ChildrenNode, Matcher, MatchResponse, Node } from 'interweave';
import { HASHTAG_PATTERN } from './constants';
import { Hashtag } from './Hashtag';
import { HashtagProps } from './types';
export type HashtagMatch = Pick<HashtagProps, 'hashtag'>;
export class HashtagMatcher extends Matcher<HashtagProps> {
replaceWith(children: ChildrenNode, props: HashtagProps): Node {
return React.createElement(Hashtag, props, children);
}
asTag(): string {
return 'a';
}
match(string: string): MatchResponse<HashtagMatch> | null {
return this.doMatch(string, HASHTAG_PATTERN, (matches) => ({
hashtag: matches[0],
}));
}
}