Prompt Build Status

提示用户提供更多信息。

用法

Ask(提问)

Ask 向用户显示一个提示,并等待用户输入。

let userName = ask("Enter user name?")

userName 将包含用户输入的名字

Ask 可以用于获取 Int、Double 或 Float 类型的值,例如,获取一个整数:

let age = ask("How old are you?", type: Int.self)

如果用户输入的内容无法转换为整数,会向其显示一个新的提示,这个提示会持续显示,直到用户输入一个 Int 为止。

How old are you?
None
You must enter a valid Integer.
?  Error
You must enter a valid Integer.
?  5
5

可以通过调用 AskSettings 上的 addInvalidCase 添加验证。

let name = ask("Who are you?") { settings in
    settings.addInvalidCase("Snuffles is not allowed") { value in
        value.containsString("Snuffles")
    }
}

如果用户输入 Snuffles,ask 会持续显示传递给 addInvalidCase 的无效消息。

Who are you?
Snuffles
Snuffles is not allowed
?  Snuffles
Snuffles is not allowed
?  Snowball

Your name is Snowball

AskSettings.confirm 会在用户输入后,要求其确认选择。

let name = ask("Who are you?") { settings in
    settings.confirm = true
}

以上代码会输出:

Who are you?
Snuffles
Are you sure?  YES

Your name is Snuffles

Choose(选择)

Choose 用于提示用户在一组可能的选项中选择一个。

例如,显示编程语言的选择:

let choice = choose("Whats your favorite programming language? ",
    choices: "Swift", "Objective C", "Ruby", "Python", "Java :S")

这将打印:

1. Swift
2. Objective C
3. Ruby
4. Python
5. Java :S
Whats your favorite programming language?

用户可以选择数字 (1..5) 或选项本身。 如果用户输入错误,会持续显示提示,直到用户做出正确的选择为止。

Whats your favorite programming language? JavaScript
You must choose one of [1, 2, 3, 4, 5, Swift, Objective C, Ruby, Python, Java :S].
?  BBB
You must choose one of [1, 2, 3, 4, 5, Swift, Objective C, Ruby, Python, Java :S].
?  Swift

You selected Swift, good choice!

您可以自定义每个选择元素的返回值。 例如,如果您想从选择中获取一个 Int,您可以这样做:

let choice = choose("Whats your favorite programming language? ", type: Int.self) { settings in
    settings.addChoice("Swift") { 42 }
    settings.addChoice("Objective C") { 20 }
}

左侧的数字可以更改为字母,以下是如何操作:

let choice = choose("Whats your favorite programming language? ", type: String.self) { settings in
   //choice value will be set to GOOD
   settings.addChoice("Swift") { "GOOD" }

   //choice value will be set to BAD
   settings.addChoice("Java") { "BAD" }

   settings.index = .Letters
   settings.indexSuffix = " ----> "
   }

这将打印:

a ----> Swift
b ----> Java
Whats your favorite programming language?

Agree(同意)

Agree 用于向用户提出一个“是/否”问题。它返回一个布尔值,表示用户的输入。

let choice = agree("Are you sure you want to `rm -rf /` ?")

如果用户输入任何无效输入,agree 将持续提示他输入“是/否”问题。

Are you sure you want to `rm -rf /` ?  What!
Please enter "yes" or "no".
Are you sure you want to `rm -rf /` ?  Wait
Please enter "yes" or "no".
Are you sure you want to `rm -rf /` ?  No

You entered false

安装

Swift Package Manager

.package(url: "https://github.com/getGuaka/Prompt.git", from: "0.0.0"),

许可证

MIT