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:
Geoffrey Frogeye 2014-04-26 20:39:24 +02:00
parent f5a82baaf6
commit 166f0e9819
20 changed files with 644 additions and 531 deletions

114
generator/generator.js Normal file
View 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
View 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>