PieCrust 1.0 RC
The past month has been pretty busy, between my next secret project, my day job, and of course fixing PieCrust bugs. But somehow among this chaos seems to be emerging a release candidate for PieCrust 1.0. And it’s only fitting that I announce this on Pi Day!
As always, for a complete list of changes, I’ll redirect you to the changelog. But for the highlights, please read on.
Big thanks go to the few people who contributed patches to the PieCrust code, and to the many who reported bugs and had the patience to help me fix them.
Breaking changes
First, the breaking changes. There are a bit more than I’d like, but most of them should not be a problem to 99% of users:
- Chef’s command line interface has changed: global options now need to be passed first, before the command name. So for example, if you want debug output when baking, you need to type
chef --debug bake
. - The
pagination.posts
iterator can’t be modified anymore (i.e. calls toskip
orlimit
orfilter
will fail). You can use theblog.posts
iterator instead to do anything custom. - The
xmldate
Twig filter has been renamed toatomdate
. - There was a bug with the monthly blog archives (accessed with
blog.months
), where they would be incorrectly ordered chronologically. They are now ordered reverse-chronologically, like every other list of posts. - The
baker/trailing_slash
is nowsite/trailing_slash
, since PieCrust will also generate links with a trailing slash in the preview server, and not just during the bake, when that setting is enabled. The old setting is still available, though. - The
asset
template variable is renamedassets
. The old name is still available. - Specifying a link to a multi-tag listing page is now done with the array syntax:
{{pctagurl(['tag1', 'tag2'])}}
. The previous syntax quickly broke down as soon as somebody decided to have tags with slashes in their name 🙂
All those changes should give you an error message that’s easy to understand, or have backwards compatibility in place with a warning telling you about the change. Look out for those.
Sass, Compass and YUI Compressor
Previously available as plugins, the Sass, Compass and YUI Compressor file processors are now part of the core. There were enough people mentioning those tools, especially Compass, that it made sense to include them by default.
The Sass processor is very similar to the one previously available in the plugin. In the site configuration, you can specify include paths with sass/load_paths
, output style with sass/style
, or any custom option to pass to the Sass tool with sass/options
.
Compass support, however, has changed quite a bit, and should be now a lot better:
- You enable it by setting
compass/use_compass
totrue
. This will prevent the default Sass processor to run on your.scss
files. - If
.sass
or.scss
files are found in the website, thecompass
tool will be run at the end of the bake. It will by default use anyconfig.rb
found at the root of the site. You can otherwise specify where your Compass config is withcompass/config_path
, or ask PieCrust to auto-generate it for you withcompass/auto_config
totrue
. - It may be a good idea to add your config file to the
baker/skip_patterns
list, so that it’s not copied to the output directory.
To enable the YUI Compressor to run on anything that outputs CSS, specify the path to the .jar
file with yui/compressor/jar
.
Linking feature now official
For a while, there was a link
template variable that let you access other pages in the content tree. It was however never really official since I was still iterating on the design.
It’s now official, and available through the siblings
template variable. It will return the pages and directories next to the current page.
To return the whole family tree starting from the current page, you can use family
. It’s like a subset of site.pages
.
Auto-format extensions
Another popular request is the ability to use different file extensions for pages and posts, like .md
for Markdown content or .textile
for Textile content.
This is now possible with site/auto_formats
. This is a list that maps an extension to a format name:
site:
auto_formats:
md: markdown
mdown: markdown
Here I’m mapping *.md
and *.mdown
to the Markdown format. Files found with those extensions will be treated as if they were .html
files, but will also have their format set to markdown
.
Feed preparation
If you write a blog, you most probably want to have an RSS feed. You can have one prepared for you with: chef prepare feed myfeed.xml
. It will create a new page that has most of what you want by default. You can then go and tweak it if you want, of course.
Miscellaneous
A few other important changes:
- All libraries (including Twig, Markdown or Textile) have been upgraded to their latest versions.
- It is now possible to specify
posts_filters
on a tag or cateogory page (_tag.html
or_category.html
).