multiversx_sc_meta_lib/
esdt_attr_file_json.rs1use 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}