Added Markdown support

This commit is contained in:
swag 2023-04-25 11:56:42 -04:00
parent 94988c2d34
commit e86cda1cc5
8 changed files with 1365 additions and 7 deletions

View File

@ -40,7 +40,6 @@ Run the tests locally (against development environment):
### (Lord knows there's TODOs I could be working on...) ### (Lord knows there's TODOs I could be working on...)
1. Support at least some Markdown, specifically the code blocks
1. Implement tripcodes (moving this down in priority due to complexity...) 1. Implement tripcodes (moving this down in priority due to complexity...)
1. Return a text response instead of HTML if a `.txt` extension [is 1. Return a text response instead of HTML if a `.txt` extension [is
requested](https://docs.mojolicious.org/Mojolicious/Plugin/DefaultHelpers#respond_to) requested](https://docs.mojolicious.org/Mojolicious/Plugin/DefaultHelpers#respond_to)

View File

@ -20,3 +20,67 @@
.thread .body, .remark .body { .thread .body, .remark .body {
white-space: pre-wrap; white-space: pre-wrap;
} }
/*
* For the custom Markdown <h1> - <h6>
*/
span.head1 {
display: block;
font-size: 2em;
margin-top: 0.67em;
margin-bottom: 0.67em;
margin-left: 0;
margin-right: 0;
font-weight: bold;
}
span.head2 {
display: block;
font-size: 1.5em;
margin-top: 0.83em;
margin-bottom: 0.83em;
margin-left: 0;
margin-right: 0;
font-weight: bold;
}
span.head3 {
display: block;
font-size: 1.17em;
margin-top: 1em;
margin-bottom: 1em;
margin-left: 0;
margin-right: 0;
font-weight: bold;
}
span.head4 {
display: block;
font-size: 1em;
margin-top: 1.33em;
margin-bottom: 1.33em;
margin-left: 0;
margin-right: 0;
font-weight: bold;
}
span.head5 {
display: block;
font-size: .83em;
margin-top: 1.67em;
margin-bottom: 1.67em;
margin-left: 0;
margin-right: 0;
font-weight: bold;
}
span.head6 {
display: block;
font-size: .67em;
margin-top: 2.33em;
margin-bottom: 2.33em;
margin-left: 0;
margin-right: 0;
font-weight: bold;
}

View File

@ -10,6 +10,7 @@ use Crypt::Passphrase;
use PostText::Model::Thread; use PostText::Model::Thread;
use PostText::Model::Remark; use PostText::Model::Remark;
use PostText::Model::Moderator; use PostText::Model::Moderator;
use PostText::Markdown;
sub startup($self) { sub startup($self) {
$self->plugin('Config'); $self->plugin('Config');
@ -62,6 +63,10 @@ sub startup($self) {
$c->session->{'is_admin'} || undef $c->session->{'is_admin'} || undef
}); });
$self->helper(markdown => sub ($c, $input_text) {
PostText::Markdown::Markdown($input_text)
});
# Finish configuring some things # Finish configuring some things
$self->secrets($self->config->{'secrets'}) || die $@; $self->secrets($self->config->{'secrets'}) || die $@;

1290
lib/PostText/Markdown.pm Normal file

File diff suppressed because it is too large Load Diff

View File

@ -6,7 +6,7 @@
<nav class="id">#<%= $remark->{'id'} %></nav> <nav class="id">#<%= $remark->{'id'} %></nav>
<h4 class="date"><%= $remark->{'date'} %></h4> <h4 class="date"><%= $remark->{'date'} %></h4>
<h5 class="author"><%= $remark->{'author'} %></h5> <h5 class="author"><%= $remark->{'author'} %></h5>
<p class="body"><%== $remark->{'body'} %></p> <div class="body"><%== markdown $remark->{'body'} %></div>
</article> </article>
</div> </div>
<nav> <nav>

View File

@ -37,7 +37,7 @@
<h3 class="title"><%= $thread->{'title'} %></h3> <h3 class="title"><%= $thread->{'title'} %></h3>
<h4 class="date"><%= $thread->{'date'} %></h4> <h4 class="date"><%= $thread->{'date'} %></h4>
<h5 class="author"><%= $thread->{'author'} %></h5> <h5 class="author"><%= $thread->{'author'} %></h5>
<p class="body"><%== $thread->{'body'} %></p> <div class="body"><%== markdown $thread->{'body'} %></div>
</article> </article>
</div> </div>
<% if (my $last_remark_id = $last_remark->{'id'}) { =%> <% if (my $last_remark_id = $last_remark->{'id'}) { =%>
@ -50,7 +50,7 @@
</nav> </nav>
<h4 class="date"><%= $last_remark->{'date'} %></h4> <h4 class="date"><%= $last_remark->{'date'} %></h4>
<h5 class="author"><%= $last_remark->{'author'} %></h5> <h5 class="author"><%= $last_remark->{'author'} %></h5>
<p class="body"><%== $last_remark->{'body'} %></p> <div class="body"><%== markdown $last_remark->{'body'} %></div>
</article> </article>
</div> </div>
<% } =%> <% } =%>

View File

@ -6,7 +6,7 @@
<h3 class="title"><%= $thread->{'title'} %></h3> <h3 class="title"><%= $thread->{'title'} %></h3>
<h4 class="date"><%= $thread->{'date'} %></h4> <h4 class="date"><%= $thread->{'date'} %></h4>
<h5 class="author"><%= $thread->{'author'} %></h5> <h5 class="author"><%= $thread->{'author'} %></h5>
<p class="body"><%== $thread->{'body'} %></p> <div class="body"><%== markdown $thread->{'body'} %></div>
</article> </article>
</div> </div>
<nav> <nav>
@ -32,7 +32,7 @@
</nav> </nav>
<h4 class="date"><%= $remark->{'date'} %></h4> <h4 class="date"><%= $remark->{'date'} %></h4>
<h5 class="author"><%= $remark->{'author'} %></h5> <h5 class="author"><%= $remark->{'author'} %></h5>
<p class="body"><%== $remark->{'body'} %></p> <div class="body"><%== markdown $remark->{'body'} %></div>
<nav class="flag"> <nav class="flag">
<%= link_to Flag => flag_remark => {remark_id => $remark->{'id'}} %> <%= link_to Flag => flag_remark => {remark_id => $remark->{'id'}} %>
</nav> </nav>

View File

@ -15,7 +15,7 @@
</h3> </h3>
<h4 class="date"><%= $thread->{'date'} %></h4> <h4 class="date"><%= $thread->{'date'} %></h4>
<h5 class="author"><%= $thread->{'author'} %></h5> <h5 class="author"><%= $thread->{'author'} %></h5>
<p class="body"><%== truncate_text $thread->{'body'} %></p> <div class="body"><%== markdown truncate_text $thread->{'body'} %></div>
<nav> <nav>
<%= link_to Remark => post_remark => {thread_id => $thread->{'id'}} %> <%= link_to Remark => post_remark => {thread_id => $thread->{'id'}} %>
<%= link_to url_for(single_thread => {thread_id => $thread->{'id'}}) <%= link_to url_for(single_thread => {thread_id => $thread->{'id'}})