From 68c2ae1b9b78de758eb53255f0d6b7751c2415af Mon Sep 17 00:00:00 2001 From: Eugene Pobochny Date: Mon, 18 Aug 2025 20:36:34 -0400 Subject: [PATCH] refactor: Node --- src/node.ts | 6 +++--- src/text-buf.ts | 21 +++++++++++---------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/node.ts b/src/node.ts index 74b2679..791236a 100644 --- a/src/node.ts +++ b/src/node.ts @@ -20,7 +20,7 @@ export interface Node { right: Node; total_len: number; total_eols_len: number; - buf_index: number; + buf: number; slice_start: number; slice_len: number; eols_start: number; @@ -28,7 +28,7 @@ export interface Node { } export function create_node( - buf_index: number, + buf: number, slice_start: number, slice_len: number, eols_start: number, @@ -42,7 +42,7 @@ export function create_node( right: NIL, total_len: slice_len, total_eols_len: eols_len, - buf_index, + buf, slice_start, slice_len, eols_start, diff --git a/src/text-buf.ts b/src/text-buf.ts index 12ce65b..f6e31cd 100644 --- a/src/text-buf.ts +++ b/src/text-buf.ts @@ -439,9 +439,9 @@ export class TextBuf { i += x.left.total_len; if (eol_index < x.eols_len) { - return i + - this.#bufs[x.buf_index]!.eols[(x.eols_start + eol_index) * 2 + 1]! - - x.slice_start; + const eol_end = this.#bufs[x.buf]! + .eols[(x.eols_start + eol_index) * 2 + 1]!; + return i + eol_end - x.slice_start; } eol_index -= x.eols_len; @@ -454,7 +454,7 @@ export class TextBuf { while (!x.nil && (n > 0)) { const count = Math.min(x.slice_len - offset, n); - yield this.#bufs[x.buf_index]!.text.slice( + yield this.#bufs[x.buf]!.text.slice( x.slice_start + offset, x.slice_start + offset + count, ); @@ -714,7 +714,7 @@ export class TextBuf { } #split_node(x: Node, index: number, gap: number): Node { - const buf = this.#bufs[x.buf_index]!; + const buf = this.#bufs[x.buf]!; const start = x.slice_start + index + gap; const len = x.slice_len - index - gap; @@ -726,26 +726,26 @@ export class TextBuf { const eols_end = buf.find_eol_index(start + len, eols_start); const eols_len = eols_end - eols_start; - const node = create_node(x.buf_index, start, len, eols_start, eols_len); + const node = create_node(x.buf, start, len, eols_start, eols_len); this.#insert_after(x, node); return node; } #node_growable(x: Node): boolean { - const buf = this.#bufs[x.buf_index]!; + const buf = this.#bufs[x.buf]!; return (buf.len < 100) && (x.slice_start + x.slice_len === buf.len); } #grow_node(x: Node, text: string): void { - this.#bufs[x.buf_index]!.append(text); + this.#bufs[x.buf]!.append(text); this.#resize_node(x, x.slice_len + text.length); } #trim_node_start(x: Node, n: number): void { - const buf = this.#bufs[x.buf_index]!; + const buf = this.#bufs[x.buf]!; x.slice_start += n; x.slice_len -= n; @@ -765,7 +765,7 @@ export class TextBuf { } #resize_node(x: Node, len: number): void { - const buf = this.#bufs[x.buf_index]!; + const buf = this.#bufs[x.buf]!; x.slice_len = len; @@ -773,6 +773,7 @@ export class TextBuf { x.slice_start + x.slice_len, x.eols_start, ); + x.eols_len = eols_end - x.eols_start; } }