parent
e3b8495431
commit
0ff390ed80
7 changed files with 79 additions and 46 deletions
|
|
@ -8,7 +8,9 @@ export type TextElementHashtag = {
|
|||
hashtag: string;
|
||||
};
|
||||
|
||||
export default function(text: string, isBegin: boolean) {
|
||||
export default function(text: string, before: string) {
|
||||
const isBegin = before == '';
|
||||
|
||||
if (!(/^\s#[^\s\.,!\?#]+/.test(text) || (isBegin && /^#[^\s\.,!\?#]+/.test(text)))) return null;
|
||||
const isHead = text.startsWith('#');
|
||||
const hashtag = text.match(/^\s?#[^\s\.,!\?#]+/)[0];
|
||||
|
|
|
|||
|
|
@ -12,9 +12,10 @@ export type TextElementMention = {
|
|||
host: string;
|
||||
};
|
||||
|
||||
export default function(text: 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;
|
||||
|
|
|
|||
|
|
@ -8,7 +8,9 @@ export type TextElementQuote = {
|
|||
quote: string;
|
||||
};
|
||||
|
||||
export default function(text: string, isBegin: boolean) {
|
||||
export default function(text: string, before: string) {
|
||||
const isBegin = before == '';
|
||||
|
||||
const match = text.match(/^"([\s\S]+?)\n"/) || text.match(/^\n>([\s\S]+?)(\n\n|$)/) ||
|
||||
(isBegin ? text.match(/^>([\s\S]+?)(\n\n|$)/) : null);
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,9 @@ export type TextElementTitle = {
|
|||
title: string;
|
||||
};
|
||||
|
||||
export default function(text: string, isBegin: boolean) {
|
||||
export default function(text: string, before: string) {
|
||||
const isBegin = before == '';
|
||||
|
||||
const match = isBegin ? text.match(/^(【|\[)(.+?)(】|])\n/) : text.match(/^\n(【|\[)(.+?)(】|])\n/);
|
||||
if (!match) return null;
|
||||
return {
|
||||
|
|
|
|||
|
|
@ -8,12 +8,13 @@ export type TextElementUrl = {
|
|||
url: string;
|
||||
};
|
||||
|
||||
export default function(text: string) {
|
||||
export default function(text: string, before: string) {
|
||||
const match = text.match(/^https?:\/\/[\w\/:%#@\$&\?!\(\)\[\]~\.,=\+\-]+/);
|
||||
if (!match) return null;
|
||||
let url = match[0];
|
||||
if (url.endsWith('.')) url = url.substr(0, url.lastIndexOf('.'));
|
||||
if (url.endsWith(',')) url = url.substr(0, url.lastIndexOf(','));
|
||||
if (url.endsWith(')') && before.endsWith('(')) url = url.substr(0, url.lastIndexOf(')'));
|
||||
return {
|
||||
type: 'url',
|
||||
content: url,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue