import os articles_path = 'articles/' generate_path = 'pages/' atom_content = "" index_content = "

Articles

\n" inul = False # Vérifie si on est dans un bloc de code if line.startswith("```"): if inpre: content['content'] += "\n" content['content'] += "
" + line.lstrip("```")
            inpre = True

        # Vérifie si on est dans une citation
        elif line.startswith(">"):
            if inquote:
                content['content'] += parseline(line.lstrip("> "))
            else: 
                content['content'] += "
" + parseline(line.lstrip("> ")) inquote = True # Vérifie si on est dans un listing elif line.startswith("-"): if inul: content['content'] += "\n" content['content'] += "
  • " + parseline(line.lstrip("- ")) else: content['content'] += "
    • " + parseline(line.lstrip("- ")) inul = True # Vérifie si on est dans un titre elif line.startswith("###"): content['content'] += "

      " + parseline(line.lstrip("# ")) + "

      \n" elif line.startswith("##"): content['content'] += "

      " + parseline(line.lstrip("# ")) + "

      \n" elif line.startswith("#"): content['title'] += parseline(line.lstrip("# ")) # Sinon, on est dans un paragraphe elif line != " " and line != "": content['content'] += "

      " + parseline(line) + "

      \n" # Vérification que chaque balise est bien fermée if inquote: content['content'] += "
  • \n" inquote = False if inul: content['content'] += "\n" inul = False if inpre: content['content'] += "
    \n" inpre = False return content def parseline(line): # Vérifie si on a des italiques ou gras while '*' in line: line = line.replace('*', '', 1) line = line.replace('*', '', 1) while '**' in line: line = line.replace('**', '', 1) line = line.replace('**', '', 1) # Vérifie si on a des images while '![' in line and ']' in line: title = line.split(']')[0].split('[')[1] link = line.split(']')[1].split('(')[1].split(')')[0] line = line.replace('![' + title + '](' + link + ')', '' + title + '') # Vérifie si on a des liens while '[' in line and ']' in line: title = line.split(']')[0].split('[')[1] link = line.split(']')[1].split('(')[1].split(')')[0] line = line.replace('[' + title + '](' + link + ')', '' + title + '') return line def md2html(filename): content = parsemd(filename) # Contenu parsé de notre fichier markdown template = open('page_template.html', 'r').read() # Création du fichier html & ajout du contenu output = open('../' + generate_path + filename.split('.')[0] + '.html', 'w') output.write(template.replace("$CONTENT", content['content']).replace("$TITLE", content['title']). replace("$DATE", content['date']).replace("$DESC", content['description'])) output.close() # Génération du post Atom et de l'index generatePageXML(content) global index_content index_content += '
  • ' + content['title'] + '
  • \n' """ Génère le post Atom""" def generatePageXML(data): global atom_content template = open('atom_post_template.xml', 'r').read() atom_content += template.replace("$TITLE", data['title']).replace("$DATE", data['date']).replace("$CONTENT", data['content']).replace("$URL", "https://blog.arka.rocks/" + data['filename']) """ Génère le fichier Atom""" def generateAtom(): template = open('atom_template.xml', 'r').read() output = open('../atom.xml', 'w') output.write(template.replace("$CONTENT", atom_content)) output.close() """ Génère l'index""" def updateIndex(): template = open('index_template.html', 'r').read() output = open('../index.html', 'w') output.write(template.replace("$CONTENT", index_content + '')) output.close() if __name__=="__main__": if not os.path.exists('../' + generate_path): os.mkdir('../' + generate_path) else: # Régénation du blog for file in os.listdir('../' + generate_path): os.remove('../' + generate_path + file) os.remove('../atom.xml') os.remove('../index.html') for file in os.listdir('../' + articles_path): print("Génération en cours du fichier: " + file) md2html(file) print("Génération du fichier RSS / Atom") generateAtom() print("Génération de l'index") updateIndex()