table -e align key to 2nd line (#6842)

Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com>

Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com>
This commit is contained in:
Maxim Zhiburt 2022-10-21 14:29:55 +03:00 committed by GitHub
parent ffb1dfb012
commit b2c29117d9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 0 deletions

View File

@ -439,6 +439,7 @@ fn build_expanded_table(
}
let is_limited = matches!(expand_limit, Some(0));
let mut is_expanded = false;
let value = if is_limited {
value_to_styled_string(&value, 0, config, &color_hm).0
} else {
@ -469,6 +470,7 @@ fn build_expanded_table(
let result =
table.draw_table(config, &color_hm, alignments, &theme, remaining_width);
is_expanded = true;
match result {
Some(result) => result,
None => return Ok(None),
@ -482,6 +484,14 @@ fn build_expanded_table(
}
};
// we want to have a key being aligned to 2nd line,
// we could use Padding for it but,
// the easiest way to do so is just push a new_line char before
let mut key = key;
if !key.is_empty() && is_expanded && theme.has_top_line() {
key.insert(0, '\n');
}
let key = Value::String {
val: key,
span: Span::new(0, 0),

View File

@ -114,4 +114,11 @@ impl TableTheme {
theme: Style::blank().into(),
}
}
pub fn has_top_line(&self) -> bool {
self.theme.get_top().is_some()
|| self.theme.get_top_intersection().is_some()
|| self.theme.get_top_left().is_some()
|| self.theme.get_top_right().is_some()
}
}