package quill

  1. Overview
  2. Docs

Module Quill_editor.DocumentSource

Quill document model for representing markdown structures

Sourcetype inline_content =
  1. | Run of string
  2. | Emph of inline
  3. | Strong of inline
  4. | Code_span of string
  5. | Seq of inline list
  6. | Break of [ `Hard | `Soft ]
  7. | Image of {
    1. alt : inline;
    2. src : string;
    }
  8. | Raw_html of string

Inline content types

Sourceand inline = {
  1. id : int;
  2. inline_content : inline_content;
  3. focused : bool;
}
Sourcetype codeblock_content = {
  1. code : string;
  2. output : block option;
  3. info : string option;
}

Codeblock content with optional output

Sourceand block_content =
  1. | Paragraph of inline
  2. | Codeblock of codeblock_content
  3. | Heading of int * inline
  4. | Blank_line of unit
  5. | Block_quote of block list
  6. | Thematic_break
  7. | List of list_type * list_spacing * block list list
  8. | Html_block of string
  9. | Blocks of block list

Block content types

Sourceand list_type =
  1. | Ordered of int * char
  2. | Unordered of char
Sourceand list_spacing =
  1. | Tight
  2. | Loose
Sourceand block = {
  1. id : int;
  2. content : block_content;
  3. focused : bool;
}
Sourcetype t = block list

Document type

Constructors

Sourceval inline : ?focused:bool -> inline_content -> inline

Create inline content

Sourceval run : ?focused:bool -> string -> inline
Sourceval emph : ?focused:bool -> inline -> inline
Sourceval strong : ?focused:bool -> inline -> inline
Sourceval code_span : ?focused:bool -> string -> inline
Sourceval seq : ?focused:bool -> inline list -> inline
Sourceval block : ?focused:bool -> block_content -> block

Create block content

Sourceval paragraph : ?focused:bool -> inline -> block
Sourceval codeblock : ?output:block -> ?info:string -> ?focused:bool -> string -> block
Sourceval heading : ?focused:bool -> int -> inline -> block
Sourceval blank_line : ?focused:bool -> unit -> block
Sourceval blocks : ?focused:bool -> block list -> block
Sourceval block_quote : ?focused:bool -> block list -> block
Sourceval thematic_break : ?focused:bool -> unit -> block
Sourceval list : ?focused:bool -> list_type -> list_spacing -> block list list -> block
Sourceval html_block : ?focused:bool -> string -> block
Sourceval init : t

Empty document

Sourceval empty : t

Alias of init for clarity

Parsing and Serialization

Sourceval of_markdown : string -> t

Parse markdown to document

Sourceval block_of_md : string -> block

Parse markdown to block

Sourceval block_content_of_md : string -> block_content

Parse markdown to block content

Sourceval inline_of_md : string -> inline

Parse markdown to inline

Sourceval inline_content_of_md : string -> inline_content

Parse markdown to inline content

Sourceval to_markdown : t -> string

Serialize document to markdown

Document Operations

Sourceval find_inline_in_block : block -> int -> inline option

Find inline by ID in a block

Sourceval replace_inline_in_block : block -> int -> inline -> block

Replace inline by ID in a block

Sourceval split_inline : inline -> int -> inline * inline

Split inline at offset

Sourceval set_focused_document_by_id : t -> int -> t

Set focused state by ID

Sourceval clear_focus_block : block -> block

Clear all focus

Sourceval clear_focus_inline : inline -> inline
Sourceval set_codeblock_output_in_block : block -> int -> block -> block

Set codeblock output

Sourceval normalize_blanklines : t -> t

Normalize blank lines

Sourceval inline_to_plain : inline -> string

Convert inline to plain text

Sourceval inline_content_to_plain : inline_content -> string

Extended Helpers

Sourceval focus_inline_by_id : t -> int -> t
Sourceval focus_block_by_id : t -> int -> t
Sourceval replace_block_with_codeblock : t -> block_id:int -> t
Sourceval update_codeblock : t -> block_id:int -> code:string -> t
Sourceval set_codeblock_output : t -> block_id:int -> block -> t
Sourceval split_block_at_inline : t -> block_id:int -> inline_id:int -> offset:int -> t
Sourceval find_block : t -> block_id:int -> block option
Sourceval index_of_block : t -> block_id:int -> int option
Sourceval find_block_of_inline : t -> inline_id:int -> (block * int) option
Sourceval block_ids_between : t -> start_id:int -> end_id:int -> int list
Sourceval slice_between : t -> start_id:int -> end_id:int -> t

Internal

Sourceval reset_ids : unit -> unit

Reset ID counters (used for DOM parsing)