X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/odin-cgi/blobdiff_plain/7f77ead8af9c6100f0bf4f259b5be780c4b0d86f..3badae73c1e4ed7cfb05ca0a5d7b4f06882f80e3:/mason/pastebin/%show diff --git a/mason/pastebin/%show b/mason/pastebin/%show index 6ec0bb2..3a8edb3 100644 --- a/mason/pastebin/%show +++ b/mason/pastebin/%show @@ -1,3 +1,27 @@ +%# -*-html-*- +%# +%# Pastebin display webservice for Odin +%# +%# (c) 2015 Mark Wooding +%# +%#----- Licensing notice ---------------------------------------------------- +%# +%# This file is part of the `odin.gg' service, `odin-cgi'. +%# +%# `odin-cgi' is free software; you can redistribute it and/or modify +%# it under the terms of the GNU Affero General Public License as +%# published by the Free Software Foundation; either version 3 of the +%# License, or (at your option) any later version. +%# +%# `odin-cgi' is distributed in the hope that it will be useful, +%# but WITHOUT ANY WARRANTY; without even the implied warranty of +%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +%# GNU Affero General Public License for more details. +%# +%# You should have received a copy of the GNU Affero General Public +%# License along with `odin-cgi'; if not, see +%# . +%# <&| SELF:wrapper, title => Odin::escapify($m, $title) . " (odin.gg Paste Bin)" &>

odin.gg Paste Bin: <% $title %>

@@ -19,26 +43,28 @@ "$Odin::PASTEBIN/$tag" |h %> % } -
 % if ($lang eq 'txt') {
+
 <% $content |h %>\
+
+% } elsif ($lang =~ /^hl:(.*)$/) { +
+% filter "highlight", $m, $content,
+%   "highlight", "-Ohtml", "-f", "-t8", "-S$1";
+
+% } elsif ($lang eq "md") { +% filter "markdown", $m, $content, +% "markdown", "-fnohtml,autolink,safelink,footnote"; % } else { -<%perl> - my $kid = open my $fh, "-|" // die "fork: $!"; - if ($kid == 0) { - open my $hl, "|-", "highlight", "-Ohtml", "-f", "-t8", "-S$lang" - or die "open highlight: $!"; - syswrite $hl, $content // die "highlight write: $!"; - close $hl or die "highlight kid: $!, $?"; - exit 0; - } else { - while (sysread $fh, my $buf, 8192) { $m->print($buf); } - close $fh and waitpid $kid, 0 - or die "highlight parent: $!, $?"; - } - -% } +
+

I don't know how to display content with language + ‘<% $lang |h %>’. This is a bug in the Pastebin program. + Here's the raw text, in case that's useful. +

+
+<% $content |h %>\
 
+% } %# <%args> @@ -56,4 +82,20 @@ %# <%once> use utf8; + use POSIX qw(_exit); + + sub filter ($$$@) { + my ($what, $m, $content, @cmd) = @_; + my $kid = open my $fh, "-|" // die "fork: $!"; + if ($kid == 0) { + open my $hl, "|-", @cmd or die "open $what: $!"; + syswrite $hl, $content // die "$what write: $!"; + close $hl or die "$what kid: $!, $?"; + _exit 0; + } else { + while (sysread $fh, my $buf, 8192) { $m->print($buf); } + close $fh and waitpid $kid, 0 + or die "$what parent: $!, $?"; + } + }