Sha256: f1f6c0e9954d150489e98ae6b6423adc7a18dcbf3d225bd2e4e44adf0ec60fa9

Contents?: true

Size: 1.09 KB

Versions: 2

Compression:

Stored size: 1.09 KB

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 [String]
    def self.write(value:, x:, y:)
      new(value: value, x: x, y: y).write
    end

    # Returns a new instance of Vedeu::Direct.
    #
    # @param value [String]
    # @param x [Fixnum]
    # @param y [Fixnum]
    # @return [Vedeu::Direct]
    def initialize(value:, x:, y:)
      @value = value || ''
      @x     = x     || 1
      @y     = y     || 1
    end

    # @return [String]
    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::Geometry::Position.new(y, x).to_s
    end

  end # Direct

end # Vedeu

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
vedeu-0.6.8 lib/vedeu/output/direct.rb
vedeu-0.6.7 lib/vedeu/output/direct.rb