Sha256: 3f8a2e35289dbbba1fa431e7786736e5f8fe7d9e99be219e9a1960defa20de8e

Contents?: true

Size: 1.03 KB

Versions: 2

Compression:

Stored size: 1.03 KB

Contents

module Vedeu
  class Compositor
    class << self
      def write(output = [], options = {})
        return if output.nil? || output.empty?

        new(output, options).write
      end
    end

    def initialize(output = [], options = {})
      @output, @options = output, options
    end

    def write
      parsed.each_with_index do |data, index|
        clear_line(index)

        write_line(data)
      end.join("\n")
    end

    private

    attr_reader :output

    def parsed
      container = []
      streams = []
      output.map do |line|
        line.map do |stream|
          if stream.is_a?(String)
            streams << stream
          else
            streams << Directive.enact(stream)
          end
        end
        container << streams.join
        streams = []
      end
      container
    end

    def clear_line(index)
      Terminal.clear_line(index)
    end

    def write_line(data)
      Terminal.output(data)
    end

    def options
      defaults.merge!(@options)
    end

    def defaults
      {}
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
vedeu-0.0.5 lib/vedeu/output/compositor.rb
vedeu-0.0.4 lib/vedeu/output/compositor.rb