miden_node_utils/
formatting.rs1use std::fmt::Display;
2
3use itertools::Itertools;
4use miden_objects::transaction::{InputNoteCommitment, InputNotes, OutputNotes};
5
6pub fn format_opt<T: Display>(opt: Option<&T>) -> String {
7 opt.map_or("None".to_owned(), ToString::to_string)
8}
9
10pub fn format_input_notes(notes: &InputNotes<InputNoteCommitment>) -> String {
11 format_array(notes.iter().map(|c| match c.header() {
12 Some(header) => format!("({}, {})", c.nullifier().to_hex(), header.id().to_hex()),
13 None => format!("({})", c.nullifier().to_hex()),
14 }))
15}
16
17pub fn format_output_notes(notes: &OutputNotes) -> String {
18 format_array(notes.iter().map(|output_note| {
19 let metadata = output_note.metadata();
20 format!(
21 "{{ note_id: {}, note_metadata: {{sender: {}, tag: {} }}}}",
22 output_note.id().to_hex(),
23 metadata.sender(),
24 metadata.tag(),
25 )
26 }))
27}
28
29pub fn format_array(list: impl IntoIterator<Item = impl Display>) -> String {
30 let comma_separated = list.into_iter().join(", ");
31 if comma_separated.is_empty() {
32 "None".to_owned()
33 } else {
34 format!("[{comma_separated}]")
35 }
36}