From 47b70e5838b8ea4764da13ee2ffcb3adecf291fd Mon Sep 17 00:00:00 2001 From: Nate Moore Date: Fri, 9 Oct 2026 15:21:42 -0500 Subject: [PATCH] chore: prefer-let in the shape-vector generator --- tasks/gen-shape-vectors.ts | 66 +++++++++++++++++++------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/tasks/gen-shape-vectors.ts b/tasks/gen-shape-vectors.ts index 9c7a2bb..4898182 100644 --- a/tasks/gen-shape-vectors.ts +++ b/tasks/gen-shape-vectors.ts @@ -13,9 +13,9 @@ // // Regenerate: deno task gen-shape. Verify: deno task gen-shape:check. -const CIRCLE_R = 0.34; +let CIRCLE_R = 0.34; // two staggered columns: left lowered, right raised (§9.3.2) -const INTERNAL: Array<[number, number]> = [ +let INTERNAL: Array<[number, number]> = [ [0.3, 0.24], [0.7, 0.12], // top pair [0.3, 0.56], @@ -25,21 +25,21 @@ const INTERNAL: Array<[number, number]> = [ ]; // point-supersampling density per circle's bounding square -const SAMPLES = 32; +let SAMPLES = 32; -const FONT_PATH = "vendor/font8x8_basic.h"; -const OUT_PATH = "src/shape_vectors.h"; +let FONT_PATH = "vendor/font8x8_basic.h"; +let OUT_PATH = "src/shape_vectors.h"; function loadFont(): Uint8Array[] { - const text = new TextDecoder().decode(Deno.readFileSync(FONT_PATH)); - const glyphs: Uint8Array[] = []; - const glyph = /\{([^}]*)\}\s*,?\s*\/\/\s*U\+([0-9A-Fa-f]+)/g; - const rows = /0x([0-9A-Fa-f]{2})/g; - for (const match of text.matchAll(glyph)) { - const cp = parseInt(match[2], 16); - const bytes = new Uint8Array(8); + let text = new TextDecoder().decode(Deno.readFileSync(FONT_PATH)); + let glyphs: Uint8Array[] = []; + let glyph = /\{([^}]*)\}\s*,?\s*\/\/\s*U\+([0-9A-Fa-f]+)/g; + let rows = /0x([0-9A-Fa-f]{2})/g; + for (let match of text.matchAll(glyph)) { + let cp = parseInt(match[2], 16); + let bytes = new Uint8Array(8); let i = 0; - for (const b of match[1].matchAll(rows)) { + for (let b of match[1].matchAll(rows)) { if (i < 8) { bytes[i++] = parseInt(b[1], 16); } @@ -53,8 +53,8 @@ function loadFont(): Uint8Array[] { } function ink(font: Uint8Array, u: number, v: number): boolean { - const col = Math.floor(u * 8); - const row = Math.floor(v * 8); + let col = Math.floor(u * 8); + let row = Math.floor(v * 8); if (col < 0 || col > 7 || row < 0 || row > 7) { return false; } @@ -62,17 +62,17 @@ function ink(font: Uint8Array, u: number, v: number): boolean { } function shapeVector(font: Uint8Array): number[] { - const vector: number[] = []; - for (const [cu, cv] of INTERNAL) { + let vector: number[] = []; + for (let [cu, cv] of INTERNAL) { let inside = 0; let inked = 0; for (let sy = 0; sy < SAMPLES; sy++) { for (let sx = 0; sx < SAMPLES; sx++) { // jittered grid point in the circle's bounding square - const u = cu - CIRCLE_R + ((sx + 0.5) / SAMPLES) * 2 * CIRCLE_R; - const v = cv - CIRCLE_R + ((sy + 0.5) / SAMPLES) * 2 * CIRCLE_R; - const du = u - cu; - const dv = v - cv; + let u = cu - CIRCLE_R + ((sx + 0.5) / SAMPLES) * 2 * CIRCLE_R; + let v = cv - CIRCLE_R + ((sy + 0.5) / SAMPLES) * 2 * CIRCLE_R; + let du = u - cu; + let dv = v - cv; if (du * du + dv * dv > CIRCLE_R * CIRCLE_R) { continue; } @@ -88,8 +88,8 @@ function shapeVector(font: Uint8Array): number[] { } function normalize(vectors: number[][]): number[][] { - const max = [0, 0, 0, 0, 0, 0]; - for (const vector of vectors) { + let max = [0, 0, 0, 0, 0, 0]; + for (let vector of vectors) { for (let k = 0; k < 6; k++) { if (vector[k] > max[k]) { max[k] = vector[k]; @@ -102,7 +102,7 @@ function normalize(vectors: number[][]): number[][] { } function render(vectors: number[][]): string { - const lines: string[] = []; + let lines: string[] = []; lines.push("/* GENERATED by tasks/gen-shape-vectors.ts — do not edit."); lines.push(" *"); lines.push(" * Shape vectors for the ascii art tier (Graphics Specification"); @@ -128,11 +128,11 @@ function render(vectors: number[][]): string { lines.push(""); lines.push("#define SHAPE_VECTOR_COUNT 95"); lines.push(""); - lines.push("static const float SHAPE_VECTORS[95][6] = {"); + lines.push("static let float SHAPE_VECTORS[95][6] = {"); for (let i = 0; i < 95; i++) { - const cp = 0x20 + i; - const label = cp === 0x20 ? "space" : String.fromCharCode(cp); - const vals = vectors[i] + let cp = 0x20 + i; + let label = cp === 0x20 ? "space" : String.fromCharCode(cp); + let vals = vectors[i] .map(( v, ) => (v === 0 ? "0" : v.toFixed(6).replace(/0+$/, "").replace(/\.$/, ""))) @@ -150,19 +150,19 @@ function render(vectors: number[][]): string { // Regenerate: deno task gen-shape. Verify: deno task gen-shape:check. -const glyphs = loadFont(); +let glyphs = loadFont(); if (glyphs.length < 0x7f) { console.error(`font parse failed: ${glyphs.length} glyphs`); Deno.exit(1); } -const vectors = normalize( +let vectors = normalize( Array.from({ length: 95 }, (_, i) => shapeVector(glyphs[0x20 + i])), ); -const out = render(vectors); +let out = render(vectors); -const check = Deno.args.includes("--check"); +let check = Deno.args.includes("--check"); if (check) { - const existing = new TextDecoder().decode(Deno.readFileSync(OUT_PATH)); + let existing = new TextDecoder().decode(Deno.readFileSync(OUT_PATH)); if (existing !== out) { console.error(`${OUT_PATH} is stale; run deno task gen-shape`); Deno.exit(1); -- 2.51.2