summaryrefslogtreecommitdiff
path: root/src/csv.adb
diff options
context:
space:
mode:
authorJedidiah Barber <contact@jedbarber.id.au>2021-11-09 17:05:44 +1300
committerJedidiah Barber <contact@jedbarber.id.au>2021-11-09 17:05:44 +1300
commit36b0cbf19bd44c94bbe5aa67730347290f20628c (patch)
treed2171132faa9dc6b2ffe99e87b7bbef102c9a9c0 /src/csv.adb
parentb18a53cfaea8c3cf9e838e2a1cc8000a18324234 (diff)
Refactored packages
Diffstat (limited to 'src/csv.adb')
-rw-r--r--src/csv.adb111
1 files changed, 0 insertions, 111 deletions
diff --git a/src/csv.adb b/src/csv.adb
deleted file mode 100644
index 656f99f..0000000
--- a/src/csv.adb
+++ /dev/null
@@ -1,111 +0,0 @@
-
-
--- This source is licensed under the Sunset License v1.0
-
-
-with
-
- Ada.Characters.Latin_1,
- Ada.Strings.Fixed,
- Ada.Strings.Maps,
- Ada.Text_IO,
- Datatypes;
-
-use
-
- Ada.Text_IO;
-
-
-package body CSV is
-
-
- package Latin renames Ada.Characters.Latin_1;
- package Strfix renames Ada.Strings.Fixed;
- package Strmap renames Ada.Strings.Maps;
-
-
-
-
- procedure Put_Cell
- (File_Handle : in Ada.Text_IO.File_Type;
- Data : in String) is
- begin
- Put_Cell (File_Handle, +Data);
- end Put_Cell;
-
-
- procedure Put_Cell
- (File_Handle : in Ada.Text_IO.File_Type;
- Data : in Ada.Strings.Unbounded.Unbounded_String)
- is
- Processed : SU.Unbounded_String := Data;
- Position : Natural;
- begin
- -- Deal with any lurking linefeed characters
- loop
- Position := SU.Index (Processed, Strmap.To_Set (Latin.LF));
- exit when Position = 0;
- SU.Replace_Element (Processed, Position, ' ');
- end loop;
-
- -- Escape any quizzical quotation characters
- Position := SU.Index (Processed, Strmap.To_Set (Quote_Char));
- while Position /= 0 loop
- SU.Insert (Processed, Position, Strfix."*" (1, Escape_Char));
- Position := Position + 2; -- skip over the \" we already know about
- exit when Position > SU.Length (Processed);
- Position := SU.Index (Processed, Strmap.To_Set (Quote_Char), Position);
- end loop;
-
- -- Surround any suspicious separator characters
- if SU.Index (Processed, Strmap.To_Set (Separator_Char)) /= 0 then
- SU.Insert (Processed, 1, Strfix."*" (1, Quote_Char));
- SU.Append (Processed, Quote_Char);
- end if;
-
- Put (File_Handle, -Processed);
- end Put_Cell;
-
-
- procedure Put_Header
- (File_Handle : in Ada.Text_IO.File_Type;
- Titles : in Datatypes.Field_ID_Vector) is
- begin
- for Position in Datatypes.Field_Ordinal range
- Titles.First_Index .. Datatypes.Field_Ordinal'Pred (Titles.Last_Index)
- loop
- Put_Cell (File_Handle, SU.Unbounded_String (Titles.Element (Position)));
- Put (File_Handle, Separator_Char);
- end loop;
- Put_Cell (File_Handle, SU.Unbounded_String (Titles.Last_Element));
- New_Line (File_Handle);
- end Put_Header;
-
-
- procedure Put_Row
- (File_Handle : in Ada.Text_IO.File_Type;
- Cells : in Datatypes.Field_Vector;
- Quantity : in Positive)
- is
- use type Datatypes.Field_Ordinal;
- Counter : Positive := 1;
- Position : Datatypes.Field_Ordinal := Cells.First_Index;
- begin
- while Counter < Quantity loop
- if Position <= Cells.Last_Index then
- Put_Cell (File_Handle, SU.Unbounded_String (Cells.Element (Position)));
- end if;
- Put (File_Handle, Separator_Char);
- Position := Datatypes.Field_Ordinal'Succ (Position);
- Counter := Counter + 1;
- end loop;
- if Position <= Cells.Last_Index then
- Put_Cell (File_Handle, SU.Unbounded_String (Cells.Element (Position)));
- end if;
- New_Line (File_Handle);
- end Put_Row;
-
-
-end CSV;
-
-