pencil v1.0.0 Release Notes

Release Date: 2019-05-30 // almost 5 years ago
  • ๐Ÿš€ This is a milestone release! Version 1.0.0. Several breaking changes, but if you โšก๏ธ read through the changes below, you should find updating your code to be pretty easy. Please email me if you are having problems!

    โž• Added

    • โž• Added GHC 8.4 and 8.6 support.
    • โž• Added (<<|) and coll to add collection values into structrues.
    • โž• Added useFilePath, escapeXml, rename, to, move to manipulate loaded Pages.
    • โž• Added loadAndRender convenience method. Supports individual files and directories. You'll want to use this one to move over static assets quickly and easily: loadAndRender "images/".
    • โž• Added toTextRss and rfc822DateFormat to render content ready for an RSS template. See the Blog example for details.

    ๐Ÿ”„ Changed

    • All of the Pencil.Blog functions are now re-exported in Pencil. So you only need to import Pencil now.
    • load now automatically figures out the desired final FilePath, so it doesn't take a (FilePath -> FilePath) as the first argument anymore. You can change your code from load toHtml "foo.markdown" to load "foo.markdown", for the most part. Use load' to manually specify the FilePath transform. See examples in the Hackage docs for load', to, move and rename.
    • loadResources, like load, no longers takes a file path transformer. Use to, move or rename to change the file path. But really, you probably can use loadDir or loadDir' or loadAndRender instead of loadResources.
    • ๐Ÿ“‡ Renamed structure to struct. It's shorter.
    • passthrough now works with directories too.
    • insertPages return type changed from Env to PencilApp Env. We now evaluate the given pages (e.g. replace variables) before inserting into env. So you'll need to change from let env' = insertPages "posts" posts env to env <- insertPages "posts" posts env.
    • โšก๏ธ Renamed updateEnvVal to adjust.
    • ๐Ÿ“‡ Renamed insertEnv to insert.
    • ๐Ÿ“‡ Renamed injectTagsEnv to injectTags.
    • ๐Ÿ“‡ Renamed arrayContainsString to arrayContainsText.
    • ๐Ÿ”„ Changed how structures work internally to allow collection values into structures.
    • ๐Ÿ”€ Examples now match the tutorials. This is the start of merging the tutorials into the pencil repo itself, instead of living somewhere else.
    • Two new errors: CollectionNotLastInStructure and CollectionFirstInStructure to handle collection positions in structures.

    ๐Ÿ›  Fixed

    • โœ… Specify example test files in the pencil.cabal file, so that pencil tests run properly.

    โœ‚ Removed

    • ๐Ÿ’… renderCss. Use loadAndRender instead. As in: loadAndRender "style.scss"
    • โœ‚ Removed VarNotInEnv error type, since Pencil no longer throws that.