NAME

Dist::Zilla::Util::SimpleMunge - Make munging File::FromCode and File::InMemory easier.

VERSION

version 0.1.1

SYNOPSIS

use Dist::Zilla::Util::SimpleMunge qw( munge_file munge_files );
...;

sub somesub {
  ...;
  munge_file $file_from_zilla, {
    via => sub {
      my ( $file, $content ) = @_;
      ... mangle $content here ...;
      return $mangled;
    },
  };
}

FUNCTIONS

munge_file

# munge_file ( $FILE , \%CONFIGURATION )

munge_file(
  $zilla_file,
  {
    via => sub { ... },
      lazy => $laziness
  }
);

$FILE

A ::Role::File object to munge.

%CONFIGURATION

{
  via => $CODEREF,
  lazy => $LAZINESS,
}

$CODEREF

Called to munge the file itself.

Passed a reference to the ::Role::File instance, and a scalar containing the contents of that file.

Return new content for the file via return

sub {
  my ( $file, $content ) = @_ ;
  ...;
  return $newcontent;
}

$LAZINESS

Specify how lazy you want the munge to be performed. Normally, what this is set to is dependent on the type of file being munged.

$LAZINESS = undef ;  # use default for the file type
$LAZINESS = 0     ;  # Munge immediately
$LAZINESS = 1     ;  # Defer munging till as late as possible.

For things that are normally backed by scalar values, such as ::File::OnDisk and ::File::InMemory , the laziness is equivalent to $LAZINESS = 0 , which is not lazy at all, and munges the file content immediately.

For things backed by code, such as ::File::FromCode , munging defaults to $LAZINESS = 1 , where the actual munging sub you specify is executed as late as possible.

You can specify the $LAZINESS value explicitly if you want to customize the behaviour, i.e.: Make something that is presently a scalar type get munged as late as possible ( converting the file into a FromCode file ), or make something currently backed by code get munged "now", ( converting the file into a InMemory file )

munge_files

This is mostly a convenience utility for munging a lot of files without having to hand-code the looping logic.

It basically just proxies for "munge_file".

# munge_files ( \@FILEARRAY , \%CONFIGURATION )

munge_files( [ $zilla_file_one, $zilla_file_two, ], {
  via => sub { ... },
  lazy => $laziness,
});

@FILEARRAY

An ArrayRef of "$FILE"

See Also

AUTHOR

Kent Fredric <kentnl@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2011 by Kent Fredric <kentnl@cpan.org>.

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