Outils de développement · Convertisseurs de syntaxe
Le problème de la Norvège : YAML 1.1 vs 1.2 et pourquoi NON devient faux
· Contexte
yaml formats de données débogage
Dans YAML 1.1, la valeur non citée NO est un booléen, c'est ainsi que la Norvège disparaît des listes de pays. Cet article raconte l'historique du typage implicite de YAML, ce que la spécification 1.2 a modifié et pourquoi le problème persiste dans les outils actuels.
Une liste de pays avec un manquant — NON analysé comme faux, et un rapport de bug du bureau d'Oslo
Le bug classique est un code de pays non cité `NO` qui devient faux. Les tests de ToolAcre prouvent que cela ne se produit pas ici : les deux options de schéma conservent `NO`, oui, non, activé et désactivé sous forme de chaînes. Une histoire s’ouvrant avec la Norvège disparaissant à l’intérieur de ce panneau contredirait la mise en œuvre.
L'exemple reste utile comme avertissement de compatibilité. Lorsqu'un autre consommateur YAML utilise des règles héritées, l'auteur de ToolAcre cite des chaînes ambiguës afin que les lecteurs en aval ne les réinterprètent pas. Le lecteur et l'écrivain sont configurés pour éviter l'échec même décrit dans le plan.
La Norvège ne disparaît pas dans ce convertisseur : NON reste le texte
Ce référentiel documente les schémas restreints JSON et Core de js-yaml et leur comportement scalaire observé. Il ne contient pas de sources sur les origines 2001 de YAML, les intentions des auteurs ou les débats historiques sur la conception. Ces affirmations sont omises plutôt que reconstruites de mémoire.
Le mécanisme actuel suffit pour un guide pratique. La résolution scalaire simple se produit sous un schéma sélectionné ; les valeurs citées restent du texte ; les balises non prises en charge sont rejetées. Les preuves concernant le code ne doivent pas être étendues à l’historique des normes sans source.
Les preuves du référentiel couvrent la configuration actuelle de l'analyseur, et non l'historique d'origine de YAML.
YAML 1.1 communément traité oui, non, on et off comme des booléens. Cela explique pourquoi le problème norvégien existe dans certains écosystèmes. ToolAcre n'expose aucun commutateur 1.1 et ne démontre jamais de conversion sexagésimale ou octale héritée dans un tel mode.
Utilisez le risque pour examiner la sortie de l'analyseur externe, et non pour prédire ce panneau. Si un autre outil produit false, enregistrez sa bibliothèque et son schéma. Le résultat de ToolAcre peut servir de lecture YAML 1.2 contrastée, mais pas de preuve que l'autre implémentation est mal configurée pour son contrat. Les booléens
hérités YAML 1.1 expliquent le danger mais ne sont pas activés ici
Le schéma strict JSON reconnaît uniquement les orthographes scalaires compatibles JSON. Core résout en outre les valeurs tilde et vides en nombres entiers nuls, hexadécimaux ou `0o` et en nombres non finis. Ni l’un ni l’autre n’étend le vocabulaire booléen au-delà du vrai et du faux.
Core Infinity et NaN deviennent plus tard nuls dans JSON avec des avertissements car JSON n'a aucune représentation pour eux. La différence entre les options de schéma est donc visible et parfois avec perte, même si la valeur norvégienne elle-même reste stable.
Les deux options livrées sont des schémas YAML 1.2
Le comportement hérité survit partout où les valeurs par défaut de l'analyseur ou les conventions d'application le conservent. Le convertisseur ne peut pas inventorier ces bibliothèques ou versions à partir des preuves du référentiel. Testez le consommateur réel avec un appareil contenant des mots ambigus et des sosies numériques.
L'écrivain YAML de ToolAcre ajoute des guillemets de protection autour des chaînes que les lecteurs plus âgés pourraient saisir différemment, notamment `NO`, `yes`, `1.0`, `0755` et du texte ressemblant à une date. Ce résultat de compatibilité est mesurable et plus sûr qu’une déclaration générale sur l’adoption d’un analyseur moderne.
Le danger survit dans d'autres analyseurs ; vérifiez-les plutôt que de généraliser à partir de cet outil
Convertissez `countries: [SE, NO, DK]`, `answers: [yes, no, on, off]`, `mode: 0755`, `octal: 0o755`, `version: 1.10` et `empty:`. Sous strict, toutes les valeurs natives sauf JSON restent des chaînes. Sous Core, octal devient 493 et vide devient nul ; le pays et les mots de réponse restent des chaînes.
Citez chaque jeton pour forcer le texte. Ensuite, réécrivez le résultat JSON dans YAML et inspectez les devis choisis par le sérialiseur. Cette comparaison précise du code révèle les règles de l'outil sans prétendre exécuter un mode YAML 1.1 qui n'existe pas.
Exemple concret : codes de pays et sosies scalaires sous les deux schémas livrés
Les commutateurs d'analyseur spécifiques au langage, les valeurs par défaut de la version et les wrappers de framework sont en dehors de cette implémentation. Leurs noms et leur comportement changent indépendamment. Consultez et testez le composant qui consommera la configuration.
Le panel ne valide pas non plus la sémantique de l'application. Conserver `NO` en tant que chaîne est nécessaire pour un code de pays, mais cela ne peut pas prouver que `NO` est une valeur autorisée dans un schéma spécifique.
À retenir : citez vos chaînes, connaissez la version de votre analyseur et comment la conversion de YAML en JSON dans le navigateur rend visible la saisie implicite
Citer le texte qui pourrait être retapé, connaître le schéma réellement utilisé et tester le consommateur. Les deux options YAML 1.2 de ToolAcre rendent visibles leurs différences limitées et évitent délibérément le piège booléen hérité.
La leçon n'est pas que chaque analyseur se comporte d'une manière. Le fait est que le typage implicite est une configuration, et un convertisseur doit indiquer cette configuration. Ici, les preuves indiquent que la Norvège reste `"NO"`.
Lorsque la configuration traverse les systèmes, ajoutez un dispositif d'interopérabilité contenant tous les jetons ambigus autorisés par votre domaine. Convertissez-le ou analysez-le dans chaque consommateur réel et comparez les valeurs saisies, non rendues YAML. Cela détecte une table booléenne héritée, une règle octale ou une différence de valeur vide avant qu'une liste de pays ou un mode d'autorisation n'atteigne la production. Citer des chaînes connues reste la défense portable la plus simple car elle enregistre l'intention dans le document plutôt que de s'appuyer sur les valeurs par défaut de l'environnement.