Add functions for creating Div's and Attributes
This commit is contained in:
parent
b00feb3652
commit
6cb6e6bb38
|
|
@ -1,7 +1,90 @@
|
|||
with League.JSON.Values;
|
||||
with League.JSON.Arrays;
|
||||
|
||||
package body Pandoc is
|
||||
|
||||
function Attr (
|
||||
Id : Ustr.Universal_String;
|
||||
Key : Ustr_Array;
|
||||
Value : Ustr_Array) return League.JSON.Values.JSON_Value
|
||||
is
|
||||
Outer : League.JSON.Arrays.JSON_Array;
|
||||
Other : League.JSON.Arrays.JSON_Array;
|
||||
Inner : League.JSON.Arrays.JSON_Array;
|
||||
begin
|
||||
Outer.Append (League.JSON.Values.To_JSON_Value (Id));
|
||||
Outer.Append (Other.To_JSON_Value);
|
||||
|
||||
for K in Key'Range loop
|
||||
declare
|
||||
Pair : League.JSON.Arrays.JSON_Array;
|
||||
begin
|
||||
Pair.Append (League.JSON.Values.To_JSON_Value (Key (K)));
|
||||
Pair.Append (League.JSON.Values.To_JSON_Value (Value (K)));
|
||||
Inner.Append (Pair.To_JSON_Value);
|
||||
end;
|
||||
end loop;
|
||||
|
||||
Outer.Append (Inner.To_JSON_Value);
|
||||
|
||||
return Outer.To_JSON_Value;
|
||||
end Attr;
|
||||
|
||||
function Div (
|
||||
Attr : League.JSON.Values.JSON_Value;
|
||||
Content : Content_Arr) return League.JSON.Values.JSON_Value
|
||||
is
|
||||
Block : League.JSON.Objects.JSON_Object;
|
||||
Out_Content : League.JSON.Arrays.JSON_Array;
|
||||
Content_Block : League.JSON.Arrays.JSON_Array;
|
||||
begin
|
||||
Block.Insert (
|
||||
Type_String,
|
||||
League.JSON.Values.To_JSON_Value (
|
||||
Obj_String_Representation (Block_Div)
|
||||
)
|
||||
);
|
||||
|
||||
for C in Content'Range loop
|
||||
Content_Block.Append (Content (C));
|
||||
end loop;
|
||||
|
||||
Out_Content.Append (Attr);
|
||||
Out_Content.Append (Content_Block.To_JSON_Value);
|
||||
|
||||
Block.Insert (
|
||||
Content_String,
|
||||
Out_Content.To_JSON_Value
|
||||
);
|
||||
|
||||
return Block.To_JSON_Value;
|
||||
end Div;
|
||||
|
||||
function Div (
|
||||
Attr : League.JSON.Values.JSON_Value;
|
||||
Content : League.JSON.Values.JSON_Value)
|
||||
return League.JSON.Values.JSON_Value
|
||||
is
|
||||
Block : League.JSON.Objects.JSON_Object;
|
||||
Out_Content : League.JSON.Arrays.JSON_Array;
|
||||
begin
|
||||
Block.Insert (
|
||||
Type_String,
|
||||
League.JSON.Values.To_JSON_Value (
|
||||
Obj_String_Representation (Block_Div)
|
||||
)
|
||||
);
|
||||
|
||||
Out_Content.Append (Attr);
|
||||
Out_Content.Append (Content);
|
||||
|
||||
Block.Insert (
|
||||
Content_String,
|
||||
Out_Content.To_JSON_Value
|
||||
);
|
||||
|
||||
return Block.To_JSON_Value;
|
||||
end Div;
|
||||
|
||||
function Get_Type (B : League.JSON.Objects.JSON_Object)
|
||||
return Object_Type is
|
||||
begin
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ with Ada.Containers;
|
|||
with Ada.Containers.Hashed_Maps;
|
||||
with League.JSON.Objects;
|
||||
with League.Strings;
|
||||
with League.JSON.Values;
|
||||
|
||||
package Pandoc is
|
||||
|
||||
|
|
@ -48,12 +49,29 @@ package Pandoc is
|
|||
Inline_Span
|
||||
);
|
||||
|
||||
type Content_Arr is array (Natural range <>)
|
||||
of League.JSON.Values.JSON_Value;
|
||||
|
||||
function Get_Type (
|
||||
B : League.JSON.Objects.JSON_Object) return Object_Type;
|
||||
|
||||
function "+" (T : Wide_Wide_String) return Ustr.Universal_String
|
||||
renames Ustr.To_Universal_String;
|
||||
|
||||
function Attr (
|
||||
Id : Ustr.Universal_String;
|
||||
Key : Ustr_Array;
|
||||
Value : Ustr_Array) return League.JSON.Values.JSON_Value;
|
||||
|
||||
function Div (
|
||||
Attr : League.JSON.Values.JSON_Value;
|
||||
Content : Content_Arr) return League.JSON.Values.JSON_Value;
|
||||
|
||||
function Div (
|
||||
Attr : League.JSON.Values.JSON_Value;
|
||||
Content : League.JSON.Values.JSON_Value)
|
||||
return League.JSON.Values.JSON_Value;
|
||||
|
||||
Type_String : constant Ustr.Universal_String := +"t";
|
||||
Content_String : constant Ustr.Universal_String := +"c";
|
||||
|
||||
|
|
@ -63,7 +81,7 @@ private
|
|||
return Ada.Containers.Hash_Type;
|
||||
|
||||
Obj_String_Representation :
|
||||
constant array (Object_Type) of Ustr.Universal_String := (
|
||||
constant array (Object_Type) of Ustr.Universal_String := [
|
||||
+"Plain",
|
||||
+"Para",
|
||||
+"LineBlock",
|
||||
|
|
@ -98,7 +116,7 @@ private
|
|||
+"Image",
|
||||
+"Note",
|
||||
+"Span"
|
||||
);
|
||||
];
|
||||
|
||||
package Type_Map is new Ada.Containers.Hashed_Maps (
|
||||
Key_Type => Ustr.Universal_String,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user