NAME

App::Embra - build a site from parts

VERSION

version 0.001

DESCRIPTION

App::Embra collates your content into a static website.

ATTRIBUTES

plugins

The objects which will help you build your site. An array reference of objects which implement App::Embra::Role::Plugin.

files

Your site content. An array reference of App::Embra::File instances. Plugins add, remove, read, and alter files via this attribute.

METHODS

from_config_mvp_sequence

my $embra = App::Embra->from_config_mvp_sequence( $sequence );

Returns a new App::Embra with its attributes & plugins taken from a Config::MVP::Sequence. Called by the command-line base class whenever embra is run.

add_plugin

$embra->add_plugin( $plugin );

Adds a plugin to /plugins. $plugin must implement App::Embra::Role::Plugin.

find_plugin

my $plugin = $embra->find_plugin( $class );

Returns the first plugin in /plugins with class $class. Returns an emtpy list if no plugin with class $class is present

collate

$embra->collate;

Assembles your site. Plugins are called in this order:

  • gather

  • prune

  • transform

  • assemble

  • publish

For each of the types, all plugins which implement App::Embra::Role::File<Type> have their <type>_files> method called, in ths same order as they appear in /plugins.

plugins_with

say for $embra->plugins_with( $rolename );

Returns all elements of /plugins which implement $rolename. Role names should be fully specified; as a shorthand, you can pass <-<relative_role_name >> and it will be treated as if you had specified App::Embra::Role::<relative_role_name>.

SEE ALSO

AUTHOR

Daniel Holz <dgholz@gmail.com>

COPYRIGHT AND LICENSE

This software is copyright (c) 2015 by Daniel Holz.

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