31 lines
		
	
	
		
			475 B
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			475 B
		
	
	
	
		
			Ruby
		
	
	
	
# 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
 |