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

NAME

Farly::Object - Generic Farly entity object

SYNOPSIS

  use Farly::Object;
  
  my $object1 = Farly::Object->new();
  my $object2 = Farly::Object->new();
  
  $object1->set( 'id', Farly::Value::String->new('id1234') );
  $object2->set( 'id', Farly::Value::String->new('id1234') );

  print $object1->get( 'id' )->as_string();

  $object1->equals( $object2 ) ? print "Yes, the objects are equal";

DESCRIPTION

Farly::Object is a generic entity object which can be used to model a variety of objects without having to write a large number of classes.

Farly::Objects use string keys to set and access value objects.

Value objects must be wrapped in an object supporting the "equals," "contains," "intersects," "as_string," and "compare" methods.

The "equals," "contains," and "intersects," methods allow two Farly::Object object properties to be compared.

The "equals," "contains," and "intersects" methods allow searching of Farly::Object objects within a Farly::Object::List.

The "compare" method allows Farly::Objects to be easily sorted and grouped.

METHODS

new()

The constructor.

   my $object = Farly::Object->new();

No arguments.

clone()

Returns a new Farly::Object object with the same key value pairs as the original object.

  my $cloned_object = $object->clone(); 

Does not copy the value objects.

set( <string>, <value object> )

Set a key value pair.

  $object->set( 'key',  Farly::Value::String->new("string") );

Set throws an exception if the value object does not support the required methods.

Same as:

  $object->{ 'key' } = Farly::Value::String->new("string");

Without type checking.

get( <string> )

Get a value object.

  my $value = $object->get( 'key' );

Throws an exception if the specified key if not defined.

Same as:

  my $value = $object->{'key'};

Without checking that the key is defined.

equals( $other<Farly::Object> )

Returns true if all keys exist in both objects and the corresponding value objects are equal.

  $object1->equals( $object2 );
  

matches( $other<Farly::Object> )

Returns true if all keys in $object2 exist in $object1 and the corresponding value objects are equal.

Returns false if $object2 has a key which does not exist in $object1.

  $object1->matches( $object2 );

intersects( $other<Farly::Object> )

Returns true if all keys in $object2 exist in $object1 and the corresponding value objects intersect.

Returns false if $object2 has a key which does not exist in $object1.

  $object1->intersects( $object2 );

contains( $other<Farly::Object> )

Returns true if all keys in $object2 exist in $object1 and the corresponding value objects in $object1 contain the corresponding value objects in $object2.

Returns false if $object2 has a key which does not exist in $object1.

  $object1->contains( $object2 );

contained_by( $other<Farly::Object> )

Returns true if all keys in $object2 exist in $object1 and the corresponding value objects in $object2 contain the corresponding value objects in $object1.

Returns false if $object2 has a key which does not exist in $object1.

  $object1->contained_by( $object2 );

get_keys()

Returns 'ARRAY' of currently defined keys.

  my @keys = $object->get_keys()

Same as:

  my @keys = keys( %$object );

has_defined( <string> )

Returns true if a key value pair is defined.

  $object->has_defined( 'key' );

Same as:

  defined( $object->{'key'} );

delete_key( <string> )

Delete a key value pair.

  $object->delete_key( 'key' );

Same as.

  delete( $object->{'key'} );

as_string()

For debugging only.

dump()

For debugging only.

  print $object->dump();

COPYRIGHT AND LICENCE

Farly::Object Copyright (C) 2013 Trystan Johnson

This program 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 3 of the License, or (at your option) any later version.

This program 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 this program. If not, see <http://www.gnu.org/licenses/>.