UNPKG

step-sequence-generator

Version:

A step sequence generator for figure skating programs

81 lines (80 loc) 2.88 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.UploaderMovements = void 0; const UploaderAbstract_js_1 = require("./UploaderAbstract.js"); const movement_enums_js_1 = require("../../shared/enums/movement-enums.js"); const turn_absolute_name_enum_1 = require("../../shared/enums/turn-absolute-name.enum"); const enumMap = { transitionDirection: { obj: movement_enums_js_1.TransitionDirection, name: 'TransitionDirection', }, rotationDirection: { obj: movement_enums_js_1.RotationDirection, name: 'RotationDirection', }, rotationDegree: { obj: movement_enums_js_1.RotationDegree, name: 'RotationDegree', }, startLeg: { obj: movement_enums_js_1.Leg, name: 'Leg', }, endLeg: { obj: movement_enums_js_1.Leg, name: 'Leg', }, startEdge: { obj: movement_enums_js_1.Edge, name: 'Edge', }, endEdge: { obj: movement_enums_js_1.Edge, name: 'Edge', }, type: { obj: movement_enums_js_1.MovementCharacter, name: 'MovementCharacter', }, absoluteName: { obj: turn_absolute_name_enum_1.TurnAbsoluteName, name: 'TurnAbsoluteName', }, }; class UploaderMovements extends UploaderAbstract_js_1.UploaderAbstract { upload(data, filePath) { const formatedData = this.formatData(data); const importPath = this.getImportPath(filePath); const content = this.addImports(importPath, formatedData); this.uploadToFile(filePath, content); } formatData(data) { const dataString = this.formatToJSON(data); return this.formatEnum(dataString, enumMap); } formatEnum(data, enumMap) { let formatedData = data; for (const [enumKey, enumInfo] of Object.entries(enumMap)) { const pattern = new RegExp(`("${enumKey}").+?(\\d+)`, 'g'); formatedData = formatedData.replace(pattern, (_, name, value) => { const enumName = enumInfo.name; const enumValue = enumInfo.obj[Number(value)]; return `${enumKey}: ${enumName}.${enumValue}`; }); } return formatedData; } getImportPath(filePath) { const pattern = /\/(public\/.*)/; const replaceString = '/src'; return filePath.replace(pattern, replaceString); } addImports(importPath, formatedData) { const imports = `import { Movement } from '${importPath}/movement/Movement.js';\n` + `import { Leg, Edge, RotationDirection, RotationDegree, TransitionDirection, MovementCharacter } from '${importPath}/enums/movement-enums.js';\n\n` + `export const movements: Movement[] = `; return `${imports} ${formatedData};\n`; } } exports.UploaderMovements = UploaderMovements;