32 lines
971 B
Ada
32 lines
971 B
Ada
with Ada.Text_IO, Ada.Command_Line, String_Helper;
|
|
|
|
procedure Madlib is
|
|
|
|
use String_Helper;
|
|
|
|
Text: Vector := Get_Vector(Ada.Command_Line.Argument(1));
|
|
M, N: Natural;
|
|
|
|
begin
|
|
-- search for templates and modify the text accordingly
|
|
for I in Text.First_Index .. Text.Last_Index loop
|
|
loop
|
|
Search_Brackets(Text.Element(I), "<", ">", M, N);
|
|
exit when M=0; -- "M=0" means "not found"
|
|
Ada.Text_IO.Put_Line("Replacement for " & Text.Element(I)(M .. N) & "?");
|
|
declare
|
|
Old: String := Text.Element(I)(M .. N);
|
|
New_Word: String := Ada.Text_IO.Get_Line;
|
|
begin
|
|
for J in I .. Text.Last_Index loop
|
|
Text.Replace_Element(J, Replace(Text.Element(J), Old, New_Word));
|
|
end loop;
|
|
end;
|
|
end loop;
|
|
end loop;
|
|
|
|
-- write the text
|
|
for I in Text.First_Index .. Text.Last_Index loop
|
|
Ada.Text_IO.Put_Line(Text.Element(I));
|
|
end loop;
|
|
end Madlib;
|