///|
/// Render a `Double` using Prometheus text special-number tokens.
///
/// MoonBit's ordinary `to_string` is locale independent. The explicit cases
/// prevent target-specific spellings such as `Infinity`, and preserving `-0`
/// retains the IEEE-754 sign bit in a parser-accepted form.
fn format_number(value : Double) -> String {
if value.is_nan() {
"NaN"
} else if value.is_pos_inf() {
"+Inf"
} else if value.is_neg_inf() {
"-Inf"
} else if value == 0.0 && value.reinterpret_as_int64() < 0L {
"-0"
} else {
value.to_string()
}
}
///|
/// Render an OpenMetrics 1.0 floating-point number.
///
/// OpenMetrics distinguishes integer counts from floating-point sample values.
/// A finite floating value must therefore contain either a decimal point or an
/// exponent: `1.0`, rather than Prometheus text's valid `1`. The same canonical
/// rendering is used for the histogram `le` label value.
fn format_openmetrics_number(value : Double) -> String {
if value.is_nan() {
"NaN"
} else if value.is_pos_inf() {
"+Inf"
} else if value.is_neg_inf() {
"-Inf"
} else {
let rendered = if value == 0.0 && value.reinterpret_as_int64() < 0L {
"-0.0"
} else {
value.to_string()
}
if rendered.contains(".") ||
rendered.contains("e") ||
rendered.contains("E") {
rendered
} else {
rendered + ".0"
}
}
}
///|
fn format_count(value : Int64) -> String {
"\{value}"
}