PerlBean::Dependency::Import - Import dependency in a Perl bean


PerlBean documentation Contained in the PerlBean distribution.

Index


Code Index:

NAME

Top

PerlBean::Dependency::Import - Import dependency in a Perl bean

SYNOPSIS

Top

TODO

ABSTRACT

Top

Import dependency in a Perl bean

DESCRIPTION

Top

PerlBean::Dependency::Import is a class to express import dependencies to classes/modules/files in a PerlBean.

CONSTRUCTOR

Top

new( [ OPT_HASH_REF ] )

Creates a new PerlBean::Dependency::Import object. OPT_HASH_REF is a hash reference used to pass initialization options. On error an exception Error::Simple is thrown.

Options for OPT_HASH_REF may include:

import_list

Passed to set_import_list(). Must be an ARRAY reference.

Options for OPT_HASH_REF inherited through package PerlBean::Dependency may include:

dependency_name

Passed to set_dependency_name().

volatile

Passed to set_volatile().

METHODS

Top

exists_import_list(ARRAY)

Returns the count of items in ARRAY that are in the list after the dependency_name.

get_dependency_name()

This method is inherited from package PerlBean::Dependency. Returns the dependency name.

get_import_list( [ INDEX_ARRAY ] )

Returns an ARRAY containing the list after the dependency_name. INDEX_ARRAY is an optional list of indexes which when specified causes only the indexed elements in the ordered list to be returned. If not specified, all elements are returned.

is_volatile()

This method is inherited from package PerlBean::Dependency. Returns whether the dependency is volatile or not.

pop_import_list()

Pop and return an element off the list after the dependency_name. On error an exception Error::Simple is thrown.

push_import_list(ARRAY)

Push additional values on the list after the dependency_name. ARRAY is the list value. On error an exception Error::Simple is thrown.

set_dependency_name(VALUE)

This method is inherited from package PerlBean::Dependency. Set the dependency name. VALUE is the value. On error an exception Error::Simple is thrown.

VALUE must match regular expression:

^.*[a-zA-Z].*$

set_idx_import_list( INDEX, VALUE )

Set value in the list after the dependency_name. INDEX is the integer index which is greater than or equal to 0. VALUE is the value.

set_import_list(ARRAY)

Set the list after the dependency_name absolutely. ARRAY is the list value. On error an exception Error::Simple is thrown.

set_num_import_list( NUMBER, VALUE )

Set value in the list after the dependency_name. NUMBER is the integer index which is greater than 0. VALUE is the value.

set_volatile(VALUE)

This method is inherited from package PerlBean::Dependency. State that the dependency is volatile. VALUE is the value. On error an exception Error::Simple is thrown.

shift_import_list()

Shift and return an element off the list after the dependency_name. On error an exception Error::Simple is thrown.

unshift_import_list(ARRAY)

Unshift additional values on the list after the dependency_name. ARRAY is the list value. On error an exception Error::Simple is thrown.

write(FILEHANDLE)

This method is an implementation from package PerlBean::Dependency. Writes code for the dependency. FILEHANDLE is an IO::Handle object.

SEE ALSO

Top

PerlBean, PerlBean::Attribute, PerlBean::Attribute::Boolean, PerlBean::Attribute::Factory, PerlBean::Attribute::Multi, PerlBean::Attribute::Multi::Ordered, PerlBean::Attribute::Multi::Unique, PerlBean::Attribute::Multi::Unique::Associative, PerlBean::Attribute::Multi::Unique::Associative::MethodKey, PerlBean::Attribute::Multi::Unique::Ordered, PerlBean::Attribute::Single, PerlBean::Collection, PerlBean::Dependency, PerlBean::Dependency::Require, PerlBean::Dependency::Use, PerlBean::Described, PerlBean::Described::ExportTag, PerlBean::Method, PerlBean::Method::Constructor, PerlBean::Method::Factory, PerlBean::Style, PerlBean::Symbol

BUGS

Top

None known (yet.)

HISTORY

Top

First development: March 2003 Last update: September 2003

AUTHOR

Top

Vincenzo Zocca

COPYRIGHT

Top

LICENSE

Top

This file is part of the PerlBean module hierarchy for Perl by Vincenzo Zocca.

The PerlBean module hierarchy is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

The PerlBean module hierarchy is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with the PerlBean module hierarchy; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA


PerlBean documentation Contained in the PerlBean distribution.

package PerlBean::Dependency::Import;

use 5.005;
use base qw( PerlBean::Dependency );
use strict;
use warnings;
use AutoLoader qw(AUTOLOAD);
use Error qw(:try);

# Package version
our ($VERSION) = '$Revision: 1.0 $' =~ /\$Revision:\s+([^\s]+)/;

1;

__END__

