From 349e18c4072e3dc8cd715664ea586327ec0dddbe Mon Sep 17 00:00:00 2001 From: Mikko Ahlroth Date: Sun, 28 May 2023 17:19:30 +0300 Subject: [PATCH] Add HTMLBody encoding mode that doesn't encode quite so many characters --- CHANGELOG | 5 ++++ README.md | 9 +++---- gleam.toml | 2 +- src/glentities.gleam | 49 +++++++++++++++++++++++++++++++------- test/glentities_test.gleam | 10 ++++++++ 5 files changed, 61 insertions(+), 14 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index f05d930..79ac0e6 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,8 @@ +3.1.0 +----- + +* Add "HTMLBody" encoding mode that doesn't encode everything. + 3.0.0 ----- diff --git a/README.md b/README.md index fca547e..e40be53 100644 --- a/README.md +++ b/README.md @@ -12,11 +12,12 @@ Entities can be encoded using named or hex entity references. Named entity refer ```gleam import glentities -glentities.encode("", glentities.Named) // "</html>" -glentities.encode("", glentities.Hex) // "</html>" +glentities.encode("", glentities.HTMLBody) // "</html>" +glentities.encode("", glentities.Named) // "</html>" +glentities.encode("", glentities.Hex) // "</html>" -glentities.decode("</html>") // "" -glentities.decode("</html>") // "" +glentities.decode("</html>") // "" +glentities.decode("</html>") // "" ``` ## Development diff --git a/gleam.toml b/gleam.toml index 830a5b6..0c23e68 100644 --- a/gleam.toml +++ b/gleam.toml @@ -1,5 +1,5 @@ name = "glentities" -version = "3.0.0" +version = "3.1.0" description = "HTML entity encoder/decoder for Gleam" # Fill out these fields if you intend to generate HTML documentation or publish diff --git a/src/glentities.gleam b/src/glentities.gleam index 57366b1..b97e2c2 100644 --- a/src/glentities.gleam +++ b/src/glentities.gleam @@ -10,6 +10,13 @@ pub type EncodeMode { /// Encode all characters using hex entities, except a-z, A-Z, 0-9, newline, tab, carriage return, and space. Hex + + /// Encode only the necessary characters when the output target is HTML element or attribute content. + /// + /// This means `&`, `<`, `>`, `'`, and `"`. + /// + /// Note! Not suitable for outputting inside `