Sha256: ca62382f53515008d90629612c32178c60e9b61d58f6205ef1fa60ff3402eb7f

Contents?: true

Size: 1.28 KB

Versions: 1

Compression:

Stored size: 1.28 KB

Contents

module Vedeu

  module Output

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

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

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

      # @return [String]
      def write
        Vedeu.log(type:    :output,
                  message: 'Directly writing output to terminal.')
        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
        @output ||= (Array(position) + Array(value)).join
      end

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

    end # Direct

  end # Output

end # Vedeu

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
vedeu-0.6.21 lib/vedeu/output/direct.rb