Sha256: f0f1797c760605566282f4332e3662d4e5d26e467936773e6c5a913a73d7187d

Contents?: true

Size: 1.52 KB

Versions: 4

Compression:

Stored size: 1.52 KB

Contents

# frozen_string_literal: true

require 'cucumber/messages'
require 'cucumber/html_formatter/template_writer'
require 'cucumber/html_formatter/assets_loader'

module Cucumber
  module HTMLFormatter
    class Formatter
      attr_reader :out

      def initialize(out)
        @out = out
        @pre_message_written = false
        @first_message = true
      end

      def process_messages(messages)
        write_pre_message
        messages.each { |message| write_message(message) }
        write_post_message
      end

      def write_message(message)
        out.puts(',') unless @first_message
        out.print(message.to_json)

        @first_message = false
      end

      def write_pre_message
        return if @pre_message_written

        out.puts(pre_message)
        @pre_message_written = true
      end

      def write_post_message
        out.print(post_message)
      end

      private

      def assets_loader
        @assets_loader ||= AssetsLoader.new
      end

      def pre_message
        [
          template_writer.write_between(nil, '{{css}}'),
          assets_loader.css,
          template_writer.write_between('{{css}}', '{{messages}}')
        ].join("\n")
      end

      def post_message
        [
          template_writer.write_between('{{messages}}', '{{script}}'),
          assets_loader.script,
          template_writer.write_between('{{script}}', nil)
        ].join("\n")
      end

      def template_writer
        @template_writer ||= TemplateWriter.new(assets_loader.template)
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
cucumber-html-formatter-21.4.0 lib/cucumber/html_formatter/formatter.rb
cucumber-html-formatter-21.3.1 lib/cucumber/html_formatter/formatter.rb
cucumber-html-formatter-21.3.0 lib/cucumber/html_formatter/formatter.rb
cucumber-html-formatter-21.2.0 lib/cucumber/html_formatter/formatter.rb