import { VideoDescription } from "./main.ts"; export function singleVideoDescription(video: VideoDescription): string { const teachersList = video.teachers.map(v => "[[" + v + "]]").join(" & "); const nagElement = video.nags.length > 0 ? `🔴` : ""; return `=== ${video.title} === Date: {{#time: Y-m-d (D) | ${video.date}}} ${nagElement}
Teachers: ${teachersList}
Level: ${video.level} [[${video.path}|left|400px|thumb|${video.title}]]
==== Shown Patterns ==== ${video.patterns} ==== Notes ==== ${video.notes}

`; } export function writeSections(events: VideoDescription[][]): string { return events.map(v => { const token = v[0] const event_name = token.event === token.location ? token.event : token.event + " " + token.location // FIXME: This will break with videos in 75 years const event_contains_year = event_name.match(/\d{2}|20\d{2}/) === null const event_date = event_contains_year ? "" : new Date(token.date).getFullYear().toString() let r = `== ${event_name} ${event_date} ==\n` r += `${v.length} Video${v.length <= 1 ? "" : "s"}\n` r += v.map(video => singleVideoDescription(video)).join("\n\n") return r }).join("\n\n\n") } export function bucketEvents(events: VideoDescription[]): VideoDescription[][] { const buckets: Record = {} for (const e of events) { const tag = e.event + e.location + new Date(e.date).getFullYear().toString() if (tag in buckets) { buckets[tag].push(e) } else { buckets[tag] = [e] } } Object.values(buckets) .forEach(b => b.sort((a, b) => new Date(a.date).getTime() - new Date(b.date).getTime())) return Object.values(buckets).sort((a, b) => new Date(a[0].date).getTime() - new Date(b[0].date).getTime()) }