Sha256: e55d1a290e029aa9f33fa1c1b4a12ad47466480e0505c6599c217b26335f4330

Contents?: true

Size: 913 Bytes

Versions: 2

Compression:

Stored size: 913 Bytes

Contents

module TermNote
  class Show
    attr_accessor :panes

    def initialize
      @panes ||= []
    end

    def add(pane)
      raise ArgumentError, "Pane required" if pane.nil?
      panes << pane
      pane.show = self
    end

    def pane
      @pane || panes.first
    end

    def position
      panes.index pane
    end

    def total
      panes.size
    end

    def start
      active = true
      while active
        pane.call $stdout.winsize
        case command
          when "j" then forward
          when "k" then backward
          when "q" then active = false
        end
      end
    end

    def forward
      @pane = panes[position + 1] || panes.first
    end

    def backward
      @pane = panes[position - 1] || panes.last
    end

    def header
      "[#{position + 1}/#{total}] - #{panes.first.title}\n".bold
    end

    private

    def command
      $stdin.getch
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
termnote-1.5.1 lib/termnote/show.rb
termnote-1.5.0 lib/termnote/show.rb