Skip to content

rwstauner/Config-MVP-Writer-INI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

55 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status Coverage Status Kwalitee status

NAME

Config::MVP::Writer::INI - Build an INI file for Config::MVP

VERSION

version 0.005

SYNOPSIS

my $ini = Config::MVP::Writer::INI->new->ini_string(\@sections);

DESCRIPTION

This class takes a collection of Config::MVP style data structures and writes them to a string in INI format.

One usage example would be to create a roughly equivalent INI file from the output of a plugin bundle (Dist::Zilla, Pod::Weaver, etc.).

The author makes no claim that this would actually be useful to anyone.

ATTRIBUTES

spacing

Defines the spacing between sections. Must be one of the following:

  • payload

    (Default) Put blank lines around sections with a payload

  • all

    Put a blank line between all sections

  • none

    No blank lines

strip_bundle_prefix

Boolean: Always remove the leading @BundleName/ part of a section name. This cuts down on the noise when the name is actually different from the package moniker (but the prefix isn't desired). Defaults to true.

rewrite_package

This attribute is a coderef that will be used to munge the package name of each section. The package will be passed as the only argument (and also available as $_) and should return the translation. If nothing is returned the original package will be used.

This can be used to flavor the INI for a particular application. For example:

rewrite_package => sub { s/^MyApp::Plugin::/-/r; }

will transform an array ref of

[ Stinky => 'MyApp::Plugin::Nickname' => {real_name => "Dexter"} ]

into an INI string of

[-Nickname / Stinky]
real_name = Dexter

METHODS

ini_string

This takes an array ref of array refs, each one being a Config::MVP style section specification:

[
  [ $name, $package, \%payload ],
]

and returns a string.

For convenience a few specification shortcuts are recognized:

$name                => [ $name, $name, {} ]
[ $name ]            => [ $name, $name, {} ]
[ $name, $package ]  => [ $name, $package, {} ]
[ $name, \%payload ] => [ $name, $name, \%payload ]

WARNING

This code is very much in an alpha state and the API is likely to change. As always, suggestions, bug reports, patches, and pull requests are welcome.

TODO

  • Documentation
  • More tests
  • Allow payload to be an arrayref for explicit ordering

SUPPORT

Perldoc

You can find documentation for this module with the perldoc command.

perldoc Config::MVP::Writer::INI

Websites

The following websites have more information about this module, and may be of help to you. As always, in addition to those websites please use your favorite search engine to discover more resources.

Bugs / Feature Requests

Please report any bugs or feature requests by email to bug-config-mvp-writer-ini at rt.cpan.org, or through the web interface at https://rt.cpan.org/Public/Bug/Report.html?Queue=Config-MVP-Writer-INI. You will be automatically notified of any progress on the request by the system.

Source Code

https://github.com/rwstauner/Config-MVP-Writer-INI

git clone https://github.com/rwstauner/Config-MVP-Writer-INI.git

AUTHOR

Randy Stauner rwstauner@cpan.org

CONTRIBUTOR

Karen Etheridge ether@cpan.org

COPYRIGHT AND LICENSE

This software is copyright (c) 2012 by Randy Stauner.

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

About

Build an INI file for Config::MVP

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages