Format the change for short output.
(
&self,
change: &Change,
hash: &Hash,
sequence: Option<u64>,
)
| 485 | |
| 486 | /// Format the change for short output. |
| 487 | pub(crate) fn format_short( |
| 488 | &self, |
| 489 | change: &Change, |
| 490 | hash: &Hash, |
| 491 | sequence: Option<u64>, |
| 492 | ) -> String { |
| 493 | let hash_len = self.get_hash_length(); |
| 494 | let hash_str = format_hash_with_length(hash, hash_len); |
| 495 | |
| 496 | let date_str = change |
| 497 | .hashed |
| 498 | .header |
| 499 | .timestamp |
| 500 | .format("%Y-%m-%d") |
| 501 | .to_string(); |
| 502 | |
| 503 | let author_name = change |
| 504 | .hashed |
| 505 | .header |
| 506 | .authors |
| 507 | .first() |
| 508 | .map(|a| truncate_string(&a.name, 15)) |
| 509 | .unwrap_or_else(|| "(unknown)".to_string()); |
| 510 | |
| 511 | let message = change |
| 512 | .hashed |
| 513 | .header |
| 514 | .message |
| 515 | .lines() |
| 516 | .next() |
| 517 | .unwrap_or("(no message)"); |
| 518 | |
| 519 | // Provenance indicator for short format |
| 520 | let _prov_indicator = if change.has_provenance() { " 🤖" } else { "" }; |
| 521 | |
| 522 | let seq_str = sequence.map(|s| format!(" #{}", s)).unwrap_or_default(); |
| 523 | |
| 524 | format!( |
| 525 | "{}{} {} {:15} {}\n", |
| 526 | style_hash(&hash_str), |
| 527 | hint(&seq_str), |
| 528 | style_timestamp(&date_str), |
| 529 | style_author(&author_name), |
| 530 | message |
| 531 | ) |
| 532 | } |
| 533 | |
| 534 | /// Format AI provenance information for display. |
| 535 | fn format_provenance(&self, prov: &Provenance) -> String { |