-- -- Copyright (C) 2021-2023, AdaCore -- -- SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -- -- Internal representation of a markdown list item package Markdown.Implementation.List_Items is pragma Preelaborate; type List_Item is new Abstract_Container_Block with private; -- The List_Item is a node for markdown list item representation type List_Item_Access is access all List_Item; procedure Detector (Input : Input_Position; Tag : in out Ada.Tags.Tag; CIP : out Can_Interrupt_Paragraph); -- The detector procedure to find start of a list item function Is_Ordered (Self : List_Item'Class) return Boolean; -- Return True if list item has an ordered list marker. function Marker (Self : List_Item'Class) return VSS.Strings.Virtual_String; -- List item marker as a string function Marker (Self : List_Item'Class) return Natural with Pre => Self.Is_Ordered; -- List item marker as an integer private type List_Item is new Abstract_Container_Block with record Is_Ordered : Boolean; Marker : VSS.Strings.Virtual_String; -- Marker it-self, like `-`, `11.`, etc. Marker_Value : Natural; -- Marker value if ordered, like 11 Marker_Width : VSS.Strings.Character_Count; -- Number of spaces to skip in subsequent lines Starts_With_Blank_Line : Boolean := False; -- The item starts with an empty line Ends_With_Blank_Line : Boolean := False; -- The last known line of the item was empty Has_Blank_Line : Boolean := False; -- The item has at least one empty line (excluding line with the marker) First_Line : Boolean := False; -- This is true only for the line with the marker end record; overriding function Create (Input : not null access Input_Position) return List_Item; overriding procedure Consume_Continuation_Markers (Self : in out List_Item; Input : in out Input_Position; Ok : out Boolean); end Markdown.Implementation.List_Items;