jxxcarlson / meenylatex / MiniLatex.Edit

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.

API


type alias Data a =
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.


type LaTeXMsg
    = IDClicked String

Use this type so that clicks in the rendered text can be detected