sub _initialize {
    my $self = shift;
    my $opt = defined($_[0]) ? shift : {};

    # Check $opt
    ref($opt) eq 'HASH' || throw Error::Simple("ERROR: PerlBean::Dependency::Import::_initialize, first argument must be 'HASH' reference.");

    # import_list, MULTI
    if ( exists( $opt->{import_list} ) ) {
        ref( $opt->{import_list} ) eq 'ARRAY' || throw Error::Simple("ERROR: PerlBean::Dependency::Import::_initialize, specified value for option 'import_list' must be an 'ARRAY' reference.");
        $self->set_import_list( @{ $opt->{import_list} } );
    }
    else {
        $self->set_import_list();
    }

    # Call the superclass' _initialize
    $self->SUPER::_initialize($opt);

    # Return $self
    return($self);
}

sub _value_is_allowed {
    return(1);
}

sub exists_import_list {
    my $self = shift;

    # Count occurrences
    my $count = 0;
    foreach my $val1 (@_) {
        foreach my $val2 ( @{ $self->{PerlBean_Dependency_Import}{import_list} } ) {
            ( $val1 eq $val2 ) && $count ++;
        }
    }
    return($count);
}

sub get_import_list {
    my $self = shift;

    if ( scalar(@_) ) {
        my @ret = ();
        foreach my $i (@_) {
            push( @ret, $self->{PerlBean_Dependency_Import}{import_list}[ int($i) ] );
        }
        return(@ret);
    }
    else {
        # Return the full list
        return( @{ $self->{PerlBean_Dependency_Import}{import_list} } );
    }
}

sub pop_import_list {
    my $self = shift;

    # Pop an element from the list
    return( pop( @{ $self->{PerlBean_Dependency_Import}{import_list} } ) );
}

sub push_import_list {
    my $self = shift;

    # Check if isas/refs/rxs/values are allowed
    &_value_is_allowed( 'import_list', @_ ) || throw Error::Simple("ERROR: PerlBean::Dependency::Import::push_import_list, one or more specified value(s) '@_' is/are not allowed.");

    # Push the list
    push( @{ $self->{PerlBean_Dependency_Import}{import_list} }, @_ );
}

sub set_idx_import_list {
    my $self = shift;
    my $idx = shift;
    my $val = shift;

    # Check if index is a positive integer or zero
    ( $idx == int($idx) ) || throw Error::Simple("ERROR: PerlBean::Dependency::Import::set_idx_import_list, the specified index '$idx' is not an integer.");
    ( $idx >= 0 ) || throw Error::Simple("ERROR: PerlBean::Dependency::Import::set_idx_import_list, the specified index '$idx' is not a positive integer or zero.");

    # Check if isas/refs/rxs/values are allowed
    &_value_is_allowed( 'import_list', $val ) || throw Error::Simple("ERROR: PerlBean::Dependency::Import::set_idx_import_list, one or more specified value(s) '@_' is/are not allowed.");

    # Set the value in the list
    $self->{PerlBean_Dependency_Import}{import_list}[$idx] = $val;
}

sub set_import_list {
    my $self = shift;

    # Check if isas/refs/rxs/values are allowed
    &_value_is_allowed( 'import_list', @_ ) || throw Error::Simple("ERROR: PerlBean::Dependency::Import::set_import_list, one or more specified value(s) '@_' is/are not allowed.");

    # Set the list
    @{ $self->{PerlBean_Dependency_Import}{import_list} } = @_;
}

sub set_num_import_list {
    my $self = shift;
    my $num = shift;

    # Check if index is an integer
    ( $num == int($num) ) || throw Error::Simple("ERROR: PerlBean::Dependency::Import::set_num_import_list, the specified number '$num' is not an integer.");

    # Call set_idx_import_list
    $self->set_idx_import_list( $num - 1, @_ );
}

sub shift_import_list {
    my $self = shift;

    # Shift an element from the list
    return( shift( @{ $self->{PerlBean_Dependency_Import}{import_list} } ) );
}

sub unshift_import_list {
    my $self = shift;

    # Check if isas/refs/rxs/values are allowed
    &_value_is_allowed( 'import_list', @_ ) || throw Error::Simple("ERROR: PerlBean::Dependency::Import::unshift_import_list, one or more specified value(s) '@_' is/are not allowed.");

    # Unshift the list
    unshift( @{ $self->{PerlBean_Dependency_Import}{import_list} }, @_ );
}

sub write {
    my $self = shift;
    my $fh = shift;

    my $dn = $self->get_dependency_name();
    my $tail ='';

    if ( $self->get_import_list() ) {
        $tail .= ' ';
        $tail .= join( ', ', $self->get_import_list() );
    }
    $fh->print( "import $dn$tail;\n" )
}