diff --git a/lib/App.pm b/lib/App.pm
index b413baf..0506139 100644
--- a/lib/App.pm
+++ b/lib/App.pm
@@ -14,7 +14,7 @@ use App::Controller::Apiv1;
use App::Model::Paste;
use App::Model::Eval;
use App::Model::Perlbot;
-
+use App::Model::Languages;
sub startup {
my $self = shift;
@@ -36,6 +36,7 @@ sub startup {
$self->helper(paste => sub {state $paste = App::Model::Paste->new});
$self->helper(eval => sub {state $eval = App::Model::Eval->new});
$self->helper(perlbot => sub {state $perlbot = App::Model::Perlbot->new});
+ $self->helper(languages => sub {state $languages = App::Model::Languages->new});
$self->setup_routes();
}
diff --git a/lib/App/Controller/Paste.pm b/lib/App/Controller/Paste.pm
index b48d6db..bcb244b 100644
--- a/lib/App/Controller/Paste.pm
+++ b/lib/App/Controller/Paste.pm
@@ -35,6 +35,7 @@ sub to_root {
sub root {
my $c = shift;
+ $c->stash({languages => $c->languages->get_languages});
$c->stash({pastedata => q{}, channels => $cfg->{announce}{channels}, page_tmpl => 'editor.html'});
$c->render("page");
};
@@ -69,6 +70,7 @@ sub edit_paste {
my $row = $c->paste->get_paste($pasteid);
if ($row->{when}) {
+ $c->stash({languages => $c->languages->get_languages});
$c->stash({pastedata => $row->{paste}, channels =>$cfg->{announce}{channels}});
$c->stash({page_tmpl => 'editor.html'});
@@ -100,6 +102,7 @@ sub get_paste {
if ($row) {
$c->stash($row);
+ $c->stash({language_mode => $c->languages->language_to_acemode($row->{language})});
$c->stash({page_tmpl => 'viewer.html'});
$c->stash({eval => $c->eval->get_eval($pasteid, $row->{paste}, $row->{language})});
$c->stash({paste_id => $pasteid});
diff --git a/lib/App/Model/Languages.pm b/lib/App/Model/Languages.pm
new file mode 100644
index 0000000..07ceade
--- /dev/null
+++ b/lib/App/Model/Languages.pm
@@ -0,0 +1,36 @@
+package App::Model::Languages;
+
+use strict;
+use warnings;
+
+use Mojo::Base '-base';
+
+my %langs = (
+ "perl" => {mode => "perl", description => "Perl (blead/git)"},
+ "perl4" => {mode => "perl", description => "Perl 4.0.36"},
+ "perl5.5" => {mode => "perl", description => "Perl 5.5"},
+ "perl5.6" => {mode => "perl", description => "Perl 5.6"},
+ "perl5.8" => {mode => "perl", description => "Perl 5.8"},
+ "perl5.10" => {mode => "perl", description => "Perl 5.10"},
+ "perl5.12" => {mode => "perl", description => "Perl 5.12"},
+ "perl5.14" => {mode => "perl", description => "Perl 5.14"},
+ "perl5.16" => {mode => "perl", description => "Perl 5.16"},
+ "perl5.18" => {mode => "perl", description => "Perl 5.18"},
+ "perl5.20" => {mode => "perl", description => "Perl 5.20"},
+ "perl5.22" => {mode => "perl", description => "Perl 5.22"},
+ "perl5.24" => {mode => "perl", description => "Perl 5.24"},
+ "text" => {mode => "text", description => "Plain text"},
+ "ruby" => {mode => "ruby", description => "Ruby (2.1)"},
+);
+
+sub language_to_acemode {
+ my ($self, $lang) = @_;
+
+ return $langs{$lang}{mode} // "text";
+}
+
+sub get_languages {
+ return \%langs;
+}
+
+1;
diff --git a/templates/editor.html b/templates/editor.html
index a9f3314..d621ea5 100755
--- a/templates/editor.html
+++ b/templates/editor.html
@@ -95,6 +95,7 @@