= amélioration/évolution – = correction
(liste à jour au 24 avril 2024)
Ayant rencontré diverses difficultés avec l’export PML – pas pour les ePub, généralement de structure simple, mais pour des pages Internet, parfois très complexes –, n’ayant d’ailleurs pas reporté ci-dessous plusieurs corrections allant jusqu’à septembre 2024, et en outre n’ayant pu faire fonctionner quelques métabalises, j’ai décidé d’abandonner la version 0.10.2 prévue (depuis plus de deux ans ! ) pour me consacrer à une réécriture complète du module principal.
En effet, divers problèmes – métabalises refusant de fonctionner, soucis de performances… – étant inhérents à la structure actuelle, seule une refonte en profondeur avec révision du processus d’analyse/conversion permettra d ’y remédier.
Rendez-vous donc dans un an pour une version 0.20 nettement améliorée – avec peut-être une interface graphique en option…
Jean-Luc Blary
Évolutions prévues :
* Général :
– Peaufinage de l’utilitaire 'font2sc' : conversion de caractères exotiques restants et ajout de paramètres d’affinage.
– Ajout de langues supplémentaires pour les messages (portugais, polonais, russe, grec, hébreu, arabe, chinois, japonais, etc.)
* pmlimport :
– Analyse des feuilles de style CSS pour ne conserver que les styles utilisés et simplifier le code HTML/PML en éliminant les styles non pertinents (en cours).
* export (pml) :
– Fonctionnalité de vérification/export de code partiel (ex. pour vérif. messages dans un futur forum). (prototype en cours au 25 août 2020)
– Jeu de métabalises pour éditeur d’équations. (en cours)
– Correction d’une restriction interdisant de définir la position du texte dans une métabalise contenant elle-même une métabalise avec position de texte définie.
– Nouvelle balise pour numérotation arborescente de chapitres, sous-chapitres (fonctionnalité présente en css mais non intégrable aux tables des matières).
– Option de conversion automatique de caractères en exposant/indice en unicode supérieur/inférieur ou inversement.
– Paramètre spécial pour les liens locaux : insertion automatique du texte de la balise '<hx …>' référencée pour ne plus avoir à le répéter dans la balise '<a …>'.
– Paramètres de date pour les imports, afin de permettre de planifier l’ajout ou la suppression d’affichages, permanents ou périodiques.
* htmlepub :
– Optimisation des caractères exposant/indice/supérieur/inférieur en fonction des disponibilités des polices spécifiées.
– Paramètre pour forcer l’intégration des polices entières d’une ou plusieurs familles.
– Avertissement si un même fichier de police est défini plusieurs fois avec des caractéristiques différentes.
– Prise en compte du format .woff.
– Paramètre pour choisir le format des fichiers de police intégrés (actuellement, .ttf donne .ttf et .otf donne .otf)
* pymyadmin :
– Poursuite du développement de ce remplaçant de phpmyadmin, avec quelques fonctionnalités spécifiques.
0.10.2 – (à venir)
* pmlimport :
Des incohérences entre majuscules et minuscules dans les noms de fichiers internes à un ePub pouvaient faire planter l’import. Corrigé. (Fait le 18 février 2022.)
Si le premier mot d’un texte commençait par '#', il était pris comme paramètre et ne s’affichait donc pas. Corrigé. (Fait le 17 juin 2022.)
Des attributs de style invalides (sans nom ou sans valeur) faisaient planter l’import. Désormais, le nom est forcé à 'unknown' et le reste pris comme valeur. (Fait le 3 juillet 2022.)
Si le répertoire dans lequel est lancé pmlimport ne contient qu’un seul fichier importable (et aucun .pml déjà présent), le nom du document à importer peut être omis. (Fait le 20 juillet 2022.)
Un ePub non structuré pouvait faire planter l’import lors de la recherche de la couverture. Corrigé. (Fait le 8 août 2022.)
Une feuille de style déclarée mais manquante faisait planter l’import. Corrigé avec message d’erreur. (Fait le 20 septembre 2022.)
La présence d’un style « blanc » (style=" ") dans le document source pouvait complètement flinguer le résultat. Cas de figure neutralisé. (Fait le 31 octobre 2022.)
Amélioration de la prise en compte des définitions de styles directement dans les pages. Des styles pouvant porter le même nom mais pas les mêmes attributs pour des pages différentes, les styles sont suffixés avec le numéro du chapitre, tant dans 'htmlstyles.css' que dans le document en sortie. Les styles '@page' et 'body' sont désormais ignorés car sans objet pour un import. (Fait le 8 novembre 2022.)
Les très gros blocs (généralement dus à des erreurs HTML) sont scindés si dépassant 100 ksignes, réduisant considérablement le temps de traitement. (Fait le 19 novembre 2023.)
* export (pmlexport) :
Si le répertoire dans lequel est lancé pmlexport contient un et un seul fichier .pml, le nom du document à exporter peut être omis. (Fait le 20 juillet 2022.)
* export (pml et pmlexport) :
Un excédent de fermetures de balises généré par des routines python pouvait faire planter pmlexport ou renvoyer une erreur interne 500 (pml). Corrigé avec génération d’un message d’erreur dans le fichier log. (Fait le 22 février 2022.)
Le caractère '&' n’était jamais préservé tel quel hors caractères symboliques, y compris dans les (rares) cas – notamment JavaScript – où cela se justifiait. Un code particulier a donc été créé à cet effet. (Fait le 1er décembre 2022.)
Un appel de routine python contenant un '>' dans ses paramètres causait une erreur. Corrigé. (Fait le 3 février 2024.)
* htmlepub :
Si le répertoire dans lequel est lancé htmlepub contient un et un seul fichier html ou .htm, le nom du document à exporter peut être omis. (Fait le 20 juillet 2022.)
0.10.1 – 17 février 2022
* Général :
Les routines extraites de fonttools ne sont plus utilisées dans htmlepub et font2sc, remplacées par des appels directs aux fonctions de cet utilitaire (mais nécessite son installation).
Windows : pmlimport, pmlexport et htmlepub ont été testés fonctionnels (résultats identiques à ceux sous Linux) en machine virtuelle Windows 10.0 et python 3.9.10.
* pmlimport :
Les sauts de paragraphes dans les contenus de métadonnées (notamment description) disparaissaient complètement avec comme conséquence des mots collés. Ils sont maintenant préservés par le code '//' que PML interprète comme saut de ligne.
Un fichier mentionné dans content.opf mais non défini par ailleurs faisait planter l’import. Corrigé avec message d’erreur.
Un fichier interne d’un ePub ayant au moins une espace dans son nom pouvait n’être pas trouvé. Corrigé.
Des fichiers codés en mode URL dans 'content.opf' pouvaient n’être pas trouvés. Corrigé.
La casse (majuscules/minuscules) pas toujours respectée entre 'content.opf' et les fichiers et répertoires d’un epub pouvait les rendre introuvables. Corrigé.
Le fichier 'content.opf' est parfois codé en ANSI et non en Unicode (ePub mal construit), causant un plantage. L’erreur est maintenant compensée.
Ajout de l’option '*' pour le paramètre '-ignore' permettant un filtrage générique sur de l’alphanumérique.
Le paramètre '-ignore' ne prenait en compte que les balises ayant une seule classe. Corrigé.
Ajout d’un type manquant dans les définitions de polices, certaines n’étant pas extraites.
Certains ePub ayant des définitions de styles directement dans les pages et non dans une feuille à cet effet, l’extraction crée maintenant un fichier 'htmlstyles.css' regroupant toutes ces définitions (avec suppression des doublons).
Les pseudo-balises spécifiques Microsoft présentes dans de nombreux ePub n’étaient pas toujours proprement éliminées, causant un résultat incomplet. Corrigé.
Des chemins de fichiers pas conformes dans un ePub pouvaient planter l’import. Corrigé.
Windows : Des conflits entre le séparateur de répertoires '\' de Windows et le séparateur '/' standard faisaient planter l’import. Corrigé.
* export (pmlexport) :
Ajout d’une constante de base <path> contenant le chemin relatif (vs la racine du site donnée par <pmlroot>) de la page en cours de traitement.
Les imports indentés se positionnaient mal dans le code résultant (décalage). Corrigé.
Les inclusions/exclusions ne tenaient pas compte des constantes enregistrées sous python dans 'pydata'. Corrigé.
En cas d’erreur dans une fonction python utilisateur, la log ne donnait qu’un message succinct « fonction(paramètres…) Appel de fonction python invalide, traitement ignoré », de peu d’aide au débogage. Désormais, ce message s’accompagne du type d’erreur et d’un libellé de la nature de l’erreur.
L’affichage des données structurées dans la log par 'trace.val' (débogage) listait tout en une ligne. La présentation est maintenant structurée et beaucoup plus lisible.
En débogage, les caractères spéciaux des données enregistrées dans la log obéraient leur examen. Ils sont remplacés par des noms symboliques encadrés, améliorant nettement la lisibilité.
Les balises dans les titres allant dans la table des matières n’étaient pas toujours correctement nettoyées, d’ou plantage à la génération de l’ePub. Corrigé.
Les constantes contenant des espaces n’étaient pas toujours traitées comme bloc de texte unique, cause d’erreurs. Corrigé.
Des apostrophes informatiques (') pouvant poser problème (plantage) sont à présent remplacées d’office par une apostrophe véritable (’) avec message d’avertissement.
Windows : Des conflits entre le séparateur de répertoires '\' de Windows et le séparateur '/' standard faisaient planter l’import. Corrigé.
* export (pml) :
En cas de plantage de la fonction principale, l’application affichait incorrectement la page d’erreur « 403 » (page non autorisée). Désormais, c’est une erreur « 500 » (erreur interne), plus conforme, qui s’affiche.
Un formulaire de chargement d’image plantait (format non texte non prévu). Code complémentaire de prise en compte ajouté.
Des styles définis directement dans le document n’étaient pas toujours bien détectés, causant un message d’erreur intempestif de style non défini. Corrigé.
Les constantes chargées par python dans 'pydata' n’étaient pas toujours traitées. Corrigé.
Les erreurs de traitement des routines python utilisateurs n’étaient pas toujours matérialisées sur la page HTML résultante (mais le message était correctement présent dans la log). Corrigé.
* htmlepub :
Certains outils de lecture d’ePub panachent minuscules et petites majuscules en cas de ligatures. Neutralisé par suppression de celles-ci dans les polices "_sc" réduites.
Les images définies uniquement dans des styles (background) n’étaient pas prises en compte. Corrigé.
Le titre du fichier final pouvait contenir des caractères de traitement interne. Corrigé.
Windows : Des conflits entre le séparateur de répertoires '\' de Windows et le séparateur '/' standard faisaient planter la génération. Corrigé.
0.10.0 – 21 septembre 2019
* Général :
Pour chacun des trois modules pmlimport, pmlexport et htmlepub, ajout d’un paramètre indiquant un fichier contenant les paramètres à utiliser.
Les documents en page de code Windows sont à présent convertibles.
Ajout d’un utilitaire 'font2sc' de création automatique de polices « smallcaps » à partir de polices normales.
Ajout de langues supplémentaires pour les messages (allemand, néerlandais, italien, espagnol, esperanto).
* pmlimport :
La balise fermante '</head>' n’était pas toujours remise en place lors d’un import epub. Corrigé.
Un bogue dans le parser HTML envoie des chaînes de longueur nulle comme commentaires, provoquant l’arrêt du traitement comme document mal construit. Neutralisé.
Certains ePub mettent des métadonnées avec valeur manquante, ce qui plantait l’import. Corrigé.
Des attributs anciens devant avoir leur valeur convertie mais non valide faisaient planter l’import. Valeur par défaut utilisée et message d’erreur affiché.
Les polices de caractères présentes sont à présent extraites.
Un ePub qui n’aurait qu’un seul fichier de contenu (anormal mais possible) était mal converti (perte de l’entête). Corrigé.
* export (pmlexport) :
L’affichage des tailles de chapitres et parties était parfois erroné pour le dernier élément (mais valeurs affichées et HTML généré corrects). Corrigé.
* export (pml et pmlexport) :
Une fermeture de balise en trop pouvait provoquer la neutralisation d’une fermeture dans le bloc suivant, plantant le processus. Corrigé.
Des espaces intempestifs dans un bloc multilingue '<@' pouvaient faire planter le processus. Corrigé.
Ajout d’une famille de constantes '<%pydata.xxx>' (ou '<%%xxx>') pouvant afficher directement des valeurs assignées dans des routines Python sans déclaration préalable de constante dans le source PML.
La correction des notes dans un texte en petites capitales (version 0.9.0) ayant créé une régression, les petites capitales dans les notes n’étaient plus générées. Corrigé.
Le nombre de niveaux d’imbrication dans une table des matières est incrémenté de 3 à 5.
Dans les documents à plus de 2 niveaux de table des matières, la totalisation affichée était fausse (incomplète). Corrigé.
Prise en compte des polices « smallcaps » avec une règle simple.
Pour les notes, la réinitialisation était systématique à chaque rupture de bloc, même si le paramètre 'init' était différent du paramètre 'parent'. Corrigé.
Recouvrement des erreurs dans les appels de routines python par balise '<py …>' pour prévenir d’éventuels plantages si pb de syntaxe dans le code source PML.
Un bogue faisait que certains imports étaient considérés par erreur comme à ne pas inclure. Corrigé.
Amélioration des performances par optimisation de code (sensible pour gros tableaux, jusqu’à 50 % de gain de temps).
Ajout d’un appel à une fonction utilisateur spéciale (facultative) pour forcer certains paramètrages (ex. thème personnalisé…).
* export (pml) :
Optimisation du système de cache pour ne pas stocker autant de versions que de paramètres (souvent inutiles) mis dans la ligne d’adresse. Seuls les paramètres listés au début du document sont pris en compte.
Prise en compte des pages existantes mais protégées, affichage de la page '403.pml' (auparavant : plantage).
* htmlepub :
Intégration de polices de caractères dans l’ePub : prise en compte des familles multiples pour substitution des caractères manquants dans la première. (fait le 8 décembre 2018)
Le message de création d’une police filtrée mentionne maintenant le nombre de caractères concernés.
Le contenu des balises '<th>' n’était pas considéré comme texte en gras par défaut. Corrigé.
Ajout d’un paramètre '-cover' pour forcer une couverture.
* pymyadmin :
Ajout : L’affichage d’une table est entièrement opérationnel (pagination, tri sur index/colonnes, affichage champs longs tronqué ou intégral).
La liste des tables d’une base montre maintenant le texte de description de chaque table (un + vs phpmyadmin).
Ajout : découpage des longs tableaux (tables d’une base ou lignes d’une table) pour optimisation des performances – actuellement, un seul tableau, affichage très long si milliers de lignes.
Ajout : mémorisation des choix de langue et thème selon utilisateur.
0.9.0 – 15 novembre 2018
* général :
Ajout dans les routines de base d’une fonction de remplacement multiple (plus performante qu’une suite de remplacements individuels).
Possibilité de définir une langue par défaut autre que l’anglais.
* pmlimport :
Des attributs HTML sans valeur associée pouvaient provoquer un plantage – ils sont normalement ignorés. Corrigé.
Réorganisation des attributs de 'style' pour permettre une comparaison indépendante de l’ordre initial et suppression des espaces inutiles.
La balise '<meta http-equiv="Content-Type" …', étant générée automatiquement par pmlexport, est maintenant ignorée.
Remplacement automatique de diverses balises dépréciées ('layer', 'dir', 'font', 'center'…) par leur équivalent HTML5.
Les balises 'a' et 'img' sans lien se retrouvaient avec un autre attribut (si présent) en guise de lien. Corrigé avec lien nul forcé.
Remplacement automatique de divers attributs dépréciés par leur équivalent css dans 'style'.
Nouveaux paramètres en ligne de commande afin de pouvoir réduire drastiquement les attributs inutiles (notamment pour les ePub issus de documents Word ou LO).
Les métabalises générées sont maintenant triées afin de faciliter leur consultation.
Les classes multiples n’étaient plus correctement prises en compte (uniquement la première, les autres comme texte – effet de bord d’autres modifications du code). Corrigé.
Prise en compte des ePub défectueux (avec fichiers référencés mais non présents) pour éviter un plantage.
La simplification des valeurs dans les attributs ne tenait pas compte des attributs complexes tels 'border', 'margin', etc. Corrigé.
* export (pml et pmlexport) :
Nouvelle balise de littéral générique '<@ …>' pour faire des pages multilingues directement dans le document pml sans devoir tout mettre dans les fichiers de littéraux.
Un même attribut spécifié plusieurs fois dans une balise faisait planter l’export. Corrigé.
Les caractères spéciaux Ux2028 (saut de ligne) et Ux2029 (saut de paragraphe) provoquent des sauts de ligne ascii, cause d’erreurs. Convertis en saut de ligne HTML.
Une balise '<a' sans hyperlien (ou hyperlien vide) ni texte était autofermée par défaut ('<a … />'). Certains navigateurs ne reconnaissent pas cette fermeture et mettent tout le code qui suit comme cliquable. Corrigé en '<a …></a>'.
Les titres à référencer en table des matières sont à présent nettoyés des images et sauts de ligne y figurant lors de leur incorporation dans la TdM.
L’indentation des titres en table des matières n’était pas bonne quand on sautait un ou plusieurs niveaux dans un sens ou dans l’autre. Corrigé.
Les balises qui seraient présentes dans un "content" de balise '<meta' sont supprimées car interdites.
Le contenu des notes dans un texte en petites capitales n’était pas correctement nettoyé. Corrigé.
Les triples ''' (délimiteur de chaîne multilignes) dans un commentaire n’étaient pas ignorés, pouvant provoquer un plantage. Corrigé.
La présence de « ' » dans le contenu d’un <textarea…> formé d’une seule ligne pouvait faire planter. Corrigé.
Ajout de vérification qu’on ne redéfinit pas une balise HTML standard.
Des éléments devant être référencés en table des matières et générés par une métabalise « bloc » donnaient du HTML incorrect, faisant planter la génération ePub éventuelle. Corrigé.
* htmlepub :
Le fichier "mimetype" était compressé mais ne devait pas l’être, d’où non reconnaissance de l’ePub par certains (rares) logiciels. Corrigé.
Les balises qui seraient présentes dans un "content" de balise '<meta' sont supprimées car interdites.
Intégration de polices de caractères dans l’ePub, mais limitées aux caractères utilisés.
* pymyadmin :
Intégration de l’outil « codemirror » (également utilisé par PhpMyAdmin) pour coloration syntaxique des commandes SQL.
Choix possible du thème de coloration syntaxique SQL parmi un grand nombre.
Les messages d’erreur de MySql/MariaDb s’affichent maintenant dans la langue de l’utilisateur.
Les fenêtres de saisie de requête sont opérationnelles.
0.8.4 – 2 avril 2018
* pmlimport :
Des noms de fichiers internes d’un ePub peuvent être encodés URL (ex. %20 pour un espace…) et n’étaient pas reconnus : corrigé.
Les espaces éventuels dans un attribut de balise n’étaient pas correctement échappés, d’où métabalises incorrectes et non prises en compte dans le texte : corrigé.
* 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é.
Les retours de ligne ('\n') inclus dans une chaîne créée par une fonction Python sont maintenant préservés dans le code HTML généré (peut améliorer la lisibilité dudit code).
Vérification des classes, message pour celles non définies.
Les constantes de pml.cfg écrasaient une éventuelle définition faite dans le code PML : corrigé.
Les balises '<incl' et '<excl' dans un bloc "excl" n’étaient pas éliminées et engendraient un message d’erreur comme balises invalides (mais sans impact sur la sortie finale) : corrigé.
Les littéraux sont désormais traités comme des métabalises à part entière.
Les balises HTML invalides ne sont plus simplement mises en commentaires, mais intégrées au code généré avec mise en évidence (plus faciles à localiser et corriger).
Une balise de titre sans texte plantait lors de la création de la table des matières : corrigé.
* export (pml) :
Prise en compte du sens de l’écriture selon la langue (e.g. arabe, hébreu…) pour l’affichage.
* htmlepub :
Ajout d’une vérification de l’existence des feuilles de style .css.
La feuille de style unique intégrée à l’epub se nomme désormais "style.css" au lieu de prendre le nom de la première feuille .css définie dans le source HTML.
Les polices de caractères définies par @font-face ET effectivement référencées sont maintenant incorporées à l’ePub.
* pymyadmin :
Mise à disposition d’une version « démo ».
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 0.6 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é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 '&' : 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-2024 Jean-Luc-Blary