pub struct GuideView {
pub preamble: Vec<String>,
pub sections: Vec<GuideSection>,
pub epilogue: Vec<String>,
pub usage: Vec<String>,
pub commands: Vec<GuideEntry>,
pub arguments: Vec<GuideEntry>,
pub options: Vec<GuideEntry>,
pub common_invocation_options: Vec<GuideEntry>,
pub notes: Vec<String>,
}Expand description
Structured help/guide payload shared by the CLI, REPL, renderers, and semantic output pipeline.
Canonical help sections such as usage, commands, and options are exposed as
dedicated buckets for ergonomic access. The generic GuideView::sections
list exists to preserve authored section order during serialization and
transforms, including canonical sections that were authored inline with
custom content. Restore logic may backfill the dedicated buckets from those
canonical sections, but renderers and serializers treat the ordered section
list as authoritative whenever it already carries that content.
Public API note: this is intentionally an open semantic DTO. Callers may compose it directly for bespoke help payloads, while common generation paths are exposed as factory methods.
Fields§
§preamble: Vec<String>Introductory paragraphs shown before structured sections.
sections: Vec<GuideSection>Extra sections preserved outside the canonical buckets.
epilogue: Vec<String>Closing paragraphs shown after structured sections.
usage: Vec<String>Canonical usage synopsis lines.
commands: Vec<GuideEntry>Canonical command-entry bucket.
arguments: Vec<GuideEntry>Canonical positional-argument bucket.
options: Vec<GuideEntry>Canonical option/flag bucket.
common_invocation_options: Vec<GuideEntry>Canonical shared invocation-option bucket.
notes: Vec<String>Canonical note paragraphs.
Implementations§
Source§impl GuideView
impl GuideView
Sourcepub fn from_text(help_text: &str) -> Self
pub fn from_text(help_text: &str) -> Self
Parses plain help text into a structured guide view.
§Examples
use osp_cli::guide::GuideView;
let guide = GuideView::from_text("Usage: osp theme <COMMAND>\n\nCommands:\n list Show\n");
assert_eq!(guide.usage, vec!["osp theme <COMMAND>".to_string()]);
assert_eq!(guide.commands[0].name, "list");
assert_eq!(guide.commands[0].short_help, "Show");Sourcepub fn from_command_def(command: &CommandDef) -> Self
pub fn from_command_def(command: &CommandDef) -> Self
Builds a guide view from a command definition.
§Examples
use osp_cli::core::command_def::CommandDef;
use osp_cli::guide::GuideView;
let command = CommandDef::new("theme")
.about("Inspect themes")
.subcommand(CommandDef::new("show").about("Show available themes"));
let guide = GuideView::from_command_def(&command);
assert_eq!(guide.usage, vec!["theme <COMMAND>".to_string()]);
assert_eq!(guide.commands[0].name, "show");
assert!(guide.arguments.is_empty());
assert!(guide.options.is_empty());Sourcepub fn to_output_result(&self) -> OutputResult
pub fn to_output_result(&self) -> OutputResult
Converts the guide into row output with a guide sidecar document.
§Examples
use osp_cli::core::output_model::OutputDocumentKind;
use osp_cli::guide::GuideView;
let guide = GuideView {
usage: vec!["theme show".to_string()],
..GuideView::default()
};
let output = guide.to_output_result();
assert_eq!(output.document.as_ref().map(|doc| doc.kind), Some(OutputDocumentKind::Guide));
assert_eq!(output.meta.render_recommendation.is_some(), true);
let rows = output.as_rows().expect("guide output should keep row projection");
assert_eq!(rows.len(), 1);
assert_eq!(rows[0]["usage"][0], "theme show");Sourcepub fn to_json_value(&self) -> Value
pub fn to_json_value(&self) -> Value
Serializes the guide to its JSON object form.
§Examples
use osp_cli::guide::GuideView;
let guide = GuideView::from_text("Usage: osp history <COMMAND>\n\nCommands:\n list\n");
let value = guide.to_json_value();
assert_eq!(value["usage"][0], "osp history <COMMAND>");
assert_eq!(value["commands"][0]["name"], "list");
assert!(value.get("sections").is_none());Sourcepub fn try_from_output_result(output: &OutputResult) -> Option<Self>
pub fn try_from_output_result(output: &OutputResult) -> Option<Self>
Attempts to recover a guide view from structured output.
A carried semantic document is authoritative. When output.document is
present, this function only attempts to restore from that document and
does not silently fall back to the row projection.
Sourcepub fn to_markdown(&self) -> String
pub fn to_markdown(&self) -> String
Renders the guide as Markdown using the default width policy.
§Examples
use osp_cli::guide::GuideView;
let guide = GuideView {
usage: vec!["theme show".to_string()],
commands: vec![osp_cli::guide::GuideEntry {
name: "list".to_string(),
short_help: "List themes".to_string(),
display_indent: None,
display_gap: None,
}],
..GuideView::default()
};
let markdown = guide.to_markdown();
assert!(markdown.contains("## Usage"));
assert!(markdown.contains("theme show"));
assert!(markdown.contains("- `list` List themes"));Sourcepub fn to_markdown_with_width(&self, width: Option<usize>) -> String
pub fn to_markdown_with_width(&self, width: Option<usize>) -> String
Renders the guide as Markdown using an optional target width.
Sourcepub fn to_value_lines(&self) -> Vec<String>
pub fn to_value_lines(&self) -> Vec<String>
Flattens the guide into value-oriented text lines.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for GuideView
impl<'de> Deserialize<'de> for GuideView
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for GuideView
impl StructuralPartialEq for GuideView
Auto Trait Implementations§
impl Freeze for GuideView
impl RefUnwindSafe for GuideView
impl Send for GuideView
impl Sync for GuideView
impl Unpin for GuideView
impl UnsafeUnpin for GuideView
impl UnwindSafe for GuideView
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more