( sheetDefinition: SheetDefinition, sheetData: SheetState )
| 10 | import { Transformer } from './transformer_definitions/base'; |
| 11 | |
| 12 | function 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 | |
| 49 | export function applyTransformations( |
| 50 | sheetDefinitions: SheetDefinition[], |
no test coverage detected