Sha256: e035571596f046d423b507510d6c167ad313f6916315c0996e247d7e42dc5d62

Contents?: true

Size: 1.36 KB

Versions: 5

Compression:

Stored size: 1.36 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.4.3 lib/vedeu/support/write.rb
vedeu-0.4.2 lib/vedeu/support/write.rb
vedeu-0.4.1 lib/vedeu/support/write.rb
vedeu-0.4.0 lib/vedeu/support/write.rb
vedeu-0.3.5 lib/vedeu/support/write.rb