Statocles::Store - The source for data documents and files


A Statocles::Store reads and writes documents and files (mostly pages).

This class also handles the parsing and inflating of "document objects".

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".



    my $bool = $store->is_document( $path );

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


    my $bool = $store->has_file( $path )

Returns true if a file exists with the given path.


    $store->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.


    $store->remove( $path )

Remove the given path from the store. If the path is a directory, the entire directory is removed.


    my $iter = $store->iterator;

Iterate over all the objects in this store. Returns an iterator that will yield a Statocles::Document object or a Statocles::File object.

Hidden files and folders are automatically ignored by this method.

    my $iter = $store->iterator;
    while ( my $obj = $iter->() ) {
        if ( $obj->isa( 'Statocles::Document' ) ) {
        else {