pub struct TextBlockStep { /* private fields */ }
Expand description
A multi-line text input step.
§Examples
use tty_form::{
Form,
step::{Step, TextBlockStep},
};
let mut form = Form::new();
let mut step = TextBlockStep::new("Enter your story:");
step.set_max_line_length(100);
step.add_to(&mut form);
Implementations§
Source§impl TextBlockStep
impl TextBlockStep
Sourcepub fn new(prompt: &str) -> Self
pub fn new(prompt: &str) -> Self
Create a new, default text block step.
Examples found in repository?
examples/basic.rs (line 50)
19fn execute() -> Result<String> {
20 let mut form = Form::new();
21
22 let mut commit_summary = CompoundStep::new();
23 commit_summary.set_max_line_length(80);
24
25 SelectInput::new(
26 "Select the commit type.",
27 vec![
28 ("feat", "implemented a new feature"),
29 ("bug", "fixed existing behavior"),
30 ("docs", "added documentation"),
31 ("chore", "non-source changes"),
32 ],
33 )
34 .add_to(&mut commit_summary);
35
36 let mut opening_paren = StaticText::new("(");
37 let mut closing_paren = StaticText::new(")");
38
39 let mut scope_input = TextInput::new("Enter the commit's scope.", true);
40
41 let empty_scope = scope_input.set_evaluation(Evaluation::IsEmpty);
42 opening_paren.set_dependency(empty_scope, Action::Hide);
43 closing_paren.set_dependency(empty_scope, Action::Hide);
44
45 let mut breaking_bang = StaticText::new("!");
46 let colon = StaticText::new(": ");
47
48 let description = TextInput::new("Enter the commit's description.", true);
49
50 let mut long_description = TextBlockStep::new("Enter a long-form commit description.");
51 long_description.set_margins(Some(1), Some(1));
52 long_description.set_max_line_length(100);
53
54 let mut breaking_step = YesNoStep::new(
55 "Is this commit a breaking change?",
56 "Enter a description of the breaking change.",
57 "BREAKING CHANGE",
58 );
59
60 let trailers = KeyValueStep::new("Enter any key-value trailers, such as tickets.");
61
62 let breaking_change = breaking_step.set_evaluation(Evaluation::Equal("Yes".to_string()));
63 breaking_bang.set_dependency(breaking_change, Action::Show);
64
65 opening_paren.add_to(&mut commit_summary);
66 scope_input.add_to(&mut commit_summary);
67 closing_paren.add_to(&mut commit_summary);
68 breaking_bang.add_to(&mut commit_summary);
69 colon.add_to(&mut commit_summary);
70 description.add_to(&mut commit_summary);
71 commit_summary.add_to(&mut form);
72 long_description.add_to(&mut form);
73 trailers.add_to(&mut form);
74 breaking_step.add_to(&mut form);
75
76 let mut stdout = stdout();
77 let mut stdin = StdinDevice;
78
79 let mut interface = Interface::new_relative(&mut stdout)?;
80
81 let result = form.execute(&mut interface, &mut stdin);
82 interface.exit()?;
83
84 let mut output = String::new();
85 match result {
86 Ok(value) => output = value,
87 Err(Error::Canceled) => println!("Form canceled."),
88 Err(err) => eprintln!("Unexpected error occurred: {:?}", err),
89 }
90
91 Ok(output)
92}
Sourcepub fn set_margins(
&mut self,
top_margin: Option<u16>,
bottom_margin: Option<u16>,
)
pub fn set_margins( &mut self, top_margin: Option<u16>, bottom_margin: Option<u16>, )
Set this text block’s top and bottom margins.
Examples found in repository?
examples/basic.rs (line 51)
19fn execute() -> Result<String> {
20 let mut form = Form::new();
21
22 let mut commit_summary = CompoundStep::new();
23 commit_summary.set_max_line_length(80);
24
25 SelectInput::new(
26 "Select the commit type.",
27 vec![
28 ("feat", "implemented a new feature"),
29 ("bug", "fixed existing behavior"),
30 ("docs", "added documentation"),
31 ("chore", "non-source changes"),
32 ],
33 )
34 .add_to(&mut commit_summary);
35
36 let mut opening_paren = StaticText::new("(");
37 let mut closing_paren = StaticText::new(")");
38
39 let mut scope_input = TextInput::new("Enter the commit's scope.", true);
40
41 let empty_scope = scope_input.set_evaluation(Evaluation::IsEmpty);
42 opening_paren.set_dependency(empty_scope, Action::Hide);
43 closing_paren.set_dependency(empty_scope, Action::Hide);
44
45 let mut breaking_bang = StaticText::new("!");
46 let colon = StaticText::new(": ");
47
48 let description = TextInput::new("Enter the commit's description.", true);
49
50 let mut long_description = TextBlockStep::new("Enter a long-form commit description.");
51 long_description.set_margins(Some(1), Some(1));
52 long_description.set_max_line_length(100);
53
54 let mut breaking_step = YesNoStep::new(
55 "Is this commit a breaking change?",
56 "Enter a description of the breaking change.",
57 "BREAKING CHANGE",
58 );
59
60 let trailers = KeyValueStep::new("Enter any key-value trailers, such as tickets.");
61
62 let breaking_change = breaking_step.set_evaluation(Evaluation::Equal("Yes".to_string()));
63 breaking_bang.set_dependency(breaking_change, Action::Show);
64
65 opening_paren.add_to(&mut commit_summary);
66 scope_input.add_to(&mut commit_summary);
67 closing_paren.add_to(&mut commit_summary);
68 breaking_bang.add_to(&mut commit_summary);
69 colon.add_to(&mut commit_summary);
70 description.add_to(&mut commit_summary);
71 commit_summary.add_to(&mut form);
72 long_description.add_to(&mut form);
73 trailers.add_to(&mut form);
74 breaking_step.add_to(&mut form);
75
76 let mut stdout = stdout();
77 let mut stdin = StdinDevice;
78
79 let mut interface = Interface::new_relative(&mut stdout)?;
80
81 let result = form.execute(&mut interface, &mut stdin);
82 interface.exit()?;
83
84 let mut output = String::new();
85 match result {
86 Ok(value) => output = value,
87 Err(Error::Canceled) => println!("Form canceled."),
88 Err(err) => eprintln!("Unexpected error occurred: {:?}", err),
89 }
90
91 Ok(output)
92}
Sourcepub fn set_max_line_length(&mut self, max_length: u16)
pub fn set_max_line_length(&mut self, max_length: u16)
Set this text block step’s optional maximum line grapheme length.
Examples found in repository?
examples/basic.rs (line 52)
19fn execute() -> Result<String> {
20 let mut form = Form::new();
21
22 let mut commit_summary = CompoundStep::new();
23 commit_summary.set_max_line_length(80);
24
25 SelectInput::new(
26 "Select the commit type.",
27 vec![
28 ("feat", "implemented a new feature"),
29 ("bug", "fixed existing behavior"),
30 ("docs", "added documentation"),
31 ("chore", "non-source changes"),
32 ],
33 )
34 .add_to(&mut commit_summary);
35
36 let mut opening_paren = StaticText::new("(");
37 let mut closing_paren = StaticText::new(")");
38
39 let mut scope_input = TextInput::new("Enter the commit's scope.", true);
40
41 let empty_scope = scope_input.set_evaluation(Evaluation::IsEmpty);
42 opening_paren.set_dependency(empty_scope, Action::Hide);
43 closing_paren.set_dependency(empty_scope, Action::Hide);
44
45 let mut breaking_bang = StaticText::new("!");
46 let colon = StaticText::new(": ");
47
48 let description = TextInput::new("Enter the commit's description.", true);
49
50 let mut long_description = TextBlockStep::new("Enter a long-form commit description.");
51 long_description.set_margins(Some(1), Some(1));
52 long_description.set_max_line_length(100);
53
54 let mut breaking_step = YesNoStep::new(
55 "Is this commit a breaking change?",
56 "Enter a description of the breaking change.",
57 "BREAKING CHANGE",
58 );
59
60 let trailers = KeyValueStep::new("Enter any key-value trailers, such as tickets.");
61
62 let breaking_change = breaking_step.set_evaluation(Evaluation::Equal("Yes".to_string()));
63 breaking_bang.set_dependency(breaking_change, Action::Show);
64
65 opening_paren.add_to(&mut commit_summary);
66 scope_input.add_to(&mut commit_summary);
67 closing_paren.add_to(&mut commit_summary);
68 breaking_bang.add_to(&mut commit_summary);
69 colon.add_to(&mut commit_summary);
70 description.add_to(&mut commit_summary);
71 commit_summary.add_to(&mut form);
72 long_description.add_to(&mut form);
73 trailers.add_to(&mut form);
74 breaking_step.add_to(&mut form);
75
76 let mut stdout = stdout();
77 let mut stdin = StdinDevice;
78
79 let mut interface = Interface::new_relative(&mut stdout)?;
80
81 let result = form.execute(&mut interface, &mut stdin);
82 interface.exit()?;
83
84 let mut output = String::new();
85 match result {
86 Ok(value) => output = value,
87 Err(Error::Canceled) => println!("Form canceled."),
88 Err(err) => eprintln!("Unexpected error occurred: {:?}", err),
89 }
90
91 Ok(output)
92}
Sourcepub fn set_trim_trailing_whitespace(&mut self, trim: bool)
pub fn set_trim_trailing_whitespace(&mut self, trim: bool)
Set whether this text block should trim trailing whitespace.
Trait Implementations§
Source§impl Step for TextBlockStep
impl Step for TextBlockStep
Source§fn initialize(&mut self, _dependency_state: &mut DependencyState, _index: usize)
fn initialize(&mut self, _dependency_state: &mut DependencyState, _index: usize)
Perform any post-configuration initialization actions for this step.
Source§fn render(
&self,
interface: &mut Interface<'_>,
_dependency_state: &DependencyState,
position: Position,
is_focused: bool,
) -> u16
fn render( &self, interface: &mut Interface<'_>, _dependency_state: &DependencyState, position: Position, is_focused: bool, ) -> u16
Render this step at the specified position and return the height of the rendered content.
Source§fn update(
&mut self,
_dependency_state: &mut DependencyState,
input: KeyEvent,
) -> Option<InputResult>
fn update( &mut self, _dependency_state: &mut DependencyState, input: KeyEvent, ) -> Option<InputResult>
Handle the specified input event, optionally returning an instruction for the form.
Source§fn drawer(&self) -> Option<DrawerContents>
fn drawer(&self) -> Option<DrawerContents>
Retrieve this step’s current drawer contents, if applicable.
Source§fn result(&self, _dependency_state: &DependencyState) -> String
fn result(&self, _dependency_state: &DependencyState) -> String
Retrieves this step’s final WYSIWYG result.
Auto Trait Implementations§
impl Freeze for TextBlockStep
impl RefUnwindSafe for TextBlockStep
impl Send for TextBlockStep
impl Sync for TextBlockStep
impl Unpin for TextBlockStep
impl UnwindSafe for TextBlockStep
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more