2011-09-07 13 views
5

Ruby'in varsayılan Curses kitaplığı ile renkleri nasıl alabilirim?Ruby curses renkler

Yani böyle bir şey:

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

iyi çalışıyor. Açık gri arka plan üzerinde güzel bir siyah verir. Ama bu:

#!/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" 

görüntüler:

Merhaba!

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

Sonuçta, bunun için renkleri gerekir:!

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

Bilginize 'kullanımdan kaldırıldı stdlib gelen curses', ncurses'' denemelisiniz:

Kodunuz gibi bir şey olabilir dokümantasyon – basicxman

+1

@basicxman, stdlib'in küfürlerinden vazgeçtiğini söyleyen nedir? – cam

+0

libruby 'curses' gerçekten uygun bir dökümantasyona sahip değil, sadece SO –

cevap

9

küfürler örnekleri vardır Ruby kaynak kodunda kullanım, bkz. örn. here. https://github.com/eclubb/ncurses-ruby/ uygun olan -

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