Sha256: 8020750727fb9afcde8994e2850cfdd27e58bdc3986de36dfa9c6dfded13a0dd

Contents?: true

Size: 1.52 KB

Versions: 23

Compression:

Stored size: 1.52 KB

Contents

module Vedeu

  # The grid system splits the terminal height and width into 12 equal parts, by
  # dividing the available height and width by 12. If the terminal height or
  # width is not a multiple of 12, then Grid chooses the maximum value which
  # will fit.
  #
  class Grid

    # @see #initialize
    # @see #columns
    def self.columns(value)
      new(value).columns
    end

    # @see #initialize
    # @see #rows
    def self.rows(value)
      new(value).rows
    end

    # Returns a new instance of Vedeu::Grid.
    #
    # @param value [Fixnum]
    # @return [Grid]
    def initialize(value)
      @value = value
    end

    # @see Vedeu::DSL::Geometry#columns
    def columns
      fail Vedeu::OutOfRange,
           'Valid value between 1 and 12 inclusive.' if out_of_range?

      column * value
    end

    # @see Vedeu::DSL::Geometry#rows
    def rows
      fail Vedeu::OutOfRange,
           'Valid value between 1 and 12 inclusive.' if out_of_range?

      row * value
    end

    protected

    # @!attribute [r] value
    # @return [Fixnum]
    attr_reader :value

    private

    # Returns the height of a single row in characters.
    #
    # @return [Fixnum]
    def row
      Vedeu.height / 12
    end

    # Returns a boolean indicating whether the value is out of range.
    #
    # @return [Boolean]
    def out_of_range?
      value < 1 || value > 12
    end

    # Returns the width of a single column in characters.
    #
    # @return [Fixnum]
    def column
      Vedeu.width / 12
    end

  end # Grid

end # Vedeu

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
vedeu-0.4.61 lib/vedeu/geometry/grid.rb
vedeu-0.4.60 lib/vedeu/geometry/grid.rb
vedeu-0.4.59 lib/vedeu/geometry/grid.rb