A lightweight JavaScript library based on annotatedtext and remark-parse for converting markdown documents into an annotated text format consumable by LanguageTool as AnnotatedText.
npm install annotatedtext-remark
A lightweight JavaScript library based on
annotatedtext,
remark-parse,
and remark-frontmatter for
converting markdown documents into an annotated text format consumable by
LanguageTool as
AnnotatedText.
Front matter is now tagged as markup.
**This package is
ESM only.**
Node 12+ is needed to use it, and it must be imported instead of required.
npm:
``bash`
npm install annotatedtext-remark
Returns Annotated Text as described by LanguageTool's API:
`json`
{
"annotation": [
{ "text": "A " },
{ "markup": "" },
{ "text": "test" },
{ "markup": "" }
]
}
Run the object through JSON.stringfy() to get a string suitable for passing todata
LanguageTool's parameter.
`js`
import * as builder from "annotatedtext-remark";
const annotatedtext = builder.build(text);
var ltdata = JSON.stringify(annotatedtext);
- text: The text from the markup document in its original form.options
- __: (optional) See defaults.
annotatedtext-remark uses following default functions used throughout.
`js`
const defaults = {
children(node) {
return annotatedtext.defaults.children(node);
},
annotatetextnode(node) {
return annotatedtext.defaults.annotatetextnode(node);
},
interpretmarkup(text = "") {
let count = (text.match(/\n/g) || []).length;
return "\n".repeat(count);
},
remarkoptions: {
commonmark: true,
},
};
Functions can be overridden by making a copy and assigning a new function. For
example, the tests use markdown and need to interpret new lines in the markup as
new lines. The interpretmarkup function is overridden as:
`js`
var options = builder.defaults;
options.interpretmarkup = function (text) {
let count = (text.match(/\n/g) || []).length;
return "\n".repeat(count);
};
#### children(node)
Expected to return an array of child nodes.
#### annotatetextnode(node)
Expected to return a structure for a text ast node with at least the following:
- text is the natural language text from the node, devoid of all markup.offset
- contains offsets used to extract markup text from the originalstart
document.
- is the offset start of the textend
- is the offset end of the text
`json`
{
"text": "A snippet of the natural language text from the document.",
"offset": {
"start": 1,
"end": 57
}
}
If the node is not a text node, it must return null;
#### interpretmarkup(node)`
Used to make sure LanguageTool knows when markup represents some form of
whitespace.
MIT © David L. Day