io-console 0.7.1 → 0.7.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3e3b733596bf1321d1707591ae4432f9b376ca67926612396c2ea70af6623298
4
- data.tar.gz: 4f9af1c89378179febe0bb08b50ac381e2e691cc00db4aac14b4b3b28984e924
3
+ metadata.gz: ea376ca7a23381cc7ad476248aa32fc95ff2fe19be07170f6eb4031b42e897ab
4
+ data.tar.gz: 321d946b43b46f279bb28d08c173c48b05e9c9a087d51cbcf1715153c772cda1
5
5
  SHA512:
6
- metadata.gz: a59066b0ef365b48506ece88aa529c497ba3168d8e1c4448d8be5d14ce4e5068da6d47f65211caa19fdb129514105b253ebaef4f545dbf29057fad772ea950c9
7
- data.tar.gz: '0068b743595457e23d0607635c3746f4b5cc8731bcfc0f729077b6fd2e23fa84e07024536753cc0eefeffa0a8953d3eccff627c08fe6adb8c529021840ce5d30'
6
+ metadata.gz: 88f4b33458250ec0e9039c9187d144fb9c851753c39b7e5191db26e2b8a898ce5ac6d6897330c93ae8eab1c6a4cd800a7af9f36ce83fd20b6caedfc52a12ed50
7
+ data.tar.gz: 4235ecf65e5e0b81c196d62a0a95649f708a29e2c300d645e99301dd3b6a470dc30b3cad6e2151b8ebf69c15c797962f62f55d6cdb935179f0656d2e450939af
data/.document CHANGED
@@ -1,4 +1,5 @@
1
1
  LICENSE.txt
2
2
  README.md
3
+ docs/
3
4
  ext/
4
5
  lib/io/console/size.rb
@@ -2,6 +2,10 @@
2
2
  /*
3
3
  * console IO module
4
4
  */
5
+
6
+ static const char *const
7
+ IO_CONSOLE_VERSION = "0.7.2";
8
+
5
9
  #include "ruby.h"
6
10
  #include "ruby/io.h"
7
11
  #include "ruby/thread.h"
@@ -75,6 +79,8 @@ getattr(int fd, conmode *t)
75
79
  #define SET_LAST_ERROR (0)
76
80
  #endif
77
81
 
82
+ #define CSI "\x1b\x5b"
83
+
78
84
  static ID id_getc, id_console, id_close;
79
85
  static ID id_gets, id_flush, id_chomp_bang;
80
86
 
@@ -896,6 +902,16 @@ console_set_winsize(VALUE io, VALUE size)
896
902
  #endif
897
903
 
898
904
  #ifdef _WIN32
905
+ /*
906
+ * call-seq:
907
+ * io.check_winsize_changed { ... } -> io
908
+ *
909
+ * Yields while console input events are queued.
910
+ *
911
+ * This method is Windows only.
912
+ *
913
+ * You must require 'io/console' to use this method.
914
+ */
899
915
  static VALUE
900
916
  console_check_winsize_changed(VALUE io)
901
917
  {
@@ -982,6 +998,14 @@ console_ioflush(VALUE io)
982
998
  return io;
983
999
  }
984
1000
 
1001
+ /*
1002
+ * call-seq:
1003
+ * io.beep
1004
+ *
1005
+ * Beeps on the output console.
1006
+ *
1007
+ * You must require 'io/console' to use this method.
1008
+ */
985
1009
  static VALUE
986
1010
  console_beep(VALUE io)
