npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

dentity

v1.2.1

Published

A Lightweight Decoder and Encoder for HTML Entities

Downloads

58

Readme

Dentity

A Lightweight Decoder and Encoder for HTML Entities

Dentity is a small library for encoding and decoding HTML entities. It covers all the W3C defined entities, supports strict and non-strict conversions, and can work both in browser and node environments, which means that it doesn't use DOMParser or similar methods. It is fast and also small. The minified version is only around 31KB, and smaller than 14KB when gzipped. It is also well tested.

Installation

The latest source code of Dentity can be found at https://github.com/arashkazemi/dentity

To use in other node projects, install Dentity from npm public repository:

    npm install dentity  

and then import it using

    const Dentity = require("dentity");

To use in a webpage, download the source code and extract it. The minified script itself is available in the /dist directory.

It is also available via unpkg CDN and can be included in HTML files using

    <script src="https://unpkg.com/dentity/dist/dentity.min.js"></script>

Usage

There are two main functions in Dentity:

    encode(str)

and

    decode(str, is_strict=false, convert_nbsp_to_sp=false)

To encode a string, use the encode function:

    Dentity.encode("hello > < ≠");

which results in

     "hello &gt; &lt; &ne;" 

and similarly you can use decode function to do the reverse transform:

    Dentity.decode("hello &gt; &lt; &ne;");

which will give "hello > < ≠" back.

The decode function takes a second argument is_strict which if true causes the function to only accept W3C valid encodings and doesn't accept the exceptions like &copy (without the semicolon at the end). Its default value is false.

The last argument of the decode function is convert_nbsp_to_sp. By definition, &nbsp; and its equivalents are decoded to code 160 which means a non-breaking space, but in a text what we normally expect from a space is code 32 which is breakable and code 160 may lead to unforeseen results. As a workaround for this, Dentity offers a way to convert &nbsp; to code 32 instead of code 160. You can enable this by setting convert_nbsp_to_sp to true. As stated, its default value is false.

A helper function registerPrototypeFunctions is also available, that would register both functions on String.prototype as encodeHTML and decodeHTML so the above examples can be done like:

    "hello > < ≠".encodeHTML()

and

    "hello &gt; &lt; &ne;".decodeHTML()

which can be very helpful in most situations, but this is not the default behavior because of the possibility of unwanted consequences like name collisions. So one should call

    Dentity.registerPrototypeFunctions();

once after importing Dentity in order to use them.


Copyright (C) 2023 Arash Kazemi [email protected]. All rights reserved.

Dentity project is subject to the terms of BSD-2-Clause License. See the LICENSE file for more details.