mirror of
https://github.com/wader/fq.git
synced 2024-12-23 21:31:33 +03:00
e9d9f8aef9
Rename s/interface{}/any/g Preparation for using generics in decode API and native jq funcations etc Remove some unused linter ignores as linter has been fixed
46 lines
1.0 KiB
Go
46 lines
1.0 KiB
Go
package interp
|
|
|
|
import (
|
|
"fmt"
|
|
"math/big"
|
|
"strconv"
|
|
|
|
"github.com/wader/fq/internal/mathextra"
|
|
"github.com/wader/fq/pkg/bitio"
|
|
"github.com/wader/fq/pkg/scalar"
|
|
)
|
|
|
|
func previewValue(v any, df scalar.DisplayFormat) string {
|
|
switch vv := v.(type) {
|
|
case bool:
|
|
if vv {
|
|
return "true"
|
|
}
|
|
return "false"
|
|
case int:
|
|
// TODO: DisplayFormat is weird
|
|
return mathextra.PadFormatInt(int64(vv), df.FormatBase(), true, 0)
|
|
case int64:
|
|
// TODO: DisplayFormat is weird
|
|
return mathextra.PadFormatInt(vv, df.FormatBase(), true, 0)
|
|
case uint64:
|
|
return mathextra.PadFormatUint(vv, df.FormatBase(), true, 0)
|
|
case float64:
|
|
// TODO: float32? better truncated to significant digits?
|
|
return strconv.FormatFloat(vv, 'g', -1, 64)
|
|
case string:
|
|
if len(vv) > 50 {
|
|
return fmt.Sprintf("%q", vv[0:50]) + "..."
|
|
}
|
|
return fmt.Sprintf("%q", vv)
|
|
case nil:
|
|
return "null"
|
|
case bitio.Reader:
|
|
return "raw bits"
|
|
case *big.Int:
|
|
return mathextra.PadFormatBigInt(vv, df.FormatBase(), true, 0)
|
|
default:
|
|
panic("unreachable")
|
|
}
|
|
}
|