namespace Core.Printing; /// /// Built-in merge token names. Imported student-note field names are supplied at runtime. /// public static class PrintFieldCatalog { public static readonly string[] Layout = [ NoteTemplateMerger.PageBreakToken, NoteTemplateMerger.AnswerSpaceToken, NoteTemplateMerger.LegendToken ]; public static readonly string[] Chapter = [ "Chapter.Name", "Chapter.ShortName", "Chapter.CompetitionYear", "Chapter.YearlyTheme", "Chapter.StateAbbrev" ]; public static readonly string[] Student = [ "FirstName", "LastName", "Name", "LastNameFirstName", "Grade", "TsaYear", "Email", "PhoneNumber", "StateId", "RegionalId", "NationalId", "OfficerRole" ]; /// /// Rank1…Rank10 and matching .ShortName tokens from /// . /// public static readonly string[] StudentRanks = [.. StudentRankTokens.AllNames]; public static readonly string[] Team = [ "Identifier", "Name", "EventName", "EventShortName", "EventFormat", "TeamSize", "NationalEligibility", "RegionalTeamCount", "StateTeamCount", "Description", "Theme", "EventAttributes" ]; public static readonly string[] Event = [ "Name", "ShortName", "EventFormat", "TeamSize", "NationalEligibility", "RegionalTeamCount", "StateTeamCount", "LevelOfEffort", "SemifinalistActivity", "RegionalEvent", "Description", "Theme", "Documentation", "Notes", "EventAttributes", NoteTemplateMerger.RankedStudentsToken ]; public static IReadOnlyList EntityTokens(PrintEntityType entityType) => entityType switch { PrintEntityType.Student => Student, PrintEntityType.Team => Team, PrintEntityType.Event => Event, _ => [] }; public static IReadOnlyList BuiltInFor(PrintEntityType entityType) => entityType switch { PrintEntityType.Student => [.. Chapter, .. Student, .. StudentRanks], _ => [.. Chapter, .. EntityTokens(entityType)] }; }