Sophie

Sophie

distrib > Fedora > 17 > i386 > by-pkgid > dbafe2b3ab7f20b143914b7c24d32f53 > files > 254

ghc-pandoc-devel-1.9.4.2-7.fc17.i686.rpm

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<!-- Generated by HsColour, http://code.haskell.org/~malcolm/hscolour/ -->
<title>src/Text/Pandoc/Readers/DocBook.hs</title>
<link type='text/css' rel='stylesheet' href='hscolour.css' />
</head>
<body>
<pre><a name="line-1"></a><span class='hs-keyword'>module</span> <span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-conid'>Pandoc</span><span class='hs-varop'>.</span><span class='hs-conid'>Readers</span><span class='hs-varop'>.</span><span class='hs-conid'>DocBook</span> <span class='hs-layout'>(</span> <span class='hs-varid'>readDocBook</span> <span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
<a name="line-2"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Char</span> <span class='hs-layout'>(</span><span class='hs-varid'>toUpper</span><span class='hs-layout'>,</span> <span class='hs-varid'>isDigit</span><span class='hs-layout'>)</span>
<a name="line-3"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-conid'>Pandoc</span><span class='hs-varop'>.</span><span class='hs-conid'>Parsing</span> <span class='hs-layout'>(</span><span class='hs-conid'>ParserState</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-4"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-conid'>Pandoc</span><span class='hs-varop'>.</span><span class='hs-conid'>Definition</span>
<a name="line-5"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-conid'>Pandoc</span><span class='hs-varop'>.</span><span class='hs-conid'>Builder</span>
<a name="line-6"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-conid'>XML</span><span class='hs-varop'>.</span><span class='hs-conid'>Light</span>
<a name="line-7"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-conid'>HTML</span><span class='hs-varop'>.</span><span class='hs-conid'>TagSoup</span><span class='hs-varop'>.</span><span class='hs-conid'>Entity</span> <span class='hs-layout'>(</span><span class='hs-varid'>lookupEntity</span><span class='hs-layout'>)</span>
<a name="line-8"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Generics</span>
<a name="line-9"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Monoid</span>
<a name="line-10"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Char</span> <span class='hs-layout'>(</span><span class='hs-varid'>isSpace</span><span class='hs-layout'>)</span>
<a name="line-11"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>State</span>
<a name="line-12"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Applicative</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varop'>&lt;$&gt;</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-13"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>List</span> <span class='hs-layout'>(</span><span class='hs-varid'>intersperse</span><span class='hs-layout'>)</span>
<a name="line-14"></a>
<a name="line-15"></a><span class='hs-comment'>{-
<a name="line-16"></a>
<a name="line-17"></a>List of all DocBook tags, with [x] indicating implemented,
<a name="line-18"></a>[o] meaning intentionally left unimplemented (pass through):
<a name="line-19"></a>
<a name="line-20"></a>[o] abbrev - An abbreviation, especially one followed by a period
<a name="line-21"></a>[x] abstract - A summary
<a name="line-22"></a>[o] accel - A graphical user interface (GUI) keyboard shortcut
<a name="line-23"></a>[x] ackno - Acknowledgements in an Article
<a name="line-24"></a>[o] acronym - An often pronounceable word made from the initial
<a name="line-25"></a>[o] action - A response to a user event
<a name="line-26"></a>[o] address - A real-world address, generally a postal address
<a name="line-27"></a>[ ] affiliation - The institutional affiliation of an individual
<a name="line-28"></a>[ ] alt - Text representation for a graphical element
<a name="line-29"></a>[o] anchor - A spot in the document
<a name="line-30"></a>[x] answer - An answer to a question posed in a QandASet
<a name="line-31"></a>[x] appendix - An appendix in a Book or Article
<a name="line-32"></a>[x] appendixinfo - Meta-information for an Appendix
<a name="line-33"></a>[o] application - The name of a software program
<a name="line-34"></a>[x] area - A region defined for a Callout in a graphic or code example
<a name="line-35"></a>[x] areaset - A set of related areas in a graphic or code example
<a name="line-36"></a>[x] areaspec - A collection of regions in a graphic or code example
<a name="line-37"></a>[ ] arg - An argument in a CmdSynopsis
<a name="line-38"></a>[x] article - An article
<a name="line-39"></a>[x] articleinfo - Meta-information for an Article
<a name="line-40"></a>[ ] artpagenums - The page numbers of an article as published
<a name="line-41"></a>[x] attribution - The source of a block quote or epigraph
<a name="line-42"></a>[ ] audiodata - Pointer to external audio data
<a name="line-43"></a>[ ] audioobject - A wrapper for audio data and its associated meta-information
<a name="line-44"></a>[x] author - The name of an individual author
<a name="line-45"></a>[ ] authorblurb - A short description or note about an author
<a name="line-46"></a>[ ] authorgroup - Wrapper for author information when a document has
<a name="line-47"></a>    multiple authors or collabarators
<a name="line-48"></a>[x] authorinitials - The initials or other short identifier for an author
<a name="line-49"></a>[o] beginpage - The location of a page break in a print version of the document
<a name="line-50"></a>[ ] bibliocoverage - The spatial or temporal coverage of a document
<a name="line-51"></a>[x] bibliodiv - A section of a Bibliography
<a name="line-52"></a>[x] biblioentry - An entry in a Bibliography
<a name="line-53"></a>[x] bibliography - A bibliography
<a name="line-54"></a>[ ] bibliographyinfo - Meta-information for a Bibliography
<a name="line-55"></a>[ ] biblioid - An identifier for a document
<a name="line-56"></a>[o] bibliolist - A wrapper for a set of bibliography entries
<a name="line-57"></a>[ ] bibliomisc - Untyped bibliographic information
<a name="line-58"></a>[x] bibliomixed - An entry in a Bibliography
<a name="line-59"></a>[ ] bibliomset - A cooked container for related bibliographic information
<a name="line-60"></a>[ ] biblioref - A cross reference to a bibliographic entry
<a name="line-61"></a>[ ] bibliorelation - The relationship of a document to another
<a name="line-62"></a>[ ] biblioset - A raw container for related bibliographic information
<a name="line-63"></a>[ ] bibliosource - The source of a document
<a name="line-64"></a>[ ] blockinfo - Meta-information for a block element
<a name="line-65"></a>[x] blockquote - A quotation set off from the main text
<a name="line-66"></a>[x] book - A book
<a name="line-67"></a>[x] bookinfo - Meta-information for a Book
<a name="line-68"></a>[x] bridgehead - A free-floating heading
<a name="line-69"></a>[ ] callout - A “called out” description of a marked Area
<a name="line-70"></a>[ ] calloutlist - A list of Callouts
<a name="line-71"></a>[x] caption - A caption
<a name="line-72"></a>[x] caution - A note of caution
<a name="line-73"></a>[x] chapter - A chapter, as of a book
<a name="line-74"></a>[x] chapterinfo - Meta-information for a Chapter
<a name="line-75"></a>[ ] citation - An inline bibliographic reference to another published work
<a name="line-76"></a>[ ] citebiblioid - A citation of a bibliographic identifier
<a name="line-77"></a>[ ] citerefentry - A citation to a reference page
<a name="line-78"></a>[ ] citetitle - The title of a cited work
<a name="line-79"></a>[ ] city - The name of a city in an address
<a name="line-80"></a>[ ] classname - The name of a class, in the object-oriented programming sense
<a name="line-81"></a>[ ] classsynopsis - The syntax summary for a class definition
<a name="line-82"></a>[ ] classsynopsisinfo - Information supplementing the contents of
<a name="line-83"></a>    a ClassSynopsis
<a name="line-84"></a>[ ] cmdsynopsis - A syntax summary for a software command
<a name="line-85"></a>[ ] co - The location of a callout embedded in text
<a name="line-86"></a>[x] code - An inline code fragment
<a name="line-87"></a>[x] col - Specifications for a column in an HTML table
<a name="line-88"></a>[x] colgroup - A group of columns in an HTML table
<a name="line-89"></a>[ ] collab - Identifies a collaborator
<a name="line-90"></a>[ ] collabname - The name of a collaborator
<a name="line-91"></a>[ ] colophon - Text at the back of a book describing facts about its production
<a name="line-92"></a>[x] colspec - Specifications for a column in a table
<a name="line-93"></a>[x] command - The name of an executable program or other software command
<a name="line-94"></a>[x] computeroutput - Data, generally text, displayed or presented by a computer
<a name="line-95"></a>[ ] confdates - The dates of a conference for which a document was written
<a name="line-96"></a>[ ] confgroup - A wrapper for document meta-information about a conference
<a name="line-97"></a>[ ] confnum - An identifier, frequently numerical, associated with a conference for which a document was written
<a name="line-98"></a>[ ] confsponsor - The sponsor of a conference for which a document was written
<a name="line-99"></a>[ ] conftitle - The title of a conference for which a document was written
<a name="line-100"></a>[x] constant - A programming or system constant
<a name="line-101"></a>[ ] constraint - A constraint in an EBNF production
<a name="line-102"></a>[ ] constraintdef - The definition of a constraint in an EBNF production
<a name="line-103"></a>[ ] constructorsynopsis - A syntax summary for a constructor
<a name="line-104"></a>[ ] contractnum - The contract number of a document
<a name="line-105"></a>[ ] contractsponsor - The sponsor of a contract
<a name="line-106"></a>[ ] contrib - A summary of the contributions made to a document by a
<a name="line-107"></a>    credited source
<a name="line-108"></a>[ ] copyright - Copyright information about a document
<a name="line-109"></a>[ ] coref - A cross reference to a co
<a name="line-110"></a>[ ] corpauthor - A corporate author, as opposed to an individual
<a name="line-111"></a>[ ] corpcredit - A corporation or organization credited in a document
<a name="line-112"></a>[ ] corpname - The name of a corporation
<a name="line-113"></a>[ ] country - The name of a country
<a name="line-114"></a>[ ] database - The name of a database, or part of a database
<a name="line-115"></a>[x] date - The date of publication or revision of a document
<a name="line-116"></a>[ ] dedication - A wrapper for the dedication section of a book
<a name="line-117"></a>[ ] destructorsynopsis - A syntax summary for a destructor
<a name="line-118"></a>[ ] edition - The name or number of an edition of a document
<a name="line-119"></a>[ ] editor - The name of the editor of a document
<a name="line-120"></a>[x] email - An email address
<a name="line-121"></a>[x] emphasis - Emphasized text
<a name="line-122"></a>[x] entry - A cell in a table
<a name="line-123"></a>[ ] entrytbl - A subtable appearing in place of an Entry in a table
<a name="line-124"></a>[ ] envar - A software environment variable
<a name="line-125"></a>[x] epigraph - A short inscription at the beginning of a document or component
<a name="line-126"></a>    note:  also handle embedded attribution tag
<a name="line-127"></a>[ ] equation - A displayed mathematical equation
<a name="line-128"></a>[ ] errorcode - An error code
<a name="line-129"></a>[ ] errorname - An error name
<a name="line-130"></a>[ ] errortext - An error message.
<a name="line-131"></a>[ ] errortype - The classification of an error message
<a name="line-132"></a>[ ] example - A formal example, with a title
<a name="line-133"></a>[ ] exceptionname - The name of an exception
<a name="line-134"></a>[ ] fax - A fax number
<a name="line-135"></a>[ ] fieldsynopsis - The name of a field in a class definition
<a name="line-136"></a>[ ] figure - A formal figure, generally an illustration, with a title
<a name="line-137"></a>[x] filename - The name of a file
<a name="line-138"></a>[ ] firstname - The first name of a person
<a name="line-139"></a>[ ] firstterm - The first occurrence of a term
<a name="line-140"></a>[x] footnote - A footnote
<a name="line-141"></a>[ ] footnoteref - A cross reference to a footnote (a footnote mark)
<a name="line-142"></a>[x] foreignphrase - A word or phrase in a language other than the primary
<a name="line-143"></a>    language of the document
<a name="line-144"></a>[x] formalpara - A paragraph with a title
<a name="line-145"></a>[ ] funcdef - A function (subroutine) name and its return type
<a name="line-146"></a>[ ] funcparams - Parameters for a function referenced through a function
<a name="line-147"></a>    pointer in a synopsis
<a name="line-148"></a>[ ] funcprototype - The prototype of a function
<a name="line-149"></a>[ ] funcsynopsis - The syntax summary for a function definition
<a name="line-150"></a>[ ] funcsynopsisinfo - Information supplementing the FuncDefs of a FuncSynopsis
<a name="line-151"></a>[x] function - The name of a function or subroutine, as in a
<a name="line-152"></a>    programming language
<a name="line-153"></a>[x] glossary - A glossary
<a name="line-154"></a>[x] glossaryinfo - Meta-information for a Glossary
<a name="line-155"></a>[x] glossdef - A definition in a GlossEntry
<a name="line-156"></a>[x] glossdiv - A division in a Glossary
<a name="line-157"></a>[x] glossentry - An entry in a Glossary or GlossList
<a name="line-158"></a>[x] glosslist - A wrapper for a set of GlossEntrys
<a name="line-159"></a>[x] glosssee - A cross-reference from one GlossEntry to another
<a name="line-160"></a>[x] glossseealso - A cross-reference from one GlossEntry to another
<a name="line-161"></a>[x] glossterm - A glossary term
<a name="line-162"></a>[ ] graphic - A displayed graphical object (not an inline)
<a name="line-163"></a>[ ] graphicco - A graphic that contains callout areas
<a name="line-164"></a>[ ] group - A group of elements in a CmdSynopsis
<a name="line-165"></a>[ ] guibutton - The text on a button in a GUI
<a name="line-166"></a>[ ] guiicon - Graphic and/or text appearing as a icon in a GUI
<a name="line-167"></a>[ ] guilabel - The text of a label in a GUI
<a name="line-168"></a>[ ] guimenu - The name of a menu in a GUI
<a name="line-169"></a>[ ] guimenuitem - The name of a terminal menu item in a GUI
<a name="line-170"></a>[ ] guisubmenu - The name of a submenu in a GUI
<a name="line-171"></a>[ ] hardware - A physical part of a computer system
<a name="line-172"></a>[ ] highlights - A summary of the main points of the discussed component
<a name="line-173"></a>[ ] holder - The name of the individual or organization that holds a copyright
<a name="line-174"></a>[o] honorific - The title of a person
<a name="line-175"></a>[ ] html:form - An HTML form
<a name="line-176"></a>[ ] imagedata - Pointer to external image data
<a name="line-177"></a>[ ] imageobject - A wrapper for image data and its associated meta-information
<a name="line-178"></a>[ ] imageobjectco - A wrapper for an image object with callouts
<a name="line-179"></a>[x] important - An admonition set off from the text
<a name="line-180"></a>[x] index - An index
<a name="line-181"></a>[x] indexdiv - A division in an index
<a name="line-182"></a>[x] indexentry - An entry in an index
<a name="line-183"></a>[x] indexinfo - Meta-information for an Index
<a name="line-184"></a>[x] indexterm - A wrapper for terms to be indexed
<a name="line-185"></a>[x] info - A wrapper for information about a component or other block. (DocBook v5)
<a name="line-186"></a>[ ] informalequation - A displayed mathematical equation without a title
<a name="line-187"></a>[ ] informalexample - A displayed example without a title
<a name="line-188"></a>[ ] informalfigure - A untitled figure
<a name="line-189"></a>[ ] informaltable - A table without a title
<a name="line-190"></a>[ ] initializer - The initializer for a FieldSynopsis
<a name="line-191"></a>[ ] inlineequation - A mathematical equation or expression occurring inline
<a name="line-192"></a>[ ] inlinegraphic - An object containing or pointing to graphical data
<a name="line-193"></a>    that will be rendered inline
<a name="line-194"></a>[x] inlinemediaobject - An inline media object (video, audio, image, and so on)
<a name="line-195"></a>[ ] interface - An element of a GUI
<a name="line-196"></a>[ ] interfacename - The name of an interface
<a name="line-197"></a>[ ] invpartnumber - An inventory part number
<a name="line-198"></a>[ ] isbn - The International Standard Book Number of a document
<a name="line-199"></a>[ ] issn - The International Standard Serial Number of a periodical
<a name="line-200"></a>[ ] issuenum - The number of an issue of a journal
<a name="line-201"></a>[x] itemizedlist - A list in which each entry is marked with a bullet or
<a name="line-202"></a>    other dingbat
<a name="line-203"></a>[ ] itermset - A set of index terms in the meta-information of a document
<a name="line-204"></a>[ ] jobtitle - The title of an individual in an organization
<a name="line-205"></a>[ ] keycap - The text printed on a key on a keyboard
<a name="line-206"></a>[ ] keycode - The internal, frequently numeric, identifier for a key
<a name="line-207"></a>    on a keyboard
<a name="line-208"></a>[ ] keycombo - A combination of input actions
<a name="line-209"></a>[ ] keysym - The symbolic name of a key on a keyboard
<a name="line-210"></a>[ ] keyword - One of a set of keywords describing the content of a document
<a name="line-211"></a>[ ] keywordset - A set of keywords describing the content of a document
<a name="line-212"></a>[ ] label - A label on a Question or Answer
<a name="line-213"></a>[ ] legalnotice - A statement of legal obligations or requirements
<a name="line-214"></a>[ ] lhs - The left-hand side of an EBNF production
<a name="line-215"></a>[ ] lineage - The portion of a person's name indicating a relationship to
<a name="line-216"></a>    ancestors
<a name="line-217"></a>[ ] lineannotation - A comment on a line in a verbatim listing
<a name="line-218"></a>[x] link - A hypertext link
<a name="line-219"></a>[x] listitem - A wrapper for the elements of a list item
<a name="line-220"></a>[x] literal - Inline text that is some literal value
<a name="line-221"></a>[x] literallayout - A block of text in which line breaks and white space are
<a name="line-222"></a>    to be reproduced faithfully
<a name="line-223"></a>[ ] lot - A list of the titles of formal objects (as tables or figures) in
<a name="line-224"></a>    a document
<a name="line-225"></a>[ ] lotentry - An entry in a list of titles
<a name="line-226"></a>[ ] manvolnum - A reference volume number
<a name="line-227"></a>[x] markup - A string of formatting markup in text that is to be
<a name="line-228"></a>    represented literally
<a name="line-229"></a>[ ] mathphrase - A mathematical phrase, an expression that can be represented
<a name="line-230"></a>    with ordinary text and a small amount of markup
<a name="line-231"></a>[ ] medialabel - A name that identifies the physical medium on which some
<a name="line-232"></a>    information resides
<a name="line-233"></a>[x] mediaobject - A displayed media object (video, audio, image, etc.)
<a name="line-234"></a>[ ] mediaobjectco - A media object that contains callouts
<a name="line-235"></a>[x] member - An element of a simple list
<a name="line-236"></a>[ ] menuchoice - A selection or series of selections from a menu
<a name="line-237"></a>[ ] methodname - The name of a method
<a name="line-238"></a>[ ] methodparam - Parameters to a method
<a name="line-239"></a>[ ] methodsynopsis - A syntax summary for a method
<a name="line-240"></a>[ ] mml:math - A MathML equation
<a name="line-241"></a>[ ] modespec - Application-specific information necessary for the
<a name="line-242"></a>    completion of an OLink
<a name="line-243"></a>[ ] modifier - Modifiers in a synopsis
<a name="line-244"></a>[ ] mousebutton - The conventional name of a mouse button
<a name="line-245"></a>[ ] msg - A message in a message set
<a name="line-246"></a>[ ] msgaud - The audience to which a message in a message set is relevant
<a name="line-247"></a>[ ] msgentry - A wrapper for an entry in a message set
<a name="line-248"></a>[ ] msgexplan - Explanatory material relating to a message in a message set
<a name="line-249"></a>[ ] msginfo - Information about a message in a message set
<a name="line-250"></a>[ ] msglevel - The level of importance or severity of a message in a message set
<a name="line-251"></a>[ ] msgmain - The primary component of a message in a message set
<a name="line-252"></a>[ ] msgorig - The origin of a message in a message set
<a name="line-253"></a>[ ] msgrel - A related component of a message in a message set
<a name="line-254"></a>[ ] msgset - A detailed set of messages, usually error messages
<a name="line-255"></a>[ ] msgsub - A subcomponent of a message in a message set
<a name="line-256"></a>[ ] msgtext - The actual text of a message component in a message set
<a name="line-257"></a>[ ] nonterminal - A non-terminal in an EBNF production
<a name="line-258"></a>[x] note - A message set off from the text
<a name="line-259"></a>[ ] objectinfo - Meta-information for an object
<a name="line-260"></a>[ ] olink - A link that addresses its target indirectly, through an entity
<a name="line-261"></a>[ ] ooclass - A class in an object-oriented programming language
<a name="line-262"></a>[ ] ooexception - An exception in an object-oriented programming language
<a name="line-263"></a>[ ] oointerface - An interface in an object-oriented programming language
<a name="line-264"></a>[x] option - An option for a software command
<a name="line-265"></a>[x] optional - Optional information
<a name="line-266"></a>[x] orderedlist - A list in which each entry is marked with a sequentially
<a name="line-267"></a>    incremented label
<a name="line-268"></a>[ ] orgdiv - A division of an organization
<a name="line-269"></a>[ ] orgname - The name of an organization other than a corporation
<a name="line-270"></a>[ ] otheraddr - Uncategorized information in address
<a name="line-271"></a>[ ] othercredit - A person or entity, other than an author or editor,
<a name="line-272"></a>    credited in a document
<a name="line-273"></a>[ ] othername - A component of a persons name that is not a first name,
<a name="line-274"></a>    surname, or lineage
<a name="line-275"></a>[ ] package - A package
<a name="line-276"></a>[ ] pagenums - The numbers of the pages in a book, for use in a bibliographic
<a name="line-277"></a>    entry
<a name="line-278"></a>[x] para - A paragraph
<a name="line-279"></a>[ ] paramdef - Information about a function parameter in a programming language
<a name="line-280"></a>[x] parameter - A value or a symbolic reference to a value
<a name="line-281"></a>[ ] part - A division in a book
<a name="line-282"></a>[ ] partinfo - Meta-information for a Part
<a name="line-283"></a>[ ] partintro - An introduction to the contents of a part
<a name="line-284"></a>[ ] personblurb - A short description or note about a person
<a name="line-285"></a>[ ] personname - The personal name of an individual
<a name="line-286"></a>[ ] phone - A telephone number
<a name="line-287"></a>[ ] phrase - A span of text
<a name="line-288"></a>[ ] pob - A post office box in an address
<a name="line-289"></a>[ ] postcode - A postal code in an address
<a name="line-290"></a>[x] preface - Introductory matter preceding the first chapter of a book
<a name="line-291"></a>[ ] prefaceinfo - Meta-information for a Preface
<a name="line-292"></a>[ ] primary - The primary word or phrase under which an index term should be
<a name="line-293"></a>    sorted
<a name="line-294"></a>[ ] primaryie - A primary term in an index entry, not in the text
<a name="line-295"></a>[ ] printhistory - The printing history of a document
<a name="line-296"></a>[ ] procedure - A list of operations to be performed in a well-defined sequence
<a name="line-297"></a>[ ] production - A production in a set of EBNF productions
<a name="line-298"></a>[ ] productionrecap - A cross-reference to an EBNF production
<a name="line-299"></a>[ ] productionset - A set of EBNF productions
<a name="line-300"></a>[ ] productname - The formal name of a product
<a name="line-301"></a>[ ] productnumber - A number assigned to a product
<a name="line-302"></a>[x] programlisting - A literal listing of all or part of a program
<a name="line-303"></a>[ ] programlistingco - A program listing with associated areas used in callouts
<a name="line-304"></a>[x] prompt - A character or string indicating the start of an input field in
<a name="line-305"></a>    a computer display
<a name="line-306"></a>[ ] property - A unit of data associated with some part of a computer system
<a name="line-307"></a>[ ] pubdate - The date of publication of a document
<a name="line-308"></a>[ ] publisher - The publisher of a document
<a name="line-309"></a>[ ] publishername - The name of the publisher of a document
<a name="line-310"></a>[ ] pubsnumber - A number assigned to a publication other than an ISBN or ISSN
<a name="line-311"></a>    or inventory part number
<a name="line-312"></a>[x] qandadiv - A titled division in a QandASet
<a name="line-313"></a>[o] qandaentry - A question/answer set within a QandASet
<a name="line-314"></a>[o] qandaset - A question-and-answer set
<a name="line-315"></a>[x] question - A question in a QandASet
<a name="line-316"></a>[x] quote - An inline quotation
<a name="line-317"></a>[ ] refclass - The scope or other indication of applicability of a
<a name="line-318"></a>    reference entry
<a name="line-319"></a>[ ] refdescriptor - A description of the topic of a reference page
<a name="line-320"></a>[ ] refentry - A reference page (originally a UNIX man-style reference page)
<a name="line-321"></a>[ ] refentryinfo - Meta-information for a Refentry
<a name="line-322"></a>[ ] refentrytitle - The title of a reference page
<a name="line-323"></a>[ ] reference - A collection of reference entries
<a name="line-324"></a>[ ] referenceinfo - Meta-information for a Reference
<a name="line-325"></a>[ ] refmeta - Meta-information for a reference entry
<a name="line-326"></a>[ ] refmiscinfo - Meta-information for a reference entry other than the title
<a name="line-327"></a>    and volume number
<a name="line-328"></a>[ ] refname - The name of (one of) the subject(s) of a reference page
<a name="line-329"></a>[ ] refnamediv - The name, purpose, and classification of a reference page
<a name="line-330"></a>[ ] refpurpose - A short (one sentence) synopsis of the topic of a reference
<a name="line-331"></a>    page
<a name="line-332"></a>[x] refsect1 - A major subsection of a reference entry
<a name="line-333"></a>[x] refsect1info - Meta-information for a RefSect1
<a name="line-334"></a>[x] refsect2 - A subsection of a RefSect1
<a name="line-335"></a>[x] refsect2info - Meta-information for a RefSect2
<a name="line-336"></a>[x] refsect3 - A subsection of a RefSect2
<a name="line-337"></a>[x] refsect3info - Meta-information for a RefSect3
<a name="line-338"></a>[x] refsection - A recursive section in a refentry
<a name="line-339"></a>[x] refsectioninfo - Meta-information for a refsection
<a name="line-340"></a>[ ] refsynopsisdiv - A syntactic synopsis of the subject of the reference page
<a name="line-341"></a>[ ] refsynopsisdivinfo - Meta-information for a RefSynopsisDiv
<a name="line-342"></a>[ ] releaseinfo - Information about a particular release of a document
<a name="line-343"></a>[ ] remark - A remark (or comment) intended for presentation in a draft
<a name="line-344"></a>    manuscript
<a name="line-345"></a>[ ] replaceable - Content that may or must be replaced by the user
<a name="line-346"></a>[ ] returnvalue - The value returned by a function
<a name="line-347"></a>[ ] revdescription - A extended description of a revision to a document
<a name="line-348"></a>[ ] revhistory - A history of the revisions to a document
<a name="line-349"></a>[ ] revision - An entry describing a single revision in the history of the
<a name="line-350"></a>    revisions to a document
<a name="line-351"></a>[ ] revnumber - A document revision number
<a name="line-352"></a>[ ] revremark - A description of a revision to a document
<a name="line-353"></a>[ ] rhs - The right-hand side of an EBNF production
<a name="line-354"></a>[x] row - A row in a table
<a name="line-355"></a>[ ] sbr - An explicit line break in a command synopsis
<a name="line-356"></a>[x] screen - Text that a user sees or might see on a computer screen
<a name="line-357"></a>[o] screenco - A screen with associated areas used in callouts
<a name="line-358"></a>[o] screeninfo - Information about how a screen shot was produced
<a name="line-359"></a>[ ] screenshot - A representation of what the user sees or might see on a
<a name="line-360"></a>    computer screen
<a name="line-361"></a>[ ] secondary - A secondary word or phrase in an index term
<a name="line-362"></a>[ ] secondaryie - A secondary term in an index entry, rather than in the text
<a name="line-363"></a>[x] sect1 - A top-level section of document
<a name="line-364"></a>[x] sect1info - Meta-information for a Sect1
<a name="line-365"></a>[x] sect2 - A subsection within a Sect1
<a name="line-366"></a>[x] sect2info - Meta-information for a Sect2
<a name="line-367"></a>[x] sect3 - A subsection within a Sect2
<a name="line-368"></a>[x] sect3info - Meta-information for a Sect3
<a name="line-369"></a>[x] sect4 - A subsection within a Sect3
<a name="line-370"></a>[x] sect4info - Meta-information for a Sect4
<a name="line-371"></a>[x] sect5 - A subsection within a Sect4
<a name="line-372"></a>[x] sect5info - Meta-information for a Sect5
<a name="line-373"></a>[x] section - A recursive section
<a name="line-374"></a>[x] sectioninfo - Meta-information for a recursive section
<a name="line-375"></a>[x] see - Part of an index term directing the reader instead to another entry
<a name="line-376"></a>    in the index
<a name="line-377"></a>[x] seealso - Part of an index term directing the reader also to another entry
<a name="line-378"></a>    in the index
<a name="line-379"></a>[ ] seealsoie - A See also entry in an index, rather than in the text
<a name="line-380"></a>[ ] seeie - A See entry in an index, rather than in the text
<a name="line-381"></a>[x] seg - An element of a list item in a segmented list
<a name="line-382"></a>[x] seglistitem - A list item in a segmented list
<a name="line-383"></a>[x] segmentedlist - A segmented list, a list of sets of elements
<a name="line-384"></a>[x] segtitle - The title of an element of a list item in a segmented list
<a name="line-385"></a>[ ] seriesvolnums - Numbers of the volumes in a series of books
<a name="line-386"></a>[ ] set - A collection of books
<a name="line-387"></a>[ ] setindex - An index to a set of books
<a name="line-388"></a>[ ] setindexinfo - Meta-information for a SetIndex
<a name="line-389"></a>[ ] setinfo - Meta-information for a Set
<a name="line-390"></a>[ ] sgmltag - A component of SGML markup
<a name="line-391"></a>[ ] shortaffil - A brief description of an affiliation
<a name="line-392"></a>[ ] shortcut - A key combination for an action that is also accessible through
<a name="line-393"></a>    a menu
<a name="line-394"></a>[ ] sidebar - A portion of a document that is isolated from the main
<a name="line-395"></a>    narrative flow
<a name="line-396"></a>[ ] sidebarinfo - Meta-information for a Sidebar
<a name="line-397"></a>[x] simpara - A paragraph that contains only text and inline markup, no block
<a name="line-398"></a>    elements
<a name="line-399"></a>[x] simplelist - An undecorated list of single words or short phrases
<a name="line-400"></a>[ ] simplemsgentry - A wrapper for a simpler entry in a message set
<a name="line-401"></a>[ ] simplesect - A section of a document with no subdivisions
<a name="line-402"></a>[ ] spanspec - Formatting information for a spanned column in a table
<a name="line-403"></a>[ ] state - A state or province in an address
<a name="line-404"></a>[ ] step - A unit of action in a procedure
<a name="line-405"></a>[ ] stepalternatives - Alternative steps in a procedure
<a name="line-406"></a>[ ] street - A street address in an address
<a name="line-407"></a>[ ] structfield - A field in a structure (in the programming language sense)
<a name="line-408"></a>[ ] structname - The name of a structure (in the programming language sense)
<a name="line-409"></a>[ ] subject - One of a group of terms describing the subject matter of a
<a name="line-410"></a>    document
<a name="line-411"></a>[ ] subjectset - A set of terms describing the subject matter of a document
<a name="line-412"></a>[ ] subjectterm - A term in a group of terms describing the subject matter of
<a name="line-413"></a>    a document
<a name="line-414"></a>[x] subscript - A subscript (as in H2O, the molecular formula for water)
<a name="line-415"></a>[ ] substeps - A wrapper for steps that occur within steps in a procedure
<a name="line-416"></a>[x] subtitle - The subtitle of a document
<a name="line-417"></a>[x] superscript - A superscript (as in x2, the mathematical notation for x
<a name="line-418"></a>    multiplied by itself)
<a name="line-419"></a>[ ] surname - A family name; in western cultures the last name
<a name="line-420"></a>[ ] svg:svg - An SVG graphic
<a name="line-421"></a>[x] symbol - A name that is replaced by a value before processing
<a name="line-422"></a>[ ] synopfragment - A portion of a CmdSynopsis broken out from the main body
<a name="line-423"></a>    of the synopsis
<a name="line-424"></a>[ ] synopfragmentref - A reference to a fragment of a command synopsis
<a name="line-425"></a>[ ] synopsis - A general-purpose element for representing the syntax of
<a name="line-426"></a>    commands or functions
<a name="line-427"></a>[ ] systemitem - A system-related item or term
<a name="line-428"></a>[ ] table - A formal table in a document
<a name="line-429"></a>[ ] task - A task to be completed
<a name="line-430"></a>[ ] taskprerequisites - The prerequisites for a task
<a name="line-431"></a>[ ] taskrelated - Information related to a task
<a name="line-432"></a>[ ] tasksummary - A summary of a task
<a name="line-433"></a>[x] tbody - A wrapper for the rows of a table or informal table
<a name="line-434"></a>[x] td - A table entry in an HTML table
<a name="line-435"></a>[x] term - The word or phrase being defined or described in a variable list
<a name="line-436"></a>[ ] termdef - An inline term definition
<a name="line-437"></a>[ ] tertiary - A tertiary word or phrase in an index term
<a name="line-438"></a>[ ] tertiaryie - A tertiary term in an index entry, rather than in the text
<a name="line-439"></a>[ ] textdata - Pointer to external text data
<a name="line-440"></a>[ ] textobject - A wrapper for a text description of an object and its
<a name="line-441"></a>    associated meta-information
<a name="line-442"></a>[ ] tfoot - A table footer consisting of one or more rows
<a name="line-443"></a>[x] tgroup - A wrapper for the main content of a table, or part of a table
<a name="line-444"></a>[x] th - A table header entry in an HTML table
<a name="line-445"></a>[x] thead - A table header consisting of one or more rows
<a name="line-446"></a>[x] tip - A suggestion to the user, set off from the text
<a name="line-447"></a>[x] title - The text of the title of a section of a document or of a formal
<a name="line-448"></a>    block-level element
<a name="line-449"></a>[x] titleabbrev - The abbreviation of a Title
<a name="line-450"></a>[x] toc - A table of contents
<a name="line-451"></a>[x] tocback - An entry in a table of contents for a back matter component
<a name="line-452"></a>[x] tocchap - An entry in a table of contents for a component in the body of
<a name="line-453"></a>    a document
<a name="line-454"></a>[x] tocentry - A component title in a table of contents
<a name="line-455"></a>[x] tocfront - An entry in a table of contents for a front matter component
<a name="line-456"></a>[x] toclevel1 - A top-level entry within a table of contents entry for a
<a name="line-457"></a>    chapter-like component
<a name="line-458"></a>[x] toclevel2 - A second-level entry within a table of contents entry for a 
<a name="line-459"></a>    chapter-like component
<a name="line-460"></a>[x] toclevel3 - A third-level entry within a table of contents entry for a 
<a name="line-461"></a>    chapter-like component
<a name="line-462"></a>[x] toclevel4 - A fourth-level entry within a table of contents entry for a 
<a name="line-463"></a>    chapter-like component
<a name="line-464"></a>[x] toclevel5 - A fifth-level entry within a table of contents entry for a 
<a name="line-465"></a>    chapter-like component
<a name="line-466"></a>[x] tocpart - An entry in a table of contents for a part of a book
<a name="line-467"></a>[ ] token - A unit of information
<a name="line-468"></a>[x] tr - A row in an HTML table
<a name="line-469"></a>[ ] trademark - A trademark
<a name="line-470"></a>[ ] type - The classification of a value
<a name="line-471"></a>[x] ulink - A link that addresses its target by means of a URL
<a name="line-472"></a>    (Uniform Resource Locator)
<a name="line-473"></a>[x] uri - A Uniform Resource Identifier
<a name="line-474"></a>[x] userinput - Data entered by the user
<a name="line-475"></a>[x] varargs - An empty element in a function synopsis indicating a variable
<a name="line-476"></a>    number of arguments
<a name="line-477"></a>[x] variablelist - A list in which each entry is composed of a set of one or
<a name="line-478"></a>    more terms and an associated description
<a name="line-479"></a>[x] varlistentry - A wrapper for a set of terms and the associated description
<a name="line-480"></a>    in a variable list
<a name="line-481"></a>[x] varname - The name of a variable
<a name="line-482"></a>[ ] videodata - Pointer to external video data
<a name="line-483"></a>[ ] videoobject - A wrapper for video data and its associated meta-information
<a name="line-484"></a>[ ] void - An empty element in a function synopsis indicating that the
<a name="line-485"></a>    function in question takes no arguments
<a name="line-486"></a>[ ] volumenum - The volume number of a document in a set (as of books in a set
<a name="line-487"></a>    or articles in a journal)
<a name="line-488"></a>[x] warning - An admonition set off from the text
<a name="line-489"></a>[x] wordasword - A word meant specifically as a word and not representing
<a name="line-490"></a>    anything else
<a name="line-491"></a>[ ] xref - A cross reference to another part of the document
<a name="line-492"></a>[ ] year - The year of publication of a document
<a name="line-493"></a>
<a name="line-494"></a>-}</span>
<a name="line-495"></a>
<a name="line-496"></a><a name="DB"></a><span class='hs-keyword'>type</span> <span class='hs-conid'>DB</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>State</span> <span class='hs-conid'>DBState</span>
<a name="line-497"></a>
<a name="line-498"></a><a name="DBState"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>DBState</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DBState</span><span class='hs-layout'>{</span> <span class='hs-varid'>dbSectionLevel</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span>
<a name="line-499"></a>                      <span class='hs-layout'>,</span> <span class='hs-varid'>dbQuoteType</span>    <span class='hs-keyglyph'>::</span> <span class='hs-conid'>QuoteType</span>
<a name="line-500"></a>                      <span class='hs-layout'>,</span> <span class='hs-varid'>dbDocTitle</span>     <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Inlines</span>
<a name="line-501"></a>                      <span class='hs-layout'>,</span> <span class='hs-varid'>dbDocAuthors</span>   <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Inlines</span><span class='hs-keyglyph'>]</span>
<a name="line-502"></a>                      <span class='hs-layout'>,</span> <span class='hs-varid'>dbDocDate</span>      <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Inlines</span>
<a name="line-503"></a>                      <span class='hs-layout'>,</span> <span class='hs-varid'>dbBook</span>         <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Bool</span>
<a name="line-504"></a>                      <span class='hs-layout'>}</span> <span class='hs-keyword'>deriving</span> <span class='hs-conid'>Show</span>
<a name="line-505"></a>
<a name="line-506"></a><a name="readDocBook"></a><span class='hs-definition'>readDocBook</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ParserState</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>String</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Pandoc</span>
<a name="line-507"></a><span class='hs-definition'>readDocBook</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>inp</span>  <span class='hs-keyglyph'>=</span> <span class='hs-varid'>setTitle</span> <span class='hs-layout'>(</span><span class='hs-varid'>dbDocTitle</span> <span class='hs-varid'>st'</span><span class='hs-layout'>)</span>
<a name="line-508"></a>                   <span class='hs-varop'>$</span> <span class='hs-varid'>setAuthors</span> <span class='hs-layout'>(</span><span class='hs-varid'>dbDocAuthors</span> <span class='hs-varid'>st'</span><span class='hs-layout'>)</span>
<a name="line-509"></a>                   <span class='hs-varop'>$</span> <span class='hs-varid'>setDate</span> <span class='hs-layout'>(</span><span class='hs-varid'>dbDocDate</span> <span class='hs-varid'>st'</span><span class='hs-layout'>)</span>
<a name="line-510"></a>                   <span class='hs-varop'>$</span> <span class='hs-varid'>doc</span> <span class='hs-varop'>$</span> <span class='hs-varid'>mconcat</span> <span class='hs-varid'>bs</span>
<a name="line-511"></a>  <span class='hs-keyword'>where</span> <span class='hs-layout'>(</span><span class='hs-varid'>bs</span><span class='hs-layout'>,</span> <span class='hs-varid'>st'</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>runState</span> <span class='hs-layout'>(</span><span class='hs-varid'>mapM</span> <span class='hs-varid'>parseBlock</span> <span class='hs-varop'>$</span> <span class='hs-varid'>normalizeTree</span> <span class='hs-varop'>$</span> <span class='hs-varid'>parseXML</span> <span class='hs-varid'>inp</span><span class='hs-layout'>)</span>
<a name="line-512"></a>                             <span class='hs-conid'>DBState</span><span class='hs-layout'>{</span> <span class='hs-varid'>dbSectionLevel</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>0</span>
<a name="line-513"></a>                                    <span class='hs-layout'>,</span> <span class='hs-varid'>dbQuoteType</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DoubleQuote</span>
<a name="line-514"></a>                                    <span class='hs-layout'>,</span> <span class='hs-varid'>dbDocTitle</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>mempty</span>
<a name="line-515"></a>                                    <span class='hs-layout'>,</span> <span class='hs-varid'>dbDocAuthors</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>[]</span>
<a name="line-516"></a>                                    <span class='hs-layout'>,</span> <span class='hs-varid'>dbDocDate</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>mempty</span>
<a name="line-517"></a>                                    <span class='hs-layout'>,</span> <span class='hs-varid'>dbBook</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>False</span>
<a name="line-518"></a>                                    <span class='hs-layout'>}</span>
<a name="line-519"></a>
<a name="line-520"></a><a name="normalizeTree"></a><span class='hs-comment'>-- normalize input, consolidating adjacent Text and CRef elements</span>
<a name="line-521"></a><span class='hs-definition'>normalizeTree</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Content</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Content</span><span class='hs-keyglyph'>]</span>
<a name="line-522"></a><span class='hs-definition'>normalizeTree</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>everywhere</span> <span class='hs-layout'>(</span><span class='hs-varid'>mkT</span> <span class='hs-varid'>go</span><span class='hs-layout'>)</span>
<a name="line-523"></a>  <span class='hs-keyword'>where</span> <span class='hs-varid'>go</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Content</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Content</span><span class='hs-keyglyph'>]</span>
<a name="line-524"></a>        <span class='hs-varid'>go</span> <span class='hs-layout'>(</span><span class='hs-conid'>Text</span> <span class='hs-layout'>(</span><span class='hs-conid'>CData</span> <span class='hs-conid'>CDataRaw</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span><span class='hs-conop'>:</span><span class='hs-varid'>xs</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>xs</span>
<a name="line-525"></a>        <span class='hs-varid'>go</span> <span class='hs-layout'>(</span><span class='hs-conid'>Text</span> <span class='hs-layout'>(</span><span class='hs-conid'>CData</span> <span class='hs-conid'>CDataText</span> <span class='hs-varid'>s1</span> <span class='hs-varid'>z</span><span class='hs-layout'>)</span><span class='hs-conop'>:</span><span class='hs-conid'>Text</span> <span class='hs-layout'>(</span><span class='hs-conid'>CData</span> <span class='hs-conid'>CDataText</span> <span class='hs-varid'>s2</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span><span class='hs-conop'>:</span><span class='hs-varid'>xs</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-526"></a>           <span class='hs-conid'>Text</span> <span class='hs-layout'>(</span><span class='hs-conid'>CData</span> <span class='hs-conid'>CDataText</span> <span class='hs-layout'>(</span><span class='hs-varid'>s1</span> <span class='hs-varop'>++</span> <span class='hs-varid'>s2</span><span class='hs-layout'>)</span> <span class='hs-varid'>z</span><span class='hs-layout'>)</span><span class='hs-conop'>:</span><span class='hs-varid'>xs</span>
<a name="line-527"></a>        <span class='hs-varid'>go</span> <span class='hs-layout'>(</span><span class='hs-conid'>Text</span> <span class='hs-layout'>(</span><span class='hs-conid'>CData</span> <span class='hs-conid'>CDataText</span> <span class='hs-varid'>s1</span> <span class='hs-varid'>z</span><span class='hs-layout'>)</span><span class='hs-conop'>:</span><span class='hs-conid'>CRef</span> <span class='hs-varid'>r</span><span class='hs-conop'>:</span><span class='hs-varid'>xs</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-528"></a>           <span class='hs-conid'>Text</span> <span class='hs-layout'>(</span><span class='hs-conid'>CData</span> <span class='hs-conid'>CDataText</span> <span class='hs-layout'>(</span><span class='hs-varid'>s1</span> <span class='hs-varop'>++</span> <span class='hs-varid'>convertEntity</span> <span class='hs-varid'>r</span><span class='hs-layout'>)</span> <span class='hs-varid'>z</span><span class='hs-layout'>)</span><span class='hs-conop'>:</span><span class='hs-varid'>xs</span>
<a name="line-529"></a>        <span class='hs-varid'>go</span> <span class='hs-layout'>(</span><span class='hs-conid'>CRef</span> <span class='hs-varid'>r</span><span class='hs-conop'>:</span><span class='hs-conid'>Text</span> <span class='hs-layout'>(</span><span class='hs-conid'>CData</span> <span class='hs-conid'>CDataText</span> <span class='hs-varid'>s1</span> <span class='hs-varid'>z</span><span class='hs-layout'>)</span><span class='hs-conop'>:</span><span class='hs-varid'>xs</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-530"></a>             <span class='hs-conid'>Text</span> <span class='hs-layout'>(</span><span class='hs-conid'>CData</span> <span class='hs-conid'>CDataText</span> <span class='hs-layout'>(</span><span class='hs-varid'>convertEntity</span> <span class='hs-varid'>r</span> <span class='hs-varop'>++</span> <span class='hs-varid'>s1</span><span class='hs-layout'>)</span> <span class='hs-varid'>z</span><span class='hs-layout'>)</span><span class='hs-conop'>:</span><span class='hs-varid'>xs</span>
<a name="line-531"></a>        <span class='hs-varid'>go</span> <span class='hs-layout'>(</span><span class='hs-conid'>CRef</span> <span class='hs-varid'>r1</span><span class='hs-conop'>:</span><span class='hs-conid'>CRef</span> <span class='hs-varid'>r2</span><span class='hs-conop'>:</span><span class='hs-varid'>xs</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-532"></a>             <span class='hs-conid'>Text</span> <span class='hs-layout'>(</span><span class='hs-conid'>CData</span> <span class='hs-conid'>CDataText</span> <span class='hs-layout'>(</span><span class='hs-varid'>convertEntity</span> <span class='hs-varid'>r1</span> <span class='hs-varop'>++</span> <span class='hs-varid'>convertEntity</span> <span class='hs-varid'>r2</span><span class='hs-layout'>)</span> <span class='hs-conid'>Nothing</span><span class='hs-layout'>)</span><span class='hs-conop'>:</span><span class='hs-varid'>xs</span>
<a name="line-533"></a>        <span class='hs-varid'>go</span> <span class='hs-varid'>xs</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>xs</span>
<a name="line-534"></a>
<a name="line-535"></a><a name="convertEntity"></a><span class='hs-definition'>convertEntity</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>String</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>String</span>
<a name="line-536"></a><span class='hs-definition'>convertEntity</span> <span class='hs-varid'>e</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>maybe</span> <span class='hs-layout'>(</span><span class='hs-varid'>map</span> <span class='hs-varid'>toUpper</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-conop'>:</span><span class='hs-conid'>[]</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>lookupEntity</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span>
<a name="line-537"></a>
<a name="line-538"></a><a name="attrValue"></a><span class='hs-comment'>-- convenience function to get an attribute value, defaulting to ""</span>
<a name="line-539"></a><span class='hs-definition'>attrValue</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>String</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Element</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>String</span>
<a name="line-540"></a><span class='hs-definition'>attrValue</span> <span class='hs-varid'>attr</span> <span class='hs-varid'>elt</span> <span class='hs-keyglyph'>=</span>
<a name="line-541"></a>  <span class='hs-keyword'>case</span> <span class='hs-varid'>lookupAttrBy</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>x</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>qName</span> <span class='hs-varid'>x</span> <span class='hs-varop'>==</span> <span class='hs-varid'>attr</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>elAttribs</span> <span class='hs-varid'>elt</span><span class='hs-layout'>)</span> <span class='hs-keyword'>of</span>
<a name="line-542"></a>    <span class='hs-conid'>Just</span> <span class='hs-varid'>z</span>  <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>z</span>
<a name="line-543"></a>    <span class='hs-conid'>Nothing</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-str'>""</span>
<a name="line-544"></a>
<a name="line-545"></a><a name="named"></a><span class='hs-comment'>-- convenience function</span>
<a name="line-546"></a><span class='hs-definition'>named</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>String</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Element</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-547"></a><span class='hs-definition'>named</span> <span class='hs-varid'>s</span> <span class='hs-varid'>e</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>qName</span> <span class='hs-layout'>(</span><span class='hs-varid'>elName</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-varop'>==</span> <span class='hs-varid'>s</span>
<a name="line-548"></a>
<a name="line-549"></a><a name="isBlockElement"></a><span class='hs-definition'>isBlockElement</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Content</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-550"></a><span class='hs-definition'>isBlockElement</span> <span class='hs-layout'>(</span><span class='hs-conid'>Elem</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>qName</span> <span class='hs-layout'>(</span><span class='hs-varid'>elName</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-varop'>`elem`</span> <span class='hs-varid'>blocktags</span>
<a name="line-551"></a>  <span class='hs-keyword'>where</span> <span class='hs-varid'>blocktags</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"toc"</span><span class='hs-layout'>,</span><span class='hs-str'>"index"</span><span class='hs-layout'>,</span><span class='hs-str'>"para"</span><span class='hs-layout'>,</span><span class='hs-str'>"formalpara"</span><span class='hs-layout'>,</span><span class='hs-str'>"simpara"</span><span class='hs-layout'>,</span>
<a name="line-552"></a>           <span class='hs-str'>"ackno"</span><span class='hs-layout'>,</span><span class='hs-str'>"epigraph"</span><span class='hs-layout'>,</span><span class='hs-str'>"blockquote"</span><span class='hs-layout'>,</span><span class='hs-str'>"bibliography"</span><span class='hs-layout'>,</span><span class='hs-str'>"bibliodiv"</span><span class='hs-layout'>,</span>
<a name="line-553"></a>           <span class='hs-str'>"biblioentry"</span><span class='hs-layout'>,</span><span class='hs-str'>"glossee"</span><span class='hs-layout'>,</span><span class='hs-str'>"glosseealso"</span><span class='hs-layout'>,</span><span class='hs-str'>"glossary"</span><span class='hs-layout'>,</span>
<a name="line-554"></a>           <span class='hs-str'>"glossdiv"</span><span class='hs-layout'>,</span><span class='hs-str'>"glosslist"</span><span class='hs-layout'>,</span><span class='hs-str'>"chapter"</span><span class='hs-layout'>,</span><span class='hs-str'>"appendix"</span><span class='hs-layout'>,</span><span class='hs-str'>"preface"</span><span class='hs-layout'>,</span>
<a name="line-555"></a>           <span class='hs-str'>"bridgehead"</span><span class='hs-layout'>,</span><span class='hs-str'>"sect1"</span><span class='hs-layout'>,</span><span class='hs-str'>"sect2"</span><span class='hs-layout'>,</span><span class='hs-str'>"sect3"</span><span class='hs-layout'>,</span><span class='hs-str'>"sect4"</span><span class='hs-layout'>,</span><span class='hs-str'>"sect5"</span><span class='hs-layout'>,</span><span class='hs-str'>"section"</span><span class='hs-layout'>,</span>
<a name="line-556"></a>           <span class='hs-str'>"refsect1"</span><span class='hs-layout'>,</span><span class='hs-str'>"refsect2"</span><span class='hs-layout'>,</span><span class='hs-str'>"refsect3"</span><span class='hs-layout'>,</span><span class='hs-str'>"refsection"</span><span class='hs-layout'>,</span>
<a name="line-557"></a>           <span class='hs-str'>"important"</span><span class='hs-layout'>,</span><span class='hs-str'>"caution"</span><span class='hs-layout'>,</span><span class='hs-str'>"note"</span><span class='hs-layout'>,</span><span class='hs-str'>"tip"</span><span class='hs-layout'>,</span><span class='hs-str'>"warning"</span><span class='hs-layout'>,</span><span class='hs-str'>"qandadiv"</span><span class='hs-layout'>,</span>
<a name="line-558"></a>           <span class='hs-str'>"question"</span><span class='hs-layout'>,</span><span class='hs-str'>"answer"</span><span class='hs-layout'>,</span><span class='hs-str'>"abstract"</span><span class='hs-layout'>,</span><span class='hs-str'>"itemizedlist"</span><span class='hs-layout'>,</span><span class='hs-str'>"orderedlist"</span><span class='hs-layout'>,</span>
<a name="line-559"></a>           <span class='hs-str'>"variablelist"</span><span class='hs-layout'>,</span><span class='hs-str'>"article"</span><span class='hs-layout'>,</span><span class='hs-str'>"book"</span><span class='hs-layout'>,</span><span class='hs-str'>"table"</span><span class='hs-layout'>,</span><span class='hs-str'>"informaltable"</span><span class='hs-layout'>,</span>
<a name="line-560"></a>           <span class='hs-str'>"screen"</span><span class='hs-layout'>,</span><span class='hs-str'>"programlisting"</span><span class='hs-layout'>,</span><span class='hs-str'>"example"</span><span class='hs-keyglyph'>]</span>
<a name="line-561"></a><span class='hs-definition'>isBlockElement</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>False</span>
<a name="line-562"></a>
<a name="line-563"></a><a name="trimNl"></a><span class='hs-comment'>-- Trim leading and trailing newline characters</span>
<a name="line-564"></a><span class='hs-definition'>trimNl</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>String</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>String</span>
<a name="line-565"></a><span class='hs-definition'>trimNl</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>reverse</span> <span class='hs-varop'>.</span> <span class='hs-varid'>go</span> <span class='hs-varop'>.</span> <span class='hs-varid'>reverse</span> <span class='hs-varop'>.</span> <span class='hs-varid'>go</span>
<a name="line-566"></a>  <span class='hs-keyword'>where</span> <span class='hs-varid'>go</span> <span class='hs-layout'>(</span><span class='hs-chr'>'\n'</span><span class='hs-conop'>:</span><span class='hs-varid'>xs</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>xs</span>
<a name="line-567"></a>        <span class='hs-varid'>go</span> <span class='hs-varid'>xs</span>        <span class='hs-keyglyph'>=</span> <span class='hs-varid'>xs</span>
<a name="line-568"></a>
<a name="line-569"></a><a name="addToStart"></a><span class='hs-comment'>-- meld text into beginning of first paragraph of Blocks.</span>
<a name="line-570"></a><span class='hs-comment'>-- assumes Blocks start with a Para; if not, does nothing.</span>
<a name="line-571"></a><span class='hs-definition'>addToStart</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Inlines</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Blocks</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Blocks</span>
<a name="line-572"></a><span class='hs-definition'>addToStart</span> <span class='hs-varid'>toadd</span> <span class='hs-varid'>bs</span> <span class='hs-keyglyph'>=</span>
<a name="line-573"></a>  <span class='hs-keyword'>case</span> <span class='hs-varid'>toList</span> <span class='hs-varid'>bs</span> <span class='hs-keyword'>of</span>
<a name="line-574"></a>    <span class='hs-layout'>(</span><span class='hs-conid'>Para</span> <span class='hs-varid'>xs</span> <span class='hs-conop'>:</span> <span class='hs-varid'>rest</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>para</span> <span class='hs-layout'>(</span><span class='hs-varid'>toadd</span> <span class='hs-varop'>&lt;&gt;</span> <span class='hs-varid'>fromList</span> <span class='hs-varid'>xs</span><span class='hs-layout'>)</span> <span class='hs-varop'>&lt;&gt;</span> <span class='hs-varid'>fromList</span> <span class='hs-varid'>rest</span>
<a name="line-575"></a>    <span class='hs-keyword'>_</span>                <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>bs</span>
<a name="line-576"></a>
<a name="line-577"></a><a name="getImage"></a><span class='hs-comment'>-- function that is used by both mediaobject (in parseBlock) </span>
<a name="line-578"></a><span class='hs-comment'>-- and inlinemediaobject (in parseInline)</span>
<a name="line-579"></a><span class='hs-definition'>getImage</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Element</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>DB</span> <span class='hs-conid'>Inlines</span>
<a name="line-580"></a><span class='hs-definition'>getImage</span> <span class='hs-varid'>e</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-581"></a>  <span class='hs-varid'>imageUrl</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>filterChild</span> <span class='hs-layout'>(</span><span class='hs-varid'>named</span> <span class='hs-str'>"imageobject"</span><span class='hs-layout'>)</span> <span class='hs-varid'>e</span> <span class='hs-keyword'>of</span>
<a name="line-582"></a>                <span class='hs-conid'>Nothing</span>  <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varid'>mempty</span>
<a name="line-583"></a>                <span class='hs-conid'>Just</span> <span class='hs-varid'>z</span>   <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>filterChild</span> <span class='hs-layout'>(</span><span class='hs-varid'>named</span> <span class='hs-str'>"imagedata"</span><span class='hs-layout'>)</span> <span class='hs-varid'>z</span> <span class='hs-keyword'>of</span>
<a name="line-584"></a>                              <span class='hs-conid'>Nothing</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varid'>mempty</span>
<a name="line-585"></a>                              <span class='hs-conid'>Just</span> <span class='hs-varid'>i</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>attrValue</span> <span class='hs-str'>"fileref"</span> <span class='hs-varid'>i</span>
<a name="line-586"></a>  <span class='hs-varid'>caption</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>filterChild</span>
<a name="line-587"></a>                  <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>x</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>named</span> <span class='hs-str'>"caption"</span> <span class='hs-varid'>x</span> <span class='hs-varop'>||</span> <span class='hs-varid'>named</span> <span class='hs-str'>"textobject"</span> <span class='hs-varid'>x</span><span class='hs-layout'>)</span> <span class='hs-varid'>e</span> <span class='hs-keyword'>of</span>
<a name="line-588"></a>               <span class='hs-conid'>Nothing</span>  <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varid'>mempty</span>
<a name="line-589"></a>               <span class='hs-conid'>Just</span> <span class='hs-varid'>z</span>   <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>mconcat</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>mapM</span> <span class='hs-varid'>parseInline</span> <span class='hs-varop'>$</span> <span class='hs-varid'>elContent</span> <span class='hs-varid'>z</span><span class='hs-layout'>)</span>
<a name="line-590"></a>  <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>image</span> <span class='hs-varid'>imageUrl</span> <span class='hs-str'>""</span> <span class='hs-varid'>caption</span>
<a name="line-591"></a>
<a name="line-592"></a><a name="parseBlock"></a><span class='hs-definition'>parseBlock</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Content</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>DB</span> <span class='hs-conid'>Blocks</span>
<a name="line-593"></a><span class='hs-definition'>parseBlock</span> <span class='hs-layout'>(</span><span class='hs-conid'>Text</span> <span class='hs-layout'>(</span><span class='hs-conid'>CData</span> <span class='hs-conid'>CDataRaw</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>return</span> <span class='hs-varid'>mempty</span> <span class='hs-comment'>-- DOCTYPE</span>
<a name="line-594"></a><span class='hs-definition'>parseBlock</span> <span class='hs-layout'>(</span><span class='hs-conid'>Text</span> <span class='hs-layout'>(</span><span class='hs-conid'>CData</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>s</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>if</span> <span class='hs-varid'>all</span> <span class='hs-varid'>isSpace</span> <span class='hs-varid'>s</span>
<a name="line-595"></a>                                     <span class='hs-keyword'>then</span> <span class='hs-varid'>return</span> <span class='hs-varid'>mempty</span>
<a name="line-596"></a>                                     <span class='hs-keyword'>else</span> <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>plain</span> <span class='hs-varop'>$</span> <span class='hs-varid'>trimInlines</span> <span class='hs-varop'>$</span> <span class='hs-varid'>text</span> <span class='hs-varid'>s</span>
<a name="line-597"></a><span class='hs-definition'>parseBlock</span> <span class='hs-layout'>(</span><span class='hs-conid'>CRef</span> <span class='hs-varid'>x</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>plain</span> <span class='hs-varop'>$</span> <span class='hs-varid'>str</span> <span class='hs-varop'>$</span> <span class='hs-varid'>map</span> <span class='hs-varid'>toUpper</span> <span class='hs-varid'>x</span>
<a name="line-598"></a><span class='hs-definition'>parseBlock</span> <span class='hs-layout'>(</span><span class='hs-conid'>Elem</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-599"></a>  <span class='hs-keyword'>case</span> <span class='hs-varid'>qName</span> <span class='hs-layout'>(</span><span class='hs-varid'>elName</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-keyword'>of</span>
<a name="line-600"></a>        <span class='hs-str'>"toc"</span>   <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varid'>mempty</span> <span class='hs-comment'>-- skip TOC, since in pandoc it's autogenerated</span>
<a name="line-601"></a>        <span class='hs-str'>"index"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varid'>mempty</span> <span class='hs-comment'>-- skip index, since page numbers meaningless</span>
<a name="line-602"></a>        <span class='hs-str'>"para"</span>  <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>parseMixed</span> <span class='hs-varid'>para</span> <span class='hs-layout'>(</span><span class='hs-varid'>elContent</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span>
<a name="line-603"></a>        <span class='hs-str'>"formalpara"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-604"></a>           <span class='hs-varid'>tit</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>filterChild</span> <span class='hs-layout'>(</span><span class='hs-varid'>named</span> <span class='hs-str'>"title"</span><span class='hs-layout'>)</span> <span class='hs-varid'>e</span> <span class='hs-keyword'>of</span>
<a name="line-605"></a>                        <span class='hs-conid'>Just</span> <span class='hs-varid'>t</span>  <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varop'>&lt;&gt;</span> <span class='hs-varid'>str</span> <span class='hs-str'>"."</span> <span class='hs-varop'>&lt;&gt;</span> <span class='hs-varid'>linebreak</span><span class='hs-layout'>)</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>emph</span>
<a name="line-606"></a>                                      <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>getInlines</span> <span class='hs-varid'>t</span>
<a name="line-607"></a>                        <span class='hs-conid'>Nothing</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varid'>mempty</span>
<a name="line-608"></a>           <span class='hs-varid'>addToStart</span> <span class='hs-varid'>tit</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>parseMixed</span> <span class='hs-varid'>para</span> <span class='hs-layout'>(</span><span class='hs-varid'>elContent</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span>
<a name="line-609"></a>        <span class='hs-str'>"simpara"</span>  <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>parseMixed</span> <span class='hs-varid'>para</span> <span class='hs-layout'>(</span><span class='hs-varid'>elContent</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span>
<a name="line-610"></a>        <span class='hs-str'>"ackno"</span>  <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>parseMixed</span> <span class='hs-varid'>para</span> <span class='hs-layout'>(</span><span class='hs-varid'>elContent</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span>
<a name="line-611"></a>        <span class='hs-str'>"epigraph"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>parseBlockquote</span>
<a name="line-612"></a>        <span class='hs-str'>"blockquote"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>parseBlockquote</span>
<a name="line-613"></a>        <span class='hs-str'>"attribution"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varid'>mempty</span>
<a name="line-614"></a>        <span class='hs-str'>"titleabbrev"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varid'>mempty</span>
<a name="line-615"></a>        <span class='hs-str'>"authorinitials"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varid'>mempty</span>
<a name="line-616"></a>        <span class='hs-str'>"title"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varid'>mempty</span> <span class='hs-comment'>-- handled by getTitle or sect</span>
<a name="line-617"></a>        <span class='hs-str'>"bibliography"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>sect</span> <span class='hs-num'>0</span>
<a name="line-618"></a>        <span class='hs-str'>"bibliodiv"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>sect</span> <span class='hs-num'>1</span>
<a name="line-619"></a>        <span class='hs-str'>"biblioentry"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>parseMixed</span> <span class='hs-varid'>para</span> <span class='hs-layout'>(</span><span class='hs-varid'>elContent</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span>
<a name="line-620"></a>        <span class='hs-str'>"bibliomixed"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>parseMixed</span> <span class='hs-varid'>para</span> <span class='hs-layout'>(</span><span class='hs-varid'>elContent</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span>
<a name="line-621"></a>        <span class='hs-str'>"glosssee"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>para</span> <span class='hs-varop'>.</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>ils</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>text</span> <span class='hs-str'>"See "</span> <span class='hs-varop'>&lt;&gt;</span> <span class='hs-varid'>ils</span> <span class='hs-varop'>&lt;&gt;</span> <span class='hs-varid'>str</span> <span class='hs-str'>"."</span><span class='hs-layout'>)</span>
<a name="line-622"></a>                         <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>getInlines</span> <span class='hs-varid'>e</span>
<a name="line-623"></a>        <span class='hs-str'>"glossseealso"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>para</span> <span class='hs-varop'>.</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>ils</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>text</span> <span class='hs-str'>"See also "</span> <span class='hs-varop'>&lt;&gt;</span> <span class='hs-varid'>ils</span> <span class='hs-varop'>&lt;&gt;</span> <span class='hs-varid'>str</span> <span class='hs-str'>"."</span><span class='hs-layout'>)</span>
<a name="line-624"></a>                         <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>getInlines</span> <span class='hs-varid'>e</span>
<a name="line-625"></a>        <span class='hs-str'>"glossary"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>sect</span> <span class='hs-num'>0</span>
<a name="line-626"></a>        <span class='hs-str'>"glossdiv"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>definitionList</span> <span class='hs-varop'>&lt;$&gt;</span>
<a name="line-627"></a>                  <span class='hs-varid'>mapM</span> <span class='hs-varid'>parseGlossEntry</span> <span class='hs-layout'>(</span><span class='hs-varid'>filterChildren</span> <span class='hs-layout'>(</span><span class='hs-varid'>named</span> <span class='hs-str'>"glossentry"</span><span class='hs-layout'>)</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span>
<a name="line-628"></a>        <span class='hs-str'>"glosslist"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>definitionList</span> <span class='hs-varop'>&lt;$&gt;</span>
<a name="line-629"></a>                  <span class='hs-varid'>mapM</span> <span class='hs-varid'>parseGlossEntry</span> <span class='hs-layout'>(</span><span class='hs-varid'>filterChildren</span> <span class='hs-layout'>(</span><span class='hs-varid'>named</span> <span class='hs-str'>"glossentry"</span><span class='hs-layout'>)</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span>
<a name="line-630"></a>        <span class='hs-str'>"chapter"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>sect</span> <span class='hs-num'>0</span>
<a name="line-631"></a>        <span class='hs-str'>"appendix"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>sect</span> <span class='hs-num'>0</span>
<a name="line-632"></a>        <span class='hs-str'>"preface"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>sect</span> <span class='hs-num'>0</span>
<a name="line-633"></a>        <span class='hs-str'>"bridgehead"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>para</span> <span class='hs-varop'>.</span> <span class='hs-varid'>strong</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>getInlines</span> <span class='hs-varid'>e</span>
<a name="line-634"></a>        <span class='hs-str'>"sect1"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>sect</span> <span class='hs-num'>1</span>
<a name="line-635"></a>        <span class='hs-str'>"sect2"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>sect</span> <span class='hs-num'>2</span>
<a name="line-636"></a>        <span class='hs-str'>"sect3"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>sect</span> <span class='hs-num'>3</span>
<a name="line-637"></a>        <span class='hs-str'>"sect4"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>sect</span> <span class='hs-num'>4</span>
<a name="line-638"></a>        <span class='hs-str'>"sect5"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>sect</span> <span class='hs-num'>5</span>
<a name="line-639"></a>        <span class='hs-str'>"section"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>gets</span> <span class='hs-varid'>dbSectionLevel</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>sect</span> <span class='hs-varop'>.</span> <span class='hs-layout'>(</span><span class='hs-varop'>+</span><span class='hs-num'>1</span><span class='hs-layout'>)</span>
<a name="line-640"></a>        <span class='hs-str'>"refsect1"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>sect</span> <span class='hs-num'>1</span>
<a name="line-641"></a>        <span class='hs-str'>"refsect2"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>sect</span> <span class='hs-num'>2</span>
<a name="line-642"></a>        <span class='hs-str'>"refsect3"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>sect</span> <span class='hs-num'>3</span>
<a name="line-643"></a>        <span class='hs-str'>"refsection"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>gets</span> <span class='hs-varid'>dbSectionLevel</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>sect</span> <span class='hs-varop'>.</span> <span class='hs-layout'>(</span><span class='hs-varop'>+</span><span class='hs-num'>1</span><span class='hs-layout'>)</span>
<a name="line-644"></a>        <span class='hs-str'>"important"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>blockQuote</span> <span class='hs-varop'>.</span> <span class='hs-layout'>(</span><span class='hs-varid'>para</span> <span class='hs-layout'>(</span><span class='hs-varid'>strong</span> <span class='hs-varop'>$</span> <span class='hs-varid'>str</span> <span class='hs-str'>"Important"</span><span class='hs-layout'>)</span> <span class='hs-varop'>&lt;&gt;</span><span class='hs-layout'>)</span>
<a name="line-645"></a>                        <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>getBlocks</span> <span class='hs-varid'>e</span>
<a name="line-646"></a>        <span class='hs-str'>"caution"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>blockQuote</span> <span class='hs-varop'>.</span> <span class='hs-layout'>(</span><span class='hs-varid'>para</span> <span class='hs-layout'>(</span><span class='hs-varid'>strong</span> <span class='hs-varop'>$</span> <span class='hs-varid'>str</span> <span class='hs-str'>"Caution"</span><span class='hs-layout'>)</span> <span class='hs-varop'>&lt;&gt;</span><span class='hs-layout'>)</span>
<a name="line-647"></a>                        <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>getBlocks</span> <span class='hs-varid'>e</span>
<a name="line-648"></a>        <span class='hs-str'>"note"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>blockQuote</span> <span class='hs-varop'>.</span> <span class='hs-layout'>(</span><span class='hs-varid'>para</span> <span class='hs-layout'>(</span><span class='hs-varid'>strong</span> <span class='hs-varop'>$</span> <span class='hs-varid'>str</span> <span class='hs-str'>"Note"</span><span class='hs-layout'>)</span> <span class='hs-varop'>&lt;&gt;</span><span class='hs-layout'>)</span>
<a name="line-649"></a>                        <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>getBlocks</span> <span class='hs-varid'>e</span>
<a name="line-650"></a>        <span class='hs-str'>"tip"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>blockQuote</span> <span class='hs-varop'>.</span> <span class='hs-layout'>(</span><span class='hs-varid'>para</span> <span class='hs-layout'>(</span><span class='hs-varid'>strong</span> <span class='hs-varop'>$</span> <span class='hs-varid'>str</span> <span class='hs-str'>"Tip"</span><span class='hs-layout'>)</span> <span class='hs-varop'>&lt;&gt;</span><span class='hs-layout'>)</span>
<a name="line-651"></a>                        <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>getBlocks</span> <span class='hs-varid'>e</span>
<a name="line-652"></a>        <span class='hs-str'>"warning"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>blockQuote</span> <span class='hs-varop'>.</span> <span class='hs-layout'>(</span><span class='hs-varid'>para</span> <span class='hs-layout'>(</span><span class='hs-varid'>strong</span> <span class='hs-varop'>$</span> <span class='hs-varid'>str</span> <span class='hs-str'>"Warning"</span><span class='hs-layout'>)</span> <span class='hs-varop'>&lt;&gt;</span><span class='hs-layout'>)</span>
<a name="line-653"></a>                        <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>getBlocks</span> <span class='hs-varid'>e</span>
<a name="line-654"></a>        <span class='hs-str'>"area"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varid'>mempty</span>
<a name="line-655"></a>        <span class='hs-str'>"areaset"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varid'>mempty</span>
<a name="line-656"></a>        <span class='hs-str'>"areaspec"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varid'>mempty</span>
<a name="line-657"></a>        <span class='hs-str'>"qandadiv"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>gets</span> <span class='hs-varid'>dbSectionLevel</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>sect</span> <span class='hs-varop'>.</span> <span class='hs-layout'>(</span><span class='hs-varop'>+</span><span class='hs-num'>1</span><span class='hs-layout'>)</span>
<a name="line-658"></a>        <span class='hs-str'>"question"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>addToStart</span> <span class='hs-layout'>(</span><span class='hs-varid'>strong</span> <span class='hs-layout'>(</span><span class='hs-varid'>str</span> <span class='hs-str'>"Q:"</span><span class='hs-layout'>)</span> <span class='hs-varop'>&lt;&gt;</span> <span class='hs-varid'>str</span> <span class='hs-str'>" "</span><span class='hs-layout'>)</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>getBlocks</span> <span class='hs-varid'>e</span>
<a name="line-659"></a>        <span class='hs-str'>"answer"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>addToStart</span> <span class='hs-layout'>(</span><span class='hs-varid'>strong</span> <span class='hs-layout'>(</span><span class='hs-varid'>str</span> <span class='hs-str'>"A:"</span><span class='hs-layout'>)</span> <span class='hs-varop'>&lt;&gt;</span> <span class='hs-varid'>str</span> <span class='hs-str'>" "</span><span class='hs-layout'>)</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>getBlocks</span> <span class='hs-varid'>e</span>
<a name="line-660"></a>        <span class='hs-str'>"abstract"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>blockQuote</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>getBlocks</span> <span class='hs-varid'>e</span>
<a name="line-661"></a>        <span class='hs-str'>"itemizedlist"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>bulletList</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>listitems</span>
<a name="line-662"></a>        <span class='hs-str'>"orderedlist"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-663"></a>          <span class='hs-keyword'>let</span> <span class='hs-varid'>listStyle</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>attrValue</span> <span class='hs-str'>"numeration"</span> <span class='hs-varid'>e</span> <span class='hs-keyword'>of</span>
<a name="line-664"></a>                               <span class='hs-str'>"arabic"</span>     <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Decimal</span>
<a name="line-665"></a>                               <span class='hs-str'>"loweralpha"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>LowerAlpha</span>
<a name="line-666"></a>                               <span class='hs-str'>"upperalpha"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>UpperAlpha</span>
<a name="line-667"></a>                               <span class='hs-str'>"lowerroman"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>LowerRoman</span>
<a name="line-668"></a>                               <span class='hs-str'>"upperroman"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>UpperRoman</span>
<a name="line-669"></a>                               <span class='hs-keyword'>_</span>            <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Decimal</span>
<a name="line-670"></a>          <span class='hs-keyword'>let</span> <span class='hs-varid'>start</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>attrValue</span> <span class='hs-str'>"override"</span> <span class='hs-varop'>&lt;$&gt;</span>
<a name="line-671"></a>                            <span class='hs-varid'>filterElement</span> <span class='hs-layout'>(</span><span class='hs-varid'>named</span> <span class='hs-str'>"listitem"</span><span class='hs-layout'>)</span> <span class='hs-varid'>e</span> <span class='hs-keyword'>of</span>
<a name="line-672"></a>                              <span class='hs-conid'>Just</span> <span class='hs-varid'>x</span><span class='hs-keyglyph'>@</span><span class='hs-layout'>(</span><span class='hs-keyword'>_</span><span class='hs-conop'>:</span><span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>all</span> <span class='hs-varid'>isDigit</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>read</span> <span class='hs-varid'>x</span>
<a name="line-673"></a>                              <span class='hs-keyword'>_</span>                            <span class='hs-keyglyph'>-&gt;</span> <span class='hs-num'>1</span>
<a name="line-674"></a>          <span class='hs-varid'>orderedListWith</span> <span class='hs-layout'>(</span><span class='hs-varid'>start</span><span class='hs-layout'>,</span><span class='hs-varid'>listStyle</span><span class='hs-layout'>,</span><span class='hs-conid'>DefaultDelim</span><span class='hs-layout'>)</span>
<a name="line-675"></a>            <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>listitems</span>
<a name="line-676"></a>        <span class='hs-str'>"variablelist"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>definitionList</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>deflistitems</span>
<a name="line-677"></a>        <span class='hs-str'>"mediaobject"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>para</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>getImage</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span>
<a name="line-678"></a>        <span class='hs-str'>"caption"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varid'>mempty</span>
<a name="line-679"></a>        <span class='hs-str'>"info"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>getTitle</span> <span class='hs-varop'>&gt;&gt;</span> <span class='hs-varid'>getAuthors</span> <span class='hs-varop'>&gt;&gt;</span> <span class='hs-varid'>getDate</span> <span class='hs-varop'>&gt;&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varid'>mempty</span>
<a name="line-680"></a>        <span class='hs-str'>"articleinfo"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>getTitle</span> <span class='hs-varop'>&gt;&gt;</span> <span class='hs-varid'>getAuthors</span> <span class='hs-varop'>&gt;&gt;</span> <span class='hs-varid'>getDate</span> <span class='hs-varop'>&gt;&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varid'>mempty</span>
<a name="line-681"></a>        <span class='hs-str'>"sectioninfo"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varid'>mempty</span>  <span class='hs-comment'>-- keywords &amp; other metadata</span>
<a name="line-682"></a>        <span class='hs-str'>"refsectioninfo"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varid'>mempty</span>  <span class='hs-comment'>-- keywords &amp; other metadata</span>
<a name="line-683"></a>        <span class='hs-str'>"refsect1info"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varid'>mempty</span>  <span class='hs-comment'>-- keywords &amp; other metadata</span>
<a name="line-684"></a>        <span class='hs-str'>"refsect2info"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varid'>mempty</span>  <span class='hs-comment'>-- keywords &amp; other metadata</span>
<a name="line-685"></a>        <span class='hs-str'>"refsect3info"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varid'>mempty</span>  <span class='hs-comment'>-- keywords &amp; other metadata</span>
<a name="line-686"></a>        <span class='hs-str'>"sect1info"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varid'>mempty</span>  <span class='hs-comment'>-- keywords &amp; other metadata</span>
<a name="line-687"></a>        <span class='hs-str'>"sect2info"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varid'>mempty</span>  <span class='hs-comment'>-- keywords &amp; other metadata</span>
<a name="line-688"></a>        <span class='hs-str'>"sect3info"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varid'>mempty</span>  <span class='hs-comment'>-- keywords &amp; other metadata</span>
<a name="line-689"></a>        <span class='hs-str'>"sect4info"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varid'>mempty</span>  <span class='hs-comment'>-- keywords &amp; other metadata</span>
<a name="line-690"></a>        <span class='hs-str'>"sect5info"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varid'>mempty</span>  <span class='hs-comment'>-- keywords &amp; other metadata</span>
<a name="line-691"></a>        <span class='hs-str'>"chapterinfo"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varid'>mempty</span>  <span class='hs-comment'>-- keywords &amp; other metadata</span>
<a name="line-692"></a>        <span class='hs-str'>"glossaryinfo"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varid'>mempty</span>  <span class='hs-comment'>-- keywords &amp; other metadata</span>
<a name="line-693"></a>        <span class='hs-str'>"appendixinfo"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varid'>mempty</span>  <span class='hs-comment'>-- keywords &amp; other metadata</span>
<a name="line-694"></a>        <span class='hs-str'>"bookinfo"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>getTitle</span> <span class='hs-varop'>&gt;&gt;</span> <span class='hs-varid'>getAuthors</span> <span class='hs-varop'>&gt;&gt;</span> <span class='hs-varid'>getDate</span> <span class='hs-varop'>&gt;&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varid'>mempty</span>
<a name="line-695"></a>        <span class='hs-str'>"article"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>modify</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>st</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>st</span><span class='hs-layout'>{</span> <span class='hs-varid'>dbBook</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>False</span> <span class='hs-layout'>}</span><span class='hs-layout'>)</span> <span class='hs-varop'>&gt;&gt;</span>
<a name="line-696"></a>                          <span class='hs-varid'>getTitle</span> <span class='hs-varop'>&gt;&gt;</span> <span class='hs-varid'>getBlocks</span> <span class='hs-varid'>e</span>
<a name="line-697"></a>        <span class='hs-str'>"book"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>modify</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>st</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>st</span><span class='hs-layout'>{</span> <span class='hs-varid'>dbBook</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>True</span> <span class='hs-layout'>}</span><span class='hs-layout'>)</span> <span class='hs-varop'>&gt;&gt;</span> <span class='hs-varid'>getTitle</span> <span class='hs-varop'>&gt;&gt;</span> <span class='hs-varid'>getBlocks</span> <span class='hs-varid'>e</span>
<a name="line-698"></a>        <span class='hs-str'>"table"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>parseTable</span>
<a name="line-699"></a>        <span class='hs-str'>"informaltable"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>parseTable</span>
<a name="line-700"></a>        <span class='hs-str'>"literallayout"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>codeBlockWithLang</span>
<a name="line-701"></a>        <span class='hs-str'>"screen"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>codeBlockWithLang</span>
<a name="line-702"></a>        <span class='hs-str'>"programlisting"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>codeBlockWithLang</span>
<a name="line-703"></a>        <span class='hs-str'>"?xml"</span>  <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varid'>mempty</span>
<a name="line-704"></a>        <span class='hs-keyword'>_</span>       <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>getBlocks</span> <span class='hs-varid'>e</span>
<a name="line-705"></a>   <span class='hs-keyword'>where</span> <span class='hs-varid'>getBlocks</span> <span class='hs-varid'>e'</span> <span class='hs-keyglyph'>=</span>  <span class='hs-varid'>mconcat</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>mapM</span> <span class='hs-varid'>parseBlock</span> <span class='hs-varop'>$</span> <span class='hs-varid'>elContent</span> <span class='hs-varid'>e'</span><span class='hs-layout'>)</span>
<a name="line-706"></a>         <span class='hs-varid'>parseMixed</span> <span class='hs-varid'>container</span> <span class='hs-varid'>conts</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-707"></a>           <span class='hs-keyword'>let</span> <span class='hs-layout'>(</span><span class='hs-varid'>ils</span><span class='hs-layout'>,</span><span class='hs-varid'>rest</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>break</span> <span class='hs-varid'>isBlockElement</span> <span class='hs-varid'>conts</span>
<a name="line-708"></a>           <span class='hs-varid'>ils'</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-varid'>trimInlines</span> <span class='hs-varop'>.</span> <span class='hs-varid'>mconcat</span><span class='hs-layout'>)</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>mapM</span> <span class='hs-varid'>parseInline</span> <span class='hs-varid'>ils</span>
<a name="line-709"></a>           <span class='hs-keyword'>let</span> <span class='hs-varid'>p</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>if</span> <span class='hs-varid'>ils'</span> <span class='hs-varop'>==</span> <span class='hs-varid'>mempty</span> <span class='hs-keyword'>then</span> <span class='hs-varid'>mempty</span> <span class='hs-keyword'>else</span> <span class='hs-varid'>container</span> <span class='hs-varid'>ils'</span>
<a name="line-710"></a>           <span class='hs-keyword'>case</span> <span class='hs-varid'>rest</span> <span class='hs-keyword'>of</span>
<a name="line-711"></a>                 <span class='hs-conid'>[]</span>     <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varid'>p</span>
<a name="line-712"></a>                 <span class='hs-layout'>(</span><span class='hs-varid'>r</span><span class='hs-conop'>:</span><span class='hs-varid'>rs</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-713"></a>                    <span class='hs-varid'>b</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>parseBlock</span> <span class='hs-varid'>r</span>
<a name="line-714"></a>                    <span class='hs-varid'>x</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>parseMixed</span> <span class='hs-varid'>container</span> <span class='hs-varid'>rs</span>
<a name="line-715"></a>                    <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>p</span> <span class='hs-varop'>&lt;&gt;</span> <span class='hs-varid'>b</span> <span class='hs-varop'>&lt;&gt;</span> <span class='hs-varid'>x</span>
<a name="line-716"></a>         <span class='hs-varid'>codeBlockWithLang</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-717"></a>           <span class='hs-keyword'>let</span> <span class='hs-varid'>classes'</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>attrValue</span> <span class='hs-str'>"language"</span> <span class='hs-varid'>e</span> <span class='hs-keyword'>of</span>
<a name="line-718"></a>                                <span class='hs-str'>""</span>   <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>[]</span>
<a name="line-719"></a>                                <span class='hs-varid'>x</span>    <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>x</span><span class='hs-keyglyph'>]</span>
<a name="line-720"></a>           <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>codeBlockWith</span> <span class='hs-layout'>(</span><span class='hs-varid'>attrValue</span> <span class='hs-str'>"id"</span> <span class='hs-varid'>e</span><span class='hs-layout'>,</span> <span class='hs-varid'>classes'</span><span class='hs-layout'>,</span> <span class='hs-conid'>[]</span><span class='hs-layout'>)</span>
<a name="line-721"></a>                  <span class='hs-varop'>$</span> <span class='hs-varid'>trimNl</span> <span class='hs-varop'>$</span> <span class='hs-varid'>strContent</span> <span class='hs-varid'>e</span>
<a name="line-722"></a>         <span class='hs-varid'>parseBlockquote</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-723"></a>            <span class='hs-varid'>attrib</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>filterChild</span> <span class='hs-layout'>(</span><span class='hs-varid'>named</span> <span class='hs-str'>"attribution"</span><span class='hs-layout'>)</span> <span class='hs-varid'>e</span> <span class='hs-keyword'>of</span>
<a name="line-724"></a>                             <span class='hs-conid'>Nothing</span>  <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varid'>mempty</span>
<a name="line-725"></a>                             <span class='hs-conid'>Just</span> <span class='hs-varid'>z</span>   <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>para</span> <span class='hs-varop'>.</span> <span class='hs-layout'>(</span><span class='hs-varid'>str</span> <span class='hs-str'>"— "</span> <span class='hs-varop'>&lt;&gt;</span><span class='hs-layout'>)</span> <span class='hs-varop'>.</span> <span class='hs-varid'>mconcat</span><span class='hs-layout'>)</span>
<a name="line-726"></a>                                         <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>mapM</span> <span class='hs-varid'>parseInline</span> <span class='hs-varop'>$</span> <span class='hs-varid'>elContent</span> <span class='hs-varid'>z</span><span class='hs-layout'>)</span>
<a name="line-727"></a>            <span class='hs-varid'>contents</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>getBlocks</span> <span class='hs-varid'>e</span>
<a name="line-728"></a>            <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>blockQuote</span> <span class='hs-layout'>(</span><span class='hs-varid'>contents</span> <span class='hs-varop'>&lt;&gt;</span> <span class='hs-varid'>attrib</span><span class='hs-layout'>)</span>
<a name="line-729"></a>         <span class='hs-varid'>listitems</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>mapM</span> <span class='hs-varid'>getBlocks</span> <span class='hs-varop'>$</span> <span class='hs-varid'>filterChildren</span> <span class='hs-layout'>(</span><span class='hs-varid'>named</span> <span class='hs-str'>"listitem"</span><span class='hs-layout'>)</span> <span class='hs-varid'>e</span>
<a name="line-730"></a>         <span class='hs-varid'>deflistitems</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>mapM</span> <span class='hs-varid'>parseVarListEntry</span> <span class='hs-varop'>$</span> <span class='hs-varid'>filterChildren</span>
<a name="line-731"></a>                     <span class='hs-layout'>(</span><span class='hs-varid'>named</span> <span class='hs-str'>"varlistentry"</span><span class='hs-layout'>)</span> <span class='hs-varid'>e</span>
<a name="line-732"></a>         <span class='hs-varid'>parseVarListEntry</span> <span class='hs-varid'>e'</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-733"></a>                     <span class='hs-keyword'>let</span> <span class='hs-varid'>terms</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>filterChildren</span> <span class='hs-layout'>(</span><span class='hs-varid'>named</span> <span class='hs-str'>"term"</span><span class='hs-layout'>)</span> <span class='hs-varid'>e'</span>
<a name="line-734"></a>                     <span class='hs-keyword'>let</span> <span class='hs-varid'>items</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>filterChildren</span> <span class='hs-layout'>(</span><span class='hs-varid'>named</span> <span class='hs-str'>"listitem"</span><span class='hs-layout'>)</span> <span class='hs-varid'>e'</span>
<a name="line-735"></a>                     <span class='hs-varid'>terms'</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>mapM</span> <span class='hs-varid'>getInlines</span> <span class='hs-varid'>terms</span>
<a name="line-736"></a>                     <span class='hs-varid'>items'</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>mapM</span> <span class='hs-varid'>getBlocks</span> <span class='hs-varid'>items</span>
<a name="line-737"></a>                     <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>mconcat</span> <span class='hs-varop'>$</span> <span class='hs-varid'>intersperse</span> <span class='hs-layout'>(</span><span class='hs-varid'>str</span> <span class='hs-str'>"; "</span><span class='hs-layout'>)</span> <span class='hs-varid'>terms'</span><span class='hs-layout'>,</span> <span class='hs-varid'>items'</span><span class='hs-layout'>)</span>
<a name="line-738"></a>         <span class='hs-varid'>parseGlossEntry</span> <span class='hs-varid'>e'</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-739"></a>                     <span class='hs-keyword'>let</span> <span class='hs-varid'>terms</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>filterChildren</span> <span class='hs-layout'>(</span><span class='hs-varid'>named</span> <span class='hs-str'>"glossterm"</span><span class='hs-layout'>)</span> <span class='hs-varid'>e'</span>
<a name="line-740"></a>                     <span class='hs-keyword'>let</span> <span class='hs-varid'>items</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>filterChildren</span> <span class='hs-layout'>(</span><span class='hs-varid'>named</span> <span class='hs-str'>"glossdef"</span><span class='hs-layout'>)</span> <span class='hs-varid'>e'</span>
<a name="line-741"></a>                     <span class='hs-varid'>terms'</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>mapM</span> <span class='hs-varid'>getInlines</span> <span class='hs-varid'>terms</span>
<a name="line-742"></a>                     <span class='hs-varid'>items'</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>mapM</span> <span class='hs-varid'>getBlocks</span> <span class='hs-varid'>items</span>
<a name="line-743"></a>                     <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>mconcat</span> <span class='hs-varop'>$</span> <span class='hs-varid'>intersperse</span> <span class='hs-layout'>(</span><span class='hs-varid'>str</span> <span class='hs-str'>"; "</span><span class='hs-layout'>)</span> <span class='hs-varid'>terms'</span><span class='hs-layout'>,</span> <span class='hs-varid'>items'</span><span class='hs-layout'>)</span>
<a name="line-744"></a>         <span class='hs-varid'>getTitle</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>filterChild</span> <span class='hs-layout'>(</span><span class='hs-varid'>named</span> <span class='hs-str'>"title"</span><span class='hs-layout'>)</span> <span class='hs-varid'>e</span> <span class='hs-keyword'>of</span>
<a name="line-745"></a>                         <span class='hs-conid'>Just</span> <span class='hs-varid'>t</span>  <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-746"></a>                            <span class='hs-varid'>tit</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>getInlines</span> <span class='hs-varid'>t</span>
<a name="line-747"></a>                            <span class='hs-varid'>subtit</span> <span class='hs-keyglyph'>&lt;-</span>  <span class='hs-keyword'>case</span> <span class='hs-varid'>filterChild</span> <span class='hs-layout'>(</span><span class='hs-varid'>named</span> <span class='hs-str'>"subtitle"</span><span class='hs-layout'>)</span> <span class='hs-varid'>e</span> <span class='hs-keyword'>of</span>
<a name="line-748"></a>                                            <span class='hs-conid'>Just</span> <span class='hs-varid'>s</span>  <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>text</span> <span class='hs-str'>": "</span> <span class='hs-varop'>&lt;&gt;</span><span class='hs-layout'>)</span> <span class='hs-varop'>&lt;$&gt;</span>
<a name="line-749"></a>                                                         <span class='hs-varid'>getInlines</span> <span class='hs-varid'>s</span>
<a name="line-750"></a>                                            <span class='hs-conid'>Nothing</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varid'>mempty</span>
<a name="line-751"></a>                            <span class='hs-varid'>modify</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>st</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>st</span><span class='hs-layout'>{</span><span class='hs-varid'>dbDocTitle</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tit</span> <span class='hs-varop'>&lt;&gt;</span> <span class='hs-varid'>subtit</span><span class='hs-layout'>}</span>
<a name="line-752"></a>                         <span class='hs-conid'>Nothing</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-conid'>()</span>
<a name="line-753"></a>         <span class='hs-varid'>getAuthors</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-754"></a>                      <span class='hs-varid'>auths</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>mapM</span> <span class='hs-varid'>getInlines</span>
<a name="line-755"></a>                               <span class='hs-varop'>$</span> <span class='hs-varid'>filterChildren</span> <span class='hs-layout'>(</span><span class='hs-varid'>named</span> <span class='hs-str'>"author"</span><span class='hs-layout'>)</span> <span class='hs-varid'>e</span>
<a name="line-756"></a>                      <span class='hs-varid'>modify</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>st</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>st</span><span class='hs-layout'>{</span><span class='hs-varid'>dbDocAuthors</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>auths</span><span class='hs-layout'>}</span>
<a name="line-757"></a>         <span class='hs-varid'>getDate</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>filterChild</span> <span class='hs-layout'>(</span><span class='hs-varid'>named</span> <span class='hs-str'>"date"</span><span class='hs-layout'>)</span> <span class='hs-varid'>e</span> <span class='hs-keyword'>of</span>
<a name="line-758"></a>                         <span class='hs-conid'>Just</span> <span class='hs-varid'>t</span>  <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-759"></a>                            <span class='hs-varid'>dat</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>getInlines</span> <span class='hs-varid'>t</span>
<a name="line-760"></a>                            <span class='hs-varid'>modify</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>st</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>st</span><span class='hs-layout'>{</span><span class='hs-varid'>dbDocDate</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>dat</span><span class='hs-layout'>}</span>
<a name="line-761"></a>                         <span class='hs-conid'>Nothing</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-conid'>()</span>
<a name="line-762"></a>         <span class='hs-varid'>parseTable</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-763"></a>                      <span class='hs-keyword'>let</span> <span class='hs-varid'>isCaption</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>named</span> <span class='hs-str'>"title"</span> <span class='hs-varid'>x</span> <span class='hs-varop'>||</span> <span class='hs-varid'>named</span> <span class='hs-str'>"caption"</span> <span class='hs-varid'>x</span>
<a name="line-764"></a>                      <span class='hs-varid'>caption</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>filterChild</span> <span class='hs-varid'>isCaption</span> <span class='hs-varid'>e</span> <span class='hs-keyword'>of</span>
<a name="line-765"></a>                                       <span class='hs-conid'>Just</span> <span class='hs-varid'>t</span>  <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>getInlines</span> <span class='hs-varid'>t</span>
<a name="line-766"></a>                                       <span class='hs-conid'>Nothing</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varid'>mempty</span>
<a name="line-767"></a>                      <span class='hs-keyword'>let</span> <span class='hs-varid'>e'</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>maybe</span> <span class='hs-varid'>e</span> <span class='hs-varid'>id</span> <span class='hs-varop'>$</span> <span class='hs-varid'>filterChild</span> <span class='hs-layout'>(</span><span class='hs-varid'>named</span> <span class='hs-str'>"tgroup"</span><span class='hs-layout'>)</span> <span class='hs-varid'>e</span>
<a name="line-768"></a>                      <span class='hs-keyword'>let</span> <span class='hs-varid'>isColspec</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>named</span> <span class='hs-str'>"colspec"</span> <span class='hs-varid'>x</span> <span class='hs-varop'>||</span> <span class='hs-varid'>named</span> <span class='hs-str'>"col"</span> <span class='hs-varid'>x</span>
<a name="line-769"></a>                      <span class='hs-keyword'>let</span> <span class='hs-varid'>colspecs</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>filterChild</span> <span class='hs-layout'>(</span><span class='hs-varid'>named</span> <span class='hs-str'>"colgroup"</span><span class='hs-layout'>)</span> <span class='hs-varid'>e'</span> <span class='hs-keyword'>of</span>
<a name="line-770"></a>                                           <span class='hs-conid'>Just</span> <span class='hs-varid'>c</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>filterChildren</span> <span class='hs-varid'>isColspec</span> <span class='hs-varid'>c</span>
<a name="line-771"></a>                                           <span class='hs-keyword'>_</span>      <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>filterChildren</span> <span class='hs-varid'>isColspec</span> <span class='hs-varid'>e'</span>
<a name="line-772"></a>                      <span class='hs-keyword'>let</span> <span class='hs-varid'>isRow</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>named</span> <span class='hs-str'>"row"</span> <span class='hs-varid'>x</span> <span class='hs-varop'>||</span> <span class='hs-varid'>named</span> <span class='hs-str'>"tr"</span> <span class='hs-varid'>x</span>
<a name="line-773"></a>                      <span class='hs-varid'>headrows</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>filterChild</span> <span class='hs-layout'>(</span><span class='hs-varid'>named</span> <span class='hs-str'>"thead"</span><span class='hs-layout'>)</span> <span class='hs-varid'>e'</span> <span class='hs-keyword'>of</span>
<a name="line-774"></a>                                       <span class='hs-conid'>Just</span> <span class='hs-varid'>h</span>  <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>filterChild</span> <span class='hs-varid'>isRow</span> <span class='hs-varid'>h</span> <span class='hs-keyword'>of</span>
<a name="line-775"></a>                                                       <span class='hs-conid'>Just</span> <span class='hs-varid'>x</span>  <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>parseRow</span> <span class='hs-varid'>x</span>
<a name="line-776"></a>                                                       <span class='hs-conid'>Nothing</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-conid'>[]</span>
<a name="line-777"></a>                                       <span class='hs-conid'>Nothing</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-conid'>[]</span>
<a name="line-778"></a>                      <span class='hs-varid'>bodyrows</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>filterChild</span> <span class='hs-layout'>(</span><span class='hs-varid'>named</span> <span class='hs-str'>"tbody"</span><span class='hs-layout'>)</span> <span class='hs-varid'>e'</span> <span class='hs-keyword'>of</span>
<a name="line-779"></a>                                       <span class='hs-conid'>Just</span> <span class='hs-varid'>b</span>  <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>mapM</span> <span class='hs-varid'>parseRow</span>
<a name="line-780"></a>                                                  <span class='hs-varop'>$</span> <span class='hs-varid'>filterChildren</span> <span class='hs-varid'>isRow</span> <span class='hs-varid'>b</span>
<a name="line-781"></a>                                       <span class='hs-conid'>Nothing</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>mapM</span> <span class='hs-varid'>parseRow</span>
<a name="line-782"></a>                                                  <span class='hs-varop'>$</span> <span class='hs-varid'>filterChildren</span> <span class='hs-varid'>isRow</span> <span class='hs-varid'>e'</span>
<a name="line-783"></a>                      <span class='hs-keyword'>let</span> <span class='hs-varid'>toAlignment</span> <span class='hs-varid'>c</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>findAttr</span> <span class='hs-layout'>(</span><span class='hs-varid'>unqual</span> <span class='hs-str'>"align"</span><span class='hs-layout'>)</span> <span class='hs-varid'>c</span> <span class='hs-keyword'>of</span>
<a name="line-784"></a>                                                <span class='hs-conid'>Just</span> <span class='hs-str'>"left"</span>   <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>AlignLeft</span>
<a name="line-785"></a>                                                <span class='hs-conid'>Just</span> <span class='hs-str'>"right"</span>  <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>AlignRight</span>
<a name="line-786"></a>                                                <span class='hs-conid'>Just</span> <span class='hs-str'>"center"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>AlignCenter</span>
<a name="line-787"></a>                                                <span class='hs-keyword'>_</span>             <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>AlignDefault</span>
<a name="line-788"></a>                      <span class='hs-keyword'>let</span> <span class='hs-varid'>toWidth</span> <span class='hs-varid'>c</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>findAttr</span> <span class='hs-layout'>(</span><span class='hs-varid'>unqual</span> <span class='hs-str'>"colwidth"</span><span class='hs-layout'>)</span> <span class='hs-varid'>c</span> <span class='hs-keyword'>of</span>
<a name="line-789"></a>                                                <span class='hs-conid'>Just</span> <span class='hs-varid'>w</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>read</span> <span class='hs-varop'>$</span> <span class='hs-varid'>filter</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>x</span> <span class='hs-keyglyph'>-&gt;</span>
<a name="line-790"></a>                                                     <span class='hs-layout'>(</span><span class='hs-varid'>x</span> <span class='hs-varop'>&gt;=</span> <span class='hs-chr'>'0'</span> <span class='hs-varop'>&amp;&amp;</span> <span class='hs-varid'>x</span> <span class='hs-varop'>&lt;=</span> <span class='hs-chr'>'9'</span><span class='hs-layout'>)</span>
<a name="line-791"></a>                                                      <span class='hs-varop'>||</span> <span class='hs-varid'>x</span> <span class='hs-varop'>==</span> <span class='hs-chr'>'.'</span><span class='hs-layout'>)</span> <span class='hs-varid'>w</span>
<a name="line-792"></a>                                                <span class='hs-conid'>Nothing</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-num'>0</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Double</span>
<a name="line-793"></a>                      <span class='hs-keyword'>let</span> <span class='hs-varid'>numrows</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>maximum</span> <span class='hs-varop'>$</span> <span class='hs-varid'>map</span> <span class='hs-varid'>length</span> <span class='hs-varid'>bodyrows</span>
<a name="line-794"></a>                      <span class='hs-keyword'>let</span> <span class='hs-varid'>aligns</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>colspecs</span> <span class='hs-keyword'>of</span>
<a name="line-795"></a>                                     <span class='hs-conid'>[]</span>  <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>replicate</span> <span class='hs-varid'>numrows</span> <span class='hs-conid'>AlignDefault</span>
<a name="line-796"></a>                                     <span class='hs-varid'>cs</span>  <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>map</span> <span class='hs-varid'>toAlignment</span> <span class='hs-varid'>cs</span>
<a name="line-797"></a>                      <span class='hs-keyword'>let</span> <span class='hs-varid'>widths</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>colspecs</span> <span class='hs-keyword'>of</span>
<a name="line-798"></a>                                     <span class='hs-conid'>[]</span>  <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>replicate</span> <span class='hs-varid'>numrows</span> <span class='hs-num'>0</span>
<a name="line-799"></a>                                     <span class='hs-varid'>cs</span>  <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>ws</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>map</span> <span class='hs-varid'>toWidth</span> <span class='hs-varid'>cs</span>
<a name="line-800"></a>                                                <span class='hs-varid'>tot</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>sum</span> <span class='hs-varid'>ws</span>
<a name="line-801"></a>                                            <span class='hs-keyword'>in</span>  <span class='hs-keyword'>if</span> <span class='hs-varid'>all</span> <span class='hs-layout'>(</span><span class='hs-varop'>&gt;</span> <span class='hs-num'>0</span><span class='hs-layout'>)</span> <span class='hs-varid'>ws</span>
<a name="line-802"></a>                                                   <span class='hs-keyword'>then</span> <span class='hs-varid'>map</span> <span class='hs-layout'>(</span><span class='hs-varop'>/</span> <span class='hs-varid'>tot</span><span class='hs-layout'>)</span> <span class='hs-varid'>ws</span>
<a name="line-803"></a>                                                   <span class='hs-keyword'>else</span> <span class='hs-varid'>replicate</span> <span class='hs-varid'>numrows</span> <span class='hs-num'>0</span>
<a name="line-804"></a>                      <span class='hs-keyword'>let</span> <span class='hs-varid'>headrows'</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>if</span> <span class='hs-varid'>null</span> <span class='hs-varid'>headrows</span>
<a name="line-805"></a>                                         <span class='hs-keyword'>then</span> <span class='hs-varid'>replicate</span> <span class='hs-varid'>numrows</span> <span class='hs-varid'>mempty</span>
<a name="line-806"></a>                                         <span class='hs-keyword'>else</span> <span class='hs-varid'>headrows</span>
<a name="line-807"></a>                      <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>table</span> <span class='hs-varid'>caption</span> <span class='hs-layout'>(</span><span class='hs-varid'>zip</span> <span class='hs-varid'>aligns</span> <span class='hs-varid'>widths</span><span class='hs-layout'>)</span>
<a name="line-808"></a>                                 <span class='hs-varid'>headrows'</span> <span class='hs-varid'>bodyrows</span>
<a name="line-809"></a>         <span class='hs-varid'>isEntry</span> <span class='hs-varid'>x</span>  <span class='hs-keyglyph'>=</span> <span class='hs-varid'>named</span> <span class='hs-str'>"entry"</span> <span class='hs-varid'>x</span> <span class='hs-varop'>||</span> <span class='hs-varid'>named</span> <span class='hs-str'>"td"</span> <span class='hs-varid'>x</span> <span class='hs-varop'>||</span> <span class='hs-varid'>named</span> <span class='hs-str'>"th"</span> <span class='hs-varid'>x</span>
<a name="line-810"></a>         <span class='hs-varid'>parseRow</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>mapM</span> <span class='hs-layout'>(</span><span class='hs-varid'>parseMixed</span> <span class='hs-varid'>plain</span> <span class='hs-varop'>.</span> <span class='hs-varid'>elContent</span><span class='hs-layout'>)</span> <span class='hs-varop'>.</span> <span class='hs-varid'>filterChildren</span> <span class='hs-varid'>isEntry</span>
<a name="line-811"></a>         <span class='hs-varid'>sect</span> <span class='hs-varid'>n</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span> <span class='hs-varid'>isbook</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>gets</span> <span class='hs-varid'>dbBook</span>
<a name="line-812"></a>                     <span class='hs-keyword'>let</span> <span class='hs-varid'>n'</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>if</span> <span class='hs-varid'>isbook</span> <span class='hs-varop'>||</span> <span class='hs-varid'>n</span> <span class='hs-varop'>==</span> <span class='hs-num'>0</span> <span class='hs-keyword'>then</span> <span class='hs-varid'>n</span> <span class='hs-varop'>+</span> <span class='hs-num'>1</span> <span class='hs-keyword'>else</span> <span class='hs-varid'>n</span>
<a name="line-813"></a>                     <span class='hs-varid'>headerText</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>filterChild</span> <span class='hs-layout'>(</span><span class='hs-varid'>named</span> <span class='hs-str'>"title"</span><span class='hs-layout'>)</span> <span class='hs-varid'>e</span> <span class='hs-keyword'>of</span>
<a name="line-814"></a>                                      <span class='hs-conid'>Just</span> <span class='hs-varid'>t</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>getInlines</span> <span class='hs-varid'>t</span>
<a name="line-815"></a>                                      <span class='hs-conid'>Nothing</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varid'>mempty</span>
<a name="line-816"></a>                     <span class='hs-varid'>modify</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>st</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>st</span><span class='hs-layout'>{</span> <span class='hs-varid'>dbSectionLevel</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>n</span> <span class='hs-layout'>}</span>
<a name="line-817"></a>                     <span class='hs-varid'>b</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>getBlocks</span> <span class='hs-varid'>e</span>
<a name="line-818"></a>                     <span class='hs-varid'>modify</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>st</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>st</span><span class='hs-layout'>{</span> <span class='hs-varid'>dbSectionLevel</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>n</span> <span class='hs-comment'>-</span> <span class='hs-num'>1</span> <span class='hs-layout'>}</span>
<a name="line-819"></a>                     <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>header</span> <span class='hs-varid'>n'</span> <span class='hs-varid'>headerText</span> <span class='hs-varop'>&lt;&gt;</span> <span class='hs-varid'>b</span>
<a name="line-820"></a>
<a name="line-821"></a><a name="getInlines"></a><span class='hs-definition'>getInlines</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Element</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>DB</span> <span class='hs-conid'>Inlines</span>
<a name="line-822"></a><span class='hs-definition'>getInlines</span> <span class='hs-varid'>e'</span> <span class='hs-keyglyph'>=</span> <span class='hs-layout'>(</span><span class='hs-varid'>trimInlines</span> <span class='hs-varop'>.</span> <span class='hs-varid'>mconcat</span><span class='hs-layout'>)</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>mapM</span> <span class='hs-varid'>parseInline</span> <span class='hs-varop'>$</span> <span class='hs-varid'>elContent</span> <span class='hs-varid'>e'</span><span class='hs-layout'>)</span>
<a name="line-823"></a>
<a name="line-824"></a><a name="parseInline"></a><span class='hs-definition'>parseInline</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Content</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>DB</span> <span class='hs-conid'>Inlines</span>
<a name="line-825"></a><span class='hs-definition'>parseInline</span> <span class='hs-layout'>(</span><span class='hs-conid'>Text</span> <span class='hs-layout'>(</span><span class='hs-conid'>CData</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>s</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>text</span> <span class='hs-varid'>s</span>
<a name="line-826"></a><span class='hs-definition'>parseInline</span> <span class='hs-layout'>(</span><span class='hs-conid'>CRef</span> <span class='hs-varid'>ref</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-827"></a>  <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>maybe</span> <span class='hs-layout'>(</span><span class='hs-varid'>text</span> <span class='hs-varop'>$</span> <span class='hs-varid'>map</span> <span class='hs-varid'>toUpper</span> <span class='hs-varid'>ref</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>text</span> <span class='hs-varop'>.</span> <span class='hs-layout'>(</span><span class='hs-conop'>:</span><span class='hs-conid'>[]</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span> <span class='hs-varid'>lookupEntity</span> <span class='hs-varid'>ref</span>
<a name="line-828"></a><span class='hs-definition'>parseInline</span> <span class='hs-layout'>(</span><span class='hs-conid'>Elem</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-829"></a>  <span class='hs-keyword'>case</span> <span class='hs-varid'>qName</span> <span class='hs-layout'>(</span><span class='hs-varid'>elName</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-keyword'>of</span>
<a name="line-830"></a>        <span class='hs-str'>"subscript"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>subscript</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>innerInlines</span>
<a name="line-831"></a>        <span class='hs-str'>"superscript"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>superscript</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>innerInlines</span>
<a name="line-832"></a>        <span class='hs-str'>"inlinemediaobject"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>getImage</span> <span class='hs-varid'>e</span>
<a name="line-833"></a>        <span class='hs-str'>"quote"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-834"></a>            <span class='hs-varid'>qt</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>gets</span> <span class='hs-varid'>dbQuoteType</span>
<a name="line-835"></a>            <span class='hs-keyword'>let</span> <span class='hs-varid'>qt'</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>if</span> <span class='hs-varid'>qt</span> <span class='hs-varop'>==</span> <span class='hs-conid'>SingleQuote</span> <span class='hs-keyword'>then</span> <span class='hs-conid'>DoubleQuote</span> <span class='hs-keyword'>else</span> <span class='hs-conid'>SingleQuote</span>
<a name="line-836"></a>            <span class='hs-varid'>modify</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>st</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>st</span><span class='hs-layout'>{</span> <span class='hs-varid'>dbQuoteType</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>qt'</span> <span class='hs-layout'>}</span>
<a name="line-837"></a>            <span class='hs-varid'>contents</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>innerInlines</span>
<a name="line-838"></a>            <span class='hs-varid'>modify</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>st</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>st</span><span class='hs-layout'>{</span> <span class='hs-varid'>dbQuoteType</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>qt</span> <span class='hs-layout'>}</span>
<a name="line-839"></a>            <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>if</span> <span class='hs-varid'>qt</span> <span class='hs-varop'>==</span> <span class='hs-conid'>SingleQuote</span>
<a name="line-840"></a>                        <span class='hs-keyword'>then</span> <span class='hs-varid'>singleQuoted</span> <span class='hs-varid'>contents</span>
<a name="line-841"></a>                        <span class='hs-keyword'>else</span> <span class='hs-varid'>doubleQuoted</span> <span class='hs-varid'>contents</span>
<a name="line-842"></a>        <span class='hs-str'>"simplelist"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>simpleList</span>
<a name="line-843"></a>        <span class='hs-str'>"segmentedlist"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>segmentedList</span>
<a name="line-844"></a>        <span class='hs-str'>"code"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>codeWithLang</span>
<a name="line-845"></a>        <span class='hs-str'>"filename"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>codeWithLang</span>
<a name="line-846"></a>        <span class='hs-str'>"literal"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>codeWithLang</span>
<a name="line-847"></a>        <span class='hs-str'>"computeroutput"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>codeWithLang</span>
<a name="line-848"></a>        <span class='hs-str'>"prompt"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>codeWithLang</span>
<a name="line-849"></a>        <span class='hs-str'>"parameter"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>codeWithLang</span>
<a name="line-850"></a>        <span class='hs-str'>"option"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>codeWithLang</span>
<a name="line-851"></a>        <span class='hs-str'>"optional"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>getInlines</span> <span class='hs-varid'>e</span>
<a name="line-852"></a>                         <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>str</span> <span class='hs-str'>"["</span> <span class='hs-varop'>&lt;&gt;</span> <span class='hs-varid'>x</span> <span class='hs-varop'>&lt;&gt;</span> <span class='hs-varid'>str</span> <span class='hs-str'>"]"</span>
<a name="line-853"></a>        <span class='hs-str'>"markup"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>codeWithLang</span>
<a name="line-854"></a>        <span class='hs-str'>"wordasword"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>emph</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>innerInlines</span>
<a name="line-855"></a>        <span class='hs-str'>"command"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>codeWithLang</span>
<a name="line-856"></a>        <span class='hs-str'>"varname"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>codeWithLang</span>
<a name="line-857"></a>        <span class='hs-str'>"function"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>codeWithLang</span>
<a name="line-858"></a>        <span class='hs-str'>"type"</span>    <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>codeWithLang</span>
<a name="line-859"></a>        <span class='hs-str'>"symbol"</span>  <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>codeWithLang</span>
<a name="line-860"></a>        <span class='hs-str'>"constant"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>codeWithLang</span>
<a name="line-861"></a>        <span class='hs-str'>"userinput"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>codeWithLang</span>
<a name="line-862"></a>        <span class='hs-str'>"varargs"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>code</span> <span class='hs-str'>"(...)"</span>
<a name="line-863"></a>        <span class='hs-str'>"xref"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>str</span> <span class='hs-str'>"?"</span> <span class='hs-comment'>-- so at least you know something is there</span>
<a name="line-864"></a>        <span class='hs-str'>"email"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>link</span> <span class='hs-layout'>(</span><span class='hs-str'>"mailto:"</span> <span class='hs-varop'>++</span> <span class='hs-varid'>strContent</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-str'>""</span>
<a name="line-865"></a>                          <span class='hs-varop'>$</span> <span class='hs-varid'>code</span> <span class='hs-varop'>$</span> <span class='hs-varid'>strContent</span> <span class='hs-varid'>e</span>
<a name="line-866"></a>        <span class='hs-str'>"uri"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>link</span> <span class='hs-layout'>(</span><span class='hs-varid'>strContent</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-str'>""</span> <span class='hs-varop'>$</span> <span class='hs-varid'>code</span> <span class='hs-varop'>$</span> <span class='hs-varid'>strContent</span> <span class='hs-varid'>e</span>
<a name="line-867"></a>        <span class='hs-str'>"ulink"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>link</span> <span class='hs-layout'>(</span><span class='hs-varid'>attrValue</span> <span class='hs-str'>"url"</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-str'>""</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>innerInlines</span>
<a name="line-868"></a>        <span class='hs-str'>"link"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-869"></a>             <span class='hs-varid'>ils</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>innerInlines</span>
<a name="line-870"></a>             <span class='hs-keyword'>let</span> <span class='hs-varid'>href</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>findAttr</span> <span class='hs-layout'>(</span><span class='hs-conid'>QName</span> <span class='hs-str'>"href"</span> <span class='hs-layout'>(</span><span class='hs-conid'>Just</span> <span class='hs-str'>"http://www.w3.org/1999/xlink"</span><span class='hs-layout'>)</span> <span class='hs-conid'>Nothing</span><span class='hs-layout'>)</span> <span class='hs-varid'>e</span> <span class='hs-keyword'>of</span>
<a name="line-871"></a>                               <span class='hs-conid'>Just</span> <span class='hs-varid'>h</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>h</span>
<a name="line-872"></a>                               <span class='hs-keyword'>_</span>      <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-chr'>'#'</span> <span class='hs-conop'>:</span> <span class='hs-varid'>attrValue</span> <span class='hs-str'>"linkend"</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span>
<a name="line-873"></a>             <span class='hs-keyword'>let</span> <span class='hs-varid'>ils'</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>if</span> <span class='hs-varid'>ils</span> <span class='hs-varop'>==</span> <span class='hs-varid'>mempty</span> <span class='hs-keyword'>then</span> <span class='hs-varid'>code</span> <span class='hs-varid'>href</span> <span class='hs-keyword'>else</span> <span class='hs-varid'>ils</span>
<a name="line-874"></a>             <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>link</span> <span class='hs-varid'>href</span> <span class='hs-str'>""</span> <span class='hs-varid'>ils'</span>
<a name="line-875"></a>        <span class='hs-str'>"foreignphrase"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>emph</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>innerInlines</span>
<a name="line-876"></a>        <span class='hs-str'>"emphasis"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>attrValue</span> <span class='hs-str'>"role"</span> <span class='hs-varid'>e</span> <span class='hs-keyword'>of</span>
<a name="line-877"></a>                             <span class='hs-str'>"bold"</span>   <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>strong</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>innerInlines</span>
<a name="line-878"></a>                             <span class='hs-str'>"strong"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>strong</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>innerInlines</span>
<a name="line-879"></a>                             <span class='hs-str'>"strikethrough"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>strikeout</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>innerInlines</span>
<a name="line-880"></a>                             <span class='hs-keyword'>_</span>        <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>emph</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>innerInlines</span>
<a name="line-881"></a>        <span class='hs-str'>"footnote"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>note</span> <span class='hs-varop'>.</span> <span class='hs-varid'>mconcat</span><span class='hs-layout'>)</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>mapM</span> <span class='hs-varid'>parseBlock</span> <span class='hs-varop'>$</span> <span class='hs-varid'>elContent</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span>
<a name="line-882"></a>        <span class='hs-str'>"title"</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varid'>mempty</span>
<a name="line-883"></a>        <span class='hs-keyword'>_</span>          <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>innerInlines</span>
<a name="line-884"></a>   <span class='hs-keyword'>where</span> <span class='hs-varid'>innerInlines</span> <span class='hs-keyglyph'>=</span> <span class='hs-layout'>(</span><span class='hs-varid'>trimInlines</span> <span class='hs-varop'>.</span> <span class='hs-varid'>mconcat</span><span class='hs-layout'>)</span> <span class='hs-varop'>&lt;$&gt;</span>
<a name="line-885"></a>                          <span class='hs-layout'>(</span><span class='hs-varid'>mapM</span> <span class='hs-varid'>parseInline</span> <span class='hs-varop'>$</span> <span class='hs-varid'>elContent</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span>
<a name="line-886"></a>         <span class='hs-varid'>codeWithLang</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-887"></a>           <span class='hs-keyword'>let</span> <span class='hs-varid'>classes'</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>attrValue</span> <span class='hs-str'>"language"</span> <span class='hs-varid'>e</span> <span class='hs-keyword'>of</span>
<a name="line-888"></a>                               <span class='hs-str'>""</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>[]</span>
<a name="line-889"></a>                               <span class='hs-varid'>l</span>  <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>l</span><span class='hs-keyglyph'>]</span>
<a name="line-890"></a>           <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>codeWith</span> <span class='hs-layout'>(</span><span class='hs-varid'>attrValue</span> <span class='hs-str'>"id"</span> <span class='hs-varid'>e</span><span class='hs-layout'>,</span><span class='hs-varid'>classes'</span><span class='hs-layout'>,</span><span class='hs-conid'>[]</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span> <span class='hs-varid'>strContent</span> <span class='hs-varid'>e</span>
<a name="line-891"></a>         <span class='hs-varid'>simpleList</span> <span class='hs-keyglyph'>=</span> <span class='hs-layout'>(</span><span class='hs-varid'>mconcat</span> <span class='hs-varop'>.</span> <span class='hs-varid'>intersperse</span> <span class='hs-layout'>(</span><span class='hs-varid'>str</span> <span class='hs-str'>","</span> <span class='hs-varop'>&lt;&gt;</span> <span class='hs-varid'>space</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>mapM</span> <span class='hs-varid'>getInlines</span>
<a name="line-892"></a>                         <span class='hs-layout'>(</span><span class='hs-varid'>filterChildren</span> <span class='hs-layout'>(</span><span class='hs-varid'>named</span> <span class='hs-str'>"member"</span><span class='hs-layout'>)</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span>
<a name="line-893"></a>         <span class='hs-varid'>segmentedList</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-894"></a>           <span class='hs-varid'>tit</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>maybe</span> <span class='hs-layout'>(</span><span class='hs-varid'>return</span> <span class='hs-varid'>mempty</span><span class='hs-layout'>)</span> <span class='hs-varid'>getInlines</span> <span class='hs-varop'>$</span> <span class='hs-varid'>filterChild</span> <span class='hs-layout'>(</span><span class='hs-varid'>named</span> <span class='hs-str'>"title"</span><span class='hs-layout'>)</span> <span class='hs-varid'>e</span>
<a name="line-895"></a>           <span class='hs-varid'>segtits</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>mapM</span> <span class='hs-varid'>getInlines</span> <span class='hs-varop'>$</span> <span class='hs-varid'>filterChildren</span> <span class='hs-layout'>(</span><span class='hs-varid'>named</span> <span class='hs-str'>"segtitle"</span><span class='hs-layout'>)</span> <span class='hs-varid'>e</span>
<a name="line-896"></a>           <span class='hs-varid'>segitems</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>mapM</span> <span class='hs-layout'>(</span><span class='hs-varid'>mapM</span> <span class='hs-varid'>getInlines</span> <span class='hs-varop'>.</span> <span class='hs-varid'>filterChildren</span> <span class='hs-layout'>(</span><span class='hs-varid'>named</span> <span class='hs-str'>"seg"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-897"></a>                          <span class='hs-varop'>$</span> <span class='hs-varid'>filterChildren</span> <span class='hs-layout'>(</span><span class='hs-varid'>named</span> <span class='hs-str'>"seglistitem"</span><span class='hs-layout'>)</span> <span class='hs-varid'>e</span>
<a name="line-898"></a>           <span class='hs-keyword'>let</span> <span class='hs-varid'>toSeg</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>mconcat</span> <span class='hs-varop'>.</span> <span class='hs-varid'>zipWith</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>x</span> <span class='hs-varid'>y</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>strong</span> <span class='hs-layout'>(</span><span class='hs-varid'>x</span> <span class='hs-varop'>&lt;&gt;</span> <span class='hs-varid'>str</span> <span class='hs-str'>":"</span><span class='hs-layout'>)</span> <span class='hs-varop'>&lt;&gt;</span> <span class='hs-varid'>space</span> <span class='hs-varop'>&lt;&gt;</span>
<a name="line-899"></a>                                  <span class='hs-varid'>y</span> <span class='hs-varop'>&lt;&gt;</span> <span class='hs-varid'>linebreak</span><span class='hs-layout'>)</span> <span class='hs-varid'>segtits</span>
<a name="line-900"></a>           <span class='hs-keyword'>let</span> <span class='hs-varid'>segs</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>mconcat</span> <span class='hs-varop'>$</span> <span class='hs-varid'>map</span> <span class='hs-varid'>toSeg</span> <span class='hs-varid'>segitems</span>
<a name="line-901"></a>           <span class='hs-keyword'>let</span> <span class='hs-varid'>tit'</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>if</span> <span class='hs-varid'>tit</span> <span class='hs-varop'>==</span> <span class='hs-varid'>mempty</span>
<a name="line-902"></a>                         <span class='hs-keyword'>then</span> <span class='hs-varid'>mempty</span>
<a name="line-903"></a>                         <span class='hs-keyword'>else</span> <span class='hs-varid'>strong</span> <span class='hs-varid'>tit</span> <span class='hs-varop'>&lt;&gt;</span> <span class='hs-varid'>linebreak</span>
<a name="line-904"></a>           <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>linebreak</span> <span class='hs-varop'>&lt;&gt;</span> <span class='hs-varid'>tit'</span> <span class='hs-varop'>&lt;&gt;</span> <span class='hs-varid'>segs</span>
</pre></body>
</html>