diff options
author | Claire <claire.github-309c@sitedethib.com> | 2022-03-29 16:39:43 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-29 16:39:43 +0200 |
commit | eaea849035ea407afb2d5db411dbddc1ccca6f44 (patch) | |
tree | 19a0b6e761fc453fac2f5a8aba24595ad93f0382 /app/lib/html_aware_formatter.rb | |
parent | 2287eebae0c1d699436a8cf3218d7cfe990a3605 (diff) | |
parent | 8d6f3f8a379c8d552d2101cf35ae8f6fe956da53 (diff) |
Merge pull request #1724 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes
Diffstat (limited to 'app/lib/html_aware_formatter.rb')
-rw-r--r-- | app/lib/html_aware_formatter.rb | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/app/lib/html_aware_formatter.rb b/app/lib/html_aware_formatter.rb new file mode 100644 index 000000000..7a1cd0340 --- /dev/null +++ b/app/lib/html_aware_formatter.rb @@ -0,0 +1,42 @@ +# frozen_string_literal: true + +class HtmlAwareFormatter + attr_reader :text, :local, :options + + alias local? local + + # @param [String] text + # @param [Boolean] local + # @param [Hash] options + def initialize(text, local, options = {}) + @text = text + @local = local + @options = options + end + + def to_s + return ''.html_safe if text.blank? + + if local? + linkify + else + reformat.html_safe # rubocop:disable Rails/OutputSafety + end + rescue ArgumentError + ''.html_safe + end + + private + + def reformat + Sanitize.fragment(text, Sanitize::Config::MASTODON_STRICT) + end + + def linkify + if %w(text/markdown text/html).include?(@options[:content_type]) + AdvancedTextFormatter.new(text, options).to_s + else + TextFormatter.new(text, options).to_s + end + end +end |