retext-latin
Advanced tools
Comparing version 3.1.0 to 4.0.0
@@ -1,8 +0,34 @@ | ||
// This wrapper exists because JS in TS can’t export a `@type` of a function. | ||
import type {Root} from 'nlcst' | ||
import type {Plugin, ParserClass} from 'unified' | ||
import type {Nodes, Paragraph, Root, Sentence} from 'nlcst' | ||
import type {Plugin} from 'unified' | ||
export const Parser: ParserClass<Root> | ||
// See `parse-latin`. | ||
type Extension<Node extends Nodes> = (node: Node) => undefined | void | ||
declare const retextLatin: Plugin<void[], string, Root> | ||
/** | ||
* Add support for parsing Latin-script natural language. | ||
* | ||
* @this | ||
* Unified processor. | ||
* @returns | ||
* Nothing. | ||
*/ | ||
declare const retextLatin: Plugin<[], string, Root> | ||
export default retextLatin | ||
// Add custom data supported when `retext-latin` is added. | ||
declare module 'unified' { | ||
interface Data { | ||
/** | ||
* List of extensions to transform paragraph nodes. | ||
*/ | ||
nlcstParagraphExtensions?: Array<Extension<Paragraph>> | ||
/** | ||
* List of extensions to transform root nodes. | ||
*/ | ||
nlcstRootExtensions?: Array<Extension<Root>> | ||
/** | ||
* List of extensions to transform sentence nodes. | ||
*/ | ||
nlcstSentenceExtensions?: Array<Extension<Sentence>> | ||
} | ||
} |
@@ -1,4 +0,2 @@ | ||
import retextLatin, {Parser} from './lib/index.js' | ||
export {Parser} | ||
export default retextLatin | ||
// Note: types exposed from `index.d.ts`. | ||
export {default} from './lib/index.js' |
@@ -1,5 +0,8 @@ | ||
/** @type {import('unified').Plugin<void[], string, Root>} */ | ||
export default function retextLatin(): void | ||
/** @type {import('unified').ParserClass<Root>} */ | ||
export const Parser: import('unified').ParserClass<Root> | ||
export type Root = import('nlcst').Root | ||
/** | ||
* Add support for parsing Latin-script natural language. | ||
* | ||
* @returns {undefined} | ||
* Nothing. | ||
*/ | ||
export default function retextLatin(): undefined; | ||
export type Root = import('nlcst').Root; |
@@ -5,12 +5,34 @@ /** | ||
import {unherit} from 'unherit' | ||
// @ts-expect-error: untyped. | ||
import {ParseLatin} from 'parse-latin' | ||
/** @type {import('unified').ParserClass<Root>} */ | ||
export const Parser = ParseLatin | ||
/** | ||
* Add support for parsing Latin-script natural language. | ||
* | ||
* @returns {undefined} | ||
* Nothing. | ||
*/ | ||
export default function retextLatin() { | ||
// @ts-expect-error -- TS in JSDoc doesn’t understand `this`. | ||
// eslint-disable-next-line unicorn/no-this-assignment | ||
const self = /** @type {import('unified').Processor<Root>} */ (this) | ||
/** @type {import('unified').Plugin<void[], string, Root>} */ | ||
export default function retextLatin() { | ||
Object.assign(this, {Parser: unherit(ParseLatin)}) | ||
self.parser = parser | ||
/** @type {import('unified').Parser<Root>} */ | ||
function parser(value) { | ||
const parser = new ParseLatin() | ||
add(parser.tokenizeParagraphPlugins, self.data('nlcstParagraphExtensions')) | ||
add(parser.tokenizeRootPlugins, self.data('nlcstRootExtensions')) | ||
add(parser.tokenizeSentencePlugins, self.data('nlcstSentenceExtensions')) | ||
return parser.parse(value) | ||
} | ||
} | ||
/** | ||
* @template T | ||
* @param {Array<T>} list | ||
* @param {Array<T> | undefined} values | ||
*/ | ||
function add(list, values) { | ||
if (values) list.unshift(...values) | ||
} |
{ | ||
"name": "retext-latin", | ||
"version": "3.1.0", | ||
"version": "4.0.0", | ||
"description": "retext plugin to parse Latin-script prose", | ||
"license": "MIT", | ||
"keywords": [ | ||
"unified", | ||
"concrete", | ||
"cst", | ||
"language", | ||
"latin", | ||
"natural", | ||
"parse", | ||
"plugin", | ||
"process", | ||
"retext", | ||
"retext-plugin", | ||
"plugin", | ||
"natural", | ||
"language", | ||
"latin", | ||
"concrete", | ||
"syntax", | ||
"tree", | ||
"cst", | ||
"parse" | ||
"unified" | ||
], | ||
@@ -33,4 +34,3 @@ "homepage": "https://github.com/retextjs/retext", | ||
"type": "module", | ||
"main": "index.js", | ||
"types": "index.d.ts", | ||
"exports": "./index.js", | ||
"files": [ | ||
@@ -42,17 +42,27 @@ "lib/", | ||
"dependencies": { | ||
"@types/nlcst": "^1.0.0", | ||
"parse-latin": "^5.0.0", | ||
"unherit": "^3.0.0", | ||
"unified": "^10.0.0" | ||
"@types/nlcst": "^2.0.0", | ||
"parse-latin": "^7.0.0", | ||
"unified": "^11.0.0" | ||
}, | ||
"scripts": { | ||
"build": "rimraf \"lib/**/*.d.ts\" && tsc && type-coverage" | ||
}, | ||
"xo": false, | ||
"scripts": {}, | ||
"typeCoverage": { | ||
"atLeast": 100, | ||
"detail": true, | ||
"strict": true, | ||
"ignoreCatch": true | ||
"ignoreCatch": true, | ||
"strict": true | ||
}, | ||
"xo": { | ||
"overrides": [ | ||
{ | ||
"files": [ | ||
"**/*.ts" | ||
], | ||
"rules": { | ||
"@typescript-eslint/ban-types": "off", | ||
"@typescript-eslint/consistent-type-definitions": "off" | ||
} | ||
} | ||
], | ||
"prettier": true | ||
} | ||
} |
257
readme.md
@@ -11,60 +11,44 @@ # retext-latin | ||
[**retext**][retext] plugin to parse Latin-script natural language. | ||
[Parser][] for [**unified**][unified]. | ||
Parses Latin-script prose to [**nlcst**][nlcst] syntax trees. | ||
**[retext][]** plugin to add support for parsing Latin-script natural language. | ||
## Sponsors | ||
## Contents | ||
Support this effort and give back by sponsoring on [OpenCollective][collective]! | ||
* [What is this?](#what-is-this) | ||
* [When should I use this?](#when-should-i-use-this) | ||
* [Install](#install) | ||
* [Use](#use) | ||
* [API](#api) | ||
* [`unified().use(retextLatin)`](#unifieduseretextlatin) | ||
* [Syntax tree](#syntax-tree) | ||
* [Types](#types) | ||
* [Compatibility](#compatibility) | ||
* [Contribute](#contribute) | ||
* [Sponsor](#sponsor) | ||
* [License](#license) | ||
<!--lint ignore no-html--> | ||
## What is this? | ||
<table> | ||
<tr valign="middle"> | ||
<td width="20%" align="center" colspan="2"> | ||
<a href="https://www.gatsbyjs.org">Gatsby</a> 🥇<br><br> | ||
<a href="https://www.gatsbyjs.org"><img src="https://avatars1.githubusercontent.com/u/12551863?s=256&v=4" width="128"></a> | ||
</td> | ||
<td width="20%" align="center" colspan="2"> | ||
<a href="https://vercel.com">Vercel</a> 🥇<br><br> | ||
<a href="https://vercel.com"><img src="https://avatars1.githubusercontent.com/u/14985020?s=256&v=4" width="128"></a> | ||
</td> | ||
<td width="20%" align="center" colspan="2"> | ||
<a href="https://www.netlify.com">Netlify</a><br><br> | ||
<!--OC has a sharper image--> | ||
<a href="https://www.netlify.com"><img src="https://images.opencollective.com/netlify/4087de2/logo/256.png" width="128"></a> | ||
</td> | ||
<td width="10%" align="center"> | ||
<a href="https://www.holloway.com">Holloway</a><br><br> | ||
<a href="https://www.holloway.com"><img src="https://avatars1.githubusercontent.com/u/35904294?s=128&v=4" width="64"></a> | ||
</td> | ||
<td width="10%" align="center"> | ||
<a href="https://themeisle.com">ThemeIsle</a><br><br> | ||
<a href="https://themeisle.com"><img src="https://avatars1.githubusercontent.com/u/58979018?s=128&v=4" width="64"></a> | ||
</td> | ||
<td width="10%" align="center"> | ||
<a href="https://boosthub.io">Boost Hub</a><br><br> | ||
<a href="https://boosthub.io"><img src="https://images.opencollective.com/boosthub/6318083/logo/128.png" width="64"></a> | ||
</td> | ||
<td width="10%" align="center"> | ||
<a href="https://expo.io">Expo</a><br><br> | ||
<a href="https://expo.io"><img src="https://avatars1.githubusercontent.com/u/12504344?s=128&v=4" width="64"></a> | ||
</td> | ||
</tr> | ||
<tr valign="middle"> | ||
<td width="100%" align="center" colspan="10"> | ||
<br> | ||
<a href="https://opencollective.com/unified"><strong>You?</strong></a> | ||
<br><br> | ||
</td> | ||
</tr> | ||
</table> | ||
This package is a [unified][] ([retext][]) plugin that defines how to take | ||
Latin-script natural language as input and turn it into a syntax tree. | ||
When it’s used, natural language can be parsed and other retext plugins can be | ||
used after it. | ||
See [the monorepo readme][retext] for info on what the retext ecosystem is. | ||
## When should I use this? | ||
This plugin adds support to unified for parsing Latin-script natural language. | ||
If the prose is English or Dutch, use `unified` itself with | ||
[`retext-stringify`][retext-stringify] and either | ||
[`retext-english`][retext-english] or [`retext-dutch`][retext-dutch]. | ||
Or, use [`retext`][retext-core] directly. | ||
If you just want the syntax tree, you can use [`parse-latin`][parse-latin] | ||
directly. | ||
## Install | ||
This package is [ESM only](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c): | ||
Node 12+ is needed to use it and it must be `import`ed instead of `require`d. | ||
This package is [ESM only][esm]. | ||
In Node.js (version 16+), install with [npm][]: | ||
[npm][]: | ||
```sh | ||
@@ -74,33 +58,85 @@ npm install retext-latin | ||
In Deno with [`esm.sh`][esmsh]: | ||
```js | ||
import retextLatin from 'https://esm.sh/retext-latin@4' | ||
``` | ||
In browsers with [`esm.sh`][esmsh]: | ||
```html | ||
<script type="module"> | ||
import retextLatin from 'https://esm.sh/retext-latin@4?bundle' | ||
</script> | ||
``` | ||
## Use | ||
```js | ||
import {unified} from 'unified' | ||
import {stream} from 'unified-stream' | ||
import retextEmoji from 'retext-emoji' | ||
import retextLatin from 'retext-latin' | ||
import retextProfanities from 'retext-profanities' | ||
import retextStringify from 'retext-stringify' | ||
import retextEmoji from 'retext-emoji' | ||
import {unified} from 'unified' | ||
import {reporter} from 'vfile-reporter' | ||
const processor = unified() | ||
const file = await unified() | ||
.use(retextLatin) | ||
.use(retextProfanities) | ||
.use(retextEmoji, {convert: 'encode'}) | ||
.use(retextStringify) | ||
.process('He’s set on beating your butt for sheriff! :cop:') | ||
process.stdin.pipe(stream(processor)).pipe(process.stdout) | ||
console.log(String(file)) | ||
console.error(reporter(file)) | ||
``` | ||
Yields: | ||
```txt | ||
He’s set on beating your butt for sheriff! 👮 | ||
``` | ||
```txt | ||
1:26-1:30 warning Be careful with `butt`, it’s profane in some cases butt retext-profanities | ||
⚠ 1 warning | ||
``` | ||
## API | ||
This package exports the following identifiers: `Parser`. | ||
`retextLatin` is the default export. | ||
This package exports no identifiers. | ||
The default export is [`retextLatin`][api-retext-latin]. | ||
### `unified().use(retextLatin)` | ||
Parse Latin-script natural language. | ||
There is no configuration for the parser. | ||
Add support for parsing Latin-script natural language. | ||
### `Parser` | ||
###### Parameters | ||
Access to the [parser][] ([`parse-latin`][parse-latin]). | ||
There are no parameters. | ||
###### Returns | ||
Nothing (`undefined`). | ||
## Syntax tree | ||
The syntax tree used in retext is [nlcst][]. | ||
## Types | ||
This package is fully typed with [TypeScript][]. | ||
It exports no additional types. | ||
## 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-latin@^4`, | ||
compatible with Node.js 16. | ||
## Contribute | ||
@@ -111,7 +147,3 @@ | ||
See [`support.md`][support] for ways to get help. | ||
Ideas for new plugins and tools can be posted in [`retextjs/ideas`][ideas]. | ||
A curated list of awesome retext resources can be found in [**awesome | ||
retext**][awesome]. | ||
This project has a [code of conduct][coc]. | ||
@@ -121,2 +153,73 @@ By interacting with this repository, organization, or community you agree to | ||
## Sponsor | ||
Support this effort and give back by sponsoring on [OpenCollective][collective]! | ||
<table> | ||
<tr valign="middle"> | ||
<td width="20%" align="center" rowspan="2" colspan="2"> | ||
<a href="https://vercel.com">Vercel</a><br><br> | ||
<a href="https://vercel.com"><img src="https://avatars1.githubusercontent.com/u/14985020?s=256&v=4" width="128"></a> | ||
</td> | ||
<td width="20%" align="center" rowspan="2" colspan="2"> | ||
<a href="https://motif.land">Motif</a><br><br> | ||
<a href="https://motif.land"><img src="https://avatars1.githubusercontent.com/u/74457950?s=256&v=4" width="128"></a> | ||
</td> | ||
<td width="20%" align="center" rowspan="2" colspan="2"> | ||
<a href="https://www.hashicorp.com">HashiCorp</a><br><br> | ||
<a href="https://www.hashicorp.com"><img src="https://avatars1.githubusercontent.com/u/761456?s=256&v=4" width="128"></a> | ||
</td> | ||
<td width="20%" align="center" rowspan="2" colspan="2"> | ||
<a href="https://www.gitbook.com">GitBook</a><br><br> | ||
<a href="https://www.gitbook.com"><img src="https://avatars1.githubusercontent.com/u/7111340?s=256&v=4" width="128"></a> | ||
</td> | ||
<td width="20%" align="center" rowspan="2" colspan="2"> | ||
<a href="https://www.gatsbyjs.org">Gatsby</a><br><br> | ||
<a href="https://www.gatsbyjs.org"><img src="https://avatars1.githubusercontent.com/u/12551863?s=256&v=4" width="128"></a> | ||
</td> | ||
</tr> | ||
<tr valign="middle"> | ||
</tr> | ||
<tr valign="middle"> | ||
<td width="20%" align="center" rowspan="2" colspan="2"> | ||
<a href="https://www.netlify.com">Netlify</a><br><br> | ||
<!--OC has a sharper image--> | ||
<a href="https://www.netlify.com"><img src="https://images.opencollective.com/netlify/4087de2/logo/256.png" width="128"></a> | ||
</td> | ||
<td width="10%" align="center"> | ||
<a href="https://www.coinbase.com">Coinbase</a><br><br> | ||
<a href="https://www.coinbase.com"><img src="https://avatars1.githubusercontent.com/u/1885080?s=256&v=4" width="64"></a> | ||
</td> | ||
<td width="10%" align="center"> | ||
<a href="https://themeisle.com">ThemeIsle</a><br><br> | ||
<a href="https://themeisle.com"><img src="https://avatars1.githubusercontent.com/u/58979018?s=128&v=4" width="64"></a> | ||
</td> | ||
<td width="10%" align="center"> | ||
<a href="https://expo.io">Expo</a><br><br> | ||
<a href="https://expo.io"><img src="https://avatars1.githubusercontent.com/u/12504344?s=128&v=4" width="64"></a> | ||
</td> | ||
<td width="10%" align="center"> | ||
<a href="https://boostnote.io">Boost Note</a><br><br> | ||
<a href="https://boostnote.io"><img src="https://images.opencollective.com/boosthub/6318083/logo/128.png" width="64"></a> | ||
</td> | ||
<td width="10%" align="center"> | ||
<a href="https://markdown.space">Markdown Space</a><br><br> | ||
<a href="https://markdown.space"><img src="https://images.opencollective.com/markdown-space/e1038ed/logo/128.png" width="64"></a> | ||
</td> | ||
<td width="10%" align="center"> | ||
<a href="https://www.holloway.com">Holloway</a><br><br> | ||
<a href="https://www.holloway.com"><img src="https://avatars1.githubusercontent.com/u/35904294?s=128&v=4" width="64"></a> | ||
</td> | ||
<td width="10%"></td> | ||
<td width="10%"></td> | ||
</tr> | ||
<tr valign="middle"> | ||
<td width="100%" align="center" colspan="8"> | ||
<br> | ||
<a href="https://opencollective.com/unified"><strong>You?</strong></a> | ||
<br><br> | ||
</td> | ||
</tr> | ||
</table> | ||
## License | ||
@@ -162,6 +265,2 @@ | ||
[ideas]: https://github.com/retextjs/ideas | ||
[awesome]: https://github.com/retextjs/awesome-retext | ||
[license]: https://github.com/retextjs/retext/blob/main/license | ||
@@ -173,4 +272,6 @@ | ||
[unified]: https://github.com/unifiedjs/unified | ||
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c | ||
[esmsh]: https://esm.sh | ||
[retext]: https://github.com/retextjs/retext | ||
@@ -180,4 +281,16 @@ | ||
[parser]: https://github.com/unifiedjs/unified#processorparser | ||
[parse-latin]: https://github.com/wooorm/parse-latin | ||
[parse-latin]: https://github.com/wooorm/parse-latin | ||
[retext-core]: https://github.com/retextjs/retext/tree/main/packages/retext | ||
[retext-dutch]: https://github.com/retextjs/retext/tree/main/packages/retext-dutch | ||
[retext-english]: https://github.com/retextjs/retext/tree/main/packages/retext-english | ||
[retext-stringify]: https://github.com/retextjs/retext/tree/main/packages/retext-stringify | ||
[typescript]: https://www.typescriptlang.org | ||
[unified]: https://github.com/unifiedjs/unified | ||
[api-retext-latin]: #unifieduseretextlatin |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
12446
3
73
290
+ Added@types/nlcst@2.0.3(transitive)
+ Added@types/unist@3.0.3(transitive)
+ Addeddequal@2.0.3(transitive)
+ Addeddevlop@1.1.0(transitive)
+ Addednlcst-to-string@4.0.0(transitive)
+ Addedparse-latin@7.0.0(transitive)
+ Addedunified@11.0.5(transitive)
+ Addedunist-util-modify-children@4.0.0(transitive)
+ Addedunist-util-stringify-position@4.0.0(transitive)
+ Addedunist-util-visit-children@3.0.0(transitive)
+ Addedvfile@6.0.3(transitive)
+ Addedvfile-message@4.0.2(transitive)
- Removedunherit@^3.0.0
- Removed@types/nlcst@1.0.4(transitive)
- Removed@types/unist@2.0.11(transitive)
- Removedis-buffer@2.0.5(transitive)
- Removednlcst-to-string@3.1.1(transitive)
- Removedparse-latin@5.0.1(transitive)
- Removedunherit@3.0.1(transitive)
- Removedunified@10.1.2(transitive)
- Removedunist-util-modify-children@3.1.1(transitive)
- Removedunist-util-stringify-position@3.0.3(transitive)
- Removedunist-util-visit-children@2.0.2(transitive)
- Removedvfile@5.3.7(transitive)
- Removedvfile-message@3.1.4(transitive)
Updated@types/nlcst@^2.0.0
Updatedparse-latin@^7.0.0
Updatedunified@^11.0.0