2014-05-08 19:59:47 +02:00
#!/usr/bin/js
2014-04-26 20:39:24 +02:00
/*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 )
2014-04-28 15:07:47 +02:00
. replace ( /%%LICENSE%%/ , 'Copyright 2014 Lucas et Geoffrey' ) ;
2014-04-26 20:39:24 +02:00
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 {
2014-05-08 19:59:47 +02:00
console . error ( 'Impossible d\'ouvrir le fichier modèle' ) ;
2014-04-26 20:39:24 +02:00
}
} ) ;
}
// 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 , '' )
2014-04-28 15:07:47 +02:00
. replace ( /##Le dépôt[ \wæâ€êÿûîœôäßëðüïö©éÉèÈçÇàÀ\.\-\'\,\(\)\n]+?##/g , '#' )
2014-04-26 20:39:24 +02:00
. replace ( /#(#+)/g , '$1' )
. replace ( /^#[ \wæâ€êÿûîœôäßëðüïö©éÉèÈçÇàÀ\.\-\']+\n/g , '' )
. replace ( /\n#[ \wæâ€êÿûîœôäßëðüïö©éÉèÈçÇàÀ\.\-\']+\n/g , '' )
. 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 , '' )
2014-04-28 15:07:47 +02:00
. replace ( /\n#[ \wæâ€êÿûîœôäßëðüïö©éÉèÈçÇàÀ\.\-\']+\n/g , '' )
. replace ( /-+\n\*Copyright[ \wæâ€êÿûîœôäßëðüïö©éÉèÈçÇàÀ\.\-\']+\*/g , '' ) )
2014-05-03 20:04:27 +02:00
. replace ( /<strong>([DAC])<\/strong>/g , '<span class="todoEl todo_$1">$1</span>' ) + '\n<img src="chart.png" alt="Fonctionnement du programme" />'
2014-04-26 20:39:24 +02:00
} , {
titre : 'Code source' ,
lien : 'https://github.com/GeoffreyFrogeye/PILG'
} ) ;
genererPages ( liste ) ;
} ) ;
} ) ;
}
2014-05-08 19:59:47 +02:00
executer ( ) ;