From 58e0bf3e5b16c062904d4b5905c89630cf57ef5d Mon Sep 17 00:00:00 2001 From: Yingchi Long Date: Fri, 26 Jul 2024 07:52:53 +0800 Subject: [PATCH] spec: add `extract` utility functions for data analyzing results --- src/spec/index.ts | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/spec/index.ts b/src/spec/index.ts index 4b442ee..7328690 100644 --- a/src/spec/index.ts +++ b/src/spec/index.ts @@ -125,7 +125,25 @@ export interface SPECResultsTable { description?: string, } -export function parseSPECCSVResultsTable(data: string) { +export const extract = (field: keyof SPECResultsTable) => (o: ParsedResult) => { + return Object.fromEntries(Object + .entries(o) + .filter(([_, b]) => b[field] !== '' && b[field] !== undefined && b.baseStatus === 'S') + .map(([a, b]) => [a, parseFloat(b[field]!)])); +}; + +export const extractBaseRatio = extract('baseRatio'); + +export const baseRatioFromPath = async (path: string) => { + const result = parseSPECCSVResultsTable((await fs.promises.readFile(path)).toString()); + return extractBaseRatio(result); +}; + +export interface ParsedResult { + [key: string]: SPECResultsTable +} + +export function parseSPECCSVResultsTable(data: string): ParsedResult { const lines = data.split("\n"); let index = 0; const eof = () => index >= lines.length;