NAME

Stenciller - Transforms a flat file format to different output

Requires Perl 5.10.1+ Travis status coverage 90.0%

VERSION

Version 0.1400, released 2016-02-03.

SYNOPSIS

use Stenciller;
my $stenciller = Stenciller->new(filepath => 't/corpus/test-1.stencil');
my $content = $stenciller->transform(plugin_name => 'ToUnparsedText');

DESCRIPTION

Stenciller reads a special fileformat and provides a way to convert the content into different types of output. For example, it can be used to create documentation and tests from the same source file.

File format

== stencil {} ==

--input--

--end input--

--output--

--end output--

This is the basic layout. A stencil ends when a new stencil block is discovered (there is no fixed limit to the number of stencils in a file). The (optional) hash is for settings. Each stencil has five parts: before_input, input, between, output and after_output. In addition to this there is a header before the first stencil.

ATTRIBUTES

filepath

File required read-only

The textfile to parse.

is_utf8

Bool optional, default: 1 read-only

Determines how the stencil file is read.

skip_if_input_empty

Bool optional, default: 1 read-only

If a stencil has no input content, skip entire stencil.

skip_if_output_empty

Bool optional, default: 1 read-only

If a stencil has no output content, skip entire stencil.

header_lines

ArrayRef [ Str ] not in constructor read-only

After parsing, this contains all lines in the header.

stencils

ArrayRef [ Stencil ] not in constructor read-only

After parsing, this contains all parsed stencils.

METHODS

transform

$stenciller->transform(
    plugin_name => 'ToUnparsedText',
    constructor_args => {
        plugin_specific_args => ...,
    },
    tranform_args => {
        transformation_specific_args => ...,
    },
);

plugin_name is mandatory and should be a class under the Stenciller::Plugin namespace.

constructor_args is optional. This hash reference will be passed on to the plugin constructor. Valid keys depends on the plugin.

transform_args is optional. This hash reference will be passed on to the transform method in the plugin. Valid keys depends on the plugin.

PLUGINS

The actual transforming is done by plugins. There are two plugins bundled in this distribution:

Custom plugins should be in the Stenciller::Plugin namespace and consume the Stenciller::Transformer role.

SOURCE

https://github.com/Csson/p5-Stenciller

HOMEPAGE

https://metacpan.org/release/Stenciller

AUTHOR

Erik Carlsson <info@code301.com>

COPYRIGHT AND LICENSE

This software is copyright (c) 2016 by Erik Carlsson.

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