Sha256: fa1a8f97c896adf4a936d7eb49811063523d17cf2fcaeb49ad600ea7579ae3ea

Contents?: true

Size: 1.22 KB

Versions: 5

Compression:

Stored size: 1.22 KB

Contents

module Vedeu

  module Output

    # 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::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::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 # Output

end # Vedeu

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
vedeu-0.6.20 lib/vedeu/output/direct.rb
vedeu-0.6.19 lib/vedeu/output/direct.rb
vedeu-0.6.18 lib/vedeu/output/direct.rb
vedeu-0.6.17 lib/vedeu/output/direct.rb
vedeu-0.6.16 lib/vedeu/output/direct.rb