PML – Changelog

Évolutions prévues :

* pmlimport :

– Plus de paramètres en ligne de commande afin de pouvoir réduire drastiquement les balises inutiles (notamment pour les ePub issus de documents Word ou LO).

– Import direct depuis un document xml ou opendoc (.odt ou .ods).

* export (pml) :

— Fonctionnalité de vérification/export de code partiel (ex. pour vérif. messages dans un futur forum).

* pymyadmin :

– Nouveau, pour remplacer phpmyadmin (développement en cours, prévu pour version 0.9), avec quelques fonctionnalités spécifiques.

* htmlepub :

– Intégration de polices de caractères dans l’ePub, entières ou limitées aux caractères utilisés.

 

0.8.4 – (à venir)

 

* export (pml et pmlexport) :

– Vérification des mots réservés Python pour éliminer tout conflit avec attributs de balises ou métabalises.

– Prise en compte des constantes et littéraux simples renvoyés par les routines Python (hors définitions de constantes et littéraux).

– Dans les inclusions/exclusions, l’opérateur '-' ne fonctionnait pas correctement. Corrigé.

– Des métabalises redéfinissant des balises avec "value" ajoutaient un blanc à la fin de la valeur lors de l’export en HTML. Corrigé.

 

* export (pml) :

— Prise en compte du sens de l’écriture selon la langue (e.g. arabe, hébreu…) pour l’affichage.

 

0.8.3 – 7 décembre 2017

 

* export (pml et pmlexport) :

– Des constantes non résolues pouvaient s’afficher comme balises mises en commentaires. Forcées à valeur vide.

– Les constantes ne sont plus traitées dans l’ordre alphabétique de leur nom mais dans l’ordre, plus logique, de leur définition dans le document.

– Les liens locaux (commençant par '#') ne sont plus éliminés en cas de non correspondance – mais message d’erreur toujours émis.

– Nouveau : possibilité d’une liste de valeurs dans <incl ou <excl avec = et ≃ pour validation d’une valeur parmi plusieurs en mode 'ou'.

 

* pml.py :

– Ajout d’un système de cache pour ne pas reconstruire systématiquement les pages statiques.

 

* fonctions internes :

– trace.log et trace.val ne montraient pas l’arborescence des appels de fonctions (cause : résidus de l’implémentation initiale plus complexe). Corrigé.

– Ajout d'une fonction PML pour générer du code PML dans une routine Python (déplace les erreurs dans la syntaxe Python, donc plus vite décelées et identifiées).

 

0.8.2 – 27 novembre 2017

 

* export (pml et pmlexport) :

– Les chaînes entre triples apostrophes (ex. dans un <script …>) n’étaient pas correctement préservées si sur plusieurs lignes. Corrigé.

– Ajout d’une balise <else …> pour valider du code correspondant au cas où aucun des <incl …> précédents n’a été validé.

– Les comparaisons de constantes dans <incl… et <excl… acceptent à présent l’opérateur '~=' ou '≃', qui considère la condition comme vraie si la valeur à droite correspond au début de la valeur à gauche (utile notamment pour vérifier un code langue, 'en-GB' devant être valide si on cherche seulement 'en').

 

* pml :

– Ajout d’une balise <http …> pour définir des directives à destination d’Apache (ou autre serveur HTTP).

– En cas de paramètre répété (ex. lang=fr&lang=en), il pouvait y avoir plantage, les diverses valeurs étant par défaut mises dans une liste au sein de la constante générée. Désormais, chaque valeur est stockée dans une constante distincte, la première ayant le nom normal et les suivantes héritant d’un numéro de séquence (lang, lang1, lang2…).

 

* fonctions internes :

– trace.log accepte désormais une liste de paramètres de formats quelconques, et non plus un unique paramètre au format chaîne de caractères.

– Réécriture partielle de la gestion des <incl… et <excl… pour un fonctionnement plus fiable.

 

0.8.1 – 15 novembre 2017

 

* général :

– Ajout dans les packs d’un utilitaire de tri naturel indépendant de PML.

 

* export (pml et pmlexport) :

