Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions src/functions/DocumentationGenerator.js
Original file line number Diff line number Diff line change
@@ -1,20 +1,21 @@
const FileParsing = require('./FileParsing');
const OutputTitle = require('./OutputTitle');
const OutputTitlePDF = require('./OutputTitlePDF');
const OutputNameFilePDF = require('./OutputNameFilePDF');
const WritePDF = require('./WritePDF');
const OutputTitleMarkdown = require('./OutputTitleMarkdown');
const OutputNameFileMarkdown = require('./OutputNameFileMarkdown');
const WriteMarkdown = require('./WriteMarkdown');

/* Doc:
explication du generateur de documentation
qui est vraiment super genial
Function called by DocumentationGenerator component to generate output file (PDF and/or MD) with the help of
WritePDF and WriteMarkdown
*/
const DocumentationGenerator = async (formData, rows) => {
const { projectName, formats } = formData;
const filesParsed = await FileParsing(formData, rows);

if (formats.pdf) {
const outputTitle = OutputTitle(projectName);
const outputTitle = OutputTitlePDF(projectName);
const outputNameFilePDF = OutputNameFilePDF(projectName);

WritePDF(outputTitle, outputNameFilePDF, filesParsed);
Expand Down
2 changes: 2 additions & 0 deletions src/functions/FileParsing.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
// Doc: Used to parse files and only keep the ones with desired extensions

const FileParsing = async (formData, rows) => {
if (!formData || !formData.files || !Array.isArray(rows)) {
return [];
Expand Down
2 changes: 1 addition & 1 deletion src/functions/FilesArray.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
const ToArrayExtensions = require("./ToArrayExtensions");
const FilterFiles = require("./FilterFiles");

// Doc: fonction permettant l'affichage des fichiers pris en charge par la generation de la documentation
// Doc: Use to display the files selected by FileSelector or FolderSelector. It updates based on the extensions input.
async function FilesArray (files, extensionsName) {
if (!extensionsName || typeof extensionsName !== "string" || extensionsName.trim().length === 0) {
return [];
Expand Down
2 changes: 1 addition & 1 deletion src/functions/FilesArraySelection.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//doc: fonction qui retourne un dictionnaire avec le nom du fichier et l'extension
//doc: returns dictionnary with fileName and extensions

const FilesArraySelection = (files) => {
const rows = files.map((fileEntry) => {
Expand Down
2 changes: 1 addition & 1 deletion src/functions/FilesSelector.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Doc: fonction permettant de sélectionner les différents fichiers
// Doc: Used to select the files

const FilesSelector = async () => {
const pickerOptions = {
Expand Down
10 changes: 9 additions & 1 deletion src/functions/FilterFiles.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,12 @@
// doc: Cette fonction filre les fichiers selon les extensions choisis et renvoie le tableau des fichiers filtres
// doc: Can filter files based on the selected extensions and returns the array of filtered files.









const FilterFiles = async (files, extensions) => {
let filesArray = [];
Expand Down
2 changes: 1 addition & 1 deletion src/functions/FolderSelector.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
const GetAllFiles = require("./GetAllFiles");

// doc: Fonction pour sélectionner un dossier
// doc: Used to select a folder
const FolderSelector = async () => {
try {
const directoryHandle = await window.showDirectoryPicker();
Expand Down
2 changes: 1 addition & 1 deletion src/functions/GetAllFiles.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Doc: Permet d'attraper récursivement les fichiers dans les différents dossiers et sous-dossier
// Doc: Catch files recursively in subdirectories

const GetAllFiles = async (directoryHandle, files) => {
for await (const entry of directoryHandle.values()) {
Expand Down
2 changes: 1 addition & 1 deletion src/functions/OutputNameFileMarkdown.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// doc: ajoute le .md a la fin du project Name
// doc: Add .md at the end of projectName

const OutputNameFileMarkdown = (projectName) => {
const extension = ".md";
Expand Down
2 changes: 1 addition & 1 deletion src/functions/OutputNameFilePDF.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// doc: ajoute le .pdf a la fin du project Name
// doc: Add .pdf at the end of projectName

const OutputNameFilePDF = (projectName) => {
const extension = ".pdf";
Expand Down
2 changes: 1 addition & 1 deletion src/functions/OutputTitleMarkdown.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Doc: Permet de rajouter la syntaxe Markdown
// Doc: Add Markdown syntax

const OutputTitleMarkdown = (outputName) => {
const h1 = "# ";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
//doc: ajoute "Documentation de " au projectName
//doc: Add PDF syntax

const OutputTitle = (projectName) => {
const OutputTitlePDF = (projectName) => {
const documentation = "Documentation de";
const outputTitle = documentation.concat(" ", projectName);

return outputTitle;
}

module.exports = OutputTitle;
module.exports = OutputTitlePDF;
11 changes: 1 addition & 10 deletions src/functions/ToArrayExtensions.js
Original file line number Diff line number Diff line change
@@ -1,18 +1,9 @@
// Doc: Transforme le string extensions en array
// Doc: Transform extensions string into an array

const ToArrayExtensions = (extensionsName) => {
const extensions = extensionsName.split(",");

return extensions;
};

/* Doc: Plusieurs fonctions
dans un seul et meme fichier */

async function Test () {

};

//Doc: troisieme test

module.exports = ToArrayExtensions;
1 change: 1 addition & 0 deletions src/functions/WriteMarkdown.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
const { saveAs } = require('file-saver');

// Doc: Use file-saver to generate the Markdown file
const WriteMarkdown = (outputTitleMarkdown, outputNameFileMarkdown, filesParsed) => {
const star = "*";
const tabStar = " *";
Expand Down
6 changes: 4 additions & 2 deletions src/functions/WritePDF.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
const WritePDF = (outputTitle, outputNameFilePDF, filesParsed) => {
//Doc: Use jspdf to generate the final pdf file

const WritePDF = (outputTitlePDF, outputNameFilePDF, filesParsed) => {
const { jsPDF } = require("jspdf");
const doc = new jsPDF();
const pageHeight = 280;
Expand All @@ -8,7 +10,7 @@ const WritePDF = (outputTitle, outputNameFilePDF, filesParsed) => {

doc.setFontSize(22);
doc.setFont("Helvetica", "Bold");
doc.text(outputTitle, 10, 20);
doc.text(outputTitlePDF, 10, 20);
doc.setFontSize(16);

for (let i = 0; i < filesParsed.length; i++) {
Expand Down
1 change: 0 additions & 1 deletion src/pages/components/Fichier test.c

This file was deleted.

13 changes: 5 additions & 8 deletions src/pages/index.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import TextBoxExtensions from "./components/TextBoxExtensions.jsx";
import CheckBoxOutputFormat from "./components/CheckBoxOutputFormat.jsx";
import ButtonGenerateDocumentation from "./components/ButtonGenerateDocumentation.jsx";
import TableDetectedFiles from "./components/TableDetectedFiles.jsx";
import HelpButton from "./components/HelpButton.jsx";
import ButtonHelp from "./components/ButtonHelp.jsx";

const MainFrame = () => {
const [rows, setRows] = useState([]);
Expand All @@ -35,32 +35,29 @@ const MainFrame = () => {
<Typography variant="h2" gutterBottom>
Générateur de documentation
</Typography>
<Typography variant="body1" gutterBottom>
Outil permettant la génération automatique de documentation en fonction des commentaires et des liens entre les différentes méthodes
</Typography>
</Box>
<Box sx={{ display: 'flex', flexDirection: 'row', width: '100%', maxWidth: '840px' }}>
<Box component="form" sx={{ display: 'flex', flexDirection: 'column', width: '100%', maxWidth: '410px', marginTop: '20px', marginRight: '10px' }}>
<Box sx={{ display: 'flex', gap: '16px', marginBottom: '16px' }}>
<HelpButton title={"Sélection du dossier ou des fichiers"} text={"Sélectionnez un dossier ou des fichiers à analyser."} />
<ButtonHelp title={"Sélection du dossier ou des fichiers"} text={"Sélectionnez un dossier ou des fichiers à analyser."} />
<ButtonFolderSelector setRows={setRows} formData={formData} setFormData={setFormData}/>
<ButtonFilesSelector setRows={setRows} formData={formData} setFormData={setFormData}/>
</Box>

<Box sx={{ display: 'flex', flexDirection: 'column', gap: '16px', marginBottom: '16px' }}>
<Box sx={{ display: 'flex', alignItems: 'center', gap: '8px' }}>
<HelpButton title={"Nom du projet"} text={"Entrez le nom du projet."} />
<ButtonHelp title={"Nom du projet"} text={"Entrez le nom du projet."} />
<TextBoxProjectName formData={formData} setFormData={setFormData} disabled='false'/>
</Box>

<Box sx={{ display: 'flex', alignItems: 'center', gap: '8px' }}>
<HelpButton title={"Extensions"} text={"Spécifiez les extensions des fichiers à analyser sous le format (ex: js,py,etc...)."} />
<ButtonHelp title={"Extensions"} text={"Spécifiez les extensions des fichiers à analyser sous le format js,py,etc.."} />
<TextBoxExtensions setRows={setRows} formData={formData} setFormData={setFormData}/>
</Box>
</Box>

<Box sx={{ display: 'flex', alignItems: 'center', gap: '8px', marginBottom: '16px' }}>
<HelpButton title={"Format de sortie"} text={"Sélectionnez le format de sortie de la documentation pdf ou markdown."} />
<ButtonHelp title={"Format de sortie"} text={"Sélectionnez le format de sortie de la documentation pdf et/ou markdown."} />
<CheckBoxOutputFormat formData={formData} setFormData={setFormData}/>
</Box>

Expand Down
12 changes: 6 additions & 6 deletions src/tests/DocumentationGenerator.test.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
// tests/DocumentationGenerator.test.js
const DocumentationGenerator = require('../functions/DocumentationGenerator');
const FileParsing = require('../functions/FileParsing');
const OutputTitle = require('../functions/OutputTitle');
const OutputTitlePDF = require('../functions/OutputTitlePDF');
const OutputNameFilePDF = require('../functions/OutputNameFilePDF');
const WritePDF = require('../functions/WritePDF');
const OutputTitleMarkdown = require('../functions/OutputTitleMarkdown');
const OutputNameFileMarkdown = require('../functions/OutputNameFileMarkdown');
const WriteMarkdown = require('../functions/WriteMarkdown');

jest.mock('../functions/FileParsing', () => jest.fn());
jest.mock('../functions/OutputTitle', () => jest.fn());
jest.mock('../functions/OutputTitlePDF', () => jest.fn());
jest.mock('../functions/OutputNameFilePDF', () => jest.fn());
jest.mock('../functions/WritePDF', () => jest.fn());
jest.mock('../functions/OutputTitleMarkdown', () => jest.fn());
Expand All @@ -26,13 +26,13 @@ describe('DocumentationGenerator', () => {
const filesParsed = [{ name: 'file1', functions: [] }];

FileParsing.mockResolvedValue(filesParsed);
OutputTitle.mockReturnValue('Test Project Documentation');
OutputTitlePDF.mockReturnValue('Test Project Documentation');
OutputNameFilePDF.mockReturnValue('TestProject.pdf');

await DocumentationGenerator(formData, rows);

expect(FileParsing).toHaveBeenCalledWith(formData, rows);
expect(OutputTitle).toHaveBeenCalledWith('TestProject');
expect(OutputTitlePDF).toHaveBeenCalledWith('TestProject');
expect(OutputNameFilePDF).toHaveBeenCalledWith('TestProject');
expect(WritePDF).toHaveBeenCalledWith('Test Project Documentation', 'TestProject.pdf', filesParsed);
});
Expand Down Expand Up @@ -66,15 +66,15 @@ describe('DocumentationGenerator', () => {
const filesParsed = [{ name: 'file1', functions: [] }];

FileParsing.mockResolvedValue(filesParsed);
OutputTitle.mockReturnValue('Test Project Documentation');
OutputTitlePDF.mockReturnValue('Test Project Documentation');
OutputNameFilePDF.mockReturnValue('TestProject.pdf');
OutputTitleMarkdown.mockReturnValue('Test Project Documentation');
OutputNameFileMarkdown.mockReturnValue('TestProject.md');

await DocumentationGenerator(formData, rows);

expect(FileParsing).toHaveBeenCalledWith(formData, rows);
expect(OutputTitle).toHaveBeenCalledWith('TestProject');
expect(OutputTitlePDF).toHaveBeenCalledWith('TestProject');
expect(OutputNameFilePDF).toHaveBeenCalledWith('TestProject');
expect(WritePDF).toHaveBeenCalledWith('Test Project Documentation', 'TestProject.pdf', filesParsed);
expect(OutputTitleMarkdown).toHaveBeenCalledWith('TestProject');
Expand Down
Original file line number Diff line number Diff line change
@@ -1,31 +1,31 @@
const OutputTitle = require('../functions/OutputTitle');
const OutputTitlePDF = require('../functions/OutputTitlePDF');

describe('OutputTitle', () => {
describe('OutputTitlePDF', () => {
it('should return the correct title for a given project name', () => {
const projectName = 'MonProjet';
const expectedTitle = 'Documentation de MonProjet';
const result = OutputTitle(projectName);
const result = OutputTitlePDF(projectName);
expect(result).toBe(expectedTitle);
});

it('should handle empty project name', () => {
const projectName = '';
const expectedTitle = 'Documentation de ';
const result = OutputTitle(projectName);
const result = OutputTitlePDF(projectName);
expect(result).toBe(expectedTitle);
});

it('should handle project name with spaces', () => {
const projectName = 'Projet Test';
const expectedTitle = 'Documentation de Projet Test';
const result = OutputTitle(projectName);
const result = OutputTitlePDF(projectName);
expect(result).toBe(expectedTitle);
});

it('should handle project name with special characters', () => {
const projectName = 'Projet@123';
const expectedTitle = 'Documentation de Projet@123';
const result = OutputTitle(projectName);
const result = OutputTitlePDF(projectName);
expect(result).toBe(expectedTitle);
});
});