module BladeRunner::Console
Constants
- COLOR_NAMES
- PADDING
Public Instance Methods
colors()
click to toggle source
# File lib/blade_runner/interface/console.rb, line 15 def colors @colors ||= OpenStruct.new.tap do |colors| COLOR_NAMES.each do |name| const = Curses.const_get("COLOR_#{name.upcase}") Curses.init_pair(const, const, Curses::COLOR_BLACK) colors[name] = Curses.color_pair(const) end end end
create_window(options = {})
click to toggle source
# File lib/blade_runner/interface/console.rb, line 25 def create_window(options = {}) height = options[:height] || 0 width = options[:width] || 0 top = options[:top] || 0 left = options[:left] || PADDING parent = options[:parent] || Curses.stdscr parent.subwin(height, width, top, left) end
run()
click to toggle source
# File lib/blade_runner/interface/console.rb, line 44 def run start_screen init_windows handle_keys handle_stale_tabs BR.subscribe("/results") do |details| session = BR::Session.find(details["session_id"]) if tab = Tab.find(session.id) if details["line"] && tab.active? Tab.content_window.addstr(details["line"] + "\n") Tab.content_window.noutrefresh end tab.draw else tab = Tab.create(id: session.id) tab.activate if Tab.size == 1 end Curses.doupdate end end
start()
click to toggle source
# File lib/blade_runner/interface/console.rb, line 35 def start run BR::Assets.watch_logical_paths end
stop()
click to toggle source
# File lib/blade_runner/interface/console.rb, line 40 def stop Curses.close_screen end
Private Instance Methods
handle_keys()
click to toggle source
# File lib/blade_runner/interface/console.rb, line 90 def handle_keys EM.defer do while ch = Curses.getch case ch when Curses::KEY_LEFT Tab.active.activate_previous Curses.doupdate when Curses::KEY_RIGHT Tab.active.activate_next Curses.doupdate when "q" BR.stop end end end end
handle_stale_tabs()
click to toggle source
# File lib/blade_runner/interface/console.rb, line 107 def handle_stale_tabs BR.subscribe("/browsers") do |details| if details["message"] = "ping" if tab = Tab.find(details["session_id"]) tab.last_ping_at = Time.now end end end EM.add_periodic_timer(1) do Tab.stale.each { |t| remove_tab(t) } end end
init_windows()
click to toggle source
# File lib/blade_runner/interface/console.rb, line 77 def init_windows header_window = create_window(height: 3) header_window.attron(Curses::A_BOLD) header_window.addstr "BLADE RUNNER [press 'q' to quit]\n" header_window.attroff(Curses::A_BOLD) header_window.addstr "Open #{BR.url} to start" header_window.noutrefresh Tab.install(top: header_window.maxy) Curses.doupdate end
remove_tab(tab)
click to toggle source
# File lib/blade_runner/interface/console.rb, line 121 def remove_tab(tab) Tab.remove(tab.id) Curses.doupdate end
start_screen()
click to toggle source
# File lib/blade_runner/interface/console.rb, line 69 def start_screen Curses.init_screen Curses.start_color Curses.noecho Curses.curs_set(0) Curses.stdscr.keypad(true) end