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/>.