瀏覽代碼

Add `peek_n` to `package text/scanner`

gingerBill 4 年之前
父節點
當前提交
96d8971d87
共有 1 個文件被更改,包括 15 次插入0 次删除
  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;
 }
 
+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) {
 	s.error_count += 1;