Ruby 红宝石诅咒颜色

Ruby 红宝石诅咒颜色,ruby,curses,Ruby,Curses,如何使用Ruby的默认Curses库获取颜色 比如: puts "\e[0m\e[30;47mtest\e[0m" 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_col

如何使用Ruby的默认Curses库获取颜色

比如:

puts "\e[0m\e[30;47mtest\e[0m"
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
效果很好。在浅灰色背景上呈现出漂亮的黑色。但这是:

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

你好!

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

最终,我需要颜色:


ruby源代码中有使用诅咒的示例,请参见,例如

您的代码可能类似于:

puts "\e[0m\e[30;47mtest\e[0m"
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

如果stdlib中的诅咒已被弃用,请尝试使用正确的documentation@basicxman,你为什么说stdlib的curses不受欢迎?libruby
curses
确实没有合适的文档,我只能在SONo上找到/得到答案,不要使用ncurses。使用curses。它没有被删除ecated,如果您使用ncurses创建GUI,您的用户在使用它之前必须下载并安装ncurses gem。虽然ncurses更好,但差异可以忽略,也不值得。只需使用curses,并使用ncurses文档来处理问题。curses包不受欢迎。它是ruby core库,而ncurses包不是。一般来说,curses和ncurses是一回事,因为curses是通用名(或API)ncurses是它的特殊实现。此外,ruby的curses包实际上使用的是ncurses系统库。这也证明了它并没有被弃用。有些人只是将系统库的名称与general thing和ruby包相关联。