987
1011
  {
@@ -1049,6 +1073,17 @@ console_scroll(VALUE io, int line)
1049
1073
 
1050
1074
  #include "win32_vk.inc"
1051
1075
 
1076
+ /*
1077
+ * call-seq:
1078
+ * io.pressed?(key) -> bool
1079
+ *
1080
+ * Returns +true+ if +key+ is pressed. +key+ may be a virtual key
1081
+ * code or its name (String or Symbol) with out "VK_" prefix.
1082
+ *
1083
+ * This method is Windows only.
1084
+ *
1085
+ * You must require 'io/console' to use this method.
1086
+ */
1052
1087
  static VALUE
1053
1088
  console_key_pressed_p(VALUE io, VALUE k)
1054
1089
  {
@@ -1142,7 +1177,7 @@ static VALUE
1142
1177
  console_scroll(VALUE io, int line)
1143
1178
  {
1144
1179
  if (line) {
1145
- VALUE s = rb_sprintf("\x1b[%d%c", line < 0 ? -line : line,
1180
+ VALUE s = rb_sprintf(CSI "%d%c", line < 0 ? -line : line,
1146
1181
  line < 0 ? 'T' : 'S');
1147
1182
  rb_io_write(io, s);
1148
1183
  }
@@ -1192,6 +1227,14 @@ console_cursor_pos(VALUE io)
1192
1227
  #endif
1193
1228
  }
1194
1229
 
1230
+ /*
1231
+ * call-seq:
1232
+ * io.goto(line, column) -> io
1233
+ *
1234
+ * Set the cursor position at +line+ and +column+.
1235
+ *
1236
+ * You must require 'io/console' to use this method.
1237
+ */
1195
1238
  static VALUE
1196
1239
  console_goto(VALUE io, VALUE y, VALUE x)
1197
1240
  {
@@ -1204,7 +1247,7 @@ console_goto(VALUE io, VALUE y, VALUE x)
1204
1247
  rb_syserr_fail(LAST_ERROR, 0);
1205
1248
  }
1206
1249
  #else
1207
- rb_io_write(io, rb_sprintf("\x1b[%d;%dH", NUM2UINT(y)+1, NUM2UINT(x)+1));
1250
+ rb_io_write(io, rb_sprintf(CSI "%d;%dH", NUM2UINT(y)+1, NUM2UINT(x)+1));
1208
1251
  #endif
1209
1252
  return io;
1210
1253
  }
@@ -1229,8 +1272,8 @@ console_move(VALUE io, int y, int x)
1229
1272
  #else
1230
1273
  if (x || y) {
1231
1274
  VALUE s = rb_str_new_cstr("");
1232
- if (y) rb_str_catf(s, "\x1b[%d%c", y < 0 ? -y : y, y < 0 ? 'A' : 'B');
1233
- if (x) rb_str_catf(s, "\x1b[%d%c", x < 0 ? -x : x, x < 0 ? 'D' : 'C');
1275
+ if (y) rb_str_catf(s, CSI "%d%c", y < 0 ? -y : y, y < 0 ? 'A' : 'B');
1276
+ if (x) rb_str_catf(s, CSI "%d%c", x < 0 ? -x : x, x < 0 ? 'D' : 'C');
1234
1277
  rb_io_write(io, s);
1235
1278
  rb_io_flush(io);
1236
1279
  }
@@ -1238,6 +1281,15 @@ console_move(VALUE io, int y, int x)
1238
1281
  return io;
1239
1282
  }
1240
1283
 
1284
+ /*
1285
+ * call-seq:
1286
+ * io.goto_column(column) -> io
1287
+ *
1288
+ * Set the cursor position at +column+ in the same line of the current
1289
+ * position.
1290
+ *
1291
+ * You must require 'io/console' to use this method.
1292
+ */
1241
1293
  static VALUE
1242
1294
  console_goto_column(VALUE io, VALUE val)
1243
1295
  {
@@ -1255,11 +1307,23 @@ console_goto_column(VALUE io, VALUE val)
1255
1307
  rb_syserr_fail(LAST_ERROR, 0);
1256
1308
  }
1257
1309
  #else
1258
- rb_io_write(io, rb_sprintf("\x1b[%dG", NUM2UINT(val)+1));
1310
+ rb_io_write(io, rb_sprintf(CSI "%dG", NUM2UINT(val)+1));
1259
1311
  #endif
1260
1312
  return io;
1261
1313
  }
1262
1314
 
1315
+ /*
1316
+ * call-seq:
1317
+ * io.erase_line(mode) -> io
1318
+ *
1319
+ * Erases the line at the cursor corresponding to +mode+.
1320
+ * +mode+ may be either:
1321
+ * 0: after cursor
1322
+ * 1: before and cursor
1323
+ * 2: entire line
1324
+ *
1325
+ * You must require 'io/console' to use this method.
1326
+ */
1263
1327
  static VALUE
1264
1328
  console_erase_line(VALUE io, VALUE val)
