Skip to content

Commit

Permalink
[FEAT] ~minor ✨ Añado escritura en fichero del output
Browse files Browse the repository at this point in the history
[Link a la tarea ](https://apps.edicomgroup.com/JDev/#idstask|)
/label ~"status::needs triage" ~type::feat ~minor
/assign me
  • Loading branch information
jsan committed Feb 24, 2022
1 parent 1e58a88 commit cc17fc1
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 15 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,4 @@ coverage
.github

/temp
*/output
26 changes: 24 additions & 2 deletions practice_round/src/main.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,28 @@
import path from 'path';
import { readDataset } from '../utils/dataset-reader.js';
import { writeSubmission } from '../utils/subsmission_writer.js';
import { Submission } from '../utils/subsmission_writer';
import { Dataset, Ingredient } from '../models/models';

readDataset(path.resolve(process.cwd(), './practice_round/datasets/a_an_example.in.txt')).then(
(dataset) => console.log(dataset),
export const datasetsPath = './practice_round/datasets/';
export const outputFilesPath = './practice_round/output/';

const datasets = {
a: 'a_an_example.in.txt',
b: 'b_basic.in.txt',
c: 'c_coarse.in.txt',
d: 'd_difficult.in.txt',
e: 'e_elaborate.in.txt',
};

readDataset(path.resolve(process.cwd(), `${datasetsPath}${datasets.a}`)).then(
(dataset: Dataset) => {
const submission: Submission = {
name: dataset.name,
total_ingredients: dataset.clients[0].likedIngredients.length,
ingredients: dataset.clients[0].likedIngredients,
};
// Escribimos output en fichero
writeSubmission(path.resolve(process.cwd(), outputFilesPath), submission);
},
);
14 changes: 1 addition & 13 deletions practice_round/utils/dataset-reader.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { once } from 'events';

export function readDataset(inputFilePath: string): Promise<Dataset> {
const dataset: Dataset = {
name: inputFilePath.split('/').pop() || '',
name: inputFilePath.split('/').pop().split('.')[0] || '',
totalClients: 0,
clients: [],
};
Expand All @@ -31,22 +31,10 @@ export function readDataset(inputFilePath: string): Promise<Dataset> {
});

return once(rl, 'close').then(() => dataset);

//return parseDataset(name, fileContent);
}

const parseIngredientsLint = (line: string): Ingredient[] =>
line
.split(' ')
.slice(1)
.map((ingredient) => ({ name: ingredient }));

// export function parseDataset(name: string, fileContent: string): Dataset {
// const [teamsLine, ...pizzaLines] = trimLines(fileContent.split('\n'));
// ingredientMap.clear();
// return {
// name,
// teams: parseTeams(teamsLine),
// pizzas: pizzaLines.map(parsePizza),
// };
//}
27 changes: 27 additions & 0 deletions practice_round/utils/subsmission_writer.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import { Ingredient } from '../models/models';
import * as fs from 'fs';

export type Submission = {
name: string;
total_ingredients: number;
ingredients: Ingredient[];
};

export async function writeSubmission(filePath: string, submission: Submission) {
try {
fs.mkdirSync(filePath, { recursive: true });
} catch {
// Submission directory already exists
}
const fileName = `${submission.name}-${getCurrentTime()}.out`;
const lines = [
`${submission.total_ingredients}`,
...submission.ingredients.map((ingredient) => ingredient.name),
];
fs.writeFileSync(`${filePath}/${fileName}`, lines.join(' '));
}

function getCurrentTime(): string {
const today = new Date();
return today.toTimeString().slice(0, 8);
}

0 comments on commit cc17fc1

Please sign in to comment.