UNPKG

terminal-menu-2

Version:

retro ansi terminal menus for serious 80s technicolor business

108 lines (73 loc) 2.33 kB
# terminal-menu-2 Fix the problem of displaying Chinese-like characters in the original terminal-menu package. ``` npm i terminal-menu-2 --save ``` Example: ```js function slice(str, len) { return str.slice(0, len - (str.match(/[^\u0000-\u00ff]/g) || '').length); } for (var i = 0; i < items.length; i++) { menu.add(slice(items[i].title, 80)); } ``` ![screen shot](https://cloud.githubusercontent.com/assets/1284703/3711584/70819d92-14de-11e4-861c-4769992dbf0e.png) # terminal-menu retro ansi terminal menus for serious 80s technicolor business ![terminal menu](http://substack.net/images/screenshots/terminal_menu.png) # example ``` js var menu = require('../')({ width: 29, x: 4, y: 2 }); menu.reset(); menu.write('SERIOUS BUSINESS TERMINAL\n'); menu.write('-------------------------\n'); menu.add('ADD TRANSACTION INVOICE'); menu.add('BUSINESS INTELLIGENCE'); menu.add('ACCOUNTS PAYABLE'); menu.add('LEDGER BOOKINGS'); menu.add('INDICATOR CHART METRICS'); menu.add('BACKUP DATA TO FLOPPY DISK'); menu.add('RESTORE FROM FLOPPY DISK'); menu.add('EXIT'); menu.on('select', function (label) { menu.close(); console.log('SELECTED: ' + label); }); menu.createStream().pipe(process.stdout); ``` # methods ``` js var createMenu = require('terminal-menu') ``` ## var menu = createMenu(opts) Create a menu with `opts`: * `opts.width` - menu width in columns * `opts.x` - top-left corner x offset, default: 1 * `opts.y` - top-left corner y offset, default: 1 * `opts.fg` - foreground color, default: 'white' * `opts.bg` - background color, default: 'blue' * `opts.padding.left` - left padding in columns * `opts.padding.right` - right padding in columns * `opts.padding.top` - top padding in rows * `opts.padding.bottom` - bottom padding in rows The menu can be driven around with the arrow keys and j/k, vi-style. To quit out of the menu, hit `^C` or `q`. ## menu.add(label) Create a new selectable menu item with the string `label`. ## menu.write(msg) Write a message to the menu. ## menu.createStream() Return the stream to be piped to a terminal. ## menu.reset() Reset the terminal, clearing all contents. ## menu.close() Unregister all listeners and put the terminal back to its original state. # install With [npm](https://npmjs.org) do: ``` npm install terminal-menu ``` # license MIT