newline_token.go (458B)
1 package ini 2 3 func isNewline(b []rune) bool { 4 if len(b) == 0 { 5 return false 6 } 7 8 if b[0] == '\n' { 9 return true 10 } 11 12 if len(b) < 2 { 13 return false 14 } 15 16 return b[0] == '\r' && b[1] == '\n' 17 } 18 19 func newNewlineToken(b []rune) (Token, int, error) { 20 i := 1 21 if b[0] == '\r' && isNewline(b[1:]) { 22 i++ 23 } 24 25 if !isNewline([]rune(b[:i])) { 26 return emptyToken, 0, NewParseError("invalid new line token") 27 } 28 29 return newToken(TokenNL, b[:i], NoneType), i, nil 30 }