https://github.com/bashaus/prevent-widows
Prevent widows from appearing in a string (includes posthtml implementation)
https://github.com/bashaus/prevent-widows
Last synced: about 1 month ago
JSON representation
Prevent widows from appearing in a string (includes posthtml implementation)
- Host: GitHub
- URL: https://github.com/bashaus/prevent-widows
- Owner: bashaus
- Created: 2018-05-09T14:59:20.000Z (over 7 years ago)
- Default Branch: main
- Last Pushed: 2025-03-18T08:47:37.000Z (8 months ago)
- Last Synced: 2025-03-27T15:21:36.152Z (8 months ago)
- Language: TypeScript
- Homepage:
- Size: 428 KB
- Stars: 7
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-random-stuff - bashaus/prevent-widows: Prevent widows from appearing in a string (includes posthtml implementation) - Prevent widows from appearing in a string (includes posthtml implementation) - bashaus/prevent-widows (Uncategorized / Uncategorized)
README
# prevent-widows
[![github actions build][img:gh-build]][url:gh-build]
[![code coverage][img:codecov]][url:codecov]
Prevent widows from appearing in a string.
This module replaces the spaces and hyphens at the end of a paragraph with
non-breaking spaces and non-breaking hyphens to prevent widows.
It comes with support for strings and posthtml.
## Installation
```
npm install prevent-widows
# - or -
yarn add prevent-widows
```
## Usage
Prevent widows from appearing in a string.
```javascript
const preventWidows = require("prevent-widows");
preventWidows("lorem ipsum dolar sit a met");
// lorem ipsum dolar sit a met
```
```typescript
import preventWidows from "prevent-widows";
preventWidows("lorem ipsum dolar sit a met");
// lorem ipsum dolar sit a met
```
## Options
### encoding
Defines the type of output to transform the spaces and hyphens.
- Since: `1.0.0`
- Property is `Optional`
- Default value is: `Encodings.HTML`
- Validation rules:
- Must be a type of `Encoding`
This table describes how values will be transformed depending on what type of
pre-defined encoding you specify.
| Encoding | Space character | Hyphen character |
| -------- | --------------- | ---------------- |
| html | ` ` | `‑` |
| unicode | `\u00a0` | `\u2011` |
For example:
```typescript
preventWidows("lorem ipsum dolar sit a met", { encoding: Encodings.UNICODE });
```
Alternatively, a custom encoding can be defined using an object:
```typescript
preventWidows("lorem ipsum dolar sit a met", {
encoding: { space: "_", hyphen: "~" },
});
// lorem ipsum dolar sit a_met
```
## posthtml
This module comes with out-of-the-box support for [posthtml][url:posthtml].
### Usage
The posthtml function exposes an additional parameter: `posthtmlOptions`.
```typescript
import posthtml from "posthtml";
import preventWidows from "prevent-widows";
posthtml().use(preventWidows.posthtml(posthtmlOptions, preventWidowsOptions));
```
### Example
```typescript
import posthtml from "posthtml";
import preventWidows from "prevent-widows";
(async () => {
const input = "
lorem ipsum dolar sit a met";
const { html } = await posthtml().use(preventWidows.posthtml()).process(input);
console.log(html);
})();
//
lorem ipsum dolar sit a met
```
### posthtml Options
The posthtml method also comes with the following options:
#### attrName
The name of the attribute which identifies where widows should be prevented on
its children.
- Since: `1.0.0`
- Property is `Optional`
- Default value is: `prevent-widows`
- Validation rules:
- Must be a valid HTML attribute name
```html
Prevent widows
```
#### attrRemove
Whether or not to remove the attribute (see: `attrName`) from the element after
the transform has been applied.
- Since: `1.0.0`
- Property is `Optional`
- Default value is: `true`
- Validation rules:
- Must be a boolean value: `true` or `false`
When `true` and by default, this will output:
```html
Prevent widows
```
When `false`, this will output:
```html
Prevent widows
```
[url:posthtml]: https://github.com/posthtml/posthtml
[img:codecov]: https://codecov.io/gh/bashaus/prevent-widows/graph/badge.svg?token=D79154VC17
[url:codecov]: https://codecov.io/gh/bashaus/prevent-widows
[img:gh-build]: https://github.com/bashaus/prevent-widows/actions/workflows/build.yml/badge.svg
[url:gh-build]: https://github.com/bashaus/prevent-widows/actions/workflows/build.yml