summaryrefslogtreecommitdiff
path: root/lib/Net/XRC/Data/complex.pm
blob: 5c0e5b633ebb0603d75d9d9202286153feacd8cf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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
                     ).
            ")";
}