mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Backport io-console 0.5.7 to Ruby 3.0 (#4252)
* [ruby/io-console] [DOC] Note that IO#getpass returns a chomped string IO#getpass uses String#chomp! on the read input line.1e98c93bc8* [ruby/io-console] Ignore chomp! result and return the modified string09e5ccc729* [ruby/io-console] Pre-define chomp! ID028e1c9497* [ruby/io-console] Shrink struct query_args720be0a3e5* [ruby/io-console] bump up to 0.5.7f55d7ebff6Co-authored-by: Marcus Stollsteimer <sto.mar@web.de> Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org>
This commit is contained in:
parent
6f9e007729
commit
b20e2c3f2a
3 changed files with 19 additions and 5 deletions
|
|
@ -77,7 +77,7 @@ getattr(int fd, conmode *t)
|
||||||
|
|
||||||
static ID id_getc, id_console, id_close, id_min, id_time, id_intr;
|
static ID id_getc, id_console, id_close, id_min, id_time, id_intr;
|
||||||
#if ENABLE_IO_GETPASS
|
#if ENABLE_IO_GETPASS
|
||||||
static ID id_gets;
|
static ID id_gets, id_chomp_bang;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_RB_SCHEDULER_TIMEOUT
|
#ifdef HAVE_RB_SCHEDULER_TIMEOUT
|
||||||
|
|
@ -1223,8 +1223,8 @@ console_key_pressed_p(VALUE io, VALUE k)
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
struct query_args {
|
struct query_args {
|
||||||
const char *qstr;
|
char qstr[6];
|
||||||
int opt;
|
unsigned char opt;
|
||||||
};
|
};
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
|
@ -1562,7 +1562,7 @@ static VALUE
|
||||||
str_chomp(VALUE str)
|
str_chomp(VALUE str)
|
||||||
{
|
{
|
||||||
if (!NIL_P(str)) {
|
if (!NIL_P(str)) {
|
||||||
str = rb_funcallv(str, rb_intern("chomp!"), 0, 0);
|
rb_funcallv(str, id_chomp_bang, 0, 0);
|
||||||
}
|
}
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
@ -1574,6 +1574,10 @@ str_chomp(VALUE str)
|
||||||
* Reads and returns a line without echo back.
|
* Reads and returns a line without echo back.
|
||||||
* Prints +prompt+ unless it is +nil+.
|
* Prints +prompt+ unless it is +nil+.
|
||||||
*
|
*
|
||||||
|
* The newline character that terminates the
|
||||||
|
* read line is removed from the returned string,
|
||||||
|
* see String#chomp!.
|
||||||
|
*
|
||||||
* You must require 'io/console' to use this method.
|
* You must require 'io/console' to use this method.
|
||||||
*/
|
*/
|
||||||
static VALUE
|
static VALUE
|
||||||
|
|
@ -1618,6 +1622,7 @@ Init_console(void)
|
||||||
id_getc = rb_intern("getc");
|
id_getc = rb_intern("getc");
|
||||||
#if ENABLE_IO_GETPASS
|
#if ENABLE_IO_GETPASS
|
||||||
id_gets = rb_intern("gets");
|
id_gets = rb_intern("gets");
|
||||||
|
id_chomp_bang = rb_intern("chomp!");
|
||||||
#endif
|
#endif
|
||||||
id_console = rb_intern("console");
|
id_console = rb_intern("console");
|
||||||
id_close = rb_intern("close");
|
id_close = rb_intern("close");
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
# -*- ruby -*-
|
# -*- ruby -*-
|
||||||
_VERSION = "0.5.6"
|
_VERSION = "0.5.7"
|
||||||
|
|
||||||
Gem::Specification.new do |s|
|
Gem::Specification.new do |s|
|
||||||
s.name = "io-console"
|
s.name = "io-console"
|
||||||
|
|
|
||||||
|
|
@ -235,6 +235,15 @@ defined?(PTY) and defined?(IO.console) and TestIO_Console.class_eval do
|
||||||
assert_equal("\r\n", r.gets)
|
assert_equal("\r\n", r.gets)
|
||||||
assert_equal("\"asdf\"", r.gets.chomp)
|
assert_equal("\"asdf\"", r.gets.chomp)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
run_pty("p IO.console.getpass('> ')") do |r, w|
|
||||||
|
assert_equal("> ", r.readpartial(10))
|
||||||
|
sleep 0.1
|
||||||
|
w.print "asdf\C-D\C-D"
|
||||||
|
sleep 0.1
|
||||||
|
assert_equal("\r\n", r.gets)
|
||||||
|
assert_equal("\"asdf\"", r.gets.chomp)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_iflush
|
def test_iflush
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue