/[Frey]/trunk/lib/Frey/Class/Refactor/Modify.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/lib/Frey/Class/Refactor/Modify.pm

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

revision 768 by dpavlin, Tue Dec 9 20:31:30 2008 UTC revision 789 by dpavlin, Wed Dec 10 13:56:43 2008 UTC
# Line 3  use Moose; Line 3  use Moose;
3    
4  extends 'Frey';  extends 'Frey';
5  with 'Frey::Web';  with 'Frey::Web';
6    with 'Frey::File';
7    
8    has from => (
9            is => 'rw',
10            isa => 'Str',
11            required => 1,
12    );
13    
14  has selected => (  has selected => (
15          is => 'rw',          is => 'rw',
# Line 33  sub as_markup { Line 40  sub as_markup {
40    
41          my $dump;          my $dump;
42          $dump->{$_} = $self->$_ foreach ( qw/selected path line modification/ );          $dump->{$_} = $self->$_ foreach ( qw/selected path line modification/ );
43            my $html = $self->html_dump( $dump );
44    
45            my @content;
46            my $content_path;
47    
48            $html .= qq|<ul>|;
49    
50            my $rename;
51            my $from_path = $self->from;
52            $from_path =~ s{::}{/}g;
53    
54            my @commit;
55            my $message;
56    
57            foreach my $selected ( @{ $self->selected } ) {
58                    warn "# selected ", $self->dump( $selected );
59                    my $path = $self->path->[$selected] || die "no $selected path in ", $self->dump( $self->path );
60                    if ( $path ne $content_path ) {
61                            $content_path = $path;
62                            @content = $self->read_file( $content_path );
63                            warn "# got $#content lines from ", $self->path_size( $content_path );
64                    }
65                    my $line = $self->line->[$selected] - 1;
66                    my $from = $self->from;
67                    my $to = $self->modification->[$selected];
68    
69                    $rename->{ $content_path } = $to if $content_path =~ m{$from_path};
70    
71                    $content[ $line ] =~ s{\Q$from\E}{$to}s;
72                    $self->write_file( $content_path, @content );
73                    push @commit, $content_path;
74                    $message ||= ref($self) . " $from -> $to";
75    
76                    $html .= qq|<li>$line $from -&gt; $to <tt>| . $self->html_escape( $content[$line] ) . qq|</tt></li>|;
77            }
78    
79            $html .= qq|</ul>|;
80    
81            my $notice = qq|
82                    <a target="Frey::SVK" href="/Frey::SVK/as_markup">diff</a>
83                    <a target="Frey::Test::Runner" href="/Frey::Test::Runner/as_markup">test</a>
84            |;
85    
86            my $shell;
87    
88            $shell .= qq|svk commit -m "$message" | . join(' ', @commit) . qq|\n| if @commit;
89    
90            @commit = ();
91    
92            foreach my $old ( keys %$rename ) {
93                    my $to = $rename->{$old};
94                    $to =~ s{::}{/}g;
95                    my $new = $old;
96                    $new =~ s{$from_path}{$to};
97                    $shell .= qq|svk mv $old $new\n|;
98                    push @commit, $old;
99                    push @commit, $new;
100            }
101    
102            $shell .= qq|svk commit -m "$message" | . join(' ', @commit) . qq|\n| if @commit;
103    
104            $notice .= qq|
105                    <br>all in one commit and rename:
106                    <pre>$shell</pre>
107            | if $shell;
108    
109            $html .= qq|
110                    <div class="frey-info">
111                    $notice
112                    </div>
113            | if $notice;
114    
115          return $self->html_dump( $dump );          return $html;
116  }  }
117    
118  1;  1;

Legend:
Removed from v.768  
changed lines
  Added in v.789

  ViewVC Help
Powered by ViewVC 1.1.26