use super::*;
pub(crate) enum HiddenLinesNoticeKind {
CommandPreview,
ExecSessionExpand,
Generic,
TokenBudget,
}
fn exec_session_expand_notice(hidden: usize, underline_action: bool) -> String {
let summary = shared_hidden_lines_summary(hidden);
if underline_action {
let underline = AnsiStyle::new().effects(Effects::UNDERLINE);
format!("{summary} · {underline}click to expand{Reset}")
} else {
format!("{summary} · click to expand")
}
}
pub(crate) fn hidden_lines_notice(hidden: usize, kind: HiddenLinesNoticeKind) -> String {
hidden_lines_notice_with(hidden, kind, true)
}
pub(crate) fn hidden_lines_notice_with(hidden: usize, kind: HiddenLinesNoticeKind, underline_expand: bool) -> String {
match kind {
HiddenLinesNoticeKind::CommandPreview => {
format!(" {} (/share html for full transcript)", shared_hidden_lines_summary(hidden))
}
HiddenLinesNoticeKind::ExecSessionExpand => exec_session_expand_notice(hidden, underline_expand),
HiddenLinesNoticeKind::Generic => {
format!("[... {} line{} truncated ...]", hidden, if hidden == 1 { "" } else { "s" })
}
HiddenLinesNoticeKind::TokenBudget => "[... content truncated by token budget ...]".to_string(),
}
}