retext-readability
!Buildbuild-badgebuild
!Coveragecoverage-badgecoverage
!Downloadsdownloads-badgedownloads
!Sizesize-badgesize
!Sponsorssponsors-badgecollective
!Backersbackers-badgecollective
!Chatchat-badgechatretext 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.sh
esmsh:import retextReadability from 'https://esm.sh/retext-readability@8'
In browsers with
esm.sh
esmsh:<script type="module">
import retextReadability from 'https://esm.sh/retext-readability@8?bundle'
</script>
Use
Say our documentexample.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 isretextReadability
api-retext-readability.unified().use(retextReadability[, options])
Check hard to read sentences.Parameters
options
(Options
api-options, optional)
— configuration
Returns
Transform (Transformer
unified-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 aVFileMessage
vfile-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 typeOptions
api-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
Seecontributing.md
contributing in retextjs/.github
health for ways
to get started.
See support.md
support 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.