h&F=Cz      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS Safe-Inferred#"%&'()*-/1256;=BlimaConfiguration of tag names.Here are the default names.pp (def :: Config User) Config {! _disable = Just "LIMA_DISABLE", _enable = Just "LIMA_ENABLE", _indent = Just "LIMA_INDENT", _dedent = Just "LIMA_DEDENT",* _mdHaskellCodeStart = Just "```haskell",! _mdHaskellCodeEnd = Just "```",. _texHaskellCodeStart = Just "\\begin{code}",) _texHaskellCodeEnd = Just "\\end{code}"}&It's possible to override these names.pp ((def :: Config User) & disable ?~ "off" & enable ?~ "on" & indent ?~ "indent" & dedent ?~ "dedent") Config { _disable = Just "off", _enable = Just "on", _indent = Just "indent", _dedent = Just "dedent",* _mdHaskellCodeStart = Just "```haskell",! _mdHaskellCodeEnd = Just "```",. _texHaskellCodeStart = Just "\\begin{code}",) _texHaskellCodeEnd = Just "\\end{code}"}limaMake parser ignore tags and just copy the following lines verbatim.Set indentation to 0.limaStop parser from ignoring tags.lima Set code indentation to a given T.limaSet code indentation to 0. limaMark the start of a Haskell code block in Markdown. limaMark the end of a Haskell code block in Markdown. limaMark the start of a Haskell code block in TeX. limaMark the end of a Haskell code block in TeX. limaCalculates the mode for data.limaMarks data supplied by a user.limaMarks data for internal usage.UlimaA kind of data markers.VlimaState of a parser.4Only one flag can be enabled when processing a line.Flags signify in what document block a converter is at the moment.lima A list of s.lima&Internal representation of a document.A printer processes a list of  s one by one.A  can have:Action - how this  affects the subsequent .Target - a type of s that are affected by this .Range - the nearest  until which this  affects the subsequent s.limaAction: set indentation to n.Target: . Range: until , , or .limaAction: set indentation to 0.Target: . Range: until , , or .lima:A block that should be invisible when rendered outside of .hs.Action: set indentation to 0.Target: . Range: until , , or .lima.Lines copied verbatim while a parser was in a Haskell code block.lima9Lines copied verbatim while a parser was in a text block.limaA class for prettyprinting data on multiple lines in haddocks.2It's not meant to be used outside of this library.+lima Make a user & with default values from an internal .,limaConvert a user  to an internal  with user-supplied values.-limaMerge specific consecutive .pp exampleNonTexTokens'[ Indent {n = 3},3 Disabled {manyLines = ["-- What's the answer?"]}, Indent {n = 1}, Indent {n = 2},4 Text {someLines = "- Intermediate results" :| []},< HaskellCode {manyLines = [" b = a 4"," a = const 3"]}, Dedent,0 HaskellCode {manyLines = ["answer = b * 14"]},5 Comment {someLines = "Hello from comments," :| []},' Comment {someLines = "world!" :| []},6 Text {someLines = "world!" :| ["Hello from text,"]},, Text {someLines = "here!" :| ["And from"]}]%pp $ mergeTokens exampleNonTexTokens' [ Indent {n = 3},3 Disabled {manyLines = ["-- What's the answer?"]}, Indent {n = 1}, Indent {n = 2},4 Text {someLines = "- Intermediate results" :| []},< HaskellCode {manyLines = [" b = a 4"," a = const 3"]}, Dedent,0 HaskellCode {manyLines = ["answer = b * 14"]}, Comment {someLines = "world!" :| ["","Hello from comments,"]}, Text {someLines = "here!" :| ["And from","","world!","Hello from text,"]}].lima Example non-TeX . See 4.When printed to a TeX document, these  can't be correctly parsed. This is because they don't have necessary tags surrounding Haskell code blocks.pp $ exampleNonTexTokens'[ Indent {n = 3},3 Disabled {manyLines = ["-- What's the answer?"]}, Indent {n = 1}, Indent {n = 2},4 Text {someLines = "- Intermediate results" :| []},< HaskellCode {manyLines = [" b = a 4"," a = const 3"]}, Dedent,0 HaskellCode {manyLines = ["answer = b * 14"]},5 Comment {someLines = "Hello from comments," :| []},' Comment {someLines = "world!" :| []},6 Text {someLines = "world!" :| ["Hello from text,"]},, Text {someLines = "here!" :| ["And from"]}]/lima Normalized ..pp $ exampleNonTexTokens [ Indent {n = 3},3 Disabled {manyLines = ["-- What's the answer?"]}, Indent {n = 1}, Indent {n = 2},4 Text {someLines = "- Intermediate results" :| []},6 HaskellCode {manyLines = ["b = a 4","a = const 3"]}, Dedent,0 HaskellCode {manyLines = ["answer = b * 14"]}, Comment {someLines = "world!" :| ["","Hello from comments,"]}, Text {someLines = "here!" :| ["And from","","world!","Hello from text,"]}]0lima2Select a printer function based on a given format.1lima1Select a parser function based on a given format.2lima3Compose a function that converts a document in one  to a document in another .WlimaEscaped hash characterXlimaHash characterYlima3Drop a prefix of a line with length of a given lineZlima(Check if a list starts with a given list[lima&Check if a list ends with a given list\lima.Drop leading spaces and drop at each end of a ]? the number of characters as in the supplied prefix and suffix.^limaReplace "\#" with "#" in a ] prefix._limaReplace "#" with "\#" in a ] prefix.3lima- and >.(pp $ normalizeTokens exampleNonTexTokens [ Indent {n = 3},3 Disabled {manyLines = ["-- What's the answer?"]}, Indent {n = 1}, Indent {n = 2},4 Text {someLines = "- Intermediate results" :| []},6 HaskellCode {manyLines = ["b = a 4","a = const 3"]}, Dedent,0 HaskellCode {manyLines = ["answer = b * 14"]}, Comment {someLines = "world!" :| ["","Hello from comments,"]}, Text {someLines = "here!" :| ["And from","","world!","Hello from text,"]}]`limaCompose a function from a ] to .alimaParse to a token contents of a multiline comment written on a single line.Merge consecutive sblima(Show error with line number for a token.clima?Strip the given value from the beginning and the end of a list.dlimaPad a ] with a given number of spaceselimaCompose a function from  to a ].4limasame as / , but with TeX-specific tags that make Haskell code blocks correctly parsable.pp $ exampleTexTokens[3 Disabled {manyLines = ["-- What's the answer?"]}, Indent {n = 1}, Indent {n = 2}, Text {someLines = "\\begin{code}" :| ["","Intermediate results"]},6 HaskellCode {manyLines = ["b = a 4","a = const 3"]},) Text {someLines = "\\end{code}" :| []}, Dedent,+ Text {someLines = "\\begin{code}" :| []},0 HaskellCode {manyLines = ["answer = b * 14"]},) Text {someLines = "\\end{code}" :| []}, Comment {someLines = "world!" :| ["","Hello from comments,"]},5 Text {someLines = "world!" :| ["Hello from text,"]}]5limaConvert  to TeX code.RulesCertain Converter#assumptions assumptions must hold for inputs.These are the relations between document blocks and tokens when the default  values are used.'% LIMA_INDENT N' (N is an T) ~ '% LIMA_DEDENT' ~ .Lines between and including '% LIMA_DISABLE' and '% LIMA_ENABLE' ~ .1Consecutive lines, either empty or starting with '% ' ~ . $% Hello, % world! % Hello, % user! 0At least one line must have nonempty text after '% '%Lines between possibly indented tags '\begin{code}' and  '\end{code}' ~ .Other lines ~ .Example'pp $ texFromTokens def exampleTexTokens% LIMA_DISABLE% -- What's the answer? % LIMA_ENABLE% LIMA_INDENT 1% LIMA_INDENT 2Intermediate results \begin{code} a = const 3 b = a 4 \end{code} % LIMA_DEDENT \begin{code}answer = b * 14 \end{code}% Hello from comments,% world!Hello from text,world!flimaStart a TeX comment.glimaStart a TeX comment plus a space.6limaConvert  to TeX code.Each  becomes a ] in a list.These ]s are concatenated in 5.hlima*Drop spaces at the start and the end of a ].ilimaPrepend start of a TeX comment ('% ') to a ].jlimaDrop start of a TeX comment from a ].7limaConvert  to TeX code. Inverse of 5.(texToTokens def $ texFromTokens def exampleTexTokens) == exampleTexTokensTrue8limaConvert  to Literate Haskell code.RulesCertain Converter#assumptions assumptions must hold for inputs.These are the relations between document blocks and tokens when the default  values are used.'% LIMA_INDENT N' (N is an T) ~ .'% LIMA_DEDENT' ~ .Lines between and including '% LIMA_DISABLE' and '% LIMA_ENABLE' ~ . ' ~ . > a4 = 4 > a2 = 2 Other lines ~ .Example*pp $ lhsFromTokens def exampleNonTexTokens% LIMA_INDENT 3% LIMA_DISABLE% -- What's the answer? % LIMA_ENABLE% LIMA_INDENT 1% LIMA_INDENT 2- Intermediate results> a = const 3 > b = a 4 % LIMA_DEDENT> answer = b * 14% Hello from comments,% world!Hello from text,world!And fromhere!klimaStart a Literate Haskell comment.llimaStart a Literate Haskell comment plus a space.mlimaStart a Literate Haskell line of Haskell code.nlimaStart a Literate Haskell line of Haskell code plus a space.olimaPrepend start of a TeX comment ('% ') to a ].9limaConvert  to Literate Haskell code.Each  becomes a ] in a list.These ]s are concatenated in 8.plimaDrop start of a TeX comment from a ].:limaConvert  to Markdown code. Inverse of 8.(lhsToTokens def $ lhsFromTokens def exampleNonTexTokens) == exampleNonTexTokensTrue;limaConvert  to Markdown code.RulesCertain Converter#assumptions assumptions must hold for inputs.These are the relations between document blocks and tokens when the default  values are used.'' (N is an T) ~ '' ~ ."Multiline comment starting with '' ~ . 0 !Multiline comments starting with  '  Consecutive s are merged into a single .&Possibly indented block starting with  '```haskell' and ending with '```' ~ .  ```haskell a4 = 2 ``` Other lines ~ . Hello, world! Example)pp $ mdFromTokens def exampleNonTexTokens#   - Intermediate results ```haskell a = const 3 b = a 4 ``` ```haskellanswer = b * 14```Hello from text,world!And fromhere!qlimaOpen a Markdown comment.rlimaClose a Markdown comment.slimaOpen a Markdown comment plus a space.tlimaA space plus close a Markdown comment.ulimaStrip comment markers from a ].<limaConvert  to Haskell code.Each  becomes a ] in a list.These ]s are concatenated in ;.vlimaShow the name of a constructor.=limalima'Strip empty lines an leading spaces in .Remove empty lines in .Shift lines in  to the left by the minimal number of leading spaces in nonempty lines.pp exampleNonTexTokens'[ Indent {n = 3},3 Disabled {manyLines = ["-- What's the answer?"]}, Indent {n = 1}, Indent {n = 2},4 Text {someLines = "- Intermediate results" :| []},< HaskellCode {manyLines = [" b = a 4"," a = const 3"]}, Dedent,0 HaskellCode {manyLines = ["answer = b * 14"]},5 Comment {someLines = "Hello from comments," :| []},' Comment {someLines = "world!" :| []},6 Text {someLines = "world!" :| ["Hello from text,"]},, Text {someLines = "here!" :| ["And from"]}]%pp $ stripTokens exampleNonTexTokens'[ Indent {n = 3},3 Disabled {manyLines = ["-- What's the answer?"]}, Indent {n = 1}, Indent {n = 2},4 Text {someLines = "- Intermediate results" :| []},6 HaskellCode {manyLines = ["b = a 4","a = const 3"]}, Dedent,0 HaskellCode {manyLines = ["answer = b * 14"]},5 Comment {someLines = "Hello from comments," :| []},' Comment {someLines = "world!" :| []},6 Text {someLines = "world!" :| ["Hello from text,"]},, Text {someLines = "here!" :| ["And from"]}]?limaConvert  to Markdown code. Inverse of ;.(mdToTokens def $ mdFromTokens def exampleNonTexTokens) == exampleNonTexTokensTrue@limaConvert  to Haskell code.RulesCertain Converter#assumptions assumptions must hold for inputs.These are the relations between document blocks and tokens when the default  values are used.'{- LIMA_INDENT N -}' (N is an T) ~ .'{- LIMA_DEDENT -}' ~ .Lines between and including '{- LIMA_DISABLE -}' and '{- LIMA_ENABLE -}' ~ . Multiline comment starting with '{-\n' ~ .  {- line 1 -}  Consecutive s are merged into a single . StringBlimaConvert  to Haskell code. Inverse of @.(hsToTokens def $ hsFromTokens def exampleNonTexTokens) == exampleNonTexTokensTrueClimaShow a  as a file extension.showFormatExtension Lhs"lhs"DlimaShow a  as a full name.showFormatName Lhs"Literate Haskell"  !"#$%&'()*+,-./0123456789:;<=>?@ABCD  ,+$%&#('*) 2CD01->3@A89;<56:B7?./4=!" Safe-Inferred$"%&'()*-/1256;=Ce     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~#lima-0.2.0.0-AonJQvSJo067jrt0OTHCsQ Converter Paths_limabase Data.Function&1data-default-class-0.1.2.0-CQYBH38PFES4dDyailJWvdData.Default.Classdef)microlens-0.4.13.1-5Q580NbiDM6AM43K2os1L8 Lens.Micro?~Config$sel:_disable:Config$sel:_enable:Config$sel:_indent:Config$sel:_dedent:Config$sel:_mdHaskellCodeStart:Config$sel:_mdHaskellCodeEnd:Config $sel:_texHaskellCodeStart:Config$sel:_texHaskellCodeEnd:ConfigModeUserInternal$fGenericConfigTokensTokenIndentDedentDisabled HaskellCodeTextComment $sel:n:Indent$sel:manyLines:Indent$sel:someLines:IndentFormatHsLhsMdTeX PrettyPrintppdedentdisableenableindentmdHaskellCodeEndmdHaskellCodeStarttexHaskellCodeEndtexHaskellCodeStartfromInternalConfigtoInternalConfig mergeTokensexampleNonTexTokens'exampleNonTexTokensselectFromTokensselectToTokens convertTonormalizeTokensexampleTexTokens texFromTokenstexFromTokens' texToTokens lhsFromTokenslhsFromTokens' lhsToTokens mdFromTokens mdFromTokens' stripEmpties stripTokens mdToTokens hsFromTokens hsFromTokens' hsToTokensshowFormatExtensionshowFormatName$fDefaultConfig$fDefaultConfig0 $fShowPretty$fPrettyPrintConfig$fPrettyPrintText$fPrettyPrint[]$fPrettyPrint[]0$fDefaultState$fGenericState $fShowToken $fDataToken $fEqToken $fShowConfig $fEqConfig $fShowConfig0ghc-prim GHC.TypesIntMode'State escapedHashhashdropLen startsWithendsWith stripEnds text-1.2.5.0Data.Text.InternallhsUnescapeHash lhsEscapeHash mkIntoTokens parseTokenerrorExpectedToken stripListindentN mkFromTokens texCommenttexCommentSpace stripSpacesprependTexCommentdropTexComment lhsCommentlhsCommentSpace lhsHsCodelhsHsCodeSpaceprependLhsCommentdropLhsComment mdCommentOpenmdCommentClosemdCommentOpenSpacemdCommentCloseSpacestripMdCommentconstructorNameisEnclosedWith isMdComment countSpaces hsCommentOpenhsCommentOpenSpacehsCommentClosehsCommentCloseSpacestripHsComment isHsCommenterrorEmptyCommentAtversiongetDataFileName getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDir