diff options
Diffstat (limited to 'lib/Net/XRC/Data/complex.pm')
-rw-r--r-- | lib/Net/XRC/Data/complex.pm | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/Net/XRC/Data/complex.pm b/lib/Net/XRC/Data/complex.pm new file mode 100644 index 0000000..5c0e5b6 --- /dev/null +++ b/lib/Net/XRC/Data/complex.pm @@ -0,0 +1,22 @@ +package Net::XRC::Data::complex; + +use strict; +use vars qw(@ISA); +use Net::XRC::Data; + +@ISA = qw(Net::XRC::Data); + +sub encode { + my $self = shift; + my %hash = %$self; + my $typename = delete $hash{_type}; + ":$typename(". join("\n", map { + "$_ ". + isa( $hash{$_}, 'Net::XRC::Data' ) + ? $hash{$_}->encode + : Net::XRC::Data->new($hash{$_})->encode + } + keys %hash + ). + ")"; +} |