MCPcopy Create free account
hub / github.com/HelloCSV/HelloCSV / transformSheet

Function transformSheet

src/transformers/index.ts:12–47  ·  view source on GitHub ↗
(
  sheetDefinition: SheetDefinition,
  sheetData: SheetState
)

Source from the content-addressed store, hash-verified

10import { Transformer } from './transformer_definitions/base';
11
12function transformSheet(
13 sheetDefinition: SheetDefinition,
14 sheetData: SheetState
15) {
16 const pipelineByColumnId = eachWithObject<SheetColumnDefinition, Pipeline>(
17 sheetDefinition.columns,
18 (columnDefinition, obj) => {
19 obj[columnDefinition.id] = new Pipeline();
20 if (!columnDefinition.transformers) return;
21 columnDefinition.transformers.forEach((transformerDefinition) => {
22 obj[columnDefinition.id].push(
23 buildTransformerFromDefinition(transformerDefinition)
24 );
25 });
26 }
27 );
28
29 sheetDefinition.columns.forEach((columnDefinition) => {
30 const columnId = columnDefinition.id;
31 const pipeline = pipelineByColumnId[columnId];
32
33 sheetData.rows.forEach((row) => {
34 if (!hasData(row)) {
35 return;
36 }
37
38 const cellValue = row[columnId];
39
40 if (!isEmptyCell(cellValue)) {
41 row[columnId] = pipeline.transform(cellValue);
42 }
43 });
44 });
45
46 return sheetData.rows;
47}
48
49export function applyTransformations(
50 sheetDefinitions: SheetDefinition[],

Callers 1

applyTransformationsFunction · 0.85

Calls 6

eachWithObjectFunction · 0.90
hasDataFunction · 0.90
isEmptyCellFunction · 0.90
pushMethod · 0.80
transformMethod · 0.45

Tested by

no test coverage detected