– Définir une constante vide ('§%xyz <>') ne modifie plus sa valeur si elle existe déjà (cas des paramètres passés à une page Internet). Cette astuce permet d’avoir tous les paramètres (par exemple d’un bordereau de saisie) existants même si non renvoyés par le navigateur.

– Un texte associé à une balise ne devant pas en recevoir (comme <input …>) sera traité comme l’attribut 'value', qui n’a donc pas besoin d’être explicite et accepte du coup des textes comportant des espaces.

– Il y avait une différence de traitement entre les métabalises multilignes définies directement dans le document et présentes dans un .pss, occasionnant une mauvaise prise en compte dans ce derneir cas. Corrigé.

– La définition d’une constante avec routine Python causait un plantage si le nombre de balises fermantes n’était pas bon. Corrigé (à présent, correction et message d’erreur comme pour le reste).

– Un import contenant des notes et/ou une table des matières n’avait pas celles-ci générées s’il était indenté. Corrigé.

– Un document contenant des notes avec point de rupture dans la partie indentée n’avait pas celles-ci générées. Corrigé par la possibilité de mettre le bloc dans une balise '<section …>'.

 

0.8.0 – 6 novembre 2017

 

* général :

– Les messages d’information ou d’anomalie donnent maintenant le nom du fichier source concerné (utile en navigation Internet).

– L’outil est scindé en 3 packs pour le téléchargement : base (évolution du contenu de la version 0.6), web (pml), plus la documentation, désormais en ePub.

– Outils, téléchargement et exemples (le site lui-même) sont désormais accessibles via http://www.pml.ovh (en pratique un alias de http://www.blary.eu)

 

* pmlimport :

– Les balises d’entête, jamais indentées, n’étaient pas toujours en début de ligne, causant une erreur structurelle. Corrigé.

– Des espaces dans des valeurs d’attributs d’entête n’étaient pas échappés. Corrigé.

– Le nettoyage de balises autonomes amenait parfois à remplacer un blanc échappé '\ ' par une fermeture échappée '\>', donc caractère texte erroné. Corrigé.

– Si une balise autonome non autofermante était suivie directement de texte (en général <br>), celui-ci lui était incorporé. Corrigé.

 

* export (pml et pmlexport) :

– L’emplacement de 'modules' est maintenant explicitement défini par défaut (fonctions/modules/).

– Les espaces dans les littéraux sont automatiquement préservés pour éviter des erreurs en cas d’utilisation comme paramètres (ex. nom d’un bouton)

– Les métabalises conditionnelles peuvent à présent être utilisées à l’intérieur d’un bloc indenté.

– Prise en compte de balises particulières exigeant <xxx> ET </xxx> même sans aucun contenu (notamment <script …>)

– Ajout de la constante <pmlroot> contenant le chemin qui mène à pml.py.

– Dans une métabalise, les paramètres étaient considérés comme uniques. Il est maintenant possible de spécifier plusieurs fois le même.

– En mode Internet, prise en compte du fait que la langue du visiteur n’est pas toujours connue dans les paramètres HTTP.

– Il y avait plantage si aucun titre de table des matières n’était fourni dans la définition de celle-ci. Une valeur par défaut a été définie.

– Les classes pour les entrées de table des matières n’étaient pas prises en compte. Corrigé.

– Avec quelques limitations, les imports peuvent à présent être utilisés à l’intérieur d’un bloc indenté.

– Correction de divers bogues mineurs.

 

* pml :

– Ajout d’un fichier (facultatif) pml.alias pour utiliser des chemins raccourcis dans les requêtes URL.

 

0.7.0 – 26 septembre 2017

 

* général :

– Nouveau module pml.py permettant l’usage de fichiers .pml nativement dans les requêtes URL.

– Le paramètre 'lang' dans 'pml.cfg' est à présent facultatif. Par défaut, c’est la langue système qui sera utilisée.

 

* pml :

– Ajout du module 'fonctions/trace.py' afin d’afficher les erreurs dans le navigateur en évitant des 'Internal error 500'.

