NAME

Janus::Sequence::Code - Load maintenence plugin code.

SYNOPSIS

use Janus::Sequence::Code;

my $code = Janus::Sequence::Code->load( '/code/file' );
my ( $alpha, $omega ) = $code->dump( 'alpha', 'omega' );

CODE

Code file is expected to contain a package Janus::Plugin, where our $STATIC may be defined with a true value - a hint that our variables in this package should have a static effect.

Also, the package must return a HASH of ARRAY of CODE indexed by stage names.

Top level HASH consists of ARRAYs indexed by sequence names. Each ARRAY consists of CODE indexed by stage names. i.e. ARRAY is a flattened HASH, which guarantees order of stage invocations.

METHODS

load( $file )

Load code from file. Returns object.

dump( @name )

Returns code identified by @name.

static()

Returns true if static hint is on, false otherwise.

EXAMPLE

## this file may have any name, despite the package it contains.
package Janus::Plugin;

use strict;
use Data::Dumper;

## hint: modifications on our variables persist through all sub calls.
our $STATIC = 1;

our ( $foo, $bar ) = qw( foo bar );
our %hash = ( foo => 1, bar => 1 );

return
(
   alpha =>
   [
       foo => sub { print "$foo\n"; $bar = 'baz'; }, 
       bar => sub { print "$bar\n"; $foo = 'bar'; delete $hash{foo}; }
   ],

   omega =>
   [
       foo => sub { print "$foo\n"; },
       bar => sub { print "$bar\n"; print Dumper \%hash },
   ]
);