pragma Ada_2022; with Ada.Containers; with Ada.Containers.Hashed_Maps; with League.JSON.Objects; with League.Strings.Hash; with League.Strings; with League.JSON.Values; with League.JSON.Arrays; package Pandoc is type Object_Type is (Block_Plain, Block_Para, Block_LineBlock, Block_CodeBlock, Block_RawBlock, Block_BlockQuote, Block_OrderedList, Block_BulletList, Block_DefinitionList, Block_Header, Block_HorizontalRule, Block_Table, Block_Figure, Block_Div, Inline_String, Inline_Emph, Inline_Underline, Inline_Strong, Inline_Strikeout, Inline_Superscript, Inline_Subscript, Inline_SmallCaps, Inline_Quoted, Inline_Cite, Inline_Code, Inline_Space, Inline_SoftBreak, Inline_LineBreak, Inline_Math, Inline_RawInline, Inline_Link, Inline_Image, Inline_Note, Inline_Span); type Key_Value_Pair is record Key : League.Strings.Universal_String; Value : League.Strings.Universal_String; end record; type Key_Value_Pairs is array (Natural range <>) of Key_Value_Pair; function Get_Type (B : League.JSON.Objects.JSON_Object) return Object_Type; function Type_To_String (T : Object_Type) return League.Strings.Universal_String; Type_String : constant League.Strings.Universal_String := League.Strings.To_Universal_String ("t"); Content_String : constant League.Strings.Universal_String := League.Strings.To_Universal_String ("c"); function Attr (Id : League.Strings.Universal_String; Key : League.Strings.Universal_String; Value : League.Strings.Universal_String) return League.JSON.Values.JSON_Value; function Attr (Id : League.Strings.Universal_String; Key_Value : Key_Value_Pairs) return League.JSON.Values.JSON_Value; function Attr (Key : League.Strings.Universal_String; Value : League.Strings.Universal_String) return League.JSON.Values.JSON_Value; function Attr (Key_Value : Key_Value_Pairs) return League.JSON.Values.JSON_Value; Empty_Attribute : constant League.JSON.Values.JSON_Value := Attr([]); private type String_Array is array (Natural range <>) of League.Strings.Universal_String; function "+" (T : Wide_Wide_String) return League.Strings.Universal_String renames League.Strings.To_Universal_String; Obj_String_Representation : constant array (Object_Type) of League.Strings.Universal_String := [ +"Plain", +"Para", +"LineBlock", +"CodeBlock", +"RawBlock", +"BlockQuote", +"OrderedList", +"BulletList", +"DefinitionList", +"Header", +"HorizontalRule", +"Table", +"Figure", +"Div", +"Str", +"Emph", +"Underline", +"Strong", +"Strikeout", +"Superscript", +"Subscript", +"SmallCaps", +"Quoted", +"Cite", +"Code", +"Space", +"SoftBreak", +"LineBreak", +"Math", +"RawInline", +"Link", +"Image", +"Note", +"Span" ]; package Type_Map is new Ada.Containers.Hashed_Maps ( Key_Type => League.Strings.Universal_String, Element_Type => Object_Type, Hash => League.Strings.Hash, Equivalent_Keys => League.Strings."="); Type_Mapping : constant Type_Map.Map := Type_Map.Empty_Map; end Pandoc;