– Ajout d’un répertoire 'log' pour recevoir les messages d’info et erreurs avec pml.py autrement affichés dans le terminal avec pmlexport.py.

 

* export (pml et pmlexport) :

– Les suites de lignes ('\' en fin) et espaces échappés n’étaient pas correctement pris en compte dans les métabalises directes du document. Corrigé.

– Régression en 6.0 sur les paramètres conditionnels, une valeur vide n’ôtait plus le paramètre. Corrigé.

– Un paramètre de littéral lui-même balise ou en contenant une provoquait une boucle. Corrigé.

 

0.6.1 – 17 septembre 2017

 

* pmlimport :

– La fonction standard d’analyse du code HTML ne voit pas les balises autonomes si le / final manque (en principe non obligatoire, mais exigé par certains outils « stricts » et recommandation W3C), cause d’imbrications anormales. Corrigé par forçage pour les balises concernées.

– Plantage si ligne résultante ne contient que des tabulations. Corrigé.

– Les balises autonomes comme 'input', 'option' ne donnent plus lieu à création de métabalises (non pertinent).

– Les noms de métabalises générées commencent maintenant systématiquement par le nom de la balise, amélioration de la lisibilité.

– Ajout d’une option « -indent » forçant les sauts de ligne à toute ouverture de balise autre que simple formatage de texte, améliore la lisibilité pour les pages mal/non structurées.

– Les balises HTML sont systématiquement converties en minuscules (recommandation W3C).

– Les attributs personnalisés 'data-…' ne sont plus pris en compte pour les métabalises.

 

* pmlexport :

– Régression en 0.6 sur métabalises avec paramètres, problème sur contenus vides. Corrigé.

– Programme subdivisé, traitement proprement dit converti en fonction appelée et déplacé comme fonctions/export.py. (but : code partagé avec futurs outils complémentaires.)

 

0.6.0 – 16 septembre 2017

 

* général :

– pml.cfg est maintenant réduit au paramétrage proprement dit, les libellés des messages sont désormais stockés dans locale/msg_xx.mo.

 

* pmlimport :

– Les commentaires non en début de ligne étaient mal gérés (code PML obtenu incorrect). Corrigé.

– Le code suivant un '<body>' sur la même ligne dans un fichier d’ePub était parfois ignoré. Corrigé.

– Si présence de descriptions format epub3 dans le bloc 'content', forçage epub2 pour celles qui sont utiles (sinon risque de plantage)

– Les espaces comme premier caractère des blocs en italiques ou gras sont déplacés avant la balise.

– Détection de données d’en-tête d’epub incohérentes, message d’erreur et évitement d’un plantage.

 

* pmlexport :

– Indication de la taille du texte proprement dit, déjà fournie pour chaque chapitre, maintenant totalisée par sous-ensembles (permet par exemple d’avoir directement la taille de chaque partie même quand elle est divisée en chapitres, ou de chaque nouvelle dans un recueil dont certaines sont subdivisées en chapitres, etc.).

– Pour les routines python, ajout de la possibilité d’un emplacement alternatif (pour traitement différent d’un même fichier selon paramétrage) et d’accès à plus d’une base de données.

– Possibilité d’avoir des balises PML simples (sans attributs) à l’intérieur d’une constante.

– Ajout des balises de littéraux <@mot_clé> pour internationalisation. Cf. documentation pour détails.

– Lors d’imbrication de métabalises avec paramètres, les valeurs n’étaient pas toujours correctement attribuées. Corrigé.

 

0.5.0 – 6 août 2017

 

* pmlimport :

– Les '<span>' sans attributs (donc inutiles) sont maintenant éliminés.

– Les métabalises générées reçoivent maintenant un commentaire indiquant le nombre d’occurrences de celles-ci dans le document, afin de faciliter le nettoyage éventuel du texte.

– Certaines balises différentes mais avec la même classe généréraient la même métabalise. Elles sont à présent différenciées.

 

* pmlexport :

– Ajout d’une balise <notebis> permettant de référencer plusieurs emplacements de texte successifs avec un unique texte de note.

– Les appels de notes sur un titre se retrouvaient dans la table des matières. Corrigé.

 

0.4.5 – 30 juillet 2017

 

* pmlimport :

– Le fichier HTML bâti à partir d’un ePub reprend maintenant le nom de celui-ci au lieu de 'temp'.

– Les '<meta…' vides (donc inutiles) sont maintenant ignorées.

– Les commentaires sur plus d’une ligne étaient mal convertis. Corrigé.

– Des balises fermantes sans ouvrantes (document HTML mal bâti) pouvaient donner une imbrication négative, i.e. des retours de ligne non conformes. Corrigé (balise fermante mise en commentaire) avec message d’erreur.

– Des balises sans texte pouvaient être converties avec une espace inutile (ex. <br >). Corrigé.

– Si la première balise après '<body' est un '<div', celle-ci était ignorée. Corrigé.

 

* pmlexport :

– En cas de balise non identifiée, mise en commentaire de celle-ci dans le HTML généré (et recouvrement d’un plantage en cas de paramètres associés).

 

0.4.4 – 21 juillet 2017

 

* général

– pml.cfg : suppression de l’affectation 'eons' (valeur perso !) au paramètre 'oebps'.

 

* pmlexport :

– Des liens étaient mal générés (contenu d’autres balises) suite à copie de référence au lieu du contenu. Corrigé.

– Préserve les minuscules dans la table des matières pour les titres définis avec des petites majuscules (auparavant donnait des titres en majuscules).

 

* htmlepub :

– Suppression effective du répertoire de travail (instruction était mise en commentaire).

 

* fonctions internes :

– Des balises mises en commentaire étaient traitées tout de même. Corrigé.

– Les paramètres implicites (src, href) des balises <a> et <img> étaient abusivement renommés/renumérotés, pouvant causer des paramètres doublons et plantage. Corrigé.

 

0.4.3 – 28 juin 2017

 

* pmlimport :

– Ajout d’un joker '?' pour les balises dans -ignore afin de limiter les listes sinon longues.

– Regroupement sur une ligne des textes tronçonnés à cause de balises éliminées.

 

0.4.2.1 – 27 juin 2017

 

* pmlimport :

– Régression de la 0.4.1.1 remplaçant des espaces par des '>'. Corrigé.

 

0.4.2 – 26 juin 2017

 

* général :

– Prise en compte des spécificités de certains systèmes (notamment Windows et W10).

 

* pmlimport :

– Détection des images définies mais absentes.

 

0.4.1.1 – 25 juin 2017

 

* pmlimport :

– L’espace débutant le texte associé à une balise était parfois supprimé, accolant des mots intempestivement. Corrigé.

 

0.4.1 – 25 juin 2017

 

* pmlimport :

– Amélioration des performances pour les gros ePub contenant beaucoup de balises images.

– Les métadonnées issues de l’ePub pouvaient être mal placées si '</head>' n’était pas en début de ligne. Corrigé.

– Problème de chemin sous Windows quand -o utilisé avec chemin absolu. Corrigé.

– Dans certains cas, plusieurs balises de premier niveau restaient sur une même ligne (invalide en PML). Corrigé.

– Ajout d’un paramètre "ignore" permettant de faire disparaître les balises des classes listées (nettoyage de documents ePub/Html surchargés de codes inutiles)

 

0.4.0 – 9 juin 2017

 

* général :

– La documentation (PML.pdf) décrit l’outil SGC (Système de Gestion de Contenu) utilisant PML et destiné à gérer un ou plusieurs sites Internet. Compte tenu du travail encore nécessaire sur cet outil, ce dernier lui-même n’est pas encore livrable. Sa documentation permet toutefois d’en avoir déjà une bonne idée.

 

* pmlimport :

– Amélioration des performances pour les gros ePub (sur un PC équipé d’un processeur i7-4790K, la conversion des œuvres complètes de Victor Hugo – cas extrême d’un ePub contenant plus de 5000 fichiers HTML – est passée de 4h56 à… 53 s !)

– Indications d’avancement pour les gros ePub (plus de 10 000 balises).

 

* pmlexport :

– Indication de la taille du texte proprement dit fournie pour chaque chapitre (métabalises générant un niveau <h1> et définies dans '§toc') ainsi qu’en total de l’ePub.

 

0.3.1 – 10 février 2017 (non distribuée)

 

* pmlimport :

– Les métabalises avec texte sont maintenant reconnues (si elles sont bien sur une seule ligne et identiques dans le document)

 

* pmlexport :

– Les inclusions et exclusions reconnaissent maintenant la condition 'constante absente ou vide', définie avec un '-' en fin du nom (en place de'=' ou '≠')

– Les '&' ou '\&' retournés dans une constante par une fonction Python étaient mal interprétés. Ils sont à présent correctement prévervés.

 

0.3.0 – 8 février 2017

 

* pmlimport :

– Accepte à présent un ePub en entrée, stocke les données spécifiques en balises "meta".

– Possibilité de définir un nom pour le fichier PML en sortie.

 

* pmlexport :

– Correction d’une régression en 0.2.0 qui mettait à "faux" toutes les conditions d’inclusion/exclusion non de groupes.

 

* htmlepub :

– Possibilité de choisir le nom du répertoire interne des données (OEBPS par défaut).

– Prend en compte la plupart des "meta" correspondant à des spécifications ePub.

– Régression temporaire : ne peut générer d’ePub3 (plantage).

 

0.2.0 – 28 janvier 2017

 

* général

– constantes : le caractère '$' posant problème dans certains cas, il est remplacé par '%'

 

* pml.cfg :

– Peut maintenant servir pour définir des constantes d’usage général.

– Ajout de la constante %scripts pour définir le chemin des fichiers de base (style.css, .js, imports, etc.).

 

* fonctions internes :

– ajout du module html.py.

– suppression du doublon de la fonction baliseHTML (était dans routinespml.py et html.py).

– déplacement de la définition des codes de travail internes de routinespml.py vers globales.py.

 

* pmlimport :

– Correction d’une régression en 0.1.1 supprimant toutes les lignes vides.

 

* pmlexport :

– Prise en compte de la constante %scripts.

– Possibilité de définir des constantes dans la ligne de commande.

– Possibilité de spécifier un nom de fichier HTML en sortie (par défaut, c’est le nom du fichier PML).

– Possibilité de mettre plusieurs constantes dans une balise d’inclusion ou exclusion (condition 'et')

– Inclusion et exclusion de groupes maintenant opérationnelles.

 

* htmlepub :

– Possibilité de choisir le nom du répertoire interne des données (OEBPS par défaut).

 

0.1.1 – 24 janvier 2017

 

* pmlimport :

– attributs à 'None' à traiter idem attributs à longueur nulle (correction Ventdefolie).

– le parseur HTML de Python ne peut traiter les documents aberrants (tels ceux issus de MsWord). Interception de l’erreur pour message d’erreur terminale explicite.

– nettoyage préalable du document en entrée par suppression des pseudo-commentaires d’origine MsWord, pare à la plupart des aberrations.

– les textes multilignes conservés tels quels causaient des erreurs de structure. Ils sont maintenant assemblés en lignes uniques.

 

* pmlexport :

– Les '\&' ('&' dans PML) en smallcaps devenaient '&<span class="sc">AMP</span>;' : ils sont à présent respectés.

– Les constantes sans contenu (longueur zéro) doivent être traitées comme non définies : fait et message d’avertissement ajouté.

– Le tableau 'roman_map' pour les notes en chiffres romains n’était pas dans le bon module : déplacé de pmlexport.py à routinespml.py

– 'id' préexistant pris en compte pour table des matières mais était supprimé comme non référencé : corrigé.

 

* htmlepub :

– plantait si un fichier image manquait : corrigé et message d’erreur.

– les classes qui ne sont pas le premier attribut après la balise n’étaient pas prises en compte : corrigé.

 

0.1.0 – 23 janvier 2017

 

Pack de test, première mise à disposition.

 


© 2017 Jean-Luc-Blary