This PR moves the entire project to Typescript. Due to the ~1000 ignores this will lead to a messy codebase for a while, but the churn is worth it – all of those ignore comments are places that were never type-safe previously. closes #1282
25 lines
657 B
TypeScript
25 lines
657 B
TypeScript
import emojiRegex from "emoji-regex";
|
|
import unescape from "./unescape";
|
|
|
|
export default function parseTitle(text = "") {
|
|
const regex = emojiRegex();
|
|
|
|
// find and extract title
|
|
const firstLine = text.trim().split(/\r?\n/)[0];
|
|
const trimmedTitle = firstLine.replace(/^#/, "").trim();
|
|
|
|
// remove any escape characters
|
|
const title = unescape(trimmedTitle);
|
|
|
|
// find and extract first emoji
|
|
const matches = regex.exec(title);
|
|
const firstEmoji = matches ? matches[0] : null;
|
|
const startsWithEmoji = firstEmoji && title.startsWith(firstEmoji);
|
|
const emoji = startsWithEmoji ? firstEmoji : undefined;
|
|
|
|
return {
|
|
title,
|
|
emoji,
|
|
};
|
|
}
|