/** * 详情页扩展内容的展示结构(DETAIL-1):简介 → 信息块 + 段落,MediaInfo / BDInfo → 技术规格概要,文件清单 → 目录树。 * 纯函数;服务端读缓存时现算(旧缓存也能用),原文(descriptionText / mediaInfo / files)照旧保留。 */ import { DEFAULT_DESCRIPTION_RULES, type DescriptionRules, type DetailInfoItem, structureDescription, } from "./detail-description.ts"; import { buildFileTree, type FileTreeRow } from "./file-tree.ts"; import { type MediaSummary, parseMediaSummary } from "./mediainfo.ts"; import type { SiteDetailPage } from "./types.ts"; export interface FormattedDetailPage { infoBlock: DetailInfoItem[]; paragraphs: string[]; media: MediaSummary | null; fileTree: FileTreeRow[]; } export function formatDetailPage( page: Pick, rules: DescriptionRules = DEFAULT_DESCRIPTION_RULES, ): FormattedDetailPage { const { infoBlock, paragraphs } = structureDescription(page.descriptionText, rules); return { infoBlock, paragraphs, media: parseMediaSummary(page.mediaInfo), fileTree: buildFileTree(page.files ?? []), }; }