-
Notifications
You must be signed in to change notification settings - Fork 0
/
wtf-gi.pl
68 lines (58 loc) · 1.73 KB
/
wtf-gi.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
use 5.010;
my $messages = [
{
name => 'ViewPage',
request_method => 'get',
route => '/page/:id',
response => '$mojito->view_page($params)',
response_type => 'html'
},
{
name => 'EditPage',
request_method => 'get',
route => '/page/:id/edit',
response => '$mojito->edit_page_form($params)',
response_type => 'html',
},
{
name => 'EditPage',
request_method => 'post',
route => '/page/:id/edit',
response => '$mojito->edit_page($params)',
response_type => 'redirect',
},
];
foreach my $message (@{$messages}) {
say transform_mojo($message);
}
sub transform_dancer {
my $message = shift;
if ( $message->{response_type} eq 'html' ) {
$message->{response} = 'return ' . $message->{response};
}
elsif ( $message->{response_type} eq 'redirect' ) {
$message->{response} = 'redirect ' . $message->{response};
}
my $route_body = <<"END_BODY";
$message->{request_method} $message->{route} => sub {
my \$params = scalar params;
$message->{response};
};
END_BODY
return $route_body;
}
sub transform_mojo {
my $message = shift;
if ( $message->{response_type} eq 'html' ) {
$message->{response} = '$self->render( text => ' . $message->{response} . ')';
}
elsif ( $message->{response_type} eq 'redirect' ) {
$message->{response} = '$self->redirect_to(' . $message->{response} .')';
}
my $route_body = <<"END_BODY";
$message->{request_method} $message->{route} => sub {
my \$params = scalar params;
$message->{response};
};
END_BODY
}