Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including @paperist/remark-crossref with all npm packages installed. Try it out:

var remarkCrossref = require("@paperist/remark-crossref")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

@paperist/remark-crossref v2.0.0

wooorm/remark plugin for corss-references inspired by pandoc-crossref

@paperist/remark-crossref

LICENSE NPM standard-readme compliant

wooorm/remark plugin for corss-references inspired by pandoc-crossref

Table of Contents

Install

npm i remark @paperist/remark-crossref

Usage

const unified = require('unified');
const parser = require('remark-parse');
const crossref = require('@paperist/remark-crossref');

const markdown = `
# Heading {#sec:first}

See sec.[@sec:first].
`;

const processor = unified()
  .use(parser)
  .use(crossref);
const ast = processor.parse(markdown);

processor.run(ast).then((ast) => {
  console.dir(ast, { depth: null });
});

AST

See also mdast, unist.

CrossReferenceLabel

CrossReferenceLabel extends Literal.

interface CrossReferenceLabel extends Literal {
  type: 'crossReferenceLabel';
  label: string;
  options: { [key: string]: any };
}

For example, the following markdown:

# Heading {#sec:first}

Yields:

{
  "type": "heading",
  "depth": 1,
  "children": [
    {
      "type": "text",
      "value": "Heading "
    },
    {
      "type": "crossReferenceLabel",
      "value": "{#sec:first}",
      "label": "sec:first",
      "options": {}
    }
  ]
}

CrossReference

CrossReference extends Literal.

interface CrossReference extends Literal {
  type: 'crossReference';
  identifiers: string[];
}

For example, the following markdown:

See sec.[@sec:first;@sec:second]

Yields:

{
  "type": "paragraph",
  "children": [
    {
      "type": "text",
      "value": "See sec."
    },
    {
      "type": "crossReference",
      "value": "[@sec:first;@sec:second]",
      "identifiers": ["sec:first", "sec:second"]
    }
  ]
}

Contribute

PRs accepted.

License

MIT (c) 3846masa

RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free