use Moose;
use namespace::autoclean;
use File::Temp;
+use JSON;
use Text::Tradition::Collation;
-use Text::Tradition::Stemma;
+use Text::Tradition::StemmaUtil qw/ phylip_pars_input /;
BEGIN { extends 'Catalyst::Controller' }
=head1 NAME
-TreeOfTexts::Controller::Root - Root Controller for TreeOfTexts
+TreeOfTexts::Controller::Stemmagraph - Simple controller for stemma display
=head1 DESCRIPTION
# The body is actually a File::Temp object; this is undocumented but
# so it seems to be.
my $dotfile;
- $DB::single = 1;
my $must_unlink = 0;
if( $c->request->params->{'dot'} ) {
# Make a File::Temp object.
$c->forward( "View::SVG" );
}
-=head2 default
+=head2 character_matrix
-Standard 404 error page
+Given an alignment table in JSON form, in the parameter 'alignment', returns a
+character matrix suitable for input to Phylip PARS.
=cut
-sub default :Path {
- my ( $self, $c ) = @_;
- $c->response->body( 'Page not found' );
- $c->response->status(404);
+sub character_matrix :Local {
+ my( $self, $c ) = @_;
+ my $json = $c->request->params->{'alignment'};
+ $c->log->debug( $json );
+ my $table = from_json( $json );
+ my $matrix = phylip_pars_input( $table );
+ $c->stash->{'result'} = { 'matrix' => $matrix };
+ $c->forward( 'View::JSON' );
}
-
=head2 end
Attempt to render a view, if needed.