Sha256: 9b7ac4318762a6cd4aef977b26764e9b7479f34a159427dcf8812563d52e5da4
Contents?: true
Size: 1.62 KB
Versions: 4
Compression:
Stored size: 1.62 KB
Contents
#!/usr/bin/env ruby # Emacs: This is -*- ruby -*- code! # # Unfinished read_line function # # Written 2003, 2004 by Tobias Peters # No warranties # Share and enjoy! require "ncursesw" # read_line returns an array # [string, last_cursor_position_in_string, keycode_of_terminating_enter_key]. # Complete the "when" clauses before including in your app! def read_line(y, x, window = Ncurses.stdscr, max_len = (window.getmaxx - x - 1), string = "", cursor_pos = 0) loop do window.mvaddstr(y,x,string) window.move(y,x+cursor_pos) ch = window.getch case ch when Ncurses::KEY_LEFT cursor_pos = [0, cursor_pos-1].max when Ncurses::KEY_RIGHT # similar, implement yourself ! when Ncurses::KEY_ENTER, ?\n, ?\r return string, cursor_pos, ch # Which return key has been used? when Ncurses::KEY_BACKSPACE string = string[0...([0, cursor_pos-1].max)] + string[cursor_pos..-1] cursor_pos = [0, cursor_pos-1].max window.mvaddstr(y, x+string.length, " ") # when etc... when " "[0]..255 # remaining printables if (cursor_pos < max_len) string[cursor_pos,0] = ch.chr cursor_pos += 1 else Ncurses.beep end else Ncurses.beep end end end if (__FILE__ == $0) then begin # demo mode Ncurses.initscr Ncurses.cbreak Ncurses.noecho # recognize KEY_ENTER, KEY_BACKSPACE etc Ncurses.keypad(Ncurses.stdscr, true) y = 10 x = 2 prompt = "Hallo > " Ncurses.mvaddstr(y,x, prompt) s = read_line(y, x + prompt.length) ensure Ncurses.endwin end end p s
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
ncursesw-1.4.3 | examples/read_line.rb |
ncursesw-1.4.2 | examples/read_line.rb |
ncursesw-1.4.1 | examples/read_line.rb |
ncursesw-1.4.0.0 | examples/read_line.rb |