Data structures and functions for managing interactive edits. The parse tree, rendered text, and other information needed for this is stored in a value of type
MiniLatex.Edit.Data
That data is initialized using
data =
init version text
where the version is an integer that distinguishes different edits.
Internal.Differ.EditRecord a
Data for differential parsing and rendering
emptyData : Data (Html LaTeXMsg)
Used for initialization.
init : Basics.Int -> String -> Data (Html LaTeXMsg)
Create Data from a string of MiniLaTeX text and a version number. The version number should be different for each call of init.
update : Basics.Int -> String -> Data (Html LaTeXMsg) -> Data (Html LaTeXMsg)
Update Data with modified text, re-parsing and re-rerendering changed elements.
get : String -> Data (Html LaTeXMsg) -> List (Html LaTeXMsg)
Retrieve Html from a Data object and construct the click handlers used to highlight the selected paragraph (if any). Example:
get "p.1.10" data
will retrieve the rendered text and will hightlight the paragraph with ID "p.1.10". The ID decodes as "paragraph 10, version 1". The version number of a paragraph is incremented when it is edited.
parse : String -> ( List String, List (List Internal.Parser.LatexExpression) )
Parse the given text and return an AST representing it.
Use this type so that clicks in the rendered text can be detected