Design Patterns Ruby

class Document
  attr_reader :title, :text
  attr_accessor :formatter
  def initialize(formatter)
    @title = 'Your Document'
    @text =  ['Things are going', 'really, really well.']
    @formatter = formatter
  end
  def output_report()
    @formatter.output_report(self)
  end
end
class HTMLFormatter
  def output_report(context)
    puts('')
    puts('  ')
    puts("    #{context.title}")
    puts('  ')
    puts('  ')
    context.text.each do |line|
      puts("    

#{line}

")
    end
    puts('  ')
    puts('')
  end
end
class PlainTextFormatter
  def output_report(context)
    puts("#{context.title}")
    context.text.each do |line|
      puts(line)
    end
  end
end