with CSV; package body Candidates is function To_String (Input_Candidate : in Candidate; Delimiter : in Character := ',') return String is package My_CSV is new CSV (Delimiter => Delimiter); use type My_CSV.String_Vectors.Vector; My_Record : My_CSV.CSV_Record; begin My_Record := My_CSV.String_Vectors.Empty_Vector & Input_Candidate.Group & Input_Candidate.Group_Rank & Input_Candidate.First_Name & Input_Candidate.Last_Name & Input_Candidate.Party; return My_CSV.Unparse_Record (My_Record); end To_String; function Candidate_Header (Delimiter : in Character := ',') return String is begin return "Group" & Delimiter & "Group Rank" & Delimiter & "First Name" & Delimiter & "Last Name" & Delimiter & "Party"; end Candidate_Header; function Name_And_Party (Input_Candidate : in Candidate) return String is use type SU.Unbounded_String; begin return SU.To_String (Input_Candidate.First_Name & " " & Input_Candidate.Last_Name & ", " & Input_Candidate.Party); end Name_And_Party; end Candidates;