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