multiversx_sc_meta_lib/
esdt_attr_file_json.rs

1use serde::Serialize;
2use std::{fs::File, io::Write, path::Path};
3
4use crate::abi_json::EsdtAttributeAbiJson;
5
6pub fn create_new_esdt_attr_file(
7    json: &EsdtAttributeAbiJson,
8    path: impl AsRef<Path>,
9    file_name_arg: &str,
10) {
11    let abi_string = serialize_esdt_attribute_json(json);
12    let mut file_name = file_name_arg.replace(|c: char| !c.is_ascii_alphanumeric(), "_");
13    file_name.push_str(".esdt-abi.json");
14    let abi_file_path = path.as_ref().join(file_name);
15    let mut abi_file = File::create(abi_file_path).unwrap();
16    write!(abi_file, "{abi_string}").unwrap();
17}
18
19pub fn serialize_esdt_attribute_json(json: &EsdtAttributeAbiJson) -> String {
20    let buf = Vec::new();
21    let formatter = serde_json::ser::PrettyFormatter::with_indent(b"    ");
22    let mut ser = serde_json::Serializer::with_formatter(buf, formatter);
23    json.serialize(&mut ser).unwrap();
24    let mut serialized = String::from_utf8(ser.into_inner()).unwrap();
25    serialized.push('\n');
26    serialized
27}