1265
1329
  {
@@ -1290,11 +1354,23 @@ console_erase_line(VALUE io, VALUE val)
1290
1354
  constat_clear(h, ws.wAttributes, w, *pos);
1291
1355
  return io;
1292
1356
  #else
1293
- rb_io_write(io, rb_sprintf("\x1b[%dK", mode));
1357
+ rb_io_write(io, rb_sprintf(CSI "%dK", mode));
1294
1358
  #endif
1295
1359
  return io;
1296
1360
  }
1297
1361
 
1362
+ /*
1363
+ * call-seq:
1364
+ * io.erase_screen(mode) -> io
1365
+ *
1366
+ * Erases the screen at the cursor corresponding to +mode+.
1367
+ * +mode+ may be either:
1368
+ * 0: after cursor
1369
+ * 1: before and cursor
1370
+ * 2: entire screen
1371
+ *
1372
+ * You must require 'io/console' to use this method.
1373
+ */
1298
1374
  static VALUE
1299
1375
  console_erase_screen(VALUE io, VALUE val)
1300
1376
  {
@@ -1332,11 +1408,21 @@ console_erase_screen(VALUE io, VALUE val)
1332
1408
  }
1333
1409
  constat_clear(h, ws.wAttributes, w, *pos);
1334
1410
  #else
1335
- rb_io_write(io, rb_sprintf("\x1b[%dJ", mode));
1411
+ rb_io_write(io, rb_sprintf(CSI "%dJ", mode));
1336
1412
  #endif
1337
1413
  return io;
1338
1414
  }
1339
1415
 
1416
+ /*
1417
+ * call-seq:
1418
+ * io.cursor = [line, column] -> io
1419
+ *
1420
+ * Same as <tt>io.goto(line, column)</tt>
1421
+ *
1422
+ * See IO#goto.
1423
+ *
1424
+ * You must require 'io/console' to use this method.
1425
+ */
1340
1426
  static VALUE
1341
1427
  console_cursor_set(VALUE io, VALUE cpos)
1342
1428
  {
@@ -1345,42 +1431,98 @@ console_cursor_set(VALUE io, VALUE cpos)
1345
1431
  return console_goto(io, RARRAY_AREF(cpos, 0), RARRAY_AREF(cpos, 1));
1346
1432
  }
1347
1433
 
1434
+ /*
1435
+ * call-seq:
1436
+ * io.cursor_up(n) -> io
1437
+ *
1438
+ * Moves the cursor up +n+ lines.
1439
+ *
1440
+ * You must require 'io/console' to use this method.
1441
+ */
1348
1442
  static VALUE
1349
1443
  console_cursor_up(VALUE io, VALUE val)
1350
1444
  {
1351
1445
  return console_move(io, -NUM2INT(val), 0);
1352
1446
  }
1353
1447
 
1448
+ /*
1449
+ * call-seq:
1450
+ * io.cursor_down(n) -> io
1451
+ *
1452
+ * Moves the cursor down +n+ lines.
1453
+ *
1454
+ * You must require 'io/console' to use this method.
1455
+ */
1354
1456
  static VALUE
1355
1457
  console_cursor_down(VALUE io, VALUE val)
1356
1458
  {
1357
1459
  return console_move(io, +NUM2INT(val), 0);
1358
1460
  }
1359
1461
 
1462
+ /*
1463
+ * call-seq:
1464
+ * io.cursor_left(n) -> io
1465
+ *
1466
+ * Moves the cursor left +n+ columns.
1467
+ *
1468
+ * You must require 'io/console' to use this method.
1469
+ */
1360
1470
  static VALUE
1361
1471
  console_cursor_left(VALUE io, VALUE val)
1362
1472
  {
1363
1473
  return console_move(io, 0, -NUM2INT(val));
1364
1474
  }
1365
1475
 
1476
+ /*
1477
+ * call-seq:
1478
+ * io.cursor_right(n) -> io
1479
+ *
1480
+ * Moves the cursor right +n+ columns.
1481
+ *
1482
+ * You must require 'io/console' to use this method.
1483
+ */
1366
1484
  static VALUE
1367
1485
  console_cursor_right(VALUE io, VALUE val)
1368
1486
  {
1369
1487
  return console_move(io, 0, +NUM2INT(val));
1370
1488
  }
1371
1489
 
1490
+ /*
1491
+ * call-seq:
1492
+ * io.scroll_forward(n) -> io
1493
+ *
1494
+ * Scrolls the entire scrolls forward +n+ lines.
1495
+ *
1496
+ * You must require 'io/console' to use this method.
1497
+ */
1372
1498
  static VALUE
