------------------------------------------------------------------------------- -- Copyright 2021, The Trendy Terminal Developers (see AUTHORS file) -- Licensed under the Apache License, Version 2.0 (the "License"); -- you may not use this file except in compliance with the License. -- You may obtain a copy of the License at -- http://www.apache.org/licenses/LICENSE-2.0 -- Unless required by applicable law or agreed to in writing, software -- distributed under the License is distributed on an "AS IS" BASIS, -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- See the License for the specific language governing permissions and -- limitations under the License. ------------------------------------------------------------------------------- with Ada.Strings.Fixed; with Ada.Strings.Unbounded; package body Trendy_Terminal.Histories is package ASU renames Ada.Strings.Unbounded; procedure Add (H : in out History; Input : String) is begin H.Entries.Prepend (ASU.To_Unbounded_String (Input)); end Add; procedure Set_Max_Entries (H : in out History; Count : Positive) is begin H.Max_Entries := Count; end Set_Max_Entries; function Num_Entries (H : History) return Natural is begin return Natural (H.Entries.Length); end Num_Entries; function Get_Entry (H : History; Index : Positive) return String is begin return ASU.To_String (H.Entries (Index)); end Get_Entry; function Completions_Matching (H : History; Incomplete : String) return Lines.Line_Vectors.Vector is Result : Lines.Line_Vectors.Vector; begin for Each of H.Entries loop if Ada.Strings.Fixed.Index (Source => Incomplete, Pattern => ASU.To_String (Each)) = 0 then Result.Append (Lines.Make (Each, ASU.Length (Each) + 1)); end if; end loop; return Result; end Completions_Matching; end Trendy_Terminal.Histories;