Sha256: 6da4a5428e485dde982d86979de61eaee56f64d97d925d17e4dac0c63549ec85

Contents?: true

Size: 1018 Bytes

Versions: 4

Compression:

Stored size: 1018 Bytes

Contents

module Vedeu

  # Write a string directly to the terminal at defined coordinates.
  #
  class Direct

    # @param value [String]
    # @param x [Fixnum]
    # @param y [Fixnum]
    # @return [void]
    def self.write(value:, x:, y:)
      new(value: value, x: x, y: y).write
    end

    # @param value [String]
    # @param x [Fixnum]
    # @param y [Fixnum]
    def initialize(value:, x:, y:)
      @value = value || ''
      @x     = x     || 1
      @y     = y     || 1
    end

    # @return [void]
    def write
      Vedeu::Terminal.output(output)

      output
    end

    protected

    # @attribute [r] value
    # @return [String]
    attr_reader :value

    # @attribute [r] x
    # @return [Fixnum]
    attr_reader :x

    # @attribute [r] y
    # @return [Fixnum]
    attr_reader :y

    private

    # @return [String]
    def output
      (Array(position) + Array(value)).join
    end

    # @return [String]
    def position
      Vedeu::Position.new(y, x).to_s
    end

  end # Direct

end # Vedeu

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
vedeu-0.6.3 lib/vedeu/output/direct.rb
vedeu-0.6.2 lib/vedeu/output/direct.rb
vedeu-0.6.1 lib/vedeu/output/direct.rb
vedeu-0.6.0 lib/vedeu/output/direct.rb