App-SimpleScan-Plugin-Snapshot

 view release on metacpan or  search on metacpan

lib/App/SimpleScan/Plugin/Snapshot.pm  view on Meta::CPAN

package App::SimpleScan::Plugin::Snapshot;

our $VERSION = '1.03';

use warnings;
use strict;
use Carp;
use File::Path;

my($snapdir, $snapshot, $snap_prefix, $snap_layout);

sub import {
  no strict 'refs';
  *{caller() . '::snapshot'}     = \&snapshot;
  *{caller() . '::snapshots_to'} = \&snapshots_to;
  *{caller() . '::snap_prefix'}  = \&snap_prefix;
  *{caller() . '::snap_layout'}  = \&snap_layout;
}

sub snapshot {
  my($self, $value) = @_;
  $snapshot = $value if defined $value;
  $snapshot;
}

sub snap_layout {
  my($self, $value) = @_;
  $snap_layout = $value if defined $value;
  $snap_layout;
}

sub snapshots_to {
  my($self, $value) = @_;
  $snapdir = $value if defined $value;
  $snapdir;
}

sub snap_prefix {
  my($self, $value) = @_;
  $snap_prefix = $value if defined $value;
  $snap_prefix;
}

sub options {
  return ('snap_dir=s'    => \$snapdir,
          'snap_prefix=s' => \$snap_prefix,
          'snapshot=s'    => \$snapshot,
          'snap_layout=s' => \$snap_layout,
  );
}

sub validate_options {
  my($class, $app) = @_;
  if (defined (my $dir = $app->snapshots_to)) {
    $app->pragma('snap_dir')->($app, $dir);
  } 
  if (defined (my $prefix = $app->snap_prefix)) {
    $app->pragma('snap_prefix')->($app, $prefix);
  } 
  if (defined (my $layout = $app->snap_layout)) {
    $app->pragma('snap_layout')->($app, $layout);
  } 
}

sub pragmas {
  return (['snap_dir'    => \&snapshot_dir_pragma],
          ['snapshot'    => \&snapshot_pragma],
          ['snap_prefix' => \&snap_prefix_pragma],
          ['snap_layout' => \&snap_layout_pragma],
         );
}

sub snapshot_dir_pragma {
  my ($self, $args) = @_;
  $self->stack_code(qq(mech->snapshots_to("$args");\n));
}



( run in 1.380 second using v1.01-cache-2.11-cpan-437f7b0c052 )