MCPcopy Index your code
hub / github.com/aiscriptdev/aiscript / fmt

Method fmt

aiscript-vm/src/value.rs:45–126  ·  view source on GitHub ↗
(&self, f: &mut std::fmt::Formatter<'_>)

Source from the content-addressed store, hash-verified

43
44impl Display for Value<'_> {
45 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
46 match self {
47 Value::Number(v) => write!(f, "{}", v),
48 Value::Boolean(b) => write!(f, "{}", b),
49 Value::String(s) => write!(f, "{}", s),
50 Value::IoString(s) => write!(f, "{}", s),
51 Value::Closure(closure) => {
52 if let Some(name) = closure.function.name {
53 write!(f, "<fn {}>", name)
54 } else {
55 write!(f, "<script>")
56 }
57 }
58 Value::NativeFunction(_) => write!(f, "<native fn>"),
59 Value::List(list) => {
60 let list = list.borrow();
61 match list.kind {
62 ListKind::Array => {
63 write!(f, "[")?;
64 for (i, value) in list.data.iter().enumerate() {
65 if i > 0 {
66 write!(f, ", ")?;
67 }
68 write!(f, "{}", value)?;
69 }
70 write!(f, "]")
71 }
72 ListKind::Tuple => {
73 write!(f, "(")?;
74 for (i, value) in list.data.iter().enumerate() {
75 if i > 0 {
76 write!(f, ", ")?;
77 }
78 write!(f, "{}", value)?;
79 }
80 // Add trailing comma for 1-element tuples
81 if list.data.len() == 1 {
82 write!(f, ",")?;
83 }
84 write!(f, ")")
85 }
86 }
87 }
88 Value::Object(obj) => {
89 write!(f, "{{")?;
90 let mut first = true;
91 for (key, value) in &obj.borrow().fields {
92 if !first {
93 write!(f, ", ")?;
94 }
95 write!(f, "{}: {}", key, value)?;
96 first = false;
97 }
98 write!(f, "}}")
99 }
100 Value::Enum(enum_) => write!(f, "enum {}", enum_.borrow().name),
101 Value::EnumVariant(variant) => {
102 write!(f, "{}::{}", variant.enum_.borrow().name, variant.name)?;

Callers

nothing calls this directly

Calls 4

lenMethod · 0.80
is_nilMethod · 0.80
pushMethod · 0.80
borrowMethod · 0.45

Tested by

no test coverage detected