mirror of
https://github.com/AdaCore/markdown.git
synced 2026-02-12 13:11:15 -08:00
87 lines
2.3 KiB
Ada
87 lines
2.3 KiB
Ada
--
|
|
-- Copyright (C) 2021-2024, AdaCore
|
|
--
|
|
-- SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
--
|
|
|
|
with VSS.Characters;
|
|
|
|
with Markdown.Implementation.List_Items;
|
|
|
|
package body Markdown.Implementation.Lists is
|
|
|
|
--------------
|
|
-- Is_Loose --
|
|
--------------
|
|
|
|
function Is_Loose (Self : List'Class) return Boolean is
|
|
Ends_Blank : Boolean := False;
|
|
Result : Boolean := False;
|
|
begin
|
|
for Child of Self.Children loop
|
|
declare
|
|
Item : Markdown.Implementation.List_Items.List_Item renames
|
|
Markdown.Implementation.List_Items.List_Item (Child.all);
|
|
begin
|
|
Result := Item.Has_Blank_Line or Ends_Blank;
|
|
Ends_Blank := Item.Ends_With_Blank_Line;
|
|
|
|
exit when Result;
|
|
end;
|
|
end loop;
|
|
|
|
return Result;
|
|
end Is_Loose;
|
|
|
|
----------------
|
|
-- Is_Ordered --
|
|
----------------
|
|
|
|
function Is_Ordered (Self : List'Class) return Boolean is
|
|
First : Markdown.Implementation.List_Items.List_Item renames
|
|
Markdown.Implementation.List_Items.List_Item
|
|
(Self.Children.First_Element.all);
|
|
|
|
begin
|
|
return First.Is_Ordered;
|
|
end Is_Ordered;
|
|
|
|
-----------
|
|
-- Match --
|
|
-----------
|
|
|
|
function Match
|
|
(Self : List'Class;
|
|
Item : Abstract_Block_Access) return Boolean
|
|
is
|
|
use type VSS.Characters.Virtual_Character;
|
|
|
|
First : Markdown.Implementation.List_Items.List_Item renames
|
|
Markdown.Implementation.List_Items.List_Item
|
|
(Self.Children.First_Element.all);
|
|
|
|
Next : Markdown.Implementation.List_Items.List_Item renames
|
|
Markdown.Implementation.List_Items.List_Item (Item.all);
|
|
|
|
First_Marker : constant VSS.Strings.Virtual_String := First.Marker;
|
|
Next_Marker : constant VSS.Strings.Virtual_String := Next.Marker;
|
|
begin
|
|
return First_Marker.At_Last_Character.Element =
|
|
Next_Marker.At_Last_Character.Element;
|
|
end Match;
|
|
|
|
-----------
|
|
-- Start --
|
|
-----------
|
|
|
|
function Start (Self : List'Class) return Natural is
|
|
First : Markdown.Implementation.List_Items.List_Item renames
|
|
Markdown.Implementation.List_Items.List_Item
|
|
(Self.Children.First_Element.all);
|
|
|
|
begin
|
|
return First.Marker;
|
|
end Start;
|
|
|
|
end Markdown.Implementation.Lists;
|