README.md in userinput-0.0.1 vs README.md in userinput-0.0.2
- old
+ new
@@ -6,12 +6,85 @@
[![Code Climate](https://img.shields.io/codeclimate/github/akerl/userinput.svg)](https://codeclimate.com/github/akerl/userinput)
[![Coverage Status](https://img.shields.io/coveralls/akerl/userinput.svg)](https://coveralls.io/r/akerl/userinput)
[![Build Status](https://img.shields.io/travis/akerl/userinput.svg)](https://travis-ci.org/akerl/userinput)
[![MIT Licensed](https://img.shields.io/badge/license-MIT-green.svg)](https://tldrlegal.com/license/mit-license)
-SHORT_DESCRIPTION
+A simple user input library
## Usage
+
+User interaction is handled by the `UserInput::Prompt` object. As a convenience, this can be created using the `UserInput.new` method:
+
+```
+> require 'userinput'
+=> true
+> prompt = UserInput.new(message: 'Username')
+=> #<UserInput::Prompt:0x007fdfba1681f8 @attempts=nil, @message="Username", @default=nil, @secret=false, @validation=nil>
+> prompt.ask
+Username? leet_dude
+=> "leet_dude"
+```
+
+You can optionally provide a default:
+
+```
+> require 'userinput'
+=> true
+> prompt = UserInput.new(default: '_other')
+=> #<UserInput::Prompt:0x007fb7eb163f00 @attempts=nil, @message="", @default="_other", @secret=false, @validation=nil>
+> prompt.ask
+? [_other] answer
+=> "answer"
+> prompt.ask
+? [_other]
+=> "_other"
+```
+
+If you provide a validation Regexp or a code block, the input will be validated using that:
+
+```
+> require 'userinput'
+=> true
+> prompt = UserInput.new(validation: /[0-9]+/)
+=> #<UserInput::Prompt:0x007f99909637b0 @attempts=nil, @message="", @default=nil, @secret=false, @validation=/[0-9]+/>
+> prompt.ask
+? _str
+? 23
+=> "23"
+> other_prompt = UserInput.new { |x| x == '_correct' }
+=> #<UserInput::Prompt:0x007f9990920eb0 @attempts=nil, @message="", @default=nil, @secret=false, @validation=#<Proc:0x007f99909211d0@(irb):4>>
+> other_prompt.ask
+? _wrong
+? 23
+? _correct
+=> "_correct"
+```
+
+Providing a number of attempts will cause an ArgumentError to be raised after that many failed inputs:
+
+```
+> require 'userinput'
+=> true
+> prompt = UserInput.new(attempts: 3, validation: /[0-9]+/)
+=> #<UserInput::Prompt:0x007f9f6a950270 @attempts=3, @message="", @default=nil, @secret=false, @validation=/[0-9]+/>
+> prompt.ask
+? _str
+? _other
+? _attempt
+ArgumentError: No valid input provided
+```
+
+For sensitive input, pass the `secret` parameter, which will try to disable terminal printing of the user's input:
+
+```
+> require 'userinput'
+=> true
+> prompt = UserInput.new(message: 'Password', secret: true)
+=> #<UserInput::Prompt:0x007fb8ab9220a0 @attempts=nil, @message="Password", @default=nil, @secret=true, @validation=nil>
+> prompt.ask
+Password?
+=> "_password"
+```
## Installation
gem install userinput