Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 20 Jan 2024 09:35:42 GMT
From:      Kai Knoblich <kai@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: 042cb14c9ed0 - main - www/py-nh3: New port
Message-ID:  <202401200935.40K9ZgZB046334@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by kai:

URL: https://cgit.FreeBSD.org/ports/commit/?id=042cb14c9ed07030a312e4f55fbe38092d29f7d7

commit 042cb14c9ed07030a312e4f55fbe38092d29f7d7
Author:     Kai Knoblich <kai@FreeBSD.org>
AuthorDate: 2024-01-20 09:34:06 +0000
Commit:     Kai Knoblich <kai@FreeBSD.org>
CommitDate: 2024-01-20 09:34:47 +0000

    www/py-nh3: New port
    
    This package offers Python bindings to the ammonia HTML sanitization
    library (see https://github.com/rust-ammonia/ammonia) and it has many
    options to customize the sanitization.
---
 www/Makefile               |   1 +
 www/py-nh3/Makefile        |  29 ++++++++++
 www/py-nh3/Makefile.crates |  68 ++++++++++++++++++++++
 www/py-nh3/distinfo        | 139 +++++++++++++++++++++++++++++++++++++++++++++
 www/py-nh3/pkg-descr       |   3 +
 5 files changed, 240 insertions(+)

diff --git a/www/Makefile b/www/Makefile
index 7511597d8d1d..d6b486d93f25 100644
--- a/www/Makefile
+++ b/www/Makefile
@@ -1738,6 +1738,7 @@
     SUBDIR += py-multidict
     SUBDIR += py-mwoauth
     SUBDIR += py-nevow
+    SUBDIR += py-nh3
     SUBDIR += py-notebook
     SUBDIR += py-onetimepass
     SUBDIR += py-openbrokerapi
diff --git a/www/py-nh3/Makefile b/www/py-nh3/Makefile
new file mode 100644
index 000000000000..9c2823b225e4
--- /dev/null
+++ b/www/py-nh3/Makefile
@@ -0,0 +1,29 @@
+PORTNAME=	nh3
+DISTVERSIONPREFIX=	v
+DISTVERSION=	0.2.15
+CATEGORIES=	www python
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER=	kai@FreeBSD.org
+COMMENT=	Python Bindings to the ammonia HTML sanitization library
+WWW=		https://github.com/messense/nh3
+
+LICENSE=	MIT
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}maturin>=1.0<2.0:devel/py-maturin@${PY_FLAVOR}
+
+USES=		cargo python
+USE_GITHUB=	yes
+GH_ACCOUNT=	messense
+USE_PYTHON=	autoplist pep517
+
+CARGO_BUILD=	no
+CARGO_INSTALL=	no
+
+TEST_ENV=	PYTHONPATH=${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}
+
+post-install:
+		${FIND} ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR} -name '*.so' -exec ${STRIP_CMD} {} +
+
+.include <bsd.port.mk>
diff --git a/www/py-nh3/Makefile.crates b/www/py-nh3/Makefile.crates
new file mode 100644
index 000000000000..e236bf60f462
--- /dev/null
+++ b/www/py-nh3/Makefile.crates
@@ -0,0 +1,68 @@
+CARGO_CRATES=	ammonia-3.3.0 \
+		autocfg-1.1.0 \
+		bitflags-1.3.2 \
+		cfg-if-1.0.0 \
+		form_urlencoded-1.2.1 \
+		futf-0.1.5 \
+		getrandom-0.2.11 \
+		heck-0.4.1 \
+		html5ever-0.26.0 \
+		idna-0.5.0 \
+		indoc-2.0.4 \
+		libc-0.2.150 \
+		lock_api-0.4.11 \
+		log-0.4.20 \
+		mac-0.1.1 \
+		maplit-1.0.2 \
+		markup5ever-0.11.0 \
+		memoffset-0.9.0 \
+		new_debug_unreachable-1.0.4 \
+		once_cell-1.19.0 \
+		parking_lot-0.12.1 \
+		parking_lot_core-0.9.9 \
+		percent-encoding-2.3.1 \
+		phf-0.10.1 \
+		phf_codegen-0.10.0 \
+		phf_generator-0.10.0 \
+		phf_shared-0.10.0 \
+		ppv-lite86-0.2.17 \
+		precomputed-hash-0.1.1 \
+		proc-macro2-1.0.70 \
+		pyo3-0.20.0 \
+		pyo3-build-config-0.20.0 \
+		pyo3-ffi-0.20.0 \
+		pyo3-macros-0.20.0 \
+		pyo3-macros-backend-0.20.0 \
+		quote-1.0.33 \
+		rand-0.8.5 \
+		rand_chacha-0.3.1 \
+		rand_core-0.6.4 \
+		redox_syscall-0.4.1 \
+		scopeguard-1.2.0 \
+		serde-1.0.193 \
+		serde_derive-1.0.193 \
+		siphasher-0.3.11 \
+		smallvec-1.11.2 \
+		string_cache-0.8.7 \
+		string_cache_codegen-0.5.2 \
+		syn-1.0.109 \
+		syn-2.0.39 \
+		target-lexicon-0.12.12 \
+		tendril-0.4.3 \
+		tinyvec-1.6.0 \
+		tinyvec_macros-0.1.1 \
+		unicode-bidi-0.3.14 \
+		unicode-ident-1.0.12 \
+		unicode-normalization-0.1.22 \
+		unindent-0.2.3 \
+		url-2.5.0 \
+		utf-8-0.7.6 \
+		wasi-0.11.0+wasi-snapshot-preview1 \
+		windows-targets-0.48.5 \
+		windows_aarch64_gnullvm-0.48.5 \
+		windows_aarch64_msvc-0.48.5 \
+		windows_i686_gnu-0.48.5 \
+		windows_i686_msvc-0.48.5 \
+		windows_x86_64_gnu-0.48.5 \
+		windows_x86_64_gnullvm-0.48.5 \
+		windows_x86_64_msvc-0.48.5
diff --git a/www/py-nh3/distinfo b/www/py-nh3/distinfo
new file mode 100644
index 000000000000..bd588b5d364c
--- /dev/null
+++ b/www/py-nh3/distinfo
@@ -0,0 +1,139 @@
+TIMESTAMP = 1705686727
+SHA256 (rust/crates/ammonia-3.3.0.crate) = 64e6d1c7838db705c9b756557ee27c384ce695a1c51a6fe528784cb1c6840170
+SIZE (rust/crates/ammonia-3.3.0.crate) = 46061
+SHA256 (rust/crates/autocfg-1.1.0.crate) = d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa
+SIZE (rust/crates/autocfg-1.1.0.crate) = 13272
+SHA256 (rust/crates/bitflags-1.3.2.crate) = bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a
+SIZE (rust/crates/bitflags-1.3.2.crate) = 23021
+SHA256 (rust/crates/cfg-if-1.0.0.crate) = baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd
+SIZE (rust/crates/cfg-if-1.0.0.crate) = 7934
+SHA256 (rust/crates/form_urlencoded-1.2.1.crate) = e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456
+SIZE (rust/crates/form_urlencoded-1.2.1.crate) = 8969
+SHA256 (rust/crates/futf-0.1.5.crate) = df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843
+SIZE (rust/crates/futf-0.1.5.crate) = 11344
+SHA256 (rust/crates/getrandom-0.2.11.crate) = fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f
+SIZE (rust/crates/getrandom-0.2.11.crate) = 35391
+SHA256 (rust/crates/heck-0.4.1.crate) = 95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8
+SIZE (rust/crates/heck-0.4.1.crate) = 11567
+SHA256 (rust/crates/html5ever-0.26.0.crate) = bea68cab48b8459f17cf1c944c67ddc572d272d9f2b274140f223ecb1da4a3b7
+SIZE (rust/crates/html5ever-0.26.0.crate) = 72921
+SHA256 (rust/crates/idna-0.5.0.crate) = 634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6
+SIZE (rust/crates/idna-0.5.0.crate) = 271940
+SHA256 (rust/crates/indoc-2.0.4.crate) = 1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8
+SIZE (rust/crates/indoc-2.0.4.crate) = 14311
+SHA256 (rust/crates/libc-0.2.150.crate) = 89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c
+SIZE (rust/crates/libc-0.2.150.crate) = 719359
+SHA256 (rust/crates/lock_api-0.4.11.crate) = 3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45
+SIZE (rust/crates/lock_api-0.4.11.crate) = 27487
+SHA256 (rust/crates/log-0.4.20.crate) = b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f
+SIZE (rust/crates/log-0.4.20.crate) = 38307
+SHA256 (rust/crates/mac-0.1.1.crate) = c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4
+SIZE (rust/crates/mac-0.1.1.crate) = 4838
+SHA256 (rust/crates/maplit-1.0.2.crate) = 3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d
+SIZE (rust/crates/maplit-1.0.2.crate) = 8871
+SHA256 (rust/crates/markup5ever-0.11.0.crate) = 7a2629bb1404f3d34c2e921f21fd34ba00b206124c81f65c50b43b6aaefeb016
+SIZE (rust/crates/markup5ever-0.11.0.crate) = 34667
+SHA256 (rust/crates/memoffset-0.9.0.crate) = 5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c
+SIZE (rust/crates/memoffset-0.9.0.crate) = 9033
+SHA256 (rust/crates/new_debug_unreachable-1.0.4.crate) = e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54
+SIZE (rust/crates/new_debug_unreachable-1.0.4.crate) = 2561
+SHA256 (rust/crates/once_cell-1.19.0.crate) = 3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92
+SIZE (rust/crates/once_cell-1.19.0.crate) = 33046
+SHA256 (rust/crates/parking_lot-0.12.1.crate) = 3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f
+SIZE (rust/crates/parking_lot-0.12.1.crate) = 40967
+SHA256 (rust/crates/parking_lot_core-0.9.9.crate) = 4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e
+SIZE (rust/crates/parking_lot_core-0.9.9.crate) = 32445
+SHA256 (rust/crates/percent-encoding-2.3.1.crate) = e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e
+SIZE (rust/crates/percent-encoding-2.3.1.crate) = 10235
+SHA256 (rust/crates/phf-0.10.1.crate) = fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259
+SIZE (rust/crates/phf-0.10.1.crate) = 5406
+SHA256 (rust/crates/phf_codegen-0.10.0.crate) = 4fb1c3a8bc4dd4e5cfce29b44ffc14bedd2ee294559a294e2a4d4c9e9a6a13cd
+SIZE (rust/crates/phf_codegen-0.10.0.crate) = 3402
+SHA256 (rust/crates/phf_generator-0.10.0.crate) = 5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6
+SIZE (rust/crates/phf_generator-0.10.0.crate) = 7525
+SHA256 (rust/crates/phf_shared-0.10.0.crate) = b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096
+SIZE (rust/crates/phf_shared-0.10.0.crate) = 4095
+SHA256 (rust/crates/ppv-lite86-0.2.17.crate) = 5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de
+SIZE (rust/crates/ppv-lite86-0.2.17.crate) = 22242
+SHA256 (rust/crates/precomputed-hash-0.1.1.crate) = 925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c
+SIZE (rust/crates/precomputed-hash-0.1.1.crate) = 1640
+SHA256 (rust/crates/proc-macro2-1.0.70.crate) = 39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b
+SIZE (rust/crates/proc-macro2-1.0.70.crate) = 44343
+SHA256 (rust/crates/pyo3-0.20.0.crate) = 04e8453b658fe480c3e70c8ed4e3d3ec33eb74988bd186561b0cc66b85c3bc4b
+SIZE (rust/crates/pyo3-0.20.0.crate) = 431766
+SHA256 (rust/crates/pyo3-build-config-0.20.0.crate) = a96fe70b176a89cff78f2fa7b3c930081e163d5379b4dcdf993e3ae29ca662e5
+SIZE (rust/crates/pyo3-build-config-0.20.0.crate) = 29534
+SHA256 (rust/crates/pyo3-ffi-0.20.0.crate) = 214929900fd25e6604661ed9cf349727c8920d47deff196c4e28165a6ef2a96b
+SIZE (rust/crates/pyo3-ffi-0.20.0.crate) = 64220
+SHA256 (rust/crates/pyo3-macros-0.20.0.crate) = dac53072f717aa1bfa4db832b39de8c875b7c7af4f4a6fe93cdbf9264cf8383b
+SIZE (rust/crates/pyo3-macros-0.20.0.crate) = 7678
+SHA256 (rust/crates/pyo3-macros-backend-0.20.0.crate) = 7774b5a8282bd4f25f803b1f0d945120be959a36c72e08e7cd031c792fdfd424
+SIZE (rust/crates/pyo3-macros-backend-0.20.0.crate) = 49383
+SHA256 (rust/crates/quote-1.0.33.crate) = 5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae
+SIZE (rust/crates/quote-1.0.33.crate) = 28090
+SHA256 (rust/crates/rand-0.8.5.crate) = 34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404
+SIZE (rust/crates/rand-0.8.5.crate) = 87113
+SHA256 (rust/crates/rand_chacha-0.3.1.crate) = e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88
+SIZE (rust/crates/rand_chacha-0.3.1.crate) = 15251
+SHA256 (rust/crates/rand_core-0.6.4.crate) = ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c
+SIZE (rust/crates/rand_core-0.6.4.crate) = 22666
+SHA256 (rust/crates/redox_syscall-0.4.1.crate) = 4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa
+SIZE (rust/crates/redox_syscall-0.4.1.crate) = 24858
+SHA256 (rust/crates/scopeguard-1.2.0.crate) = 94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49
+SIZE (rust/crates/scopeguard-1.2.0.crate) = 11619
+SHA256 (rust/crates/serde-1.0.193.crate) = 25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89
+SIZE (rust/crates/serde-1.0.193.crate) = 76863
+SHA256 (rust/crates/serde_derive-1.0.193.crate) = 43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3
+SIZE (rust/crates/serde_derive-1.0.193.crate) = 55692
+SHA256 (rust/crates/siphasher-0.3.11.crate) = 38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d
+SIZE (rust/crates/siphasher-0.3.11.crate) = 10442
+SHA256 (rust/crates/smallvec-1.11.2.crate) = 4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970
+SIZE (rust/crates/smallvec-1.11.2.crate) = 34801
+SHA256 (rust/crates/string_cache-0.8.7.crate) = f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b
+SIZE (rust/crates/string_cache-0.8.7.crate) = 16655
+SHA256 (rust/crates/string_cache_codegen-0.5.2.crate) = 6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988
+SIZE (rust/crates/string_cache_codegen-0.5.2.crate) = 8156
+SHA256 (rust/crates/syn-1.0.109.crate) = 72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237
+SIZE (rust/crates/syn-1.0.109.crate) = 237611
+SHA256 (rust/crates/syn-2.0.39.crate) = 23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a
+SIZE (rust/crates/syn-2.0.39.crate) = 244129
+SHA256 (rust/crates/target-lexicon-0.12.12.crate) = 14c39fd04924ca3a864207c66fc2cd7d22d7c016007f9ce846cbb9326331930a
+SIZE (rust/crates/target-lexicon-0.12.12.crate) = 25156
+SHA256 (rust/crates/tendril-0.4.3.crate) = d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0
+SIZE (rust/crates/tendril-0.4.3.crate) = 37210
+SHA256 (rust/crates/tinyvec-1.6.0.crate) = 87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50
+SIZE (rust/crates/tinyvec-1.6.0.crate) = 45991
+SHA256 (rust/crates/tinyvec_macros-0.1.1.crate) = 1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20
+SIZE (rust/crates/tinyvec_macros-0.1.1.crate) = 5865
+SHA256 (rust/crates/unicode-bidi-0.3.14.crate) = 6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416
+SIZE (rust/crates/unicode-bidi-0.3.14.crate) = 56429
+SHA256 (rust/crates/unicode-ident-1.0.12.crate) = 3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b
+SIZE (rust/crates/unicode-ident-1.0.12.crate) = 42168
+SHA256 (rust/crates/unicode-normalization-0.1.22.crate) = 5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921
+SIZE (rust/crates/unicode-normalization-0.1.22.crate) = 122604
+SHA256 (rust/crates/unindent-0.2.3.crate) = c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce
+SIZE (rust/crates/unindent-0.2.3.crate) = 7306
+SHA256 (rust/crates/url-2.5.0.crate) = 31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633
+SIZE (rust/crates/url-2.5.0.crate) = 78605
+SHA256 (rust/crates/utf-8-0.7.6.crate) = 09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9
+SIZE (rust/crates/utf-8-0.7.6.crate) = 10422
+SHA256 (rust/crates/wasi-0.11.0+wasi-snapshot-preview1.crate) = 9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423
+SIZE (rust/crates/wasi-0.11.0+wasi-snapshot-preview1.crate) = 28131
+SHA256 (rust/crates/windows-targets-0.48.5.crate) = 9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c
+SIZE (rust/crates/windows-targets-0.48.5.crate) = 6904
+SHA256 (rust/crates/windows_aarch64_gnullvm-0.48.5.crate) = 2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8
+SIZE (rust/crates/windows_aarch64_gnullvm-0.48.5.crate) = 418492
+SHA256 (rust/crates/windows_aarch64_msvc-0.48.5.crate) = dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc
+SIZE (rust/crates/windows_aarch64_msvc-0.48.5.crate) = 798483
+SHA256 (rust/crates/windows_i686_gnu-0.48.5.crate) = a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e
+SIZE (rust/crates/windows_i686_gnu-0.48.5.crate) = 844891
+SHA256 (rust/crates/windows_i686_msvc-0.48.5.crate) = 8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406
+SIZE (rust/crates/windows_i686_msvc-0.48.5.crate) = 864300
+SHA256 (rust/crates/windows_x86_64_gnu-0.48.5.crate) = 53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e
+SIZE (rust/crates/windows_x86_64_gnu-0.48.5.crate) = 801619
+SHA256 (rust/crates/windows_x86_64_gnullvm-0.48.5.crate) = 0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc
+SIZE (rust/crates/windows_x86_64_gnullvm-0.48.5.crate) = 418486
+SHA256 (rust/crates/windows_x86_64_msvc-0.48.5.crate) = ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538
+SIZE (rust/crates/windows_x86_64_msvc-0.48.5.crate) = 798412
+SHA256 (messense-nh3-v0.2.15_GH0.tar.gz) = 48d5bd02a4e598d07b4e43f43652356c8670d37ec9742cc5fd0988492439a8d7
+SIZE (messense-nh3-v0.2.15_GH0.tar.gz) = 13922
diff --git a/www/py-nh3/pkg-descr b/www/py-nh3/pkg-descr
new file mode 100644
index 000000000000..72902c3e4c9b
--- /dev/null
+++ b/www/py-nh3/pkg-descr
@@ -0,0 +1,3 @@
+This package offers Python bindings to the ammonia HTML sanitization library
+(see https://github.com/rust-ammonia/ammonia) and it has many options to
+customize the sanitization.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202401200935.40K9ZgZB046334>