mirror of
https://github.com/tiennm99/loto.git
synced 2026-10-11 12:19:05 +00:00
refactor: drop dead code left over from Cloudflare era
- Remove vietnamese-number.js + test: build-time Python script (generate-audio.py) is the sole spec for pre-baked MP3s; runtime no longer reads the JS module. - Remove resetMaster() export: only ever called from tests; inline the two-line body at test sites. - Update Python docstring to drop the JS-mirror reference. - Rewrite stale "CF Pages root" comment in svelte.config.js.
This commit is contained in:
1 parent
8fc3ec6ebd
commit
777b2dbaec
6 files changed
+6
-130
No files matched your search
@@ -23,7 +23,7 @@ ONES = [
|
||||
|
||||
|
||||
def number_to_vietnamese(n: int) -> str:
|
||||
"""Mirror of src/lib/vietnamese-number.js for build-time use."""
|
||||
"""Canonical Vietnamese number speller for build-time audio generation."""
|
||||
if n < 10:
|
||||
return ONES[n]
|
||||
if n == 10:
|
||||
|
||||
@@ -91,8 +91,3 @@ export function drawNext() {
|
||||
return next;
|
||||
}
|
||||
|
||||
/** Wipe everything — used by tests and when leaving a game permanently. */
|
||||
export function resetMaster() {
|
||||
masterState.called = [];
|
||||
masterState.remaining = [];
|
||||
}
|
||||
@@ -5,14 +5,14 @@ import {
|
||||
drawNext,
|
||||
loadMaster,
|
||||
masterState,
|
||||
resetMaster,
|
||||
saveMaster,
|
||||
startNewGame,
|
||||
} from "./master-store.svelte.js";
|
||||
|
||||
beforeEach(() => {
|
||||
localStorage.clear();
|
||||
resetMaster();
|
||||
masterState.called = [];
|
||||
masterState.remaining = [];
|
||||
});
|
||||
|
||||
describe("master-store", () => {
|
||||
@@ -48,14 +48,6 @@ describe("master-store", () => {
|
||||
expect(masterState.remaining).toEqual([]);
|
||||
});
|
||||
|
||||
it("resetMaster clears both arrays", () => {
|
||||
startNewGame();
|
||||
drawNext();
|
||||
resetMaster();
|
||||
expect(masterState.called).toEqual([]);
|
||||
expect(masterState.remaining).toEqual([]);
|
||||
});
|
||||
|
||||
it("save + load round-trip preserves state", () => {
|
||||
startNewGame();
|
||||
drawNext();
|
||||
@@ -63,7 +55,8 @@ describe("master-store", () => {
|
||||
const calledBefore = [...masterState.called];
|
||||
const remainingBefore = [...masterState.remaining];
|
||||
saveMaster();
|
||||
resetMaster();
|
||||
masterState.called = [];
|
||||
masterState.remaining = [];
|
||||
expect(masterState.called).toEqual([]);
|
||||
loadMaster();
|
||||
expect(masterState.called).toEqual(calledBefore);
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
/**
|
||||
* Vietnamese number-words for lô tô calls. Pure, no DOM, no I/O.
|
||||
* @module lib/vietnamese-number
|
||||
*/
|
||||
|
||||
const ONES = [
|
||||
"không",
|
||||
"một",
|
||||
"hai",
|
||||
"ba",
|
||||
"bốn",
|
||||
"năm",
|
||||
"sáu",
|
||||
"bảy",
|
||||
"tám",
|
||||
"chín",
|
||||
];
|
||||
|
||||
/**
|
||||
* Convert an integer 0..90 to its spoken Vietnamese form, honoring the
|
||||
* tonal exceptions that show up in lô tô (15 = "mười lăm", 21 = "hai mươi
|
||||
* mốt", 25 = "hai mươi lăm", etc.). Out-of-range values fall back to a
|
||||
* plain `String(n)` so the caller never has to guard against undefined.
|
||||
* @param {number} n
|
||||
* @returns {string}
|
||||
*/
|
||||
export function numberToVietnamese(n) {
|
||||
if (!Number.isInteger(n) || n < 0 || n > 90) return String(n);
|
||||
if (n < 10) return ONES[n];
|
||||
if (n === 10) return "mười";
|
||||
if (n < 20) {
|
||||
const u = n - 10;
|
||||
return u === 5 ? "mười lăm" : `mười ${ONES[u]}`;
|
||||
}
|
||||
const t = Math.floor(n / 10);
|
||||
const u = n % 10;
|
||||
const tens = `${ONES[t]} mươi`;
|
||||
if (u === 0) return tens;
|
||||
if (u === 1) return `${tens} mốt`;
|
||||
if (u === 5) return `${tens} lăm`;
|
||||
return `${tens} ${ONES[u]}`;
|
||||
}
|
||||
@@ -1,70 +0,0 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { numberToVietnamese } from "./vietnamese-number.js";
|
||||
|
||||
describe("numberToVietnamese — units 0..9", () => {
|
||||
it.each([
|
||||
[0, "không"],
|
||||
[1, "một"],
|
||||
[2, "hai"],
|
||||
[3, "ba"],
|
||||
[4, "bốn"],
|
||||
[5, "năm"],
|
||||
[6, "sáu"],
|
||||
[7, "bảy"],
|
||||
[8, "tám"],
|
||||
[9, "chín"],
|
||||
])("%i → %s", (n, expected) => {
|
||||
expect(numberToVietnamese(n)).toBe(expected);
|
||||
});
|
||||
});
|
||||
|
||||
describe("numberToVietnamese — teens 10..19 (mười …, with mười lăm exception)", () => {
|
||||
it.each([
|
||||
[10, "mười"],
|
||||
[11, "mười một"],
|
||||
[12, "mười hai"],
|
||||
[13, "mười ba"],
|
||||
[14, "mười bốn"],
|
||||
[15, "mười lăm"],
|
||||
[16, "mười sáu"],
|
||||
[17, "mười bảy"],
|
||||
[18, "mười tám"],
|
||||
[19, "mười chín"],
|
||||
])("%i → %s", (n, expected) => {
|
||||
expect(numberToVietnamese(n)).toBe(expected);
|
||||
});
|
||||
});
|
||||
|
||||
describe("numberToVietnamese — 20..90 (mốt and lăm exceptions, ten-only forms)", () => {
|
||||
it.each([
|
||||
[20, "hai mươi"],
|
||||
[21, "hai mươi mốt"],
|
||||
[22, "hai mươi hai"],
|
||||
[25, "hai mươi lăm"],
|
||||
[29, "hai mươi chín"],
|
||||
[30, "ba mươi"],
|
||||
[31, "ba mươi mốt"],
|
||||
[40, "bốn mươi"],
|
||||
[45, "bốn mươi lăm"],
|
||||
[55, "năm mươi lăm"],
|
||||
[61, "sáu mươi mốt"],
|
||||
[70, "bảy mươi"],
|
||||
[81, "tám mươi mốt"],
|
||||
[85, "tám mươi lăm"],
|
||||
[90, "chín mươi"],
|
||||
])("%i → %s", (n, expected) => {
|
||||
expect(numberToVietnamese(n)).toBe(expected);
|
||||
});
|
||||
});
|
||||
|
||||
describe("numberToVietnamese — out of range falls back to String(n)", () => {
|
||||
it.each([
|
||||
[-1, "-1"],
|
||||
[91, "91"],
|
||||
[100, "100"],
|
||||
[0.5, "0.5"],
|
||||
[Number.NaN, "NaN"],
|
||||
])("%p → %p", (n, expected) => {
|
||||
expect(numberToVietnamese(/** @type {number} */ (n))).toBe(expected);
|
||||
});
|
||||
});
|
||||
@@ -13,7 +13,7 @@ const env = loadEnv(process.env.NODE_ENV ?? "development", process.cwd(), "");
|
||||
// 1. NEXT_BASE_PATH — explicit override (escape hatch)
|
||||
// 2. codeserver dev → /absproxy/{port}
|
||||
// 3. BUILD_PROFILE=gh → /loto
|
||||
// 4. default (CF Pages root, local dev) → ""
|
||||
// 4. default (local dev / generic static host) → ""
|
||||
function resolveBase() {
|
||||
if (process.env.NEXT_BASE_PATH != null) return process.env.NEXT_BASE_PATH;
|
||||
if (isCodeserver) {
|
||||
|
||||
Reference in new issue
Block a user