code.dwrz.net

Go monorepo.
Log | Files | Refs

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 }