Files
supabase/apps/learn/lib/get-current-chapter.ts
T
2025-11-04 16:52:55 -03:30

36 lines
1.0 KiB
TypeScript

import { allDocs } from 'contentlayer/generated'
import { normalizeSlug } from './get-next-page'
/**
* Gets the current chapter number from a doc
*/
export function getCurrentChapter(slug: string): { chapterNumber?: number; completionMessage?: string } | null {
const normalizedSlug = normalizeSlug(slug)
const doc = allDocs.find((doc) => normalizeSlug(doc.slugAsParams) === normalizedSlug)
if (!doc) {
return null
}
// Get chapterNumber from frontmatter first, then fallback to parsing from title
let chapterNumber: number | undefined = (doc as any)?.chapterNumber
if (!chapterNumber) {
// Try to extract chapter number from title (e.g., "2: CSS Styling" -> 2)
const chapterMatch = doc.title.match(/^(\d+):/)
chapterNumber = chapterMatch ? parseInt(chapterMatch[1], 10) : undefined
}
if (!chapterNumber) {
return null
}
// Use description as completion message, or generate a default one
const completionMessage = doc.description || undefined
return {
chapterNumber,
completionMessage,
}
}