1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
use crate::{errors::ConsoleError, program::ConstrainedProgram, GroupType};
use leo_asg::FormattedString;
use snarkvm_models::{
curves::{Field, PrimeField},
gadgets::r1cs::ConstraintSystem,
};
impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
pub fn format<CS: ConstraintSystem<F>>(
&mut self,
cs: &mut CS,
formatted: &FormattedString,
) -> Result<String, ConsoleError> {
if formatted.containers.len() != formatted.parameters.len() {
return Err(ConsoleError::length(
formatted.containers.len(),
formatted.parameters.len(),
formatted.span.clone(),
));
}
let mut string = formatted.string.as_str();
string = string.trim_start_matches('\"');
let string = string.split('\"').next().unwrap();
let mut result = string.to_string();
for parameter in formatted.parameters.iter() {
let parameter_value = self.enforce_expression(cs, parameter)?;
result = result.replacen("{}", ¶meter_value.to_string(), 1);
}
Ok(result)
}
}