1373
1499
  console_scroll_forward(VALUE io, VALUE val)
1374
1500
  {
1375
1501
  return console_scroll(io, +NUM2INT(val));
1376
1502
  }
1377
1503
 
1504
+ /*
1505
+ * call-seq:
1506
+ * io.scroll_backward(n) -> io
1507
+ *
1508
+ * Scrolls the entire scrolls backward +n+ lines.
1509
+ *
1510
+ * You must require 'io/console' to use this method.
1511
+ */
1378
1512
  static VALUE
1379
1513
  console_scroll_backward(VALUE io, VALUE val)
1380
1514
  {
1381
1515
  return console_scroll(io, -NUM2INT(val));
1382
1516
  }
1383
1517
 
1518
+ /*
1519
+ * call-seq:
1520
+ * io.clear_screen -> io
1521
+ *
1522
+ * Clears the entire screen and moves the cursor top-left corner.
1523
+ *
1524
+ * You must require 'io/console' to use this method.
1525
+ */
1384
1526
  static VALUE
1385
1527
  console_clear_screen(VALUE io)
1386
1528
  {
@@ -1675,14 +1817,16 @@ InitVM_console(void)
1675
1817
  rb_define_method(rb_cIO, "getpass", console_getpass, -1);
1676
1818
  rb_define_singleton_method(rb_cIO, "console", console_dev, -1);
1677
1819
  {
1820
+ /* :stopdoc: */
1678
1821
  VALUE mReadable = rb_define_module_under(rb_cIO, "generic_readable");
1822
+ /* :startdoc: */
1679
1823
  rb_define_method(mReadable, "getch", io_getch, -1);
1680
1824
  rb_define_method(mReadable, "getpass", io_getpass, -1);
1681
1825
  }
1682
1826
  {
1683
1827
  /* :stopdoc: */
1684
1828
  cConmode = rb_define_class_under(rb_cIO, "ConsoleMode", rb_cObject);
1685
- rb_define_const(cConmode, "VERSION", rb_str_new_cstr(STRINGIZE(IO_CONSOLE_VERSION)));
1829
+ rb_define_const(cConmode, "VERSION", rb_str_new_cstr(IO_CONSOLE_VERSION));
1686
1830
  rb_define_alloc_func(cConmode, conmode_alloc);
1687
1831
  rb_undef_method(cConmode, "initialize");
1688
1832
  rb_define_method(cConmode, "initialize_copy", conmode_init_copy, 1);
@@ -1,11 +1,6 @@
1
1
  # frozen_string_literal: false
2
2
  require 'mkmf'
3
3
 
4
- version = ["../../..", "."].find do |dir|
5
- break File.read(File.join(__dir__, dir, "io-console.gemspec"))[/^_VERSION\s*=\s*"(.*?)"/, 1]
6
- rescue
7
- end
8
-
9
4
  have_func("rb_io_path")
10
5
  have_func("rb_io_descriptor")
11
6
  have_func("rb_io_get_write_io")
@@ -40,7 +35,6 @@ when true
40
35
  elsif have_func("rb_scheduler_timeout") # 3.0
41
36
  have_func("rb_io_wait")
42
37
  end
43
- $defs << "-D""IO_CONSOLE_VERSION=#{version}"
44
38
  create_makefile("io/console") {|conf|
45
39
  conf << "\n""VK_HEADER = #{vk_header}\n"
46
40
  }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: io-console
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.1
4
+ version: 0.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nobu Nakada
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-12-16 00:00:00.000000000 Z
11
+ date: 2024-01-18 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: add console capabilities to IO instances.
14
14
  email: nobu@ruby-lang.org
@@ -30,6 +30,7 @@ licenses:
30
30
  - BSD-2-Clause
31
31
  metadata:
32
32
  source_code_url: https://github.com/ruby/io-console
33
+ changelog_uri: https://github.com/ruby/io-console/releases
33
34
  post_install_message:
34
35
  rdoc_options: []
35
36
  require_paths:
@@ -45,7 +46,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
45
46
  - !ruby/object:Gem::Version
46
47
  version: '0'
47
48
  requirements: []
48
- rubygems_version: 3.5.0.dev
49
+ rubygems_version: 3.6.0.dev
49
50
  signing_key:
50
51
  specification_version: 4
51
52
  summary: Console interface