mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-06-19 21:31:46 +00:00
13956804c2
- 5-table schema (journeys, entries, photos, trips, contributors) with migrations 87-91 - Trip-to-Journey sync engine with skeleton entries and photo sync - Full CRUD API for journeys, entries, photos with Immich/Synology integration - Timeline, Gallery and Map views with entry editor (markdown, mood, weather, pros/cons) - Journey frontpage with hero card, stats and trip suggestions - Public share links with token-based access and photo proxy - PDF photo book export (Polarsteps-inspired) - Dashboard redesign: mobile greeting, live trip hero, quick actions, unified card design - BottomNav profile sheet with settings/admin/logout - DayPlan mobile inline place picker - TripFormModal members management - Vacay calendar trip date indicator dots - Fix contributor photo access (403) for journey Immich/Synology photos - Trip deletion cleanup for journey skeleton entries - i18n: 231 new keys across all 14 languages (native translations, no fallbacks)
25 lines
1.2 KiB
TypeScript
25 lines
1.2 KiB
TypeScript
/**
|
|
* Strip markdown formatting to get plain text for previews.
|
|
* Handles: bold, italic, headings, links, images, blockquotes, code, lists, hr.
|
|
*/
|
|
export function stripMarkdown(md: string): string {
|
|
return md
|
|
.replace(/^#{1,6}\s+/gm, '') // headings
|
|
.replace(/!\[.*?\]\(.*?\)/g, '') // images
|
|
.replace(/\[([^\]]*)\]\(.*?\)/g, '$1') // links → text
|
|
.replace(/(`{3}[\s\S]*?`{3})/g, '') // code blocks
|
|
.replace(/`([^`]+)`/g, '$1') // inline code
|
|
.replace(/\*\*(.+?)\*\*/g, '$1') // bold **
|
|
.replace(/__(.+?)__/g, '$1') // bold __
|
|
.replace(/\*(.+?)\*/g, '$1') // italic *
|
|
.replace(/_(.+?)_/g, '$1') // italic _
|
|
.replace(/~~(.+?)~~/g, '$1') // strikethrough
|
|
.replace(/^>\s?/gm, '') // blockquotes
|
|
.replace(/^[-*+]\s+/gm, '') // unordered lists
|
|
.replace(/^\d+\.\s+/gm, '') // ordered lists
|
|
.replace(/^---+$/gm, '') // horizontal rules
|
|
.replace(/\n{2,}/g, ' ') // collapse multiple newlines
|
|
.replace(/\n/g, ' ') // remaining newlines → spaces
|
|
.trim()
|
|
}
|