-- Copyright (C) 2022 A.J. Ianozi -- -- This file is part of GetAda: the Unofficial Alire Installer -- -- This program is free software: you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation, either version 3 of the License, or -- (at your option) any later version. -- -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- You should have received a copy of the GNU General Public License -- along with this program. If not, see . with Ada.Characters.Handling; use Ada.Characters.Handling; with Ada.Strings.Fixed; use Ada.Strings.Fixed; with Ada.Text_IO; use Ada.Text_IO; package body Prompts is function Get_Answer (Prompt : String; Default_Answer : Answer := DisableDefault; Provided_Text : String := "") return Answer is Question : constant String := Prompt & " [" & (case Default_Answer is when Yes => "Y/n", when No => "y/N", when others => "y/n") & "] " & (if Provided_Text'Length > 0 then " (" & Provided_Text & ")" else "") & " >"; begin loop Put (Question); declare Response : constant String := Trim (To_Lower (Get_Line), Ada.Strings.Both); begin if Response'Length = 0 and then Default_Answer /= DisableDefault then return Default_Answer; elsif Response = "y" or else Response = "yes" then return Yes; elsif Response = "n" or else Response = "no" then return No; else Put_Line ("Invalid response."); end if; end; end loop; end Get_Answer; function Get_Answer (Prompt : String; Default_Answer : String := ""; Provided_Text : String := "") return String is Question : constant String := Prompt & (if Default_Answer'Length > 0 then " [" & Default_Answer & "]" else "") & (if Provided_Text'Length > 0 then " (" & Provided_Text & ")" else "") & " >"; begin Put (Question); declare Response : constant String := Trim (To_Lower (Get_Line), Ada.Strings.Both); begin if Response'Length = 0 and then Default_Answer'Length > 0 then return Default_Answer; else return Response; end if; end; end Get_Answer; end Prompts;