úÎ!~‡~–      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”• None("#$%&',-./1245678=>?@ACEHMPSVX_`ah –—˜™š›œNone'"#$%&',-./1245678=>?@ACEHMPSVX_`aha shakebookUnion two JSON values together. shakebook#Add a String field to a JSON value. shakebook#Add an Array field to a JSON value. shakebook$Add an Object field to a JSON value. shakebook*Maybe add an Object field to a JSON value.None)"#$%&',-./1245678=>?@ACEHMPSVX_`ah%Ý $ shakebook)View the "srcPath" field of a JSON Value.% shakebook(Add "srcPath" field based on input Text.& shakebook$Add "baseUrl" field from input Text.' shakebook%Add "fullUrl" field from input Text.( shakebook%View the "url" field of a JSON Value.) shakebook Add "url" field from input Text.* shakebook,Assuming a "url" field, enrich via a baseURL+ shakebook Assuming a srcPathA field, enrich using withUrl using a Text -> Text transformation.1 shakebooknGet a JSON Value of Markdown Data with markdown body as "contents" field and the srcPath as "srcPath" field.4 shakebookęMulti-markdown loader. Allows you to load a filepattern of markdown as a list of JSON values ready to pass to an HTML template. You will probably want to add additional data before you write. See the examples in Shakebook.Defaults5 shakebook The same as 4 but without filtering.4 shakebook>A shake filepattern to load, relative to srcDir from SbConfig. shakebook+A value to sortOn e.g (Down . viewPostTime) shakebook/A filtering predicate e.g (elem tag . viewTags) shakebookZAn initial enrichment. This is pure so can only be data derived from the initial markdown. shakebook*A list of Values indexed by their srcPath.5 shakebookA Shake filepattern to load. shakebook,A value to sortOn e.g (Down . viewPostTime). shakebookAn initial pure enrichment. shakebook(A list of Values index by their srcPath.0   !"#$%&'()*+,-./0123450"# !  $%&'()*+,-./01 2345None'"#$%&',-./1245678=>?@ACEHMPSVX_`ahK> @ shakebook)View the "content" field of a JSON Value.A shakebook3View the "date" field of a JSON Value as a UTCTime.B shakebook.View the "date" field of a JSON Value as Text.C shakebook0View the "tags" field of a JSON Value as a list.D shakebook'View the "title" field of a JSON Value.E shakebook'View all post tags for a list of posts.F shakebook)View all posts times for a list of posts.G shakebook.Add "highlighting-css" field from input Style.H shakebook"Add "next" field from input Value.I shakebook%Add "pages" field from input [Value].J shakebook(Add "prettydate" field using input Text.K shakebook'Add "previous" field using input Value.L shakebook)Add "posts" field based on input [Value].M shakebook*Add "recentposts" field using input Value.N shakebook.Add "subsections" field based on inpt [Value].O shakebook,Add "tagindex" field based on input [Value].P shakebook,Add "taglinks" field based on input [Value].Q shakebook'Add "teaser" field based on input Text.R shakebook&Add "title" field based on input Text.S shakebookIAssuming a "date" field, enrich using withPrettyDate and a format string.T shakebook3Assuming a "tags" field, enrich using withTagLinks.U shakebookJAssuming a "content" field with a spitter section, enrich using withTeaserV shakebook,Add both "next" and "previous" fields using  withPostNext and withPostPreviousW shakebook9Extend a Zipper of JSON Values to add "previous" objects.X shakebook5Extend a Zipper of JSON Values to add "next" objects.Z shakebookoCreate link data object with fields "id" and "url" using an id and a function | transforming an id into a url.[ shakebookFilter a lists of posts by tag.\ shakebookSort a lists of posts by date.] shakebook6Check whether two posts were posted in the same month.ž shakebook8Partition a list of posts by the month they were posted._ shakebookXCreate a blog navbar object for a posts section, with layers "toc1", "toc2", and "toc3".` shakebookUCreate a toc navbar object for a docs section, with layers "toc1", "toc2" and "toc3"._ shakebook"Top level title, e.g Blog shakebookRoot page, e.g "/posts" shakebook,Formatting function to a UTCTime to a title. shakebook6Formatting function to convert a UTCTime to a URL link%$%@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab%@AB$CDEFGHIJKLM%NOPQRSTUXWVY_bZa`\^][None'"#$%&',-./1245678=>?@ACEHMPSVX_`ahMÔcdcd,Slick mustache utilities re-exported to use Ÿ(c) Daniel Firth 2020MITNone'"#$%&',-./1245678=>?@ACEHMPSVX_`ahRąf shakebook-Build a single page straight from a template.f shakebookThe HTML templatate. shakebook A JSON value. shakebookThe out filepath.efgfgeNone)"#$%&',-./1245678=>?@ACEHMPSVX_`ahy ~ shakebookDefault Posts Pager. ƒ shakebook,Build a PDF from a Cofree table of contents.„ shakebookáDefault Single Page Pattern, see tests for usage. It's possible this could just be called singlePagePattern, as there's no hardcoded strings here, but it would need to run entirely within the monad to translate filepaths.… shakebookhDefault statics patterns. Takes a list of filepatterns and adds a rule that copies everything verbatim† shakebook:Default "shake clean" phony, cleans your output directory.ˆ shakebook’Default "shake statics" phony rule. automatically runs need on "<out>/thing/*" for every thing found in "images/", "css/", "js/" and "webfonts/"‰ shakebookĄDefault "shake posts" phony rule. takes a [FilePattern] pointing to the posts and and calls need on "<out>/posts/<filename>.html" for each markdown post found.Š shakebookĀDefault "shake posts-index" phony rule. Takes a [FilePattern] of posts to discover and calls need on "<out>/posts/index.html" and "<out>/posts/pages/<n>/index.html" for each page required.‹ shakebookĸDefault "shake tag-index" phony rule. Takes a [FilePattern] of posts to discover and calls need on "<out>/posts/tags/<tag>/index.html" and "<out>/posts/tags/<tag>/pages/<n>/index.html" for each tag discovered and for each page required per tag filter.’ shakebookĸ(Default "shake month-index" phony rule. Takes a [FilePattern] of posts to discover and calls need on "<out>/posts/months/<yyyy-md>/index.html" and "<out>/posts/months/<yyyy-md>/pages/<n>/index.html" for each month discovered that contains a post and for each page required per month filter.“ shakebookQDefault "shake docs" phony rule, takes a Cofree [] String as a table of contents. u shakebookBaseURLv shakebookPost enrichment.w shakebookPost enrichmenty shakebookA filtering function  shakebook How to turn the id into a Title. shakebook?How to turn the id and a page number (as Text) into a URL link. shakebookThe id itself.z shakebook2How to extract a page number from the Filepattern. shakebook)How to extract an id from the FilePattern{ shakebookPager extension.| shakebookPager extension.} shakebookPager extension.~ shakebookA post loader function. shakebook+A transformation on the entire post zipper.„ shakebook%The output filename e.g "index.html". shakebook A tmpl file. shakebookLast minute enrichment.,hijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“,hijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“None'"#$%&',-./1245678=>?@ACEHMPSVX_`ah…4” shakebookGenerates Shake  1 from a FilePattern via an action that returns a Ą.• shakebookGenerates Shake   from a Ē of Ģ sources.” shakebookThe filepattern rule. shakebook6How to extract a position marker from the filepattern. shakebook*How to extract an id from the filepattern. shakebook+How to turn the id into a searchable store.• shakebookA cofree comonad of FilePaths shakebook2How to find the out path for each source FilePath. shakebookdHow to generate a write Action for the target of a comonad. This is extended over the whole comonad.”•”• None'"#$%&',-./1245678=>?@ACEHMPSVX_`ah†ē2  !"#$%&'()*+,-./012345”•Ī    !"#$$%%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĒĢĪĨͧĻĐŠŦŽ­ŪŊ°ąēģīĩķ'shakebook-0.2.2.0-I0NvpkCYjSRhBnViJzIpwShakebook.MustacheShakebook.AesonShakebook.DataShakebook.ConventionsShakebook.FeedShakebook.DefaultsShakebook.RulesPaths_shakebook Shakebook%mustache-2.3.1-JK21eYrI54wDjyHn2GlRKdText.Mustache.Internal.TypesTemplatewithJSONwithStringFieldwithArrayFieldwithObjectFieldwithObjectFieldMaybeMonadShakebookRulesMonadShakebookActionMonadShakebookPaginationExceptionEmptyContentsError ShakebookEnvlogFuncsbConfig HasSbConfig sbConfigLSbConfigsbSrcDirsbOutDir sbBaseUrlsbMdRead sbHTWritesbPPPToC WithinDisplay PathDisplay HasLocalSrc localSrcL HasLocalOut localOutL needLocalOut%-> viewSrcPath withSrcPath withBaseUrl withFullUrlviewUrlwithUrl enrichFullUrl enrichUrl leadingSlashwithHtmlExtensionwithMarkdownExtensiongenerateSupposedUrlenrichSupposedUrlreadMarkdownFile' paginate'lowerloadSortFilterEnrichloadSortEnrich$fDisplayPathDisplay $fDisplay[]$fDisplayWithinDisplay$fHasLogFuncShakebookEnv$fHasSbConfigShakebookEnv$fHasLocalOutShakebookEnv$fExceptionPaginationException$fShowSbConfig$fShowPaginationException$fEqPaginationException viewContent viewPostTimeviewPostTimeRawviewTags viewTitleviewAllPostTagsviewAllPostTimeswithHighlightingwithNext withPageswithPrettyDate withPrevious withPostswithRecentPostswithSubsections withTagIndex withTagLinks withTeaser withTitleenrichPrettyDateenrichTagLinks enrichTeaserextendNextPreviousextendPrevious extendNextextendPageNeighbours genLinkDatatagFilterPosts dateSortPosts sameMonthmonthFilterPostsgenBlogNavbarDatagenTocNavbarData genPageDatagenIndexPageData asAtomEntry buildFeedcompileTemplate'buildPageActionbuildPageActionWithindefaultMonthUrlFormatdefaultPrettyMonthFormatdefaultPrettyTimeFormatdefaultIndexFileFragmentdefaultMonthDirFragmentdefaultMonthUrlFragmentdefaultEnrichPostdefaultMarkdownReaderOptionsdefaultHtml5WriterOptionsdefaultLatexWriterOptionsdefaultSbSrcDirdefaultSbOutDirdefaultPostsPerPagedefaultSbConfigaffixBlogNavbaraffixRecentPostsdefaultDocsPatternsdefaultPostIndexDatadefaultPagerPatterndefaultPostIndexPatternsdefaultTagIndexPatternsdefaultMonthIndexPatternsdefaultPostsPatterns makePDFLaTeX handleImages handleHeaders pushHeadersbuildPDFdefaultSinglePagePatterndefaultStaticsPatternsdefaultCleanPhonydefaultSinglePagePhonydefaultStaticsPhonydefaultPostsPhonydefaultPostIndexPhonydefaultTagIndexPhonydefaultPagePaths fileIndexHTMLdirPosts dirMonthsdirPagesdirTagsdefaultMonthIndexPhonydefaultDocsPhonycomonadStoreRuleGen cofreeRuleGenversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileNamepartitionToMonths!path-0.7.0-9J5f6ExcF2U1QvfED3OBGR Path.InternalPath#shake-0.18.5-9d5Q7u6uJNX3FCE2w0k3uS%Development.Shake.Internal.Core.RulesRules$comonad-5.0.6-JfcN6iPhxp7Eeulcp61Z8tControl.Comonad.Store.Class ComonadStore!free-5.1.3-IiaecEZpJzALwrL4Ysp95GControl.Comonad.Cofree.Class ComonadCofreebaseGHC.IOFilePath