add simple conversion service, dot to stemma graph
[scpubgit/stemmatology.git] / TreeOfTexts / lib / TreeOfTexts / Controller / Stemmagraph.pm
1 package TreeOfTexts::Controller::Stemmagraph;
2 use Moose;
3 use namespace::autoclean;
4 use Text::Tradition::Collation;
5 use Text::Tradition::Stemma;
6
7 BEGIN { extends 'Catalyst::Controller' }
8
9 #
10 # Sets the actions in this controller to be registered with no prefix
11 # so they function identically to actions created in MyApp.pm
12 #
13 __PACKAGE__->config(namespace => '');
14
15 =head1 NAME
16
17 TreeOfTexts::Controller::Root - Root Controller for TreeOfTexts
18
19 =head1 DESCRIPTION
20
21 [enter your description here]
22
23 =head1 METHODS
24
25 =head2 index
26
27 The root page (/)
28
29 =cut
30
31 sub index :Path :Args(0) {
32     my ( $self, $c ) = @_;
33     $c->stash->{template} = 'dotinput.tt2';  
34 }
35
36 sub get_graph :Local {
37         my( $self, $c ) = @_;
38         # If called interactively, we have params 'display', 'output', 'witnesses'
39         # If called non-interactively, we look at headers and content.
40         # The body is actually a File::Temp object; this is undocumented but 
41         # so it seems to be.
42         my $dot_fh = $c->request->body;
43         my $format = 'svg';
44
45     # Render the dot in the given format.
46     my $collation = Text::Tradition::Collation->new();
47     my $stemma = Text::Tradition::Stemma->new( 'collation' => $collation, 'dot' => $dot_fh );
48     $c->stash->{result} = $stemma->as_svg;
49     $c->forward( "View::SVG" );
50 }
51
52 =head2 default
53
54 Standard 404 error page
55
56 =cut
57
58 sub default :Path {
59     my ( $self, $c ) = @_;
60     $c->response->body( 'Page not found' );
61     $c->response->status(404);
62 }
63
64 =head2 end
65
66 Attempt to render a view, if needed.
67
68 =cut
69
70 sub end : ActionClass('RenderView') {}
71
72 =head1 AUTHOR
73
74 Tara L Andrews
75
76 =head1 LICENSE
77
78 This library is free software. You can redistribute it and/or modify
79 it under the same terms as Perl itself.
80
81 =cut
82
83 __PACKAGE__->meta->make_immutable;
84
85 1;