-
-
Notifications
You must be signed in to change notification settings - Fork 140
Open
Labels
Description
Describe the problem
Allow messages to be passed as keyword argument. This is handy for us because we don't want to use a block to configure the ask, instead have prepared a hash to be used as keyword arguments. Hash works better for more dynamic scenarios.
Steps to reproduce the problem
Using this as a starting, working example which would prompt the user if input is invalid:
prompt.ask("What is your email?") do |q|
q.validate(/\A\w+@\w+\.\w+\Z/)
q.messages[:valid?] = "Invalid email address"
endIf I move the validate into the keyword argument, it also works fine:
prompt.ask("What is your email?", validate: /\A\w+@\w+\.\w+\Z/ ) do |q|
q.messages[:valid?] = "Invalid email address"
endHowever, once I move messages into the keyword argument:
prompt.ask("What is your email?", validate: /\A\w+@\w+\.\w+\Z/, messages: { valid?: 'foo' } ) The custom messages no longer works. It would display the default "Your answer is invalid (must match /\A\w+@\w+.\w+\Z/)"
Actual behaviour
The custom messages can't be passed as keyword arguments.
Expected behaviour
The custom messages can be passed as keyword arguments.
Describe your environment
- OS version:
- Ruby version: 3.1
- TTY::Prompt version: 0.23.1