[gA      !"#$%&'()*+,-./0123456 7 8 9 : ; < = > ? @ A B C D E F G H I J KLMNOPQRSTUVWXY Z [ \ ] ^ _ `abcdefghij k l m n o p q r s t u vwxyz{|}~ .NoneServe a given directory 9Main method, runs a static server in the given directory Directory to serve Pre-serve hook Directory to serve Pre-serve hook Port to listen on Blocks forever  Safe-Inferred  NoneResult of a store query Expected, true type  Not found Found, result 'All items are stored on the filesystem *Optionally, items are also kept in-memory Simple wrapper type Initialize the store .Auxiliary: add an item to the in-memory cache 0Auxiliary: get an item from the in-memory cache 3Auxiliary: delete an item from the in-memory cache Store an item  Load an item Delete an item Delete a file unless it doesn' t exist...  Mostly meant for internal usage Use in-memory caching 'Directory to use for hard disk storage Store   Safe-Inferred$Logger structure. Very complicated. Nothing marks the end Used for sync on quit  Out sink  Verbosity Create a new logger (Flush the logger (blocks until flushed) Logger Verbosity of the string  Section name  No result  None "Map over all tags in the document  Map every h1 to an h2, h2 to h3, etc. *Apply a function to each URL on a webpage ECustomized TagSoup renderer. The default TagSoup renderer escape CSS  within style tags, and doesn't properly minimize. 9Convert a filepath to an URL starting from the site root  Example:   toUrl "foo/bar.html" Result:  "/foo/bar.html" BGet the relative url to the site root, for a given (absolute) url 4Check if an URL links to an external HTTP(S) source "Strip all HTML tags from a string  Example:   stripTags "<p>foo</p>" Result:   "foo" $This also works for incomplete tags  Example:   stripTags "<p>foo</p" Result:  "foo" HTML-escape a string  Example:   escapeHtml "Me & Dean" Result:  "Me &amp; Dean"    None >Trim a string (drop spaces, tabs and newlines at both sides). 1A simple (but inefficient) regex replace funcion HA simple regex split function. The resulting list will contain no empty  strings.  Pattern  Replacement (called on capture) Source string Result Pattern String to split Result     Safe-Inferred @Given a path to a file, try to make the path writable by making  all directories on the path. !Get all contents of a directory.  Directory to search List of files found   None"Parse an identifier from a string $Convert an identifier to a relative  None)Type that allows matching on identifiers Elements of a glob pattern Parse a pattern from a string  Create a  from a list of s it should match. Warning: use this carefully with  and . The  s in the list already) have versions assigned, and the pattern 9 will then only match the intersection of both versions. A more concrete example,  1 fromList ["foo.markdown"] .&&. hasVersion "pdf" will not match anything! The  foo.markdown  has no version  assigned, so the LHS of  will only match this  with no  version. The RHS only matches s with version set to pdf -- & hence, this pattern matches nothing.  The correct way to use this is: ; fromList $ map (setVersion $ Just "pdf") ["foo.markdown"]  Create a  from a regex  Example:  regex "^foo/[^x]*$ ACreate a pattern which matches all items with the given version. Specify a version, e.g. ( "foo/*.markdown" .&&. hasVersion "pdf" 6Match only if the identifier has no version set, e.g. $ "foo/*.markdown" .&&. hasNoVersion = for patterns: the given identifier must match both subterms ; for patterns: the given identifier must match any subterm Inverts a pattern, e.g.   complement "foo/bar.html"  will match anything except "foo/bar.html" )Check if an identifier matches a pattern KGiven a list of identifiers, retain only those who match the given pattern FSplit a list at every possible point, generate a list of (init, tail) > cases. The result is sorted with inits decreasing in length. >Match a glob against a pattern, generating a list of captures Internal verion of   !LCreate an identifier from a pattern by filling in the captures with a given  string  Example:  ( fromCapture (parseGlob "tags/*") "foo" Result:  "tags/foo" "HCreate an identifier from a pattern by filling in the captures with the  given list of strings Internally used version of " !      !" !" !"      !"None#$%&'#$%&''#$%&#$%&'None (Type used for a route )Apply a route to an identifier *KA route that uses the identifier as filepath. For example, the target with  ID foo/bar will be written to the file foo/bar. ++Set (or replace) the extension of a route.  Example:  + runRoutes (setExtension "html") "foo/bar" Result:   Just "foo/bar.html"  Example:  F runRoutes (setExtension "html") "posts/the-art-of-trolling.markdown" Result: ' Just "posts/the-art-of-trolling.html" ,BApply the route if the identifier matches the given pattern, fail  otherwise ->Create a custom route. This should almost always be used with  , .JA route that always gives the same result. Obviously, you should only use % this for a single compilation rule. /Create a gsub route  Example:  < runRoutes (gsubRoute "rss/" (const "")) "tags/rss/bar.xml" Result:  Just "tags/bar.xml" 0Compose routes so that f ` composeRoutes` g is more or less equivalent  with g . f.  Example:  M let routes = gsubRoute "rss/" (const "") `composeRoutes` setExtension "xml" $ in runRoutes routes "tags/rss/bar" Result:   Just "tags/bar.xml" HIf the first route given fails, Hakyll will not apply the second route. ()*+,-./Pattern  Replacement Resulting route 0First route to apply Second route to apply Resulting route  ()*+,-./0 ()*+,-./0 ()*+,-./0None12345All known identifiers  Initially out-of-date resources Old dependency facts 1234524315 12435!None  1Responsible for retrieving and listing resources !A list of all files found "&Cache keeping track of modified files #(Underlying persistent store for caching $Create a resource provider %!Check if a given resource exists &?Each resource may have an associated metadata resource (with a  .metadata  filename) ')Get the raw body of a resource as string (4Get the raw body of a resource of a lazy bytestring  )*!"#$ Store to use Should we ignore this file? Search directory Resulting provider +%&,'(  )*!"#$+%&,'( )*!"#$+%&,'("None-Check if a file probably1 has a metadata header. The main goal of this is ; to exclude binary files (which are unlikely to start with ---). .Space or tab, no newline /%Parse Windows newlines as well (i.e. n or rn) 0Parse a single metadata field 1Parse a metadata block 2CParse a metadata block, including delimiters and trailing newlines 38Parse a page consisting of a metadata header and a body 456-./01234 456-./0123#None789:;789789:;$None<9A resource is modified if it or its metadata has changed =6Utility: Check if a the digest of a file was modified >,Utility: Retrieve a digest for a given file <=>?<?<=>?%None@=Wrapper to ensure metadata cache is invalidated if necessary A=Wrapper to ensure metadata cache is invalidated if necessary @A  $+%'(<?@A@A  Safe-Inferred 8&Directory in which the output written 9Directory where hakyll's internal store is kept :5Directory in which some temporary files will be kept ;;Directory where hakyll finds the files to compile. This is . by  default. <$Function to determine ignored files In ?#, the following files are ignored:  files starting with a .  files starting with a #  files ending with a ~  files ending with .swp Note that the files in 8 and 9 will H also be ignored. Note that this is the configuration parameter, if you & want to use the test, you should use @. =0Here, you can plug in a system command to upload/deploy your site.  Example:  > rsync -ave 'ssh -p 2217' _site jaspervdj@jaspervdj.be:hakyll You can execute this by using  ./site deploy >?Use an in-memory cache for items. This is faster but uses more  memory. ?/Default configuration for a hakyll application @"Check if a file should be ignored 6789:;<=>?@ 6789:;<=>?@ 6789:;<=>@?6789:;<=>?@&None AKA monad which lets you compile items and takes care of dependency tracking  for you. B%Environment in which a compiler runs CMain configuration DUnderlying identifier EResource provider FList of all known identifiers G Site routes HCompiler store ILogger J"Put the result back in a compiler %AKLMNOPQRSTBUCDEFGHIVWXYZJ[\]^_`abcdeAKLMNOPQRSTBUCDEFGHIVWXYZJ[\]AKLMPONQRSTBUCDEFGHIVWXYZJ[\]^_`abcde NoneG@Perform a compiler action on the item body. This is the same as f,  but looks less intimidating.  withItemBody = traverse BCDEFGghijBCDEFGBCDEFGBCDEFGghij NoneH0Describes an item that can be saved to the disk I#Save an item to the given filepath HIklmnopHIHIHIklmnop'NoneqElements of a template. J*Datatype used for template substitutions. qrstJuvwxqrstJuvqtsrJuvwxNoneK Construct a Template from a string. KKKKNoneLGDatatype to represent the different file types Hakyll can deal with by  default WKGet the file type for a certain file. The type is determined by extension. X'Get the file type for the current file LMNOPQRSTUVWX LMNOPQRSTUVWX LVUTSRQPONMWXL VUTSRQPONMWX(Noney0An existential type, mostly for internal usage. yzyzyz)NoneYLWhilst compiling an item, it possible to save multiple snapshots of it, and  not just the final result. {DSave a specific snapshot of an item, so you can load it later using  [. ZKLoad an item compiled elsewhere. If the required item is not yet compiled, 8 the build system will take care of that automatically. [(Require a specific snapshot of an item. \3A shortcut for only requiring the body of an item. ! loadBody = fmap itemBody . load ^This function allows you to Z a dynamic list of items Y|{Z[\]^_}~ Y|{Z[\]^_ Y|{Z[\]^_}~*None` The monad used to compose rules Accumulated routes Accumulated compilers !A set of the actually used files "Run a Rules monad, resulting in a  $Remove duplicate compilers from the . When two compilers match an  item, we prefer the first one `` `None Add a route Add a number of compilers Add resources d%Add a compilation rule to the rules. FThis instructs all resources to be compiled using the given compiler. e Add a route. >This adds a route for all items matching the current pattern. f Execute an 9 action immediately while the rules are being evaluated. G This should be avoided if possible, but occasionally comes in useful. gGAdvanced usage: add extra dependencies to compilers. Basically this is  needed when you'9re doing unsafe tricky stuff in the rules monad, but you  still want correct builds. abcdefg 234`abcdefg `abcdef243g abcdefg+None0Wraps doesFileExist, also checks for index.html ,None8A preview thread that periodically recompiles the site. Configuration Updating action Can block forever -None.NoneBuild the site Run the checker and exit Remove the output directories Preview the site Rebuild the site Start a server Upload the site NonehIThis usualy is the function with which the user runs the hakyll compiler i A variant of h+ which allows the user to specify a custom  configuration Show usage information. GThis is necessary because not everyone calls their program the same... hihihihi None jGet the underlying identifier. kGGet the extension of the underlying identifier. Returns something like  .html m#Get the route for a specified item n(Get the body of the underlying resource o.Get the resource we are compiling as a string p7Get the resource we are compiling as a lazy bytestring qOverloadable function for o and p rHSave a snapshot of the item. This function returns the same item, which  convenient for building  chains. u Compiler for debugging purposes jklmnopqrstuAYZ[\]^_jklmnopqrstuAjklmnopqYrZ[\]^_stu jklmnopqrstuNonex8This will copy any file directly by using a system call {Create a tmp file vwxyz{Suffix and extension Resulting tmp path vwxyz{xyzvw{vwxyz{None|=Use a unix filter as compiler. For example, we could use the rev program  as a compiler.   rev :: Compiler String @ rev = getResourceString >>= withItemBody (unixFilter "rev" []) JA more realistic example: one can use this to call, for example, the sass G compiler on CSS files. More information about sass can be found here:  http://sass-lang.com/ 6The code is fairly straightforward, given that we use .scss for sass:  match "style.scss" $ do " route $ setExtension "css" % compile $ getResourceString >>= ? withItemBody (unixFilter "sass" ["-s", "--scss"]) >>= # return . fmap compressCss } Variant of |& that should be used for binary files  match "music.wav" $ do " route $ setExtension "ogg" K compile $ getResourceLBS >>= withItemBody (unixFilter "oggenc" ["-"]) Overloaded compiler Internally used function | Program name  Program args Program input Program output } Program name  Program args Program input Program output Writer Reader  Program name  Program args Program input Program output |}|}|}None~Compiler form of  $Compress CSS to speed up your site. (Compresses certain forms of separators. Compresses all whitespace. (Function that strips CSS comments away. ~~~~NoneCompiler form of * which automatically picks the right root  path Relativize URL' s in HTML Path to the site root HTML to relativize Resulting HTML None 5Read a string using pandoc, with the default options 6Read a string using pandoc, with the supplied options BWrite a document (as HTML) using pandoc, with the default options CWrite a document (as HTML) using pandoc, with the supplied options !Render the resource using pandoc !Render the resource using pandoc  Read a page render using pandoc  A version of - which allows you to specify your own pandoc  options An extension of & which allows you to specify a custom ' pandoc transformation for the content 8The default reader options for pandoc parsing in hakyll :The default writer options for pandoc rendering in hakyll String to read Resulting document Parser options String to read Resulting document Document to write Resulting HTML Writer options for pandoc Document to write Resulting HTML None  None0Map any field to its metadata value, if present #Absolute url to the resulting item ,Filepath of the underlying file of the item FThis title field takes the basename of the underlying file by default %When the metadata has a field called  published in one of the ; following formats then this function can render the date.  Sun, 01 Feb 2000 13:00:00 UT (RSS date format)  2000-02-01T13:00:00Z (Atom date format)  February 1, 2000 1:00 PM (PM is usually uppercase)  February 1, 2000! (assumes 12:00 AM for the time) 4Alternatively, when the metadata has a field called path in a  folder/yyyy-mm-dd-title.extension# format (the convention for pages)  and no  published. metadata field set, this function can render  the date.  3 renderDateField "date" "%B %e, %Y" "Date unknown" Will render something like January 32, 2010. This is an extended version of  that allows you to F specify a time locale that is used for outputting the date. For more  details, see . 5Parser to try to extract and parse the time from the  published ! field or from the filename. See renderDateField for more information.  Exported for user convenience. 0Key in which the rendered date should be placed Format to use on the date Resulting context Output time locale Destination key Format to use on the date Resulting context Output time locale  Input page Parsed UTCTime Key Format Resuting context Time output locale Key Format Resulting context None Data about tags @Obtain tags from a page in the default way: parse them from the tags  metadata field. Obtain categories from a page. #Higher-order function to read tags Render tags in HTML Render a tag cloud in HTML $ TODO: Maybe produce a Context here FRender a simple tag list in HTML, with the tag count next to the item $ TODO: Maybe produce a Context here IRender tags with links with custom function to get tags. It is typically  together with  like this: 0 renderTagsFieldWith (customFunction . getTags) # "tags" (fromCapture "tags/*") Render tags with links Render the category in a link HSort tags using supplied function. First element of the tuple passed to 0 the comparing function is the actual tag name. ?Sample sorting function that compares tags case insensitively. :Produce a tag item: tag, url, count, min count, max count  Join items Tag cloud renderer Smallest font size, in percent Biggest font size, in percent  Input tags Rendered cloud  Get the tags Destination key Tags structure Resulting context Destination key Tags Context Destination key Tags Context  NoneRead a template. $The following pattern is so common:  & tpl <- loadBody "templates/foo.html"  someCompiler # >>= applyTemplate tpl context 0That we have a single function which does this:  someCompiler ; >>= loadAndApplyTemplate "templates/foo.html" context 0It is also possible that you want to substitute $key$s within the body of O an item. This function does that by interpreting the item body as a template, ! and then applying it to itself. BOverloaded apply template function to work in an arbitrary Monad.  Template Context Page Resulting item Template identifier Context Page Resulting item Context Item and template Resulting item JJNoneKGenerate a string of a listing of pages, after applying a template to each  page. LJoin a listing of pages with a string in between, after applying a template  to each page. HSort pages chronologically. This function assumes that the pages have a  year-month-day-title.extension* naming scheme -- as is the convention in  Hakyll. The reverse of  None >This is a data structure to keep the configuration of a feed. Title of the feed. Description of the feed. Name of the feed author. Email of the feed author. )Absolute root URL of the feed site (e.g. http: jaspervdj.be) &Abstract function to render any feed. +Render an RSS feed with a number of items. ,Render an Atom feed with a number of items. Copies  $updated$ from  $published$ if it is not already set. Feed template Item template Feed configuration Context for the items  Input items Resulting item Feed configuration  Item context  Feed items Resulting feed Feed configuration  Item context  Feed items Resulting feed  None  !"#$%&'()*+,-./02346789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ /0123456789: ; < =>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd e e f g h i j k l m n&o p p q r s t u v'wxyz{|}~)))))))*  g     > !"#$"#%&'()*+,-./0123456W789::;<=>?@AB!C!D!E!F!G!H!I!J!K!C!i!L!M"N"O"P""Q"R"S"T"U"V#W#X#Y##Z$[$\$]$^%W%X&_&`&a&b&c&d&e&f&g&o&h&i&j&k&l&m&m&n&o&_&p&q&r&s&t&u&v&w&x&y&z&{&|&}&~&          '''''w'''(())))*********************" +++++++++++++++++++++++++,-------------------.......hakyll-4.1.2.1Hakyll.Web.HtmlHakyll.Core.Util.StringHakyllHakyll.Core.IdentifierHakyll.Core.Identifier.PatternHakyll.Core.MetadataHakyll.Core.RoutesHakyll.Core.DependenciesHakyll.Core.ConfigurationHakyll.Core.CompilerHakyll.Core.ItemHakyll.Core.WritableHakyll.Web.TemplateHakyll.Web.Template.ReadHakyll.Web.Pandoc.FileTypeHakyll.Core.Rules Hakyll.MainHakyll.Core.FileHakyll.Core.UnixFilterHakyll.Web.CompressCssHakyll.Web.Html.RelativizeUrlsHakyll.Web.PandocHakyll.Web.Pandoc.BiblioHakyll.Web.Template.ContextHakyll.Web.TagsHakyll.Web.Template.ListHakyll.Web.FeedHakyll.Preview.Server Paths_hakyllHakyll.Core.StoreHakyll.Core.LoggerHakyll.Core.Util.FileHakyll.Core.Provider.InternalHakyll.Core.Provider.Metadata"Hakyll.Core.Provider.MetadataCacheHakyll.Core.Provider.ModifiedHakyll.Core.ProviderHakyll.Core.Compiler.InternalHakyll.Web.Template.InternalHakyll.Core.Item.SomeItemHakyll.Core.Compiler.RequireHakyll.Core.Rules.Internal Hakyll.CheckHakyll.Preview.PollHakyll.Core.RuntimeHakyll.CommandswithTags demoteHeadersgetUrlswithUrlstoUrl toSiteRoot isExternal stripTags escapeHtmltrim replaceAllsplitAllmakeDirectoriesgetRecursiveContentsremoveDirectory IdentifieridentifierVersion fromFilePath toFilePath setVersionPatternfromGlobfromList fromRegex fromVersion hasVersion hasNoVersion.&&..||. complementmatches filterMatchescapture fromCapture fromCaptures MonadMetadata getMetadata getMatchesgetAllMetadataMetadataRoutes runRoutesidRoute setExtension matchRoute customRoute constRoute gsubRoute composeRoutesDependencyFacts DependencyIdentifierDependencyPatternDependency outOfDate ConfigurationdestinationDirectorystoreDirectory tmpDirectoryproviderDirectory ignoreFile deployCommand inMemoryCachedefaultConfigurationshouldIgnoreFileCompilerItemitemIdentifieritemBody itemSetBody withItemBodyWritablewriteTemplate readTemplateFileTypeTextileRst PlainTextOrgModeMarkdownLiterateHaskellLaTeXHtmlCssBinaryfileType itemFileTypeSnapshotload loadSnapshotloadBodyloadSnapshotBodyloadAllloadAllSnapshotsRulesmatchcreateversioncompileroute preprocessrulesExtraDependencieshakyll hakyllWith getUnderlyinggetUnderlyingExtensionmakeItemgetRoutegetResourceBodygetResourceStringgetResourceLBSgetResourceWith saveSnapshotcachedunsafeCompiler debugCompilerTmpFileCopyFilecopyFileCompiler newTmpFile unixFilter unixFilterLBScompressCssCompiler compressCssrelativizeUrlsrelativizeUrlsWith readPandocreadPandocWith writePandocwritePandocWith renderPandocrenderPandocWithpandocCompilerpandocCompilerWithpandocCompilerWithTransformdefaultHakyllReaderOptionsdefaultHakyllWriterOptionsBiblioCSL cslCompilerbiblioCompilerreadPandocBiblioContext unContext mapContextfield constField functionFielddefaultContext bodyField metadataFieldurlField pathField titleField dateField dateFieldWith getItemUTCmodificationTimeFieldmodificationTimeFieldWith missingFieldTagsgetTags buildTagsWith buildTagsbuildCategories tagsRulesrenderTagCloud renderTagList tagsField categoryField sortTagsBycaseInsensitiveTagstemplateCompiler applyTemplateloadAndApplyTemplateapplyAsTemplateapplyTemplateWithapplyTemplateListapplyJoinTemplateList chronological recentFirstFeedConfiguration feedTitlefeedDescriptionfeedAuthorNamefeedAuthorEmailfeedRoot renderRss renderAtomstatic staticServercatchIObindirlibdirdatadir libexecdir getBinDir getLibDir getDataDir getLibexecDirgetDataFileNameResult WrongTypeNotFoundFoundstoreMapBoxnew cacheInsert cacheLookup cacheDeletesetgetdelete deleteFilehashStoreLogger loggerChan loggerSync loggerSinkloggerVerbosityflush VerbosityDebugMessageErrorstringerrorheadermessagedebug renderTags'isUrlAttributebaseGHC.IOFilePathidentifierPath$fShowIdentifier$fNFDataIdentifier$fIsStringIdentifier$fBinaryIdentifier GlobComponentghc-prim GHC.Classes&&||splitscapture' fromCaptures'VersionRegexListGlobAnd Complement EverythingLiteral CaptureManyCapture$fMonoidPattern$fIsStringPattern$fBinaryPattern$fBinaryGlobComponentunRoutes$fMonoidRoutes DependencyMDependencyStatedependencyFacts dependencyOodmarkOoddependenciesForcheckNewcheckChangedPatterns bruteForce$fBinaryDependencyProvider providerSetproviderModifiedCache providerStore newProviderresourceExistsresourceMetadataResourceresourceString resourceLBS resourceListresourceFilePathprobablyHasMetadataHeader inlineSpacenewlinemetadata metadataBlockpage loadMetadataloadMetadataHeaderloadMetadataFileresourceMetadata resourceBodyresourceInvalidateMetadataCachenameresourceModifiedfileDigestModified fileDigestresourceModificationTime CompilerReadcompilerConfigcompilerUnderlyingcompilerProvidercompilerUniversecompilerRoutes compilerStorecompilerLoggercompilerResult unCompilerCompilerResultCompilerRequire CompilerError CompilerDone CompilerWritecompilerDependenciescompilerCacheHits runCompiler compilerAsk compilerTell compilerThrow compilerCatchcompilerUnsafeIOcompilerTellDependenciescompilerTellCacheHitscompilerGetMetadatacompilerGetMatches$fAlternativeCompiler$fMonadMetadataCompiler$fApplicativeCompiler$fMonadCompiler$fFunctorCompiler$fMonoidCompilerWriteData.Traversabletraverse $fBinaryItem$fTraversableItem$fFoldableItem $fFunctorItem$fWritableMarkupM $fWritable[]$fWritableByteString$fWritableByteString0 $fWritable[]0 $fWritable()TemplateElementEscapedKeyChunk unTemplate$fBinaryTemplateElement$fWritableTemplateSomeItemsavekeyfinal rulesRoutesrulesCompilersrulesResourcesrunRulesRuleSet nubCompilersunRules RulesState rulesRoute rulesCompiler RulesRead rulesProvider rulesMatches rulesVersionemptyRulesState$fMonadMetadataRules$fMonoidRuleSet tellRoute tellCompilers tellResources GHC.TypesIOcheckFileExistsChecker CheckerState CheckerWrite checkerFaulty checkerOk CheckerRead checkerConfig checkerLogger checkerCheckCheck InternalLinksAllcheck runCheckercheckDestination checkFileokfaultycheckInternalUrlcheckExternalUrlstripFragments$fMonoidCheckerWrite previewPollRuntime RuntimeState runtimeDone runtimeTodo runtimeFacts RuntimeReadruntimeConfiguration runtimeLoggerruntimeProvider runtimeStore runtimeRoutesruntimeUniverserunbuildscheduleOutOfDate pickAndChasechasecleanpreviewrebuildserverdeployshowHelpprogName HakyllArgsServerRebuildPreviewportHelpDeployCleaninternal_linksBuildverbose hakyllArgs verboseFlagportFlagGHC.Base>>=$fWritableTmpFile$fBinaryTmpFile$fWritableCopyFile$fBinaryCopyFileunixFilterWith unixFilterIOcompressSeparatorscompressWhitespace stripComments$fWritableBiblio$fBinaryBiblio $fWritableCSL $fBinaryCSL$fMonoidContext getCategory renderTags tagsFieldWithtagsMap tagsMakeIdtagsDependency renderFeedmakeItemContext