The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Data::Validate::Structure - handle a structure in custom ways

SYNOPSIS

        use Data::Validate::Structure;

        my $structure = Structure->new( $data );

        # Check sub structures matches exactly
        $structure == $structure2

        # Check sub structures matches equaly (array order not important)
        $structure eq $structure

        # Check structure contains all of structure2 at least
        $structure >= $structure2

        # Check structure2 contains all of structure at least
        $structure <= $structure2

        # structure much contain structure2 but not equal it
        $structure > $structure2

        # structure2 must contain structure but not equal it
        $structure < $structure2

        # Make sure structure does not exactly match structure2
        $structure != $structure2

        # Remove all parts of structure2 from structure
        $structure - $structure2
        $structure -= $structure2

        # Merge two structures together
        $structure + $structure2
        $structure += $structure2

DESCRIPTION

  Take a structure and attempt to allow some basic structure
  to structure testing.

METHODS

$class->new( $structure )

  Create a new structure.

$structure->disabled()

  Internal method, wht to do when a function is disabled.

$structure->equal( $otherstructure )

 Test that structure is the same as other structure.

$structure->notequal( $otherstructure )

 Test that structure is not the same as other structure.

$structure->_equal( $otherstructure )

  Internal method for testing structural equiverlance.

$structure->identical( $otherstructure )

  Return true if structure is identical.

$structure->notidentical( $otherstructure )

  Return true if structure is not identical.

$structure->_identical( $otherstructure )

  Return true if structure is identical (internal).

$structure->_autoself()

    Return true if the caller was internal.

$structure->autovalue()

  Return the structure

$structure->autoname()

  Return the structure name

$structure->autobool()

    Returns the truth of the structure

$structure->structure()

    Return the structure directly

$structure->name()

    Return the name directly

$structure->_eq( $otherstructure, %p )

    Return true if other structure is equle.

$structure->_eq_hash( $otherhash, %p )

  Return true if other hash is equle.

$structure->_eq_array( $otherarray )

  Return true if other array is equle.

$structure->plus( $otherstructure )

  Return the current structure plus another structure

$structure->pluseq( $otherstructure )

  Append another structure.

$structure->_plus( $otherstructure )

  Internal method for merging two structures.

$structure->_pluseq( $otherstructure )

  Internal method for returning two structures.

$structure->_plus_hash( $otherstructure )

  Return the current hash plus another hash

$structure->_plus_array( $otherstructure )

  Return the current array plus another array

$structure->_plus_scalar( $otherstructure )

  Deal with conflicting scalar data (atm we ignore)

$structure->subtract( $otherstructure )

  Return the current structure minus a sub structure

$structure->subeq( $otherstructure )

  Remove a sub structure from the current structure.

$structure->_sub_array( $otherstructure )

  Remove array elements using structure (NOT FINISHED).

$structure->_sub_hash( $otherstructure )

  Return the current hash minus a sub hash

$structure->_sub_scalar( $otherstructure )

  Remove a scalar so long as it's eq

$structure->_sctref( $otherstructure )

  Get the structure reference and the object.

$structure->_clone( $otherstructure )

  Make a clone of a structure.

$structure->_sctclone( $otherstructure )

  Make a structure object clone.

$structure->_sctdeal( $otherstructure )

  Sort out each request so that it goes to the right place
  and so that the comparisons are fair.

AUTHOR

 Copyright, Martin Owens 2005-2008, Affero General Public License (AGPL)

 http://www.fsf.org/licensing/licenses/agpl-3.0.html