Sha256: f9bcea79cdfb217f97a6d26e45d4c8e96246efacb0b30737915d42dc6ac54664

Contents?: true

Size: 921 Bytes

Versions: 2

Compression:

Stored size: 921 Bytes

Contents

require "curses"

module Feedcellar
  module CursesView
    module_function
    def run(feeds)
      Curses.init_screen
      Curses.noecho
      Curses.nonl

      feeds.each_with_index do |feed, i|
        Curses.setpos(i, 0)
        title = feed.title.gsub(/\n/, " ")
        date = feed.date.strftime("%Y/%m/%d")
        Curses.addstr("#{date} #{title}")
      end
      Curses.setpos(0, 0)

      pos = 0
      begin
        loop do
          case Curses.getch
          when "j"
            pos += 1 if pos < Curses.lines - 1
            Curses.setpos(pos, 0)
          when "k"
            pos -= 1 if pos > 0
            Curses.setpos(pos, 0)
          when "f", 13
            spawn("firefox",
                  feeds[pos + 1].link,
                  [:out, :err] => "/dev/null")
          when "q"
            break
          end
        end
      ensure
        Curses.close_screen
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
feedcellar-0.3.2 lib/feedcellar/curses_view.rb
feedcellar-0.3.1 lib/feedcellar/curses_view.rb