--- trunk/lib/View.pm 2008/06/28 11:49:35 2 +++ trunk/lib/Frey/View.pm 2008/06/30 20:02:14 41 @@ -1,26 +1,87 @@ -package View; +package Frey::View; use strict; use warnings; use Template::Declare::Tags; # defaults to 'HTML' -use base 'Template::Declare'; - +use Frey; +use base qw/Template::Declare/; use Data::Dump qw/dump/; +use Carp qw/carp confess/; + +sub debug_dump { + my $dump = dump( @_ ); + carp "debug_dump $dump\n"; + pre { + { class is 'debug' } + outs $dump; + } +} + +template 'status' => sub { + my ( $self ) = @_; + p { 'Welcome to Frey' }; + show( 'templates' ); + show( 'classes' ); +}; -use Strix::User; -my $user = Strix::User->new( nick => 'dpavlin' ); +sub method_link { + my ( $pkg,$method ) = @_; + my $url = "/$pkg/$method"; + $url = $method if $method =~ m!^/!; + a { + { href is $url } + outs $method + } +} -template user => sub { - html { - head {} - body { - p {'Hello, world wide web!'} - pre { - outs dump( $user ); +sub package_methods { + my ( $pkg, $methods ) = @_; + confess "methods not ARRAY ",dump($methods) unless ref($methods) =~ m/^ARRAY/; + outs $pkg; + ul { + foreach my $method ( @{ $methods } ) { + li { method_link( $pkg, $method ) } + } + } +} + +template 'package-methods' => sub { + my ( $self, $req, $package ) = @_; + $package ||= $req->param('package'); + my $methods = Template::Declare->templates->{ $package } or die "no package $package\n"; + package_methods( $package, $methods ); +}; + +template 'templates' => sub { + h1 { 'Available templates' }; + my $templates = Template::Declare->templates; + debug_dump( $templates ); + + ul { + foreach my $package ( keys %$templates ) { + li { + package_methods( $package, $templates->{$package} ); } } } }; +template 'classes' => sub { + my $self = shift; + h1 { 'All packages in image' }; + my $f = Frey->new; + debug_dump( $f->classes ); +}; + +template 'error' => sub { + my ( $self, $req, $error ) = @_; + $error ||= dump( caller(1) ); + warn "## error: $error\n"; + pre { + { class is 'error' } + outs( $error ); + }; +}; + 1;