/[Frey]/trunk/lib/Frey/VCI.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

Annotation of /trunk/lib/Frey/VCI.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 192 - (hide annotations)
Tue Oct 28 17:05:11 2008 UTC (15 years, 6 months ago) by dpavlin
Original Path: trunk/lib/SourceSnoop.pm
File size: 1820 byte(s)
example how to use MooseX::Method to verify method signature
1 dpavlin 185 package SourceSnoop;
2    
3     use Moose;
4    
5     use lib '/rest/cvs/vci/lib'; # FIXME
6     use VCI;
7    
8 dpavlin 189 use HTML::Entities qw/encode_entities/;
9    
10 dpavlin 185 extends 'Frey';
11     with 'Frey::Web';
12    
13     use Data::Dump qw/dump/;
14    
15     our $debug = 1;
16    
17 dpavlin 186 sub pre_dump {
18     my $o = shift;
19     # because Data::Dumper::HTML sucks
20 dpavlin 188 my $t;
21     if ( blessed($o) && $o->can('dump') ) {
22     $t = $o->dump;
23     $t =~ s/ {8}/ /gm;
24     } else {
25     $t = dump( $o );
26     }
27 dpavlin 189 return '<hr><pre>' . encode_entities($t) . '</pre><hr>';
28 dpavlin 185 }
29    
30 dpavlin 192 use MooseX::Method;
31    
32     method html => positional(
33     { isa => 'Continuity::RequestHolder', required => 1 },
34     ) => sub {
35     #sub html {
36 dpavlin 185 my ( $self, $request ) = @_;
37    
38     my %param = $request->params;
39     warn "## params = ",dump( %param );
40    
41     my $html;
42     my $path = 'file:///home/dpavlin/private/svn/Frey';
43    
44     my $repo = VCI->connect(
45     repo => $path,
46     type => 'Svn',
47     debug => 1,
48     );
49    
50     $html .= qq|<h1>Projects</h1><ul>|;
51     $html .= qq|<li><a href="?name=$_">$_</a></li>| foreach map { $_->name } @{ $repo->projects };
52     $html .= qq|</ul>|;
53    
54     $request->print( $self->page( title => $path, body => $html ) );
55     $request->next;
56    
57 dpavlin 188 %param = $request->params;
58 dpavlin 185 warn "## params = ",dump( %param );
59    
60     my $project = $repo->get_project( name => $param{name} );
61 dpavlin 188 my $rev = $project->head_revision;
62 dpavlin 185
63 dpavlin 188 my $commit = $project->get_commit( revision => $rev );
64    
65     sub div {
66     my ( $class, $text ) = @_;
67     return "<div class=\"$class\">$text</div>";
68     }
69    
70 dpavlin 189 my $diff = $commit->as_diff;
71    
72 dpavlin 188 my $body =
73     '<h1>Commit</h1>' .
74     div( 'revision', $commit->revision ) .
75     div( 'commiter', $commit->committer ) .
76     div( 'date', $commit->time->iso8601 ) .
77     div( 'message', $commit->message ) .
78 dpavlin 189 '<pre>' . encode_entities( $diff->raw ) . '</pre>' .
79     pre_dump( $diff );
80 dpavlin 188
81 dpavlin 185 $request->print( $self->page(
82 dpavlin 188 title => $path . '/' . $project->name,
83     body => $body,
84 dpavlin 185 ) );
85     $request->next;
86 dpavlin 192 };
87 dpavlin 185
88     warn "## VCI loaded";
89    
90     1;

  ViewVC Help
Powered by ViewVC 1.1.26