///|
pub enum QuestionType {
Input
Confirm
List
RawList
Expand
Checkbox
Password
Editor
} derive(Debug, Eq)
///|
pub enum AnswerValue {
StringValue(String)
BoolValue(Bool)
ArrayValue(Array[String])
IntValue(Int)
} derive(Debug, Eq)
///|
test {
let _ = AnswerValue::IntValue(1)
}
///|
pub type Answer = Map[String, AnswerValue]
///|
pub struct Question {
question_type : QuestionType
question_name : String
question_message : String
question_default : AnswerValue?
question_choices : Array[String]?
}
///|
pub fn input(
question_name~ : String,
question_message~ : String,
question_default? : AnswerValue? = None,
) -> Question {
{
question_type: QuestionType::Input,
question_name,
question_message,
question_default,
question_choices: None,
}
}
///|
pub fn confirm(
question_name~ : String,
question_message~ : String,
question_default? : AnswerValue? = None,
) -> Question {
{
question_type: QuestionType::Confirm,
question_name,
question_message,
question_default,
question_choices: None,
}
}
///|
pub fn list(
question_name~ : String,
question_message~ : String,
question_choices~ : Array[String],
question_default? : AnswerValue? = None,
) -> Question {
{
question_type: QuestionType::List,
question_name,
question_message,
question_default,
question_choices: Some(question_choices),
}
}
///|
pub fn rawlist(
question_name~ : String,
question_message~ : String,
question_choices~ : Array[String],
question_default? : AnswerValue? = None,
) -> Question {
{
question_type: QuestionType::RawList,
question_name,
question_message,
question_default,
question_choices: Some(question_choices),
}
}
///|
pub fn expand(
question_name~ : String,
question_message~ : String,
question_choices~ : Array[String],
question_default? : AnswerValue? = None,
) -> Question {
{
question_type: QuestionType::Expand,
question_name,
question_message,
question_default,
question_choices: Some(question_choices),
}
}
///|
pub fn checkbox(
question_name~ : String,
question_message~ : String,
question_choices~ : Array[String],
question_default? : AnswerValue? = None,
) -> Question {
{
question_type: QuestionType::Checkbox,
question_name,
question_message,
question_default,
question_choices: Some(question_choices),
}
}
///|
pub fn password(
question_name~ : String,
question_message~ : String,
question_default? : AnswerValue? = None,
) -> Question {
{
question_type: QuestionType::Password,
question_name,
question_message,
question_default,
question_choices: None,
}
}
///|
pub fn editor(
question_name~ : String,
question_message~ : String,
question_default? : AnswerValue? = None,
) -> Question {
{
question_type: QuestionType::Editor,
question_name,
question_message,
question_default,
question_choices: None,
}
}