gridline_engine/engine/
format.rs1use super::Dynamic;
2
3pub fn format_dynamic(value: &Dynamic) -> String {
5 if value.is_unit() {
6 String::new()
7 } else if let Ok(n) = value.as_float() {
8 format_number(n)
9 } else if let Ok(n) = value.as_int() {
10 n.to_string()
11 } else if let Ok(b) = value.as_bool() {
12 if b { "TRUE" } else { "FALSE" }.to_string()
13 } else if let Ok(s) = value.clone().into_string() {
14 s
15 } else {
16 format!("{:?}", value)
17 }
18}
19
20pub fn format_number(n: f64) -> String {
22 if n.is_nan() {
23 "#NAN!".to_string()
24 } else if n.is_infinite() {
25 "#INF!".to_string()
26 } else if n.fract() == 0.0 && n.abs() < 1e10 {
27 format!("{:.0}", n)
28 } else {
29 format!("{:.2}", n)
30 }
31}