|
NAMEConfig::MVP::Assembler::WithBundles - a role to make assemblers expand bundlesVERSIONversion 2.200012DESCRIPTIONConfig::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 "package_bundle_method" returns a defined value (which is the name of a method that will be called on that package to retrieve its bundle config). my $method = $assembler->package_bundle_method($package); The default implementation looks for a method called "mvp_bundle_config", but "package_bundle_method" can be replaced with one that returns the name of a different bundle-identifying method-name. 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_contentsThe 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. AUTHORRicardo Signes <rjbs@cpan.org>COPYRIGHT AND LICENSEThis software is copyright (c) 2021 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.
Visit the GSP FreeBSD Man Page Interface. |