bare-tty 2.0.1 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/binding.c +50 -0
- package/index.js +4 -0
- package/package.json +1 -1
package/binding.c
CHANGED
|
@@ -463,6 +463,51 @@ bare_tty_set_mode (js_env_t *env, js_callback_info_t *info) {
|
|
|
463
463
|
return NULL;
|
|
464
464
|
}
|
|
465
465
|
|
|
466
|
+
static js_value_t *
|
|
467
|
+
bare_tty_get_window_size (js_env_t *env, js_callback_info_t *info) {
|
|
468
|
+
int err;
|
|
469
|
+
|
|
470
|
+
size_t argc = 1;
|
|
471
|
+
js_value_t *argv[1];
|
|
472
|
+
|
|
473
|
+
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
474
|
+
assert(err == 0);
|
|
475
|
+
|
|
476
|
+
assert(argc == 1);
|
|
477
|
+
|
|
478
|
+
bare_tty_t *tty;
|
|
479
|
+
err = js_get_arraybuffer_info(env, argv[0], (void **) &tty, NULL);
|
|
480
|
+
assert(err == 0);
|
|
481
|
+
|
|
482
|
+
int width, height;
|
|
483
|
+
err = uv_tty_get_winsize(&tty->handle, &width, &height);
|
|
484
|
+
|
|
485
|
+
if (err < 0) {
|
|
486
|
+
js_throw_error(env, uv_err_name(err), uv_strerror(err));
|
|
487
|
+
return NULL;
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
js_value_t *result;
|
|
491
|
+
err = js_create_array_with_length(env, 2, &result);
|
|
492
|
+
assert(err == 0);
|
|
493
|
+
|
|
494
|
+
js_value_t *value;
|
|
495
|
+
|
|
496
|
+
err = js_create_int32(env, width, &value);
|
|
497
|
+
assert(err == 0);
|
|
498
|
+
|
|
499
|
+
err = js_set_element(env, result, 0, value);
|
|
500
|
+
assert(err == 0);
|
|
501
|
+
|
|
502
|
+
err = js_create_int32(env, height, &value);
|
|
503
|
+
assert(err == 0);
|
|
504
|
+
|
|
505
|
+
err = js_set_element(env, result, 1, value);
|
|
506
|
+
assert(err == 0);
|
|
507
|
+
|
|
508
|
+
return result;
|
|
509
|
+
}
|
|
510
|
+
|
|
466
511
|
static js_value_t *
|
|
467
512
|
init (js_env_t *env, js_value_t *exports) {
|
|
468
513
|
{
|
|
@@ -500,6 +545,11 @@ init (js_env_t *env, js_value_t *exports) {
|
|
|
500
545
|
js_create_function(env, "setMode", -1, bare_tty_set_mode, NULL, &fn);
|
|
501
546
|
js_set_named_property(env, exports, "setMode", fn);
|
|
502
547
|
}
|
|
548
|
+
{
|
|
549
|
+
js_value_t *fn;
|
|
550
|
+
js_create_function(env, "getWindowSize", -1, bare_tty_get_window_size, NULL, &fn);
|
|
551
|
+
js_set_named_property(env, exports, "getWindowSize", fn);
|
|
552
|
+
}
|
|
503
553
|
{
|
|
504
554
|
js_value_t *val;
|
|
505
555
|
js_create_uint32(env, UV_TTY_MODE_NORMAL, &val);
|
package/index.js
CHANGED
|
@@ -102,6 +102,10 @@ exports.WriteStream = class TTYWriteStream extends Writable {
|
|
|
102
102
|
return true
|
|
103
103
|
}
|
|
104
104
|
|
|
105
|
+
getWindowSize () {
|
|
106
|
+
return binding.getWindowSize(this._handle)
|
|
107
|
+
}
|
|
108
|
+
|
|
105
109
|
_writev (datas, cb) {
|
|
106
110
|
this._pendingWrite = cb
|
|
107
111
|
binding.writev(this._handle, datas)
|