Module Djot_kernel.Ast

val alist_lookup : string -> (string * 'a1) list -> 'a1 option
val alist_set : string -> 'a1 -> (string * 'a1) list -> (string * 'a1) list
type attr = (string * string) list
module Attr : sig ... end
type spot = {
  1. spot_line : int;
  2. spot_rem : int;
}
type span = {
  1. span_start : spot;
  2. span_stop : spot;
}
type coq_InlineCursor = {
  1. cursor_start : spot;
  2. cursor_stop : spot;
  3. cursor_origin : spot;
}
val semantic_inline_cursor : coq_InlineCursor
type syntax_role =
  1. | RAttrSpec
  2. | ROpenFence
  3. | RCloseFence
type provenance = {
  1. node_span : span;
  2. syntax_spans : (syntax_role * span) list;
}
type pos =
  1. | NoPos
  2. | SomePos of provenance
type 'a node =
  1. | Node of pos * attr * 'a
val node_provenance : 'a1 node -> provenance option
val mk : 'a1 -> 'a1 node
val node_contents : 'a1 node -> 'a1
val node_attrs : 'a1 node -> attr
val add_attr : attr -> 'a1 node -> 'a1 node
type coq_PosPolicy = {
  1. mkpos : provenance -> pos;
  2. pos_records : bool;
}
val semantic_pos : coq_PosPolicy
val located_pos : coq_PosPolicy
val posnode : coq_PosPolicy -> provenance -> 'a1 -> 'a1 node
val null_span : span
val pspan : coq_PosPolicy -> span -> span
val prov_at : span -> provenance
val prov_with : span -> (syntax_role * span) list -> provenance
val attr_roles : span list -> (syntax_role * span) list
val set_pos : coq_PosPolicy -> provenance -> 'a1 node -> 'a1 node
val pos_head : coq_PosPolicy -> provenance -> 'a1 node list -> 'a1 node list
val add_roles : coq_PosPolicy -> (syntax_role * span) list -> 'a1 node -> 'a1 node
val add_roles_head : coq_PosPolicy -> (syntax_role * span) list -> 'a1 node list -> 'a1 node list
val hull_pos : coq_PosPolicy -> 'a1 node list -> pos
val hull_pos_with : coq_PosPolicy -> 'a1 node list -> pos
type math_style =
  1. | DisplayMath
  2. | InlineMath
type target =
  1. | Direct of string
  2. | Reference of string
type quote_type =
  1. | SingleQuotes
  2. | DoubleQuotes
type inline =
  1. | Str of string
  2. | Emph of inline node list
  3. | Strong of inline node list
  4. | Highlight of inline node list
  5. | Insert of inline node list
  6. | Delete of inline node list
  7. | Superscript of inline node list
  8. | Subscript of inline node list
  9. | Verbatim of string
  10. | Symbol of string
  11. | Math of math_style * string
  12. | Image of inline node list * target
  13. | Span of string * inline node list
  14. | FootnoteReference of string
  15. | RawInline of string * string
  16. | NonBreakingSpace
  17. | Quoted of quote_type * inline node list
  18. | SoftBreak
  19. | HardBreak
  20. | Hole of string
type inlines = inline node list
type list_spacing =
  1. | Tight
  2. | Loose
type ordered_list_style =
  1. | Decimal
  2. | LetterUpper
  3. | LetterLower
  4. | RomanUpper
  5. | RomanLower
type ordered_list_delim =
  1. | RightPeriod
  2. | RightParen
  3. | LeftRightParen
type ordered_list_attributes = {
  1. ol_style : ordered_list_style;
  2. ol_delim : ordered_list_delim;
  3. ol_start : int;
}
type task_status =
  1. | Complete
  2. | Incomplete
type callout_fold =
  1. | FoldExpanded
  2. | FoldCollapsed
type align =
  1. | AlignLeft
  2. | AlignRight
  3. | AlignCenter
  4. | AlignDefault
type cell_type =
  1. | HeadCell
  2. | BodyCell
val align_eqb : align -> align -> bool
type cell =
  1. | Cell of cell_type * align * inlines
type block =
  1. | Para of inlines
  2. | Section of block node list
  3. | Heading of int * inlines
  4. | BlockQuote of block node list
  5. | CodeBlock of string * string
  6. | Div of string * block node list
  7. | OrderedList of ordered_list_attributes * list_spacing * block node list node list
  8. | BulletList of char * list_spacing * block node list node list
  9. | TaskList of list_spacing * (task_status * block node list) node list
  10. | DefinitionList of list_spacing * (inlines node * block node list node) node list
  11. | ThematicBreak
  12. | Table of inlines node * cell node list node list
  13. | RawBlock of string * string
  14. | FootnoteDef of string * block node list
  15. | RefDef of string * string
  16. | AttrBlock
  17. | Ext_keyed of inlines * block node
  18. | Ext_callout of string * callout_fold option * inlines * block node list
type blocks = block node list
val fold_children : ('a1 -> block node -> 'a1) -> block -> 'a1 -> 'a1
val map_parts : (pos -> pos) -> (inlines -> inlines) -> (block node -> block node) -> block -> block
val map_acc : ('a2 -> 'a1 -> 'a1 * 'a3) -> 'a2 list -> 'a1 -> 'a1 * 'a3 list
val map_acc_node : ('a2 -> 'a1 -> 'a1 * 'a2) -> 'a2 node -> 'a1 -> 'a1 * 'a2 node
val map_acc_snd : ('a3 -> 'a1 -> 'a1 * 'a3) -> ('a2 * 'a3) -> 'a1 -> 'a1 * ('a2 * 'a3)
val map_acc_children : (block node -> 'a1 -> 'a1 * block node) -> block -> 'a1 -> 'a1 * block
val decorate_head : attr -> blocks -> blocks
val invisible_block : block -> bool
val def_split : blocks -> (inlines * blocks) option
val def_item : blocks -> inlines * blocks
val def_node : blocks -> (inlines node * blocks node) node
val def_items : blocks list -> (inlines node * blocks node) node list
val task_items : task_status list -> blocks list -> (task_status * blocks) node list
type parts =
  1. | PItems of span list
  2. | PDefItems of ((span * span) * span) list
  3. | PTable of span option * (span * span list) list
val set_each : coq_PosPolicy -> span list -> 'a1 node list -> 'a1 node list
val set_defs : coq_PosPolicy -> ((span * span) * span) list -> (inlines node * blocks node) node list -> (inlines node * blocks node) node list
val set_rows : coq_PosPolicy -> (span * span list) list -> cell node list node list -> cell node list node list
val parts_onto : coq_PosPolicy -> parts -> block -> block
val set_parts : coq_PosPolicy -> parts -> block node -> block node
module Shift : sig ... end
val rev_chars : char list -> string
val words : (char -> bool) -> string -> string list
val is_label_ws : char -> bool
val normalize_label : string -> string
type note_map = (string * blocks) list
type reference_map = (string * (string * attr)) list
type doc = {
  1. doc_blocks : blocks;
  2. doc_footnotes : note_map;
  3. doc_references : reference_map;
  4. doc_auto_references : reference_map;
  5. doc_auto_identifiers : string list;
}