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

Contents of /trunk/lib/Frey/ClassBrowser.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 545 - (show annotations)
Wed Nov 26 20:47:13 2008 UTC (15 years, 5 months ago) by dpavlin
File size: 1951 byte(s)
sort classes alphabetically, clean code
1 package Frey::ClassBrowser;
2 use Moose;
3
4 extends 'Frey::ClassLoader';
5 with 'Frey::Web';
6 with 'Frey::Session';
7
8 use Frey::Run;
9 use Data::Dump qw/dump/;
10
11 has 'usage_on_top' => (
12 is => 'rw',
13 isa => 'Bool',
14 default => 1,
15 documentation => 'Show usage on top of list',
16 );
17
18 sub as_markup {
19 my $self = shift;
20 my $row;
21
22 my $usage = $self->session_dump( $self->usage );
23 #warn "# usage ",dump( $usage );
24 foreach my $class ( $self->classes ) {
25
26 my $icon = '';
27 if ( $self->can('icon_path') ) {
28 $icon = $self->icon_path( $class );
29 $icon = qq|<img src="/$icon" alt="$class">| if $icon;
30 } else {
31 #warn "## $self doesn't know how to return icon_path";
32 }
33
34 my $html
35 = qq|<tr><td>$icon</td><td><a target="$class" href="/$class" title="|
36 . $self->class_path( $class )
37 . qq|">$class</a></td><td>|
38 ;
39 if ( $class->can('meta') ) {
40 if ( $class->meta->isa('Moose::Meta::Role') ) {
41 $html .= qq|role|;
42 } else {
43 $html .= qq|<a target="$class" href="/Frey-ObjectDesigner?class=$class">design</a>| if $class->can('collection');
44 }
45 }
46
47 my @run = map {
48 s{^as_}{};
49 qq|<a target="$class" href="/$class/as_$_" title="$class->as_$_">$_</a>|;
50 } $self->class_runnable( $class );
51 push @run, qq|<a target="$class" href="/Frey-ObjectBrowser?class=$class">collection</a>| if $class->can('collection_table');
52
53 my @inputs = $self->class_inputs( $class );
54
55 $usage->{$class} ||= 0;
56 $html
57 .= qq|</td><td>|
58 . join(' ', @run)
59 . qq|</td><td>|
60 . ( @inputs ? '&larr; ' . join(' ', @inputs) : '' )
61 . qq|</td><td>|
62 . ( $usage->{$class} || '' )
63 . qq|</td></tr>|
64 ;
65 $row->{$class} = $html;
66 }
67
68 return
69 qq|<table>| . join("\n",
70 map { $row->{$_} }
71 sort {
72 if ( $usage->{$a} || $usage->{$b} ) {
73 $self->usage_on_top ? $usage->{$b} <=> $usage->{$a} : $usage->{$a} <=> $usage->{$b};
74 } else {
75 $self->usage_on_top ? $a cmp $b : $b cmp $a;
76 }
77 }
78 keys %$row
79 ) . qq|</table>|;
80 }
81
82 1;

  ViewVC Help
Powered by ViewVC 1.1.26