remark-textr
!Buildbuild-badgebuild
!Coveragecoverage-badgecoverage
!Downloadsdownloads-badgedownloads
!Sizesize-badgesize
!Sponsorssponsors-badgecollective
!Backersbackers-badgecollective
!Chatchat-badgechatremark plugin to improve typographytypewriter-habits with Textr.
Contents
* [`unified().use(remarkTextr[, options])`](#unifieduseremarktextr-options)
* [`Options`](#options)
* [`TextrPlugin`](#textrplugin)
What is this?
This package is a unified (remark) plugin to support Textr.When should I use this?
This project is useful if you want to automatically improve the text in your markdown documents. Textr is a simple way to do that: no need to worry about ASTs. On the other hand, ASTs are powerful, so some things are better done with custom plugins: see Create a pluginunified-create-a-plugin.Install
This package is ESM onlyesm. In Node.js (version 16+), install with npm:npm install remark-textr
In Deno with
esm.sh
esmsh:import remarkTextr from 'https://esm.sh/remark-textr@6'
In browsers with
esm.sh
esmsh:<script type="module">
import remarkTextr from 'https://esm.sh/remark-textr@6?bundle'
</script>
Use
Say we have the following fileexample.md
:````markdown
spread operator...
function(...args) { return args; }
````…and a module
example.js
:/**
* @typedef {import('remark-textr').TextrPlugin} TextrPlugin
*/
import {remark} from 'remark'
import remarkTextr from 'remark-textr'
import {read} from 'to-vfile'
const file = await remark()
.use(remarkTextr, {plugins: [ellipses]})
.process(await read('example.md'))
console.log(String(file))
/**
* Replace triple dots with ellipses.
*
* @type {TextrPlugin}
*/
function ellipses(input) {
return input.replace(/\.{3}/gim, '…')
}
…then running
node example.js
yields:````markdown
spread operator…
function(...args) { return args; }
````API
This package exports no identifiers. The default export isremarkTextr
api-remark-text.unified().use(remarkTextr[, options])
Improve typographytypewriter-habits with Textr.Parameters
options
(Options
api-options, optional)
— configuration
Returns
Transform (Transformer
unified-transformer).Options
Configuration (TypeScript type).Fields
options
(object
, optional)
— configuration passed to `textr`;
for example, you may want to set the ISO 639-1 [locale code][textr-locale]
of the content, which is important for stuff like the correct primary and
secondary quotes
plugins
(Array<TextrPlugin | string>
, optional)
— textr plugins;
if strings are passed in, those are loaded with `import`
TextrPlugin
Textr plugin (TypeScript type).Textr plugins are available on npm labelled with a
textr
textr-plugins
keyword.
You can also create them yourself, as shown in the example above.Parameters
value
(string
)
— value to transform
options
(object
)
— global configuration passed to textr
Returns
Changed text (string
, optional).Types
This package is fully typed with TypeScript. It exports the additional typesOptions
api-options and
TextrPlugin
api-textr-plugin.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,
remark-textr@^6
,
compatible with Node.js 16.This plugin works with
unified
version 6+ and remark
version 7+.Security
Use ofremark-textr
does not involve rehype (hast) or user
content so there are no openings for cross-site scripting (XSS)wiki-xss
attacks.
Textr operates on text nodes, which are always escaped by remark.Contribute
Seecontributing.md
contributing in remarkjs/.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.