// 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 }