1use clvm_tools_rs::classic::clvm_tools::binutils;
2use clvmr::{
3 serde::{node_from_bytes, node_to_bytes},
4 Allocator, NodePtr,
5};
6
7use crate::Result;
8
9pub fn stringify_clvm(allocator: &Allocator, ptr: NodePtr) -> Result<String> {
10 let mut old_allocator = clvmr_old::allocator::Allocator::new();
11 let output_bytes = node_to_bytes(allocator, ptr)?;
12 let output_ptr = clvmr_old::serde::node_from_bytes(&mut old_allocator, &output_bytes)?;
13 Ok(binutils::disassemble(&old_allocator, output_ptr, None))
14}
15
16pub fn parse_clvm(allocator: &mut Allocator, source: &str) -> Result<NodePtr> {
17 let mut old_allocator = clvmr_old::Allocator::new();
18 let input_ptr = binutils::assemble(&mut old_allocator, source).unwrap();
19 let input_bytes = clvmr_old::serde::node_to_bytes(&old_allocator, input_ptr).unwrap();
20 Ok(node_from_bytes(allocator, &input_bytes)?)
21}