Sha256: e4ce6ae6659e50fac29616290bb7d27067c459359d56790b8e302286e1fcca9c

Contents?: true

Size: 1.5 KB

Versions: 2

Compression:

Stored size: 1.5 KB

Contents

module Vedeu

  module Buffers

    # Allow the creation of individual named buffers for views.
    #
    # @api private
    #
    class View

      # Returns a new instance of Vedeu::Buffers::View.
      #
      # @param attributes [Hash<Symbol => NilClass|String|Symbol]
      # @option attributes name [NilClass|String|Symbol]
      # @return [Vedeu::Buffers::View]
      def initialize(attributes = {})
        defaults.merge!(attributes).each do |key, value|
          instance_variable_set("@#{key}", value || defaults.fetch(key))
        end
      end

      private

      # @return [Vedeu::Geometry::Geometry]
      def geometry
        Vedeu.geometries.by_name(name)
      end

      # @return [Vedeu::Buffers::Empty]
      def buffer
        @_buffer ||= Vedeu::Buffers::Empty
                       .new(height: geometry.bordered_height,
                            name:   name,
                            width:  geometry.bordered_width).buffer
      end

      # @return [Vedeu::Buffers::Empty]
      def current
        @current ||= buffer
      end

      # @return [Vedeu::Buffers::Empty]
      def current_reset!
        @current = buffer
      end

      # @return [Hash<Symbol => NilClass|String|Symbol]
      def defaults
        {
          name: ''
        }
      end

      # @return [Vedeu::Buffers::Empty]
      def dirty
        @dirty ||= buffer
      end

      # @return [Vedeu::Buffers::Empty]
      def dirty_reset!
        @dirty = buffer
      end

    end # View

  end # Buffers

end # Vedeu

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
vedeu-0.6.58 lib/vedeu/buffers/view.rb
vedeu-0.6.57 lib/vedeu/buffers/view.rb