https://github.com/bashaus/prevent-widows
Prevent widows from appearing in a string (includes posthtml implementation)
https://github.com/bashaus/prevent-widows
Last synced: 1 day 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 (almost 7 years ago)
- Default Branch: main
- Last Pushed: 2025-03-18T08:47:37.000Z (28 days ago)
- Last Synced: 2025-03-27T15:21:36.152Z (19 days 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
[](https://codecov.io/gh/bashaus/prevent-widows)
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