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
}
