Ajout d'un site web
Pour la présentation du 5/05/14 * Générateur * En nodejs * Se base sur les fichiers .md de la branche master sur GitHub * Sépare À propos et Compilation dans README.md * Conforme GitHub Pages
This commit is contained in:
parent
f5a82baaf6
commit
166f0e9819
20 changed files with 644 additions and 531 deletions
114
generator/generator.js
Normal file
114
generator/generator.js
Normal file
|
@ -0,0 +1,114 @@
|
|||
#!/bin/env node
|
||||
|
||||
/*jslint node: true, forin: true, indent: 4 */
|
||||
|
||||
"use strict";
|
||||
|
||||
// Dépendances
|
||||
var https = require('https'),
|
||||
fs = require('fs'),
|
||||
markdown = require('markdown').markdown;
|
||||
|
||||
// Variables
|
||||
var liste = [];
|
||||
|
||||
// Fonctions
|
||||
function recupererFichier(nomFichier, retour) {
|
||||
var contenu = '';
|
||||
console.log('Téléchargement de ' + nomFichier);
|
||||
https.get('https://raw.githubusercontent.com/GeoffreyFrogeye/PILG/master/' + nomFichier, function (res) {
|
||||
console.log('Réponse pour ' + nomFichier + ' obtenue (' + res.statusCode + ')');
|
||||
res.on('data', function (morceau) {
|
||||
contenu += morceau;
|
||||
}).on('end', function () {
|
||||
console.log('Fichier ' + nomFichier + ' téléchargé');
|
||||
retour(contenu);
|
||||
});
|
||||
}).on('error', function (e) {
|
||||
console.error('Impossible de récupérer le fichier ' + nomFichier + ' car ' + e.message);
|
||||
});
|
||||
}
|
||||
|
||||
function genererPages(liste) {
|
||||
var nav = '',
|
||||
element;
|
||||
for (element in liste) {
|
||||
if (liste[element].titre === 'À propos') {
|
||||
liste[element].titreCourt = 'index';
|
||||
} else {
|
||||
liste[element].titreCourt = liste[element].titre
|
||||
.replace(/À/, 'A')
|
||||
.replace(/ /, '_')
|
||||
.replace(/\W/g, '');
|
||||
}
|
||||
if (!liste[element].lien) {
|
||||
liste[element].lien = liste[element].titreCourt + '.html';
|
||||
}
|
||||
nav += '<li><a href="' + liste[element].lien + '">' + liste[element].titre + '</a></li>\n';
|
||||
}
|
||||
fs.readFile('model.html', function (err, contenuModele) {
|
||||
if (!err) {
|
||||
liste.forEach(function (element) {
|
||||
var contenuHTML;
|
||||
if (element.contenu) {
|
||||
contenuHTML = contenuModele
|
||||
.toString('utf-8')
|
||||
.replace(/%%TITRE%%/g, element.titre)
|
||||
.replace(/%%NAV%%/, nav)
|
||||
.replace(/%%CONTENU%%/, element.contenu)
|
||||
.replace(/%%LICENSE%%/, 'Copyright 2014 Geoffrey et Lucas');
|
||||
fs.writeFile('../' + element.titreCourt + '.html', contenuHTML, function (err) {
|
||||
if (!err) {
|
||||
console.log('Écrit ' + element.titreCourt + '.html');
|
||||
} else {
|
||||
console.error('Impossible d\'écrire' + element.titreCourt + '.html', err);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
});
|
||||
} else {
|
||||
console.err('Impossible d\'ouvrir le fichier modèle');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Execution
|
||||
function executer() {
|
||||
recupererFichier('README.md', function (contenu) {
|
||||
var decoupe = contenu
|
||||
.toString('utf-8')
|
||||
.replace(/##Compilation\n/, '%%SPLIT%%')
|
||||
.replace(/Nos noms complets et le nom du lycée sont masqués pour des raisons d'intimité\. Les personnes devant nous reconnaître nous reconnaîtront\./g, '')
|
||||
.replace(/##De ce dépôt[ \wæâ€êÿûîœôäßëðüïö©éÉèÈçÇàÀ\.\-\'\,\(\)\n]+?##/g, '#')
|
||||
.replace(/#(#+)/g, '$1')
|
||||
.replace(/^#[ \wæâ€êÿûîœôäßëðüïö©éÉèÈçÇàÀ\.\-\']+\n/g, '')
|
||||
.replace(/\n#[ \wæâ€êÿûîœôäßëðüïö©éÉèÈçÇàÀ\.\-\']+\n/g, '')
|
||||
.replace(/(De ce)|(Du)/g, 'Le')
|
||||
.replace(/-+\n\*Copyright[ \wæâ€êÿûîœôäßëðüïö©éÉèÈçÇàÀ\.\-\']+\*/g, '')
|
||||
.split('%%SPLIT%%');
|
||||
liste.push({
|
||||
titre: 'À propos',
|
||||
contenu: markdown.toHTML(decoupe[0]) + '\n<img src="screen.png" alt="Capture d\'écran du code" />'
|
||||
}, {
|
||||
titre: 'Compilation',
|
||||
contenu: markdown.toHTML(decoupe[1])
|
||||
});
|
||||
recupererFichier('TODO.md', function (contenu) {
|
||||
liste.push({
|
||||
titre: "Avancement",
|
||||
contenu: markdown.toHTML(contenu
|
||||
.toString('utf-8')
|
||||
.replace(/^#[ \wæâ€êÿûîœôäßëðüïö©éÉèÈçÇàÀ\.\-\']+\n/g, '')
|
||||
.replace(/\n#[ \wæâ€êÿûîœôäßëðüïö©éÉèÈçÇàÀ\.\-\']+\n/g, ''))
|
||||
.replace(/<strong>([DAC])<\/strong>/g, '<span class="todoEl todo_$1">$1</span>')
|
||||
}, {
|
||||
titre: 'Code source',
|
||||
lien: 'https://github.com/GeoffreyFrogeye/PILG'
|
||||
});
|
||||
genererPages(liste);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
executer();
|
29
generator/model.html
Normal file
29
generator/model.html
Normal file
|
@ -0,0 +1,29 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<title>%%TITRE%%</title>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
||||
<link rel="stylesheet" href="css/contenu.css" />
|
||||
<link rel="stylesheet" href="css/miseEnPage.css" />
|
||||
<!--[if lt IE 9]><script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
|
||||
</head>
|
||||
<body>
|
||||
<nav>
|
||||
<ul>
|
||||
%%NAV%%
|
||||
</ul>
|
||||
</nav>
|
||||
<div id="wrapper">
|
||||
<section id="main">
|
||||
<article>
|
||||
<h1>%%TITRE%%</h1>
|
||||
%%CONTENU%%
|
||||
</article>
|
||||
</section>
|
||||
</div>
|
||||
<footer>
|
||||
<hr/>
|
||||
%%LICENSE%%
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
Reference in a new issue