[{"name":"MarkdownBuilder","comment":" This library helps your library or application to generate valid markdown document programmatically.\n\n\n# Builder\n\n@docs Builder\n@docs break\n\n\n# Root\n\n@docs Root\n@docs root\n@docs run\n@docs toString\n@docs preview\n\n\n# Section\n\n@docs Section\n@docs editBody\n@docs appendChildSection\n\n\n# List Block\n\n@docs ListBlock, ListItem\n@docs appendListItem\n@docs editListItemContent\n@docs editListItemChildren\n\n\n# General Modifiers\n\n\n## Append Mode\n\n@docs AppendMode\n@docs endAppendMode\n@docs appendParagraph\n@docs Paragraph\n@docs appendOrderedList\n@docs appendUnorderedList\n@docs appendCodeBlock\n\n\n## Push Mode\n\n@docs PushMode\n@docs endPushMode\n@docs pushText\n@docs pushLink\n@docs pushCode\n@docs pushEmphasis\n@docs pushStrongEmphasis\n@docs pushStrikethrough\n\n","unions":[{"name":"AppendMode","comment":" Represents that `a` is in the _Append Mode_, which enalbes you to append some blocks to it.\n","args":["a"],"cases":[]},{"name":"Builder","comment":" Markdown builder.\nYou can build a valid markdown structure programmatically in your program:\n\n    myMarkdown : Root\n    myMarkdown =\n        root\n            { title = \"Markdown Builder\"\n            }\n            |> editBody\n            |> appendParagraph\n            |> pushText\n                \"Markdown Builder builds\"\n            |> pushEmphasis\n                \"Markdown\"\n            |> pushText\n                \"programmatically.\"\n            |> break\n            |> endAppendMode\n            |> appendChildSection\n                { title = \"Builder\"\n                }\n            |> editBody\n            |> appendUnorderedList\n            |> appendListItem\n            |> editListItemContent\n            |> pushText \"List Item 1\"\n            |> endPushMode\n            |> editListItemChildren\n            |> appendOrderedList\n            |> appendListItem\n            |> editListItemContent\n            |> pushText \"Child item\"\n            |> break\n            |> break\n            |> break\n            |> appendListItem\n            |> editListItemContent\n            |> pushText \"List Item 2\"\n            |> endPushMode\n            |> editListItemChildren\n            |> appendParagraph\n            |> pushText\n                \"Child paragraph.\"\n            |> break\n            |> appendCodeBlock\n                \"\"\"elm\n                type Builder parent elem =\n                    ...\n                    ...\n                \"\"\"\n            |> break\n            |> appendListItem\n            |> editListItemContent\n            |> pushText \"List Item 3\"\n            |> run\n\n    toString myMarkdown\n        |> String.lines\n    --> [ \"# Markdown Builder\"\n    --> , \"\"\n    --> , \"Markdown Builder builds *Markdown* programmatically.\"\n    --> , \"\"\n    --> , \"## Builder\"\n    --> , \"\"\n    --> , \"* List Item 1\"\n    --> , \"    1. Child item\"\n    --> , \"* List Item 2\"\n    --> , \"\"\n    --> , \"    Child paragraph.\"\n    --> , \"\"\n    --> , \"    ```elm\"\n    --> , \"    type Builder parent elem =\"\n    --> , \"        ...\"\n    --> , \"        ...\"\n    --> , \"    ```\"\n    --> , \"* List Item 3\"\n    --> ]\n\n","args":["parent","elem"],"cases":[]},{"name":"ListBlock","comment":" Represents markdown list block.\n","args":[],"cases":[]},{"name":"ListItem","comment":" Represents an item in the `ListBlock`.\n\n```markdown\n* First `ListItem` content for this unordered `ListBlock`\n    Child element for the first `ListItem`.\n\n    1. This `ListItem` is in the child `ListBlock` for the First `ListItem` content.\n    1. This `ListItem` is also in the child `ListBlock` for the First `ListItem` content.\n\n* Second `ListItem` content for this unordered `ListBlock`\n```\n\n","args":[],"cases":[]},{"name":"Paragraph","comment":" ","args":[],"cases":[]},{"name":"PushMode","comment":" Represents that `a` is in the _Push Mode_, which enables you to push some inline stuffs to it.\n","args":["a"],"cases":[]},{"name":"Root","comment":" Represents markdown root.\n","args":[],"cases":[]},{"name":"Section","comment":" Represents markdown section.\n\n    # Title for Root Section\n\n    Paragraph text in root section body.\n\n    Another paragraph text in root section body.\n\n    * List item in root section body\n    * Another list item in root section body\n\n    ## Title for Child Section\n\n    Paragraph text in child section body.\n\n    ```json\n    {\n      \"message\": \"Code block in child section body.\"\n    }\n    ```\n\n    ## Title for Another Child Section\n\n    Paragraph text in another child section body.\n\n    1. Ordered list item in another child section body\n    1. Another ordered list item in another child section body\n\n","args":[],"cases":[]}],"aliases":[],"values":[{"name":"appendChildSection","comment":" Append new child section to the current section, and change focus to the new one.\n","type":"{ title : String.String } -> MarkdownBuilder.Builder p MarkdownBuilder.Section -> MarkdownBuilder.Builder (MarkdownBuilder.Builder p MarkdownBuilder.Section) MarkdownBuilder.Section"},{"name":"appendCodeBlock","comment":" Append a code block, and change focus to it.\n\nElm code:\n\n    appendCodeBlock\n        \"\"\"elm\n        appendCodeBlock\n            = Debug.todo \"\"\n        \"\"\"\n\nGenerated markdown:\n\n    ```elm\n    appendCodeBlock\n        = Debug.todo \"\"\n    ```\n\n","type":"String.String -> MarkdownBuilder.Builder parent (MarkdownBuilder.AppendMode a) -> MarkdownBuilder.Builder parent (MarkdownBuilder.AppendMode a)"},{"name":"appendListItem","comment":" ","type":"MarkdownBuilder.Builder p MarkdownBuilder.ListBlock -> MarkdownBuilder.Builder (MarkdownBuilder.Builder p MarkdownBuilder.ListBlock) MarkdownBuilder.ListItem"},{"name":"appendOrderedList","comment":" Append an ordered list block, and change focus to it.\n","type":"MarkdownBuilder.Builder parent (MarkdownBuilder.AppendMode a) -> MarkdownBuilder.Builder (MarkdownBuilder.Builder parent (MarkdownBuilder.AppendMode a)) MarkdownBuilder.ListBlock"},{"name":"appendParagraph","comment":" Append a paragraph block, and change to push mode for the paragraph.\n","type":"MarkdownBuilder.Builder parent (MarkdownBuilder.AppendMode a) -> MarkdownBuilder.Builder (MarkdownBuilder.Builder parent (MarkdownBuilder.AppendMode a)) (MarkdownBuilder.PushMode MarkdownBuilder.Paragraph)"},{"name":"appendUnorderedList","comment":" Append an unordered list block, and change focus to it.\n","type":"MarkdownBuilder.Builder parent (MarkdownBuilder.AppendMode a) -> MarkdownBuilder.Builder (MarkdownBuilder.Builder parent (MarkdownBuilder.AppendMode a)) MarkdownBuilder.ListBlock"},{"name":"break","comment":" Quit editing current child, and return to edit its parent.\n","type":"MarkdownBuilder.Builder (MarkdownBuilder.Builder parent child) a -> MarkdownBuilder.Builder parent child"},{"name":"editBody","comment":" Start [Append Mode](#append-mode) for editing section body.\n","type":"MarkdownBuilder.Builder parent MarkdownBuilder.Section -> MarkdownBuilder.Builder parent (MarkdownBuilder.AppendMode MarkdownBuilder.Section)"},{"name":"editListItemChildren","comment":" Start [Append Mode](#append-mode) for editing list item children.\n","type":"MarkdownBuilder.Builder parent MarkdownBuilder.ListItem -> MarkdownBuilder.Builder parent (MarkdownBuilder.AppendMode MarkdownBuilder.ListItem)"},{"name":"editListItemContent","comment":" Start [Push Mode](#push-mode) for editing list item content.\n","type":"MarkdownBuilder.Builder parent MarkdownBuilder.ListItem -> MarkdownBuilder.Builder parent (MarkdownBuilder.PushMode MarkdownBuilder.ListItem)"},{"name":"endAppendMode","comment":" End append mode.\n","type":"MarkdownBuilder.Builder parent (MarkdownBuilder.AppendMode a) -> MarkdownBuilder.Builder parent a"},{"name":"endPushMode","comment":" End push mode.\n","type":"MarkdownBuilder.Builder p (MarkdownBuilder.PushMode a) -> MarkdownBuilder.Builder p a"},{"name":"preview","comment":" Preview markdown content as an HTML page.\n","type":"MarkdownBuilder.Root -> Html.Html msg"},{"name":"pushCode","comment":" Push an inline code.\n\n```markdown\n`inline code`\n```\n\n","type":"String.String -> MarkdownBuilder.Builder parent (MarkdownBuilder.PushMode a) -> MarkdownBuilder.Builder parent (MarkdownBuilder.PushMode a)"},{"name":"pushEmphasis","comment":" Push an emphasized text.\n\n```markdown\n*emphasized*\n```\n\n","type":"String.String -> MarkdownBuilder.Builder parent (MarkdownBuilder.PushMode a) -> MarkdownBuilder.Builder parent (MarkdownBuilder.PushMode a)"},{"name":"pushLink","comment":" Push a link.\n\n```markdown\n[href](text)\n```\n\n","type":"{ href : String.String, text : String.String } -> MarkdownBuilder.Builder parent (MarkdownBuilder.PushMode a) -> MarkdownBuilder.Builder parent (MarkdownBuilder.PushMode a)"},{"name":"pushStrikethrough","comment":" Push a strikethrough text.\n\n```markdown\n~~strikethrough~~\n```\n\n","type":"String.String -> MarkdownBuilder.Builder parent (MarkdownBuilder.PushMode a) -> MarkdownBuilder.Builder parent (MarkdownBuilder.PushMode a)"},{"name":"pushStrongEmphasis","comment":" Push a strongly emphasized text.\n\n```markdown\n**emphasized**\n```\n\n","type":"String.String -> MarkdownBuilder.Builder parent (MarkdownBuilder.PushMode a) -> MarkdownBuilder.Builder parent (MarkdownBuilder.PushMode a)"},{"name":"pushText","comment":" Push a plain text.\n","type":"String.String -> MarkdownBuilder.Builder parent (MarkdownBuilder.PushMode a) -> MarkdownBuilder.Builder parent (MarkdownBuilder.PushMode a)"},{"name":"root","comment":" Entry point for building markdown.\n","type":"{ title : String.String } -> MarkdownBuilder.Builder MarkdownBuilder.Root MarkdownBuilder.Section"},{"name":"run","comment":" Quit modifying markdown, and compile it to the valid markdown structure.\n","type":"MarkdownBuilder.Builder parent a -> MarkdownBuilder.Root"},{"name":"toString","comment":" Render `Root` into markdown text string.\n","type":"MarkdownBuilder.Root -> String.String"}],"binops":[]}]