Statocles::Store::File - A store made up of plain files


version 0.051


This store reads/writes files from the filesystem.

Frontmatter Document Format

Documents are formatted with a YAML document on top, and Markdown content on the bottom, like so:

    title: This is a title
    author: preaction
    # This is the markdown content
    This is a paragraph



The path to the directory containing the documents.


An array of file extensions that should be considered documents. Defaults to "markdown" and "md".


All the documents currently read by this store.



Clear the cached documents in this Store.


Read the directory path and create the document objects inside.

read_document( path )

Read a single document in Markdown with optional YAML frontmatter.

parse_frontmatter( $from, $content )

Parse a document with YAML frontmatter. $from is a string identifying where the content comes from (a path or other identifier). $content is the content to parse for frontmatter.

write_document( $path, $doc )

Write a document to the store. Returns the full path to the newly-updated document.

The document is written in Frontmatter format.

is_document( $path )

Returns true if the path looks like a document path (matches the "document_extensions").

read_file( $path )

Read the file from the given path.

has_file( $path )

Returns true if a file exists with the given path.

NOTE: This should not be used to check for directories, as not all stores have directories.

find_files( %opt )

Returns an iterator that, when called, produces a single path suitable to be passed to read_file.

Available options are:

    include_documents      - If true, will include files that look like documents.
                             Defaults to false.

open_file( $path )

Open the file with the given path. Returns a filehandle.

The filehandle opened is using raw bytes, not UTF-8 characters.

write_file( $path, $content )

Write the given content to the given path. This is mostly used to write out page objects.

content may be a simple string or a filehandle. If given a string, will write the string using UTF-8 characters. If given a filehandle, will write out the raw bytes read from it with no special encoding.


Doug Bell <>


This software is copyright (c) 2015 by Doug Bell.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.