bin/populate-lang-table, mason/pastebin/%show: Add Markdown support.
[odin-cgi] / mason / pastebin / %show
... / ...
CommitLineData
1<&| SELF:wrapper,
2 title => Odin::escapify($m, $title) . " (odin.gg Paste Bin)" &>
3<h1><tt>odin.gg</tt> Paste Bin: <% $title %></h1>
4<div class="menu">
5 <span class="item"><a href="<% "$Odin::PASTEBIN/$tag?op=raw" |h %>">Raw</a></span>
6% if (defined $edit) {
7 <span class="item"><a href="<% "$Odin::PASTEBIN/$tag?edit=$edit" |h %>">Edit</a></span>
8% }
9 <span class="item"><a href="<% "$Odin::PASTEBIN/" |h %>">New</a></span>
10</div>
11% if (defined $honc) {
12<div class="note">
13<p>Your browser doesn't appear to be accepting my cookies.
14<p>Don't share the link to this page with other people. <b>If you do,
15 they'll be able to edit this paste just as you can</b>, using the
16 <b>Edit</b> link at the top of the page.
17<p>Instead, share this link:
18 <a href="<% "$Odin::PASTEBIN/$tag" |h %>"><%
19 "$Odin::PASTEBIN/$tag" |h %></a>
20</div>
21% }
22% if ($lang eq 'txt') {
23<pre class="paste">
24<% $content |h %>\
25</pre>
26% } elsif ($lang =~ /^hl:(.*)$/) {
27<pre class="paste">
28% filter "highlight", $m, $content,
29% "highlight", "-Ohtml", "-f", "-t8", "-S$1";
30</pre>
31% } elsif ($lang eq "md") {
32% filter "markdown", $m, $content,
33% "markdown", "-fnohtml,autolink,safelink,footnote";
34% } else {
35<div class="note">
36<p>I don't know how to display content with language
37 &lsquo;<% $lang |h %>&rsquo;. This is a bug in the Pastebin program.
38 Here's the raw text, in case that's useful.
39</div>
40<pre class="paste">
41<% $content |h %>\
42</pre>
43% }
44</&>
45%#
46<%args>
47 $content
48 $title
49 $lang
50 $tag
51 $honc
52 $edit
53</%args>
54%#
55<%init>
56 my $db = Odin::open_db;
57</%init>
58%#
59<%once>
60 use utf8;
61
62 sub filter ($$$@) {
63 my ($what, $m, $content, @cmd) = @_;
64 my $kid = open my $fh, "-|" // die "fork: $!";
65 if ($kid == 0) {
66 open my $hl, "|-", @cmd or die "open $what: $!";
67 syswrite $hl, $content // die "$what write: $!";
68 close $hl or die "$what kid: $!, $?";
69 exit 0;
70 } else {
71 while (sysread $fh, my $buf, 8192) { $m->print($buf); }
72 close $fh and waitpid $kid, 0
73 or die "$what parent: $!, $?";
74 }
75 }
76</%once>