pfes
This commit is contained in:
parent
a94776695a
commit
8b3bb9c382
6 changed files with 119 additions and 80 deletions
38
pfes/sort/api.ts
Executable file
38
pfes/sort/api.ts
Executable file
|
@ -0,0 +1,38 @@
|
|||
#!/bin/env -S deno run -A
|
||||
|
||||
import { group_inputs, members_from_cells, Memeber, write_to_csv } from "./converter.ts";
|
||||
import { enumerate } from "./utils.ts";
|
||||
|
||||
async function main() {
|
||||
const sheet_id = "il9cnn4s9ugc";
|
||||
const sheet = await get_sheet(sheet_id);
|
||||
const members = extract_members(sheet, [0, 4]);
|
||||
const groups = group_inputs(members, 4);
|
||||
await write_to_csv("./output.csv", groups);
|
||||
}
|
||||
|
||||
type Sheet = Awaited<ReturnType<typeof get_sheet>>;
|
||||
async function get_sheet(sheet_id: string) {
|
||||
const response = await fetch(`https://ethercalc.net/${sheet_id}.csv`);
|
||||
const body = await response.text();
|
||||
return body.split("\n").map((line) => line.split(","));
|
||||
}
|
||||
|
||||
function extract_members(sheet: Sheet, input_top_left: coords): Memeber[] {
|
||||
const [tl_x, tl_y] = input_top_left;
|
||||
const filtered = [] as string[][];
|
||||
for (const [y, line] of enumerate(sheet)) {
|
||||
if (y < tl_y) continue;
|
||||
const filtered_line = [] as string[];
|
||||
for (const [x, cell] of enumerate(line)) {
|
||||
if (x < tl_x) continue;
|
||||
filtered_line.push(cell);
|
||||
}
|
||||
filtered.push(filtered_line);
|
||||
}
|
||||
return members_from_cells(filtered);
|
||||
}
|
||||
|
||||
type coords = [number, number];
|
||||
|
||||
if (import.meta.main) await main();
|
Loading…
Add table
Add a link
Reference in a new issue