diff --git a/source/aqs2mdx.adb b/source/aqs2mdx.adb index ceb3bfb..caea3a0 100644 --- a/source/aqs2mdx.adb +++ b/source/aqs2mdx.adb @@ -188,6 +188,15 @@ procedure Aqs2mdx is end if; when Inline_Link => List.Append (Traverse_Link (Block)); + when Block_DefinitionList => + declare + Arr : League.JSON.Arrays.JSON_Array := + Pandoc.Definition_List (Block); + begin + for I in 1 .. Arr.Length loop + List.Append (Arr(I)); + end loop; + end; when others => if Block (Pandoc.Content_String).To_Array.Length > 0 then declare diff --git a/source/pandoc.adb b/source/pandoc.adb index b052a2f..cc6073b 100644 --- a/source/pandoc.adb +++ b/source/pandoc.adb @@ -1,7 +1,5 @@ pragma Ada_2022; -with League.JSON.Arrays; - package body Pandoc is function Attr @@ -95,6 +93,88 @@ package body Pandoc is return Block.To_JSON_Value; end Div; + function HTML_Block (Text : League.Strings.Universal_String) return + League.JSON.Values.JSON_Value + is + Output : League.JSON.Objects.JSON_Object; + Content_Arr : League.JSON.Arrays.JSON_Array; + begin + Output.Insert ( + Type_String, + League.JSON.Values.To_JSON_Value (+"RawBlock")); + + Content_Arr.Append ( + League.JSON.Values.To_JSON_Value (+"html")); + + Content_Arr.Append ( + League.JSON.Values.To_JSON_Value (Text)); + + Output.Insert ( + Content_String, + Content_Arr.To_JSON_Value); + + return Output.To_JSON_Value; + end HTML_Block; + + function Plain (Inlines : League.JSON.Values.JSON_Value) return + League.JSON.Values.JSON_Value + is + Output : League.JSON.Objects.JSON_Object; + begin + Output.Insert ( + Type_String, + League.JSON.Values.To_JSON_Value (+"Plain")); + + Output.Insert ( + Content_String, + Inlines); + + return Output.To_JSON_Value; + end Plain; + + function Definition_List (B : League.JSON.Objects.JSON_Object) return + League.JSON.Arrays.JSON_Array + is + Output : League.JSON.Arrays.JSON_Array; + Content : constant League.JSON.Arrays.JSON_Array := + B (Content_String).To_Array; + begin + Output.Append (HTML_Block (+"