miden_node_utils/
formatting.rs

1use 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}