annotatedtext-remark
TypeScript icon, indicating that this package has built-in type declarations

1.0.10 • Public • Published

annotatedtext-remark

Node.js CI

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.

Install

This package is ESM only. Node 12+ is needed to use it, and it must be imported instead of required.

npm:

npm install annotatedtext-remark

Use

build(text, options = defaults)

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) See defaults.

defaults

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);
};

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 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;

interpretmarkup(node)

Used to make sure LanguageTool knows when markup represents some form of whitespace.

License

MIT © David L. Day

Dependencies (4)

Dev Dependencies (12)

Package Sidebar

Install

npm i annotatedtext-remark

Weekly Downloads

669

Version

1.0.10

License

MIT

Unpacked Size

9.62 kB

Total Files

6

Last publish

Collaborators

  • davidlday