Project Icon

survey

构建交互式终端提示的开源库

一个支持ANSI转义序列的交互式终端提示库。尽管项目已不再维护,但提供了如输入、多选、密码等多种提示类型,适用于各种问答场景。库允许通过`Ask`和`AskOne`方法执行提示,并支持细粒度配置和自定义验证。还能定制图标和过滤选项,通过外部编辑器输入内容。替代方案请参考bubbletea项目。

项目介绍:Survey

Survey 项目是一个用于在支持 ANSI 转义序列的终端上构建交互式和无障碍提示库。通过这个库,开发者能够在终端中轻松创建各种交互式输入提示,如选择题、输入框、多选框等。

项目现状

遗憾的是,Survey 项目目前已经暂停维护。如果需要类似功能的工具,开发者推荐了一个替代项目,名为 BubbleTea。任何有兴趣接管这个项目维护的人都可以联系发起者。

基本用法

Survey 提供了两种主要的方法来执行提示并收集用户输入:AskAskOne。其中,Ask 方法适用于需要收集多个问题答案的情况,而 AskOne 则适用于收集单一信息。

一个简单的例子展示了如何定义问题和收集回答:

package main

import (
    "fmt"
    "github.com/AlecAivazis/survey/v2"
)

func main() {
    // 问题列表
    var questions = []*survey.Question{
        {
            Name:     "name",
            Prompt:   &survey.Input{Message: "What is your name?"},
            Validate: survey.Required,
            Transform: survey.Title,
        },
        {
            Name: "color",
            Prompt: &survey.Select{
                Message: "Choose a color:",
                Options: []string{"red", "blue", "green"},
                Default: "red",
            },
        },
        {
            Name: "age",
            Prompt:   &survey.Input{Message: "How old are you?"},
        },
    }

    answers := struct {
        Name          string
        FavoriteColor string `survey:"color"`
        Age           int
    }{}

    // 执行问题并获取回答
    err := survey.Ask(questions, &answers)
    if err != nil {
        fmt.Println(err.Error())
        return
    }

    fmt.Printf("%s chose %s.", answers.Name, answers.FavoriteColor)
}

提示类型

Survey 提供了多种不同类型的提示,满足不同的交互需求:

  • 输入框 (Input):用户输入文本。
  • 多行输入框 (Multiline):允许用户输入多行文本。
  • 密码输入框 (Password):隐藏用户输入的密码。
  • 确认框 (Confirm):用户选择确认或否决。
  • 选择框 (Select):从多个选项中选择一个。
  • 多选框 (MultiSelect):用户可以选中多个选项。
  • 编辑器 (Editor):用户可在偏好的文本编辑器中编辑内容。

配置与验证

Survey 提供了丰富的配置选项,允许开发者自定义每个提示的行为和验证逻辑。开发者可以通过配置选项设置各种验证规则,如必填字段、字符长度限制等。与此同时,还有多种内置验证器可用,例如 RequiredMinLength(n)MaxLength(n)

高级特性

  • 图标与帮助文本:可以自定义提示前显示的图标和帮助信息。
  • 过滤选项:用户可以在选择提示时输入字符来过滤选项。
  • 自定义类型支持:Survey 允许将用户输入的结果映射到自定义数据结构中。

常见问题

  • 支持的 IO 类型:Survey 要求终端支持 ANSI 转义序列,因此不支持从管道输入或向管道输出。
  • Ctrl-C 处理:Survey 在接收到 Ctrl-C 输入时不会直接终止程序,而是返回一个中断错误,开发者需要自行处理该错误以决定是否退出程序。

Survey 是一个功能丰富的交互式工具库,即便停止维护,也为开发者如何在终端中实现友好的用户交互提供了极具参考价值的实践。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号