/[cvs]/nfo/perl/libs/Data/Mungle/Transform/Deep.pm
ViewVC logotype

Diff of /nfo/perl/libs/Data/Mungle/Transform/Deep.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.13 by joko, Fri Feb 21 01:48:50 2003 UTC revision 1.19 by jonen, Fri Mar 28 03:11:25 2003 UTC
# Line 2  Line 2 
2  ##  $Id$  ##  $Id$
3  ## ---------------------------------------------------------------------------  ## ---------------------------------------------------------------------------
4  ##  $Log$  ##  $Log$
5    ##  Revision 1.19  2003/03/28 03:11:25  jonen
6    ##  + bugfix
7    ##
8    ##  Revision 1.18  2003/03/28 03:07:26  jonen
9    ##  + minor changes
10    ##
11    ##  Revision 1.17  2003/03/27 15:17:07  joko
12    ##  namespace fixes for Data::Mungle::*
13    ##
14    ##  Revision 1.16  2003/03/27 15:04:52  joko
15    ##  minor update: comment
16    ##
17    ##  Revision 1.15  2003/02/27 14:39:48  jonen
18    ##  + fixed bug at _hash2object()
19    ##
20    ##  Revision 1.14  2003/02/22 17:13:55  jonen
21    ##  + added function 'childObject2string()' to encode 'child'-references to option related string
22    ##  + use new option at 'expand()' for replacing 'childObject2string'
23    ##
24  ##  Revision 1.13  2003/02/21 01:48:50  joko  ##  Revision 1.13  2003/02/21 01:48:50  joko
25  ##  renamed core function  ##  renamed core function
26  ##  ##
# Line 49  Line 68 
68  ## ---------------------------------------------------------------------------  ## ---------------------------------------------------------------------------
69    
70    
71  package Data::Transform::Deep;  package Data::Mungle::Transform::Deep;
72    
73  use strict;  use strict;
74  use warnings;  use warnings;
# Line 68  use Data::Dumper; Line 87  use Data::Dumper;
87  use Iterate;  use Iterate;
88    
89  use Pitonyak::DeepCopy;  use Pitonyak::DeepCopy;
90  use Data::Transform::Encode qw( latin_to_utf8 latin_to_utf8_scalar utf8_to_latin utf8_to_latin_scalar );  use Data::Mungle::Transform::Encode qw( latin_to_utf8 latin_to_utf8_scalar utf8_to_latin utf8_to_latin_scalar );
91  use Data::Code::Ref qw( ref_slot );  use Data::Mungle::Code::Ref qw( ref_slot );
92    
93  sub numhash2list {  sub numhash2list {
94    my $vref = shift;    my $vref = shift;
# Line 155  sub expand { Line 174  sub expand {
174        my $item;        my $item;
175        # if current item is a reference ...        # if current item is a reference ...
176        if (ref $_[0]) {        if (ref $_[0]) {
177          # ... expand structure recursively          $item = $_[0];
178          $item = expand($_[0], $options);          # if $options->{childObj2string} is TRUE or STRING don't expand referenced object,
179            # instead replace it by per option choosed string (default: o_<classname>_<ref type>_<guid> )
180            if ($item && $options->{childObj2string}) {
181              $item = childObj2string($item, $options->{childObj2string});
182            } else {
183              # ... expand structure recursively
184              $item = expand($_[0], $options);
185            }
186          # destroy item via seperate callback method (a POST) if requested          # destroy item via seperate callback method (a POST) if requested
187          #$options->{cb}->{destroy}->($_[0]) if $options->{destroy};          #$options->{cb}->{destroy}->($_[0]) if $options->{destroy};
188    
# Line 185  sub expand { Line 211  sub expand {
211                
212        # if current item is a reference ...        # if current item is a reference ...
213        if (ref $_[1]) {        if (ref $_[1]) {
214          # ... expand structure recursively          $item = $_[1];
215          $item = expand($_[1], $options);          # if $options->{childObj2string} is TRUE or STRING don't expand referenced object,
216            # instead replace it by per option choosed string (default: o_<classname>_<ref type>_<guid> )
217            if ($item && $options->{childObj2string} && !(ref $_[1] eq "ARRAY") && !(ref $_[1] eq "HASH")) {
218              $item = childObj2string($item, $options->{childObj2string});
219            } else {
220              # ... expand structure recursively
221              $item = expand($_[1], $options);
222            }
223          # destroy item via seperate callback method (a POST) if requested          # destroy item via seperate callback method (a POST) if requested
224          #$options->{cb}->{destroy}->($_[1]) if $options->{destroy};          #$options->{cb}->{destroy}->($_[1]) if $options->{destroy};
225                
# Line 270  sub _var_traverse_mixin_update_old { Line 303  sub _var_traverse_mixin_update_old {
303  sub merge_to {  sub merge_to {
304    _hash2object(@_);    _hash2object(@_);
305    # TODO:    # TODO:
306    # re-implement using CPAN's "Iterate".    # re-implement using CPAN's "Iterate" and/or a modified Hash::Merge.
307  }  }
308    
309    
# Line 287  sub _hash2object { Line 320  sub _hash2object {
320    numhash2list($data) if ($options->{php});    numhash2list($data) if ($options->{php});
321    
322    # utf8-conversion/-encoding (essential for I18N)    # utf8-conversion/-encoding (essential for I18N)
323    var_utf2iso($data) if ($options->{utf8});    utf8_to_latin($data) if ($options->{utf8});
324    
325    # get fresh object from database    # get fresh object from database
326    # todo:    # todo:
# Line 458  sub deep_copy { Line 491  sub deep_copy {
491  }  }
492    
493    
494    sub childObj2string {
495      my $obj = shift;
496      my $option = shift;
497      my $classname = ref $obj;
498      my $string;
499      
500      if($option == 1) {
501        $string = "o_" . $obj->{guid} . "_" . $classname;
502      }  
503      return $string;
504    }
505    
506    
507  1;  1;
508  __END__  __END__

Legend:
Removed from v.1.13  
changed lines
  Added in v.1.19

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed