MooseX-amine
view release on metacpan or search on metacpan
#! /opt/perl/bin/perl
# ABSTRACT: An interactive web-based Dancer-powered inspection tool for Moose-based code.
# PODNAME: mexi
use Dancer;
use File::Find::Rule;
use File::ShareDir qw/ dist_dir /;
use File::Spec;
use Hash::Merge qw/ merge /;
use Modern::Perl;
use MooseX::amine;
use Template;
use Try::Tiny;
my $dir = dist_dir('MooseX-amine');
my $public = ( -e './share/public') ? File::Spec->rel2abs('./share/public') : "$dir/public";
my $views = ( -e './share/views' ) ? File::Spec->rel2abs('./share/views') : "$dir/views";
set access_log => 1;
set appdir => $dir;
set appname => 'MooseX::amine';
set charset => "UTF-8";
set layout => 'main';
set log => 'warning';
set logger => 'console';
set public => $public;
set show_errors => 1 ;
set template => 'template_toolkit';
set views => $views;
set warnings => 1;
my %standard_mooosex_amine_args = (
include_private_attributes => 1 ,
include_private_methods => 1 ,
);
get '/_list' => sub {
my $dir = File::Spec->rel2abs( './' );
my @files = File::Find::Rule->file()->name('*.pm')->in('./');
my %tree;
foreach my $file ( @files ) {
next if $file =~ /^\./;
my @parts = split '/' , $file;
my $hash = { pop @parts => $file };
while ( my $part = pop @parts ) {
my $new_hash = { $part => $hash };
$hash = $new_hash;
}
%tree = %{ merge( $hash , \%tree ) };
}
template 'list' => { files => \@files , tree => \%tree , dir => $dir };
};
get '/_show/name/*' => sub {
my( $name ) = splat;
try {
my $mex = MooseX::amine->new({
module => $name ,
%standard_mooosex_amine_args ,
});
template 'show' => {
mex => $mex->examine ,
name => $name
};
}
( run in 1.364 second using v1.01-cache-2.11-cpan-364913b4093 )