Markdown helper

This commit is contained in:
Alexander Yakovlev 2022-08-09 08:10:15 +07:00
parent a2aadecea3
commit ca4d86db99
Signed by: oreolek
GPG key ID: 8D24103F5EE2A6C0
5 changed files with 37 additions and 33 deletions

View file

@ -4,8 +4,7 @@ namespace App\Console\Commands;
use App\Models\Post;
use Illuminate\Console\Command;
use League\CommonMark\CommonMarkConverter;
use Illuminate\Support\Str;
use App\Helpers\Markdown;
class RegenerateHtml extends Command
{
@ -30,16 +29,11 @@ class RegenerateHtml extends Command
*/
public function handle()
{
$markdown = new CommonMarkConverter([
'allow_unsafe_links' => true,
]);
$markdown = new Markdown();
Post::chunk(100, function($posts) use($markdown) {
foreach($posts as $post) {
$post->content_html = $markdown->convert($post->content);
$post->excerpt_html = Str::words($post->content_html, config('app.brief_limit'), '…');
if (class_exists('\tidy')) {
$post->excerpt_html = \tidy::repairString($post->excerpt_html);
}
$post->excerpt_html = $markdown->convert($post->content, true);
$post->save();
}
});

25
app/Helpers/Markdown.php Normal file
View file

@ -0,0 +1,25 @@
<?php
namespace App\Helpers;
use League\CommonMark\CommonMarkConverter;
use Illuminate\Support\Str;
class Markdown {
protected $converter;
public function __construct() {
$this->converter = new CommonMarkConverter([
'allow_unsafe_links' => true,
]);
}
public function convert(string $text, bool $trim = false): string {
$retval = $this->converter->convert($text);
if ($trim) {
$retval = Str::words($retval, config('app.brief_limit'), '…');
}
if (class_exists('\tidy')) {
$tidy = new \tidy();
$retval = $tidy->repairString($retval);
}
return $retval;
}
}

View file

@ -2,8 +2,7 @@
namespace App\Http\View;
use Illuminate\Support\Facades\Auth;
use League\CommonMark\CommonMarkConverter;
use Nette\Utils\Html;
use App\Helpers\Markdown;
class GenericView {
/**
@ -12,7 +11,7 @@ class GenericView {
protected $is_admin = FALSE;
/**
* @var CommonMarkConverter
* @var Markdown
**/
protected $markdown;
@ -27,9 +26,7 @@ class GenericView {
// Check if logged in
$this->is_admin = !is_null(Auth::user());
$this->markdown = new CommonMarkConverter([
'allow_unsafe_links' => true,
]);
$this->markdown = new Markdown();
}
public function navigation()

View file

@ -3,20 +3,14 @@
namespace App\Observers;
use App\Models\Page;
use League\CommonMark\CommonMarkConverter;
use Illuminate\Support\Str;
use App\Helpers\Markdown;
class PageObserver
{
public function saving(Page $page)
{
$markdown = new CommonMarkConverter([
'allow_unsafe_links' => true,
]);
$markdown = new Markdown();
$page->content_html = $markdown->convert($page->content);
$page->excerpt_html = Str::words($page->content_html, config('app.brief_limit'), '…');
if (class_exists('\tidy')) {
$page->excerpt_html = \tidy::repairString($page->excerpt_html);
}
$page->excerpt_html = $markdown->convert($page->content, true);
}
}

View file

@ -3,20 +3,14 @@
namespace App\Observers;
use App\Models\Post;
use League\CommonMark\CommonMarkConverter;
use Illuminate\Support\Str;
use App\Helpers\Markdown;
class PostObserver
{
public function saving(Post $post)
{
$markdown = new CommonMarkConverter([
'allow_unsafe_links' => true,
]);
$markdown = new Markdown();
$post->content_html = $markdown->convert($post->content);
$post->excerpt_html = Str::words($post->content_html, config('app.brief_limit'), '…');
if (class_exists('\tidy')) {
$post->excerpt_html = \tidy::repairString($post->excerpt_html);
}
$post->excerpt_html = $markdown->convert($post->content, true);
}
}