export function findNoteTitle( value, enableFrontMatterTitle, frontMatterTitleField = 'title' ) { const splitted = value.split('\n') let title = null let isInsideCodeBlock = false if (splitted[0] === '---') { let line = 0 while (++line < splitted.length) { if ( enableFrontMatterTitle && splitted[line].startsWith(frontMatterTitleField + ':') ) { title = splitted[line] .substring(frontMatterTitleField.length + 1) .trim() break } if (splitted[line] === '---') { splitted.splice(0, line + 1) break } } } if (title === null) { splitted.some((line, index) => { const trimmedLine = line.trim() const trimmedNextLine = splitted[index + 1] === undefined ? '' : splitted[index + 1].trim() if (trimmedLine.match('```')) { isInsideCodeBlock = !isInsideCodeBlock } if ( isInsideCodeBlock === false && (trimmedLine.match(/^# +/) || trimmedNextLine.match(/^=+$/)) ) { title = trimmedLine return true } }) } if (title === null) { title = '' splitted.some(line => { if (line.trim().length > 0) { title = line.trim() return true } }) } return title } export default { findNoteTitle }