1package ini
2
3func 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
19func 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}
31