You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
475 B
30 lines
475 B
# 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 |
|
strip_tags(insert_newlines).chomp |
|
end |
|
end |
|
|
|
private |
|
|
|
def insert_newlines |
|
text.gsub(NEWLINE_TAGS_RE) { |match| "#{match}\n" } |
|
end |
|
end
|
|
|