diff --git a/prettifier.go b/prettifier.go index 0199965..6994e8f 100644 --- a/prettifier.go +++ b/prettifier.go @@ -160,13 +160,21 @@ func appendPrettifiedExpr(dst []byte, e Expr, indent int, needParens bool) []byt lfss := t.labelFilterss offset := 0 metricName := getMetricNameFromLabelFilterss(lfss) + metricNamehasEscapedChars := hasEscapedChars(metricName) + if metricName != "" { offset = 1 } dst = appendIndent(dst, indent) - dst = appendEscapedIdent(dst, metricName) + if !metricNamehasEscapedChars { + dst = appendEscapedIdent(dst, metricName) + } if !isOnlyMetricNameInLabelFilterss(lfss) { dst = append(dst, "{\n"...) + if metricNamehasEscapedChars { + dst = ifEscapedCharsAppendQuotedIdent(dst, metricName) + dst = append(dst, ',', ' ', '\n') + } for i, lfs := range lfss { lfs = lfs[offset:] if len(lfs) == 0 { diff --git a/prettifier_test.go b/prettifier_test.go index 159606e..dfbb012 100644 --- a/prettifier_test.go +++ b/prettifier_test.go @@ -123,6 +123,19 @@ func TestPrettifySuccess(t *testing.T) { another(`process_cpu_seconds_total{foo="bar",xjljljlkjopiwererrewre="asdfdsfdsfsdfdsfjkljlk"}`, `process_cpu_seconds_total{ foo="bar",xjljljlkjopiwererrewre="asdfdsfdsfsdfdsfjkljlk" +}`) + another(`process_cpu_seconds_total{"3foo"="bar",xjljljlkjopiwererrewre="asdfdsfdsfsdfdsfjkljlk"}`, + `process_cpu_seconds_total{ + "3foo"="bar",xjljljlkjopiwererrewre="asdfdsfdsfsdfdsfjkljlk" +}`) + another(`{"process_cpu_seconds_total", "foo"="bar",xjljljlkjopiwererrewre="asdfdsfdsfsdfdsfjkljlk"}`, + `process_cpu_seconds_total{ + foo="bar",xjljljlkjopiwererrewre="asdfdsfdsfsdfdsfjkljlk" +}`) + another(`{"3process_cpu_seconds_total", "foo"="bar",xjljljlkjopiwererrewre="asdfdsfdsfsdfdsfjkljlk"}`, + `{ +"3process_cpu_seconds_total", + foo="bar",xjljljlkjopiwererrewre="asdfdsfdsfsdfdsfjkljlk" }`) another(`process_cpu_seconds_total{foo="bar",xjljljlkjopiwererrewre="asdfdsfdsfsdfdsfjkljlk",very_long_label_aaaaaaaaaaaaaaa="fdsfdsffdsfs"}`, `process_cpu_seconds_total{