retext-readability

retext plugin to check readability

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
retext-readability
8.0.07 months ago8 years agoMinified + gzip package size for retext-readability in KB

Readme

retext-readability
!Buildbuild-badgebuild !Coveragecoverage-badgecoverage !Downloadsdownloads-badgedownloads !Sizesize-badgesize !Sponsorssponsors-badgecollective !Backersbackers-badgecollective !Chatchat-badgechat
retext plugin to check readability.

Contents

*   [`unified().use(retextReadability[, options])`](#unifieduseretextreadability-options)
*   [`Options`](#options)

What is this?

This package is a unified
(retext) plugin to check readability: whether your presumed target audience can read your prose. It applies Dale—Challdale-chall, Automated Readabilityautomated-readability, Coleman-Liau, Flesch, Gunning-Fog, SMOG, and Spache.

When should I use this?

You can use this plugin when you’re dealing with content that might be difficult to read to some folks, and have authors that can fix that content.
💡 Tip: I also made an online, editable, demo, similar to this project: wooorm.com/readability.

Install

This package is ESM onlyesm. In Node.js (version 16+), install with npm:
npm install retext-readability

In Deno with esm.shesmsh:
import retextReadability from 'https://esm.sh/retext-readability@8'

In browsers with esm.shesmsh:
<script type="module">
  import retextReadability from 'https://esm.sh/retext-readability@8?bundle'
</script>

Use

Say our document example.txt contains:
The cat sat on the mat

The constellation also contains an isolated neutron
star—Calvera—and H1504+65, the hottest white dwarf yet
discovered, with a surface temperature of 200,000 kelvin

…and our module example.js contains:
import retextEnglish from 'retext-english'
import retextReadability from 'retext-readability'
import retextStringify from 'retext-stringify'
import {read} from 'to-vfile'
import {unified} from 'unified'
import {reporter} from 'vfile-reporter'

const file = await unified()
  .use(retextEnglish)
  .use(retextReadability)
  .use(retextStringify)
  .process(await read('example.txt'))

console.error(reporter(file))

…then running node example.js yields:
example.txt
3:1-5:57 warning Unexpected hard to read sentence, according to 4 out of 7 algorithms readability retext-readability

⚠ 1 warning

The default target age is 16. You can pass something else, such as 6:
.use(retextEnglish)
-  .use(retextReadability)
+  .use(retextReadability, {age: 6})
.use(retextStringify)

…then running node example.js again yields:
example.txt
1:1-1:23 warning Unexpected hard to read sentence, according to 4 out of 7 algorithms readability retext-readability
3:1-5:57 warning Unexpected hard to read sentence, according to all 7 algorithms      readability retext-readability

⚠ 2 warnings

API

This package exports no identifiers. The default export is retextReadabilityapi-retext-readability.

unified().use(retextReadability[, options])

Check hard to read sentences.
Parameters
— configuration
Returns
Transform (Transformerunified-transformer).

Options

Configuration (TypeScript type).
Fields
  • age (number, default: 16)
— target age group
  • minWords (number, default: 5)
— check sentences with at least this number of words;
most algos are made to detect the reading level on an entire text;
this plugin checks each sentence on its own;
for short sentences, one long or complex word can strongly skew the
results
  • threshold (number, default: 4 / 7)
— number of algos (out of 7) that need to agree something is hard to read

Messages

Each message is emitted as a VFileMessagevfile-message, with source set to 'retext-readability', ruleId to 'readability', actual to the difficult sentence, and expected to an empty array.

Types

This package is fully typed with TypeScript. It exports the additional type Optionsapi-options.

Compatibility

Projects maintained by the unified collective are compatible with maintained versions of Node.js.
When we cut a new major release, we drop support for unmaintained versions of Node. This means we try to keep the current release line, retext-readability@^8, compatible with Node.js 16.

Related

— classify [**@mentions**](https://github.com/blog/821) as syntax
— classify URLs and filepaths as syntax
— check phrases for simpler alternatives

Contribute

See contributing.mdcontributing in retextjs/.githubhealth for ways to get started. See support.mdsupport for ways to get help.
This project has a code of conductcoc. By interacting with this repository, organization, or community you agree to abide by its terms.

License

MITlicense © Titus Wormerauthor