// Copyright (C) 2022-2023 Luke Shumaker // // SPDX-License-Identifier: GPL-2.0-or-later package json import ( "bytes" "io" "git.lukeshu.com/go/lowmemjson" "git.lukeshu.com/go/lowmemjson/internal" ) var parseTag = internal.ParseTag type scanner = lowmemjson.ReEncoderConfig func checkValid(in []byte, scan *lowmemjson.ReEncoderConfig) error { return reencode(io.Discard, in, *scan) } func isValidNumber(s string) bool { var parser internal.Parser for _, r := range s { if t, _ := parser.HandleRune(r); !t.IsNumber() { return false } } if t, _ := parser.HandleEOF(); t == internal.RuneTypeError { return false } return true } const ( startDetectingCyclesAfter = 1000 ) func isSpace(c byte) bool { switch c { case 0x0020, 0x000A, 0x000D, 0x0009: return true default: return false } } type encodeState struct { bytes.Buffer } func (es *encodeState) string(str string, _ bool) { internal.EncodeStringFromString(&es.Buffer, str) } func (es *encodeState) stringBytes(str []byte, _ bool) { internal.EncodeStringFromBytes(&es.Buffer, str) }