export interface Heading {
  level: number
  text: string
  /** Position in document (character offset from markdown source) */
  pos: number
}

const HEADING_RE = /^(#{1,6})\s+(.+)$/gm

/**
 * Parse headings from raw markdown content using regex.
 */
export function parseHeadings(markdown: string): Heading[] {
  const headings: Heading[] = []
  let match: RegExpExecArray | null

  // Reset regex state
  HEADING_RE.lastIndex = 0

  while ((match = HEADING_RE.exec(markdown)) !== null) {
    const level = match[1].length
    const text = match[2].trim()
    headings.push({ level, text, pos: match.index })
  }

  return headings
}
