úÎDc=ÁK      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJNone!"*+WImplements an API for getting text lines. Useful for Org file generation or mutation.{Raw data about each line of text. Lines with 'tlLineNum == None' are generated and don't exist within the Org file (yet).+how long of a whitespace (or asterisk, for Node) prefix is in tlText?3Line numbers, where we can have an unattached root. =Normalizes out newlines to UNIX format. CR -> LF, CRLF -> LF K LMNO      K LMNONoneFull contents of an org file.2Properties within the org file. Examples include #+TITLE:)An outline node in org-mode. For a node ** TODO Foo a bar :FOOBAR:nDepth is 2nPrefix is Just TODOnTags is [FOOBAR]nTopic is  "Foo a bar"5, note the stripped whitespace on the front and back. nChildren8 aren't determined by this line, but by the lines after.Number of stars on the left. E.g., TODO or DONE.! :TAGS:AT:END:"(Everything hierarchially under the node.#.Text of he header line, minus prefix and tags.$ Literal text of the node header.% Children of top-level Org Nodes.(outline nodes of higher depth.* Regular text.+:Currently underimplemented: stores the lines of the table.-FCurrently underimplemented: stores the lines of the babel environment.1:PROPERTIES: or another name.2Key-value pairs.3"Literal text of the entire drawer.4<A keyword at the front of a node heading, like TODO or DONE.( !"#$%&'()*+,-./012345678PQR% !"#$%&'()*+,-./012345678% !"#$45/0123-.+,%*)('&867 !"#$%*)('&+,-./012345678PQRNone9ëGeneric visitor for updating a Node's values. Intentionally, we don't allow node deletion, just update. Preferably, if you want to delete a Node, you should control the parent. We also have findItemInNode which will construct an a9 from the Node, which we may then update against a list.9:;<=>?S@ATBUV 9:;<=>?@AB <=>?@AB9:; 9:;<=>?S@ATBUV'Parser and Serializer for Emacs OrgMode(c) Lally Singh, 2015BSD3 yell@lal.ly experimental;BangPatterns, GADTs, DeriveDataTypeable, StandaloneDerivingNoneW˘We have one of these per input line of the file. Some of these we just keep as the input text, in the TextLine (as they need multi-line parsing to understand).X‰The document is a forest of Nodes, with properties. The Node Path is the currently-constructing tree of nodes. The path is sorted by H, in descending order, with each element's parent after it in the list.YŸCloses up the path for the zipper, up through to (e.g., >=) the specified depth. Returns the new path, and roots that have been fully closed in the process.ZlCloses up the path for the zipper, reversing the child-lists as we go (to get them into first->last order).GpAdds a pre-classified OrgLine to an OrgDocZipper, possibly adding it to some existing part of the OrgDocZipper.[QIntentionally fail when we don't have a parse success, which shouldn't happen...J;Parsing the file efficiently. Let's keep it non-quadratic.Split it up into lines>Identify each line, as part of one of the big structure types: Node headersDrawersFile-level properties Babel headersLLines who's type depend on context (e.g., babel entries or node text)JThen fold the lines over a builder function and a zipper of the tree.\‰The incoming state has TextLine within it. TODO(lally): update the state here to hold options we get in the ORG file, like TODO states.3CDEFW]^_`abXcdefghYiZjklmnopqrsG[HIJtuvwxyz{|}~\€< !"#$%&'()*+,-./01234589:;<=>?@ACDEFGHIJ<45/0123-.+,%*)('& !"#$CFDE<=>?9:;J@A8GIH&CFDEWba`_^]XcdefghYiZjklmnopqrsG[HIJtuvwxyz{|}~\€‚      !"#$%&'()*+,,--../012234567899:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^T_`abcdefghijklmnopqrstuvwxyz{|}orgmode-0.1.0.0Data.OrgMode.TextData.OrgMode.DocData.OrgMode.OrgDocView Data.OrgModeTextLineSource getTextLinesTextLinetlIndenttlText tlLineNum LineNumberlineAddtoNumberisNumberlinesStartingFrom hasNumbernormalizeInputTextwrapStringVarLineswrapLine prefixLinemakeDrawerLinestlFormattlPrintOrgDocodNodes odPropertiesodLinesOrgFilePropertyfpNamefpValueNodenDepthnPrefixnTags nChildrennTopicnLine NodeChild ChildTable ChildBabel ChildNode ChildDrawer ChildTextTableBabelDrawerdrName drPropertiesdrLinesPrefixtrim makeNodeLine updateNode NodeUpdatefindItemInNodeupdateNodeLine OrgDocView ovElements ovDocumentgenerateDocViewgetRawElements updateDocOrgFileElement OrgTopLeveltlNodeOrgTopProperty addOrgLinecategorizeLinesemptyZiporgFile formatLine trimEndOfLine wrapString $fOrdTextLine$fShowTextLine$fTextLineSourceOrgFileProperty$fTextLineSourceNode$fTextLineSourceNodeChild mergeSortedupdateElementList$fTextLineSourceOrgDocView$fTextLineSourceOrgDocOrgLine OrgDocZipper appendChildrenUpPathThroughDepth closeZipPathallRightclassifyOrgLineOrgTableOrgBabel OrgPragma OrgDrawer OrgHeaderOrgText ozNodePathozNodes ozProperties printChild printChildrenaddNode isEndLine openDrawerparseDrawerNameparseDrawerPropertyaddChildToNodeaddChildToLastNodeupdateLastChildOfLastNodeaddBabeladdTable addDrawerrstriplstripstrip orgPropDrawer emptyTextLine orgBodyLine orgProperty babelLine filePropertynodeLine propertyLinebodyLine parseLine$fTextLineSourceOrgLine