Browse Source

Add `peek_n` to `package text/scanner`

gingerBill 4 years ago
parent
commit
96d8971d87
1 changed files with 15 additions and 0 deletions
  1. 15 0
      core/text/scanner/scanner.odin

+ 15 - 0
core/text/scanner/scanner.odin

@@ -160,6 +160,21 @@ peek :: proc(s: ^Scanner) -> rune {
 	return s.ch;
 	return s.ch;
 }
 }
 
 
+peek_n :: proc(s: ^Scanner, n: int) -> rune {
+	assert(n >= 0);
+	if n == 0 {
+		return peek(s);
+	}
+
+	prev_s := s^;
+	for in 0..<n {
+		next(s);
+	}
+	ch := peek(s);
+	s^ = prev_s;
+	return ch;
+}
+
 
 
 error :: proc(s: ^Scanner, msg: string) {
 error :: proc(s: ^Scanner, msg: string) {
 	s.error_count += 1;
 	s.error_count += 1;