Ignore:
Timestamp:
06/19/19 20:02:16 (5 years ago)
Author:
nanardon
Message:

Add a way to dump object and all related objects

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Objects.pm

    r2235 r2267  
    839839    my ($self, $config, $base) = @_; 
    840840 
     841    $config->{level} ||= 0; 
    841842    my $otype = $self->type; 
    842843    $base ||= $self->base; 
    843844    my $dump; 
    844845    if (ref $self) { 
    845         $dump .= sprintf "# base %s: object %s/%s\n", 
     846        $dump .= sprintf "%s# base %s: object %s/%s\n", 
     847            ' ' x $config->{level}, 
    846848            $base->label, $self->type, $self->id; 
    847849    } 
    848     $dump .= sprintf "# %s\n", scalar(localtime); 
     850    $dump .= sprintf( 
     851        "%s# %s\n",  
     852        ' ' x $config->{level}, 
     853        scalar(localtime) 
     854    ); 
    849855 
    850856    foreach my $attr (sort { $a cmp $b } $base->list_canonical_fields($otype, 
     
    866872                    $_ ||= ''; 
    867873                    s/\r?\n/\\n/g; 
    868                     $dump .= sprintf("%s%s:%s\n",  
     874                    $dump .= sprintf("%s%s%s%s:%s\n", 
     875                        ' ' x $config->{level}, 
    869876                        $oattr->ro ? '# (ro) ' : '', 
     877                        $config->{level} ? $self->type . '[' . $self->id . '].' : '', 
    870878                        $attr, $_ ? " $_" : ''); 
    871879                } 
     
    883891        } 
    884892    } 
     893 
     894    if (ref $self && $config->{recur}) { 
     895          my %subobj = $self->ListChildObjects; 
     896          foreach my $otype (keys %subobj) { 
     897              foreach my $oname (sort @{ $subobj{$otype} }) { 
     898                  my $obj = $self->base->get_object($otype, $oname) or next; 
     899                  $dump .= "\n"; 
     900                  $dump .= $obj->dump({ %{$config || {}}, recur => $config->{recur}, level => $config->{level} + 2 }); 
     901              } 
     902          } 
     903    } 
     904 
    885905    return $dump; 
    886906} 
Note: See TracChangeset for help on using the changeset viewer.