From b1788a9af39dab9a874abe0c6f1d315baabb0de7 Mon Sep 17 00:00:00 2001 From: Charlie Powell Date: Fri, 28 Apr 2023 22:53:31 -0400 Subject: [PATCH] Switch to Kramdown for better rendering --- Gemfile | 2 ++ Gemfile.lock | 26 +++++++++++++++++++ .../styles/mastodon/components.scss | 3 ++- app/lib/advanced_text_formatter.rb | 13 ++++++++-- 4 files changed, 41 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 6e5292d82486f..252c277f5aacb 100644 --- a/Gemfile +++ b/Gemfile @@ -58,6 +58,8 @@ gem 'http_accept_language', '~> 2.1' gem 'httplog', '~> 1.6.2' gem 'idn-ruby', require: 'idn' gem 'kaminari', '~> 1.2' +gem 'kramdown', '~> 2.4' +gem 'kramdown-parser-gfm' gem 'link_header', '~> 0.0' gem 'mime-types', '~> 3.4.1', require: 'mime/types/columnar' gem 'nokogiri', '~> 1.14' diff --git a/Gemfile.lock b/Gemfile.lock index 2fd88754c183a..05407a43feeac 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,6 +7,26 @@ GIT hkdf (~> 0.2) jwt (~> 2.0) +GIT + remote: https://github.com/kreeti/kt-paperclip.git + revision: 11abf222dc31bff71160a1d138b445214f434b2b + ref: 11abf222dc31bff71160a1d138b445214f434b2b + specs: + kt-paperclip (7.1.1) + activemodel (>= 4.2.0) + activesupport (>= 4.2.0) + marcel (~> 1.0.1) + mime-types + terrapin (~> 0.6.0) + +GIT + remote: https://github.com/mastodon/rails-settings-cached.git + revision: 86328ef0bd04ce21cc0504ff5e334591e8c2ccab + branch: v0.6.6-aliases-true + specs: + rails-settings-cached (0.6.6) + rails (>= 4.2.0) + GEM remote: https://rubygems.org/ specs: @@ -361,6 +381,10 @@ GEM activerecord kaminari-core (= 1.2.2) kaminari-core (1.2.2) + kramdown (2.4.0) + rexml + kramdown-parser-gfm (1.1.0) + kramdown (~> 2.0) kt-paperclip (7.1.1) activemodel (>= 4.2.0) activesupport (>= 4.2.0) @@ -811,6 +835,8 @@ DEPENDENCIES json-ld-preloaded (~> 3.2) json-schema (~> 3.0) kaminari (~> 1.2) + kramdown (~> 2.4) + kramdown-parser-gfm kt-paperclip (~> 7.1) letter_opener (~> 1.8) letter_opener_web (~> 2.0) diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index e4616c1100dee..454deeb9daec2 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -875,7 +875,8 @@ body > [data-popper-placement] { p { margin-bottom: 20px; - white-space: pre-wrap; + + /* white-space: pre-wrap; */ unicode-bidi: plaintext; &:last-child { diff --git a/app/lib/advanced_text_formatter.rb b/app/lib/advanced_text_formatter.rb index 21e81d4d1e7fd..df662893dc16b 100644 --- a/app/lib/advanced_text_formatter.rb +++ b/app/lib/advanced_text_formatter.rb @@ -1,5 +1,9 @@ # frozen_string_literal: true +require 'kramdown' +require 'kramdown-parser-gfm' + + class AdvancedTextFormatter < TextFormatter class HTMLRenderer < Redcarpet::Render::HTML def initialize(options, &block) @@ -97,8 +101,13 @@ def rewrite private def format_markdown(html) - html = markdown_formatter.render(html) - html.delete("\r").delete("\n") + # if redcarpet @todo + #html = markdown_formatter.render(html) + options = { + input: 'GFM', + } + html = Kramdown::Document.new(html, options).to_html + # html.delete("\r").delete("\n") end def markdown_formatter