Sha256: 6e00073d874f93db2656dff4a76c8dbce139aaf68ad926b59d96f2ddaad6b1e5

Contents?: true

Size: 1.06 KB

Versions: 1

Compression:

Stored size: 1.06 KB

Contents

module Vedeu
  class Buffer

    attr_reader :back, :front, :interface

    # @param attributes [Hash]
    # @return [Buffer]
    def initialize(attributes = {})
      @attributes = attributes

      @back       = attributes.fetch(:back)
      @front      = attributes.fetch(:front)
      @interface  = attributes.fetch(:interface)
    end

    # @param view [Interface]
    # @return [Buffer]
    def enqueue(view)
      merge({ back: view })
    end

    # @return [Buffer]
    def refresh
      return merge({ front: back, back: nil }).render if content_available?
      return clear                                    if no_content_available?
      return render
    end

    # @return [Buffer]
    def render
      Terminal.output(front.to_s)

      self
    end

    # @return [Buffer]
    def clear
      Terminal.output(interface.clear)

      self
    end

    private

    def merge(new_attributes)
      Buffer.new(@attributes.merge(new_attributes))
    end

    def content_available?
      !!(back)
    end

    def no_content_available?
      front.nil?
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
vedeu-0.1.17 lib/vedeu/support/buffer.rb