Sha256: 0b349820079adf997601ca9ad5fd736f7dfbbbed6acbca13b9e5f970d64802bf

Contents?: true

Size: 854 Bytes

Versions: 1

Compression:

Stored size: 854 Bytes

Contents

module Vedeu
  class NotImplementedError < StandardError; end

  class Interface
    def initialize(options = {})
      @options = options
    end

    def initial_state
      raise NotImplementedError, 'Subclasses implement this method.'
    end

    def input
      evaluate
    end

    def output(command)
      Compositor.arrange(command, self)
    end

    def geometry
      @geometry ||= Geometry.new(options[:geometry])
    end

    private

    attr_reader :options

    def evaluate
      Commands.execute(read)
    end

    def read
      Terminal.input
    end

    def options
      defaults.merge!(@options)
    end

    def defaults
      {
        geometry: {
                    y:      1,
                    x:      1,
                    width:  :auto,
                    height: :auto
                  }
      }
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
vedeu-0.0.9 lib/vedeu/interface/interface.rb