Ejemplo n.º 1
0
// ReadUnicodeSequence returns string.
func ReadUnicodeSequence(scanner scanner.Scanner) (string, error) {
	codes := []uint16{}
	for {
		code, err := ReadUnicode(scanner)
		if err != nil {
			return "", err
		}
		codes = append(codes, code)

		maybeEscape, err := scanner.PeekRuneWithOffset(0)
		if err != nil {
			break
		}
		maybeUnicode, err := scanner.PeekRuneWithOffset(1)
		if err != nil {
			break
		}
		if maybeEscape != '\\' || maybeUnicode != 'u' {
			break
		}
		scanner.NextRune()
		scanner.NextRune()
	}
	return string(utf16.Decode(codes)), nil
}