Sha256: fc58a229ff048e53ccadd475a8802d000f76ee4039cef123ffec6d3ad084fea5

Contents?: true

Size: 1.35 KB

Versions: 5

Compression:

Stored size: 1.35 KB

Contents

module Vedeu

  # The basis of a fake output device.
  class Write

    # @see Vedeu::Write#write
    def self.to(console, data = nil)
      new(console, data).write
    end

    # @return [Vedeu::Write]
    def initialize(console, data = nil)
      @console = console
      @data    = data
    end

    # Provides IO.console emulation of #print.
    #
    # @return [Array]
    def print(string = nil)
      @data = string unless string.nil?

      write
    end

    # @return [Array<Array>|Array<String>]
    def write
      streams
    end

    private

    attr_reader :console, :data

    # @return [Array<Char>|Array<String>]
    def streams
      lines.map do |line|
        if line.size > visible_columns
          line[0, visible_columns]

        else
          line

        end
      end
    end

    # @return [Array<Array>|Array<String>]
    def lines
      if content.size > visible_lines
        content[0, visible_lines]

      else
        content

      end
    end

    # @return [Array|Array<String>|Array<Array>]
    def content
      if data.nil? || data.empty?
        []

      elsif data.is_a?(String)
        data.split(/\n/)

      else
        data

      end
    end

    # @return [Fixnum]
    def visible_columns
      console.width #- 1
    end

    # @return [Fixnum]
    def visible_lines
      console.height #- 1
    end

  end # Write

end # Vedeu

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
vedeu-0.3.4 lib/vedeu/support/write.rb
vedeu-0.3.3 lib/vedeu/support/write.rb
vedeu-0.3.2 lib/vedeu/support/write.rb
vedeu-0.3.1 lib/vedeu/support/write.rb
vedeu-0.3.0 lib/vedeu/support/write.rb