2011-09-07 10 views
5

¿Cómo puedo obtener colores con la biblioteca de Curses por defecto de Ruby?Ruby curses colors

Así que algo como:

puts "\e[0m\e[30;47mtest\e[0m" 

funciona muy bien. Da un bonito negro sobre fondo gris claro. Pero esto:

#!/usr/bin/env ruby 

require 'curses' 

Curses.noecho # do not show typed keys 
Curses.init_screen 
Curses.stdscr.keypad(true) # enable arrow keys (for pageup/down) 
Curses.stdscr.nodelay = 1 

Curses.clear 
Curses.setpos(0,0) 
Curses.addstr "Hello!" 
Curses.addstr "\e[0m\e[30;47mHello!\e[0m" 

Muestra:

Hola!

^[[0m^[[30; 47mHello^[[0m

En última instancia, necesito colores para esto:!

How to capture a key press in Ruby?

require 'curses' 

Curses.noecho # do not show typed keys 
Curses.init_screen 
Curses.stdscr.keypad(true) # enable arrow keys (required for pageup/down) 

loop do 
    case Curses.getch 
    when Curses::Key::PPAGE 
    Curses.setpos(0,0) 
    Curses.addstr("Page Up") 
    when Curses::Key::NPAGE 
    Curses.setpos(0,0) 
    Curses.addstr("Page Dn") 
    end 
end 
+1

FYI 'curses' del stdlib está en desuso, debe tratar de' ncurses' - https://github.com/eclubb/ncurses-ruby/ que tiene adecuada documentación – basicxman

+1

@basicxman, ¿qué te hace decir que las maldiciones de stdlib están en desuso? – cam

+0

libruby 'curses' de hecho no tiene la documentación adecuada, solo pude encontrar/obtener respuestas aquí en SO –

Respuesta

9

hay ejemplos de maldiciones uso en el código fuente de ruby, ver, por ejemplo here.

Su código podría ser algo como:

require 'curses' 
include Curses 

Curses.noecho # do not show typed keys 
Curses.init_screen 
Curses.stdscr.keypad(true) # enable arrow keys (required for pageup/down) 
Curses.start_color 
# Determines the colors in the 'attron' below 
Curses.init_pair(COLOR_BLUE,COLOR_BLUE,COLOR_BLACK) 
Curses.init_pair(COLOR_RED,COLOR_RED,COLOR_BLACK) 

loop do 

    case Curses.getch 

    when Curses::Key::PPAGE 
    Curses.clear 
    Curses.setpos(0,0) 
    # Use colors defined color_init 
    Curses.attron(color_pair(COLOR_RED)|A_NORMAL){ 
     Curses.addstr("Page Up") 
    } 
    when Curses::Key::NPAGE 
    Curses.clear 
    Curses.setpos(0,0) 
    Curses.attron(color_pair(COLOR_BLUE)|A_NORMAL){ 
     Curses.addstr("Page Down") 
    } 
    end 
end 
Cuestiones relacionadas