The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Stencil - Code Generation

ABSTRACT

Code Generation Tool for Perl 5

SYNOPSIS

  use Stencil;
  use Stencil::Repo;
  use Stencil::Space;
  use Stencil::Data;

  my $repo = Stencil::Repo->new;
  my $space = Stencil::Space->new(name => 'test', repo => $repo);
  my $spec = Stencil::Data->new(name => 'foo', repo => $repo);
  my $stencil = Stencil->new(repo  => $repo, space => $space, spec  => $spec);

  # $stencil->init;
  # $stencil->seed;
  # $stencil->make;

DESCRIPTION

This package provides a framework for generating source code, and methods for rapidly generating one or more files from a single, human readable specification. See the stencil command-line tool for additional usage details.

LIBRARIES

This package uses type constraints from:

Types::Standard

ATTRIBUTES

This package has the following attributes:

repo

  repo(Object)

This attribute is read-only, accepts (Object) values, and is required.

space

  space(Maybe[Object])

This attribute is read-only, accepts (Maybe[Object]) values, and is required.

spec

  spec(Maybe[Object])

This attribute is read-only, accepts (Maybe[Object]) values, and is required.

METHODS

This package implements the following methods:

init

  init() : Object

The init method initialize the stencil store and logs.

init example #1
  # given: synopsis

  $stencil->init;

make

  make() : ArrayRef[Object]

The make method generate source code from the generator specification (yaml) file.

make example #1
  # given: synopsis

  $stencil->seed;
  $stencil->make;

seed

  seed() : Object

The seed method creates the generator specification (yaml) file.

seed example #1
  # given: synopsis

  $stencil->seed;

AUTHOR

Al Newkirk, awncorp@cpan.org

LICENSE

Copyright (C) 2011-2019, Al Newkirk, et al.

This is free software; you can redistribute it and/or modify it under the terms of the The Apache License, Version 2.0, as elucidated in the "license file".

PROJECT

Wiki

Project

Initiatives

Milestones

Contributing

Issues