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 import
ed instead of require
d.
npm:
npm install annotatedtext-remark
Returns Annotated Text as described by LanguageTool's API:
{
"annotation": [
{ "text": "A " },
{ "markup": "<b>" },
{ "text": "test" },
{ "markup": "</b>" }
]
}
Run the object through JSON.stringfy()
to get a string suitable for passing to
LanguageTool's data
parameter.
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) Seedefaults
.
annotatedtext-remark
uses following default functions used throughout.
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:
var options = builder.defaults;
options.interpretmarkup = function (text) {
let count = (text.match(/\n/g) || []).length;
return "\n".repeat(count);
};
Expected to return an array of child nodes.
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 original document.-
start
is the offset start of the text -
end
is the offset end of the text
-
{
"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
;
Used to make sure LanguageTool knows when markup represents some form of whitespace.
MIT © David L. Day