On dit qu'il est difficile d'analyser les adresses e-mail dans le programme, j'ai donc implémenté l'ABNF complet. En raison de l'emballage de diverses choses, vous pouvez facilement implémenter JSON, JSON Pointer et JSON Patch.
ABNF est souvent utilisé dans les RFC IETF. E-mail et JSON sont célèbres, et même comment écrire une adresse IP et une URL est ABNF. Pour cette raison, je n'ai vu que d'innombrables outils et bibliothèques généraux sur le marché, donc je l'ai fait rapidement.
La structure n'est qu'une extension de Parser pour créer quelque chose comme un oiseau, puis le convertir du texte en objet. ABNF lui-même est également écrit en ABNF, mais comme c'est la première fois, il est créé uniquement par le constructeur. Si vous spécifiez le format de JSON etc., vous pouvez créer un analyseur, donc si vous incorporez une partie de type générateur qui assemble les parties de sortie, elle sera terminée.
Une partie de RFC ABNF est résumée dans SoftLibRFC, je vais donc vous présenter comment l'utiliser. Tout ce dont vous avez besoin est SoftLibRFC, SoftLibABNF et SoftLib. SoftLib JSON n'est pas utilisé. Actuellement, seul le code source est disponible, essayez donc de l'utiliser de manière appropriée.
La classe net.siisise.abnf.rfc.IMF5322 est l'ABNF du courrier RFC, et la RFC 5322 est presque la même. IMF5322.angleAddr est juste pour définir uniquement les adresses e-mail. Puisque la définition est stockée dans une variable appelée REG, si elle n'est pas rendue publique, elle peut être extraite de là ou rendue publique.
boolean b = IMF5322.REG.ref("angle-addr").eq(adresse mail);
Je me demande si cela peut être jugé booléen. L'ABNF individuel est une classe ABNF. Il existe des méthodes telles que boolean eq (String) exact match et boolean is (String) first match, alors essayez-le. Si vous le combinez avec une classe appelée Packet, vous pouvez faire diverses choses, mais cette fois, il est omis. ABNF peut être multiplié et agrandi.
A utiliser tous ensemble
Vous pouvez nommer et enregistrer ABNFReg, et vous pouvez également vous y référer dans la définition. .rule (nom, ABNF) et .rule (nom, règle) .rule (règle) sont tous enregistrés ABNF. .ref (String) et .href (String) apportent l'ABNF enregistré par nom. Étant donné que la relation de l'ordre d'enregistrement peut changer, il y a une différence entre la récupération des éléments non enregistrés ou non. Il est également possible d'enregistrer plusieurs définitions à la fois avec .rulelist (String). Une pause peut être nécessaire.
Il est étrange que JSON soit intégré à mesure qu'il se développe.
SoftLibRFC https://github.com/okomeki/SoftLibRFC SoftLibABNF https://github.com/okomeki/SoftLibABNF SoftLib https://github.com/okomeki/SoftLib RFC 5234 ABNF https://tools.ietf.org/html/rfc5234 RFC 8259 JSON https://tools.ietf.org/html/rfc8259
Recommended Posts