package X11::Muralis::Backend;
$X11::Muralis::Backend::VERSION = '0.1003';
use strict;
use warnings;

=head1 NAME

X11::Muralis::Backend - display backend for X11::Muralis

=head1 VERSION

version 0.1003


    muralis --use I<backend>


This is the base class for backend modules for X11::Muralis.
Generally speaking, the only methods that backends need to override
are "new" and "display".


use File::Spec;

=head1 METHODS

=head2 new

There are two parameters that need to be set in "new";


=item prog

The name of the program which is used as the backend.

=item can_do

A hash containing the features that the backend provides.



sub new {
    my $class = shift;
    my %parameters = @_;
    my $self = bless ({%parameters}, ref ($class) || $class);
    return ($self);
} # new

=head2 name

The name of the backend; this is basically the last component
of the module name.  This works as either a class function or a method.

$name = $self->name();

$name = X11::Muralis::Backend::name($class);


sub name {
    my $class = shift;
    my $fullname = (ref ($class) ? ref ($class) : $class);

    my @bits = split('::', $fullname);
    return pop @bits;
} # name

=head2 active

Returns true if the backend program is available to run.
This is checked by searching the PATH environment variable and checking
for the existence of $self->{prog}


sub active {
    my $self = shift;

    my @path = split(':', $ENV{PATH});
    my $found = 0;
    foreach my $dir (@path)
	my $file = File::Spec->catfile($dir, $self->{prog});
	if (-f $file)
	    $found = 1;
    return $found;
} # active

=head2 provides

Returns a hash of the features the backend has enabled.


sub provides {
    my $self = shift;

    my %prov = ();
    if (defined $self->{can_do})
	%prov = %{$self->{can_do}};
    return %prov;
} # provides

=head2 display

Display the file, with the given options.
THis must be overridden by the specific backend class.


sub display {
    my $self = shift;

    return 0;
} # display




To install this module, run the following commands:

    perl Build.PL
    ./Build test
    ./Build install

Or, if you're on a platform (like DOS or Windows) that doesn't like the
"./" notation, you can do this:

   perl Build.PL
   perl Build
   perl Build test
   perl Build install

In order to install somewhere other than the default, such as
in a directory under your home directory, like "/home/fred/perl"

   perl Build.PL --install_base /home/fred/perl

as the first step instead.

This will install the files underneath /home/fred/perl.

You will then need to make sure that you alter the PERL5LIB variable to
find the modules, and the PATH variable to find the script.

Therefore you will need to change:
your path, to include /home/fred/perl/script (where the script will be)


the PERL5LIB variable to add /home/fred/perl/lib


=head1 SEE ALSO


=head1 BUGS

Please report any bugs or feature requests to the author.

=head1 AUTHOR

    Kathryn Andersen RUBYKAT
    perlkat AT katspace DOT org


Copyright (c) 2008 by Kathryn Andersen

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


1; # End of X11::Muralis::Backend