const lowerhex … const upperhex … // contains reports whether the string contains the byte c. func contains(s string, c byte) bool { … } func quoteWith(s string, quote byte, ASCIIonly, graphicOnly bool) string { … } func quoteRuneWith(r rune, quote byte, ASCIIonly, graphicOnly bool) string { … } func appendQuotedWith(buf []byte, s string, quote byte, ASCIIonly, graphicOnly bool) []byte { … } func appendQuotedRuneWith(buf []byte, r rune, quote byte, ASCIIonly, graphicOnly bool) []byte { … } func appendEscapedRune(buf []byte, r rune, quote byte, ASCIIonly, graphicOnly bool) []byte { … } // Quote returns a double-quoted Go string literal representing s. The // returned string uses Go escape sequences (\t, \n, \xFF, \u0100) for // control characters and non-printable characters as defined by // [IsPrint]. func Quote(s string) string { … } // AppendQuote appends a double-quoted Go string literal representing s, // as generated by [Quote], to dst and returns the extended buffer. func AppendQuote(dst []byte, s string) []byte { … } // QuoteToASCII returns a double-quoted Go string literal representing s. // The returned string uses Go escape sequences (\t, \n, \xFF, \u0100) for // non-ASCII characters and non-printable characters as defined by [IsPrint]. func QuoteToASCII(s string) string { … } // AppendQuoteToASCII appends a double-quoted Go string literal representing s, // as generated by [QuoteToASCII], to dst and returns the extended buffer. func AppendQuoteToASCII(dst []byte, s string) []byte { … } // QuoteToGraphic returns a double-quoted Go string literal representing s. // The returned string leaves Unicode graphic characters, as defined by // [IsGraphic], unchanged and uses Go escape sequences (\t, \n, \xFF, \u0100) // for non-graphic characters. func QuoteToGraphic(s string) string { … } // AppendQuoteToGraphic appends a double-quoted Go string literal representing s, // as generated by [QuoteToGraphic], to dst and returns the extended buffer. func AppendQuoteToGraphic(dst []byte, s string) []byte { … } // QuoteRune returns a single-quoted Go character literal representing the // rune. The returned string uses Go escape sequences (\t, \n, \xFF, \u0100) // for control characters and non-printable characters as defined by [IsPrint]. // If r is not a valid Unicode code point, it is interpreted as the Unicode // replacement character U+FFFD. func QuoteRune(r rune) string { … } // AppendQuoteRune appends a single-quoted Go character literal representing the rune, // as generated by [QuoteRune], to dst and returns the extended buffer. func AppendQuoteRune(dst []byte, r rune) []byte { … } // QuoteRuneToASCII returns a single-quoted Go character literal representing // the rune. The returned string uses Go escape sequences (\t, \n, \xFF, // \u0100) for non-ASCII characters and non-printable characters as defined // by [IsPrint]. // If r is not a valid Unicode code point, it is interpreted as the Unicode // replacement character U+FFFD. func QuoteRuneToASCII(r rune) string { … } // AppendQuoteRuneToASCII appends a single-quoted Go character literal representing the rune, // as generated by [QuoteRuneToASCII], to dst and returns the extended buffer. func AppendQuoteRuneToASCII(dst []byte, r rune) []byte { … } // QuoteRuneToGraphic returns a single-quoted Go character literal representing // the rune. If the rune is not a Unicode graphic character, // as defined by [IsGraphic], the returned string will use a Go escape sequence // (\t, \n, \xFF, \u0100). // If r is not a valid Unicode code point, it is interpreted as the Unicode // replacement character U+FFFD. func QuoteRuneToGraphic(r rune) string { … } // AppendQuoteRuneToGraphic appends a single-quoted Go character literal representing the rune, // as generated by [QuoteRuneToGraphic], to dst and returns the extended buffer. func AppendQuoteRuneToGraphic(dst []byte, r rune) []byte { … } // CanBackquote reports whether the string s can be represented // unchanged as a single-line backquoted string without control // characters other than tab. func CanBackquote(s string) bool { … } func unhex(b byte) (v rune, ok bool) { … } // UnquoteChar decodes the first character or byte in the escaped string // or character literal represented by the string s. // It returns four values: // // 1. value, the decoded Unicode code point or byte value; // 2. multibyte, a boolean indicating whether the decoded character requires a multibyte UTF-8 representation; // 3. tail, the remainder of the string after the character; and // 4. an error that will be nil if the character is syntactically valid. // // The second argument, quote, specifies the type of literal being parsed // and therefore which escaped quote character is permitted. // If set to a single quote, it permits the sequence \' and disallows unescaped '. // If set to a double quote, it permits \" and disallows unescaped ". // If set to zero, it does not permit either escape and allows both quote characters to appear unescaped. func UnquoteChar(s string, quote byte) (value rune, multibyte bool, tail string, err error) { … } // QuotedPrefix returns the quoted string (as understood by [Unquote]) at the prefix of s. // If s does not start with a valid quoted string, QuotedPrefix returns an error. func QuotedPrefix(s string) (string, error) { … } // Unquote interprets s as a single-quoted, double-quoted, // or backquoted Go string literal, returning the string value // that s quotes. (If s is single-quoted, it would be a Go // character literal; Unquote returns the corresponding // one-character string. For '' Unquote returns the empty string.) func Unquote(s string) (string, error) { … } // unquote parses a quoted string at the start of the input, // returning the parsed prefix, the remaining suffix, and any parse errors. // If unescape is true, the parsed prefix is unescaped, // otherwise the input prefix is provided verbatim. func unquote(in string, unescape bool) (out, rem string, err error) { … } // bsearch is semantically the same as [slices.BinarySearch] (without NaN checks) // We copied this function because we can not import "slices" here. func bsearch[S ~[]E, E ~uint16 | ~uint32](s S, v E) (int, bool) { … } // IsPrint reports whether the rune is defined as printable by Go, with // the same definition as [unicode.IsPrint]: letters, numbers, punctuation, // symbols and ASCII space. func IsPrint(r rune) bool { … } // IsGraphic reports whether the rune is defined as a Graphic by Unicode. Such // characters include letters, marks, numbers, punctuation, symbols, and // spaces, from categories L, M, N, P, S, and Zs. func IsGraphic(r rune) bool { … } // isInGraphicList reports whether the rune is in the isGraphic list. This separation // from IsGraphic allows quoteWith to avoid two calls to IsPrint. // Should be called only if IsPrint fails. func isInGraphicList(r rune) bool { … }