Config::MVP::Assembler::WithBundles.3pm

Langue: en

Version: 2010-06-15 (ubuntu - 24/10/10)

Section: 3 (Bibliothèques de fonctions)

NAME

Config::MVP::Assembler::WithBundles - a role to make assemblers expand bundles

VERSION

version 2.101650

DESCRIPTION

Config::MVP::Assembler::WithBundles is a role to be composed into a Config::MVP::Assembler subclass. It allows some sections of configuration to be treated as bundles. When any section is ended, if that section represented a bundle, its bundle contents will be unrolled and will replace it in the sequence.

A package is considered a bundle if the this returns a defined method:

   my $method = $assembler->package_bundle_method($package);
 
 

The default implementation looks for a method callde "mvp_bundle_config", but "package_bundle_method" can be replaced to allow for other bundle-identifying information.

Bundles are expanded by a call to the assembler's "replace_bundle_with_contents" method, like this:

   $assembler->replace_bundle_with_contents($section, $method);
 
 

replace_bundle_with_contents

The default "replace_bundle_with_contents" method deletes the section from the sequence. It then gets a description of the new sections to introduce, like this:
   my @new_config = $bundle_section->package->$method({
     name    => $bundle_section->name,
     package => $bundle_section->package,
     payload => $bundle_section->payload,
   });
 
 

(We pass a hashref rather than a section so that bundles can be expanded synthetically without having to laboriously create a new Section.)

The returned @new_config is a list of arrayrefs, each of which has three entries:

   [ $name, $package, $payload ]
 
 

Each arrayref is converted into a section in the sequence. The $payload should be an arrayref of name/value pairs to be added to the created section.

AUTHOR

Ricardo Signes <rjbs@cpan.org> This software is copyright (c) 2010 by Ricardo Signes.

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