io-nosey
-
This repository is archived
-
No longer maintained
-
All versions have been yanked from https://rubygems.org for releasing valuable namespace for others
-
I recommend using a different library for this purpose, as an example is https://github.com/Shopify/cli-ui
Tiny assistant for CUI operations.
Usage
Require Ruby 3.1 or later
Overview
Try below scenario on REPL. Or execute this repository’s ./bin/console
require 'io/nosey'
parker = IO::Nosey::Parker.new
# input validation
parker.ask('What\'s your name?("first_name last_name"): ', input: /\A\w+ \w+\z/)
# mix the validations and procedures
parker.ask('How old are you?: ',
input: /\A(\d+)\z/,
parse: ->s{Integer s},
return: 10..100
)
# default value
parker.ask("What's your favorite?: ", default: 'ruby')
# yes or no
parker.agree?('Do you like this API?: ')
# for password and secrets
parker.ask("What's your password?: ", echo: false)
# choose one from collections
parker.choose('Which Five do you like?: ',
5 => '5 is a Integer',
'five' => '"five" is a String',
:FIVE => ':FIVE is a Symbol'
)
# multi line mode
parker.ask('Write your poem and exit ctrl+d :) ', multi_line: true)
Features
-
ask
-
agree?
-
choose
#ask option parameter
input -> parse -> return
-
input # validation for input string
-
parse # procedure for input string
-
return # validation for return value
Other
-
default # when null input
-
echo # set “echo is (true or false)”
-
error # change error message when invalid input
-
multi_line # prefer multi_line mode for inputs(exit via ctrl+d)