- # frozen_string_literal: true
-
- class PlainTextFormatter
- include ActionView::Helpers::TextHelper
-
- NEWLINE_TAGS_RE = /(<br \/>|<br>|<\/p>)+/.freeze
-
- attr_reader :text, :local
-
- alias local? local
-
- def initialize(text, local)
- @text = text
- @local = local
- end
-
- def to_s
- if local?
- text
- else
- html_entities.decode(strip_tags(insert_newlines)).chomp
- end
- end
-
- private
-
- def insert_newlines
- text.gsub(NEWLINE_TAGS_RE) { |match| "#{match}\n" }
- end
-
- def html_entities
- HTMLEntities.new
- end
- end
|