Socket
Socket
Sign inDemoInstall

nonplain-md-link

Package Overview
Dependencies
16
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    nonplain-md-link

Tools for markdown links in nonplain files


Version published
Weekly downloads
1
decreased by-90%
Maintainers
1
Created
Weekly downloads
 

Readme

Source

Tools for markdown links in nonplain files.

What this library does

Markdown files often contain markdown-style links, which look like this:

[link inner text](/path/to/some/file/or/site)

They can also sometimes contain wiki-style links when used for notetaking. Wiki-style links look like this:

[[/path/to/some/file/or/site]]

The concept: provide a tool for gathering and working with markdown and wiki-style links within nonplain files.

Once these links are gathered, they can be analyzed and selectively edited to accomplish various goals such as:

  • converting links to HTML
  • re-basing links to work on your personal website
  • listing all forward links in a file
  • calculating backlinks for a file

...and more.

API

Initialization

To parse a link, pass it as a string to the Link class upon initialization:

const Link = require("nonplain-md-link").default;

const markdownLink = new Link('[my markdown link](/path/to/file.md)');
const wikiLink = new Link('[[/path/to/file.md]]');

console.log(markdownLink);

// Output:
//
// {
//   "initialStyle": "markdown",
//   "innerText": "my markdown link",
//   "path": "/path/to/file.md",
// }

console.log(wikiLink);

// Output:
//
// {
//   "initialStyle": "wiki",
//   "innerText": "/path/to/file.md",
//   "path": "/path/to/file.md",
// }

Once a link is parsed, its contents can be used to construct new links.

Link.collectAllLinksFromContent()

Returns Link instances for all markdown and wiki-style links within a given string.

const Link = require("nonplain-md-link").default;
const { File } = require("nonplain");

const file = new File().load('/path/to/file.md');

const linksInFileBody = Link.collectAllLinksFromContent(file.body);

console.log(linksInFileBody);

// Output:
//
// [
//   {
//     "initialStyle": "markdown",
//     "innerText": "as discussed in class",
//     "path": "../notes/CS231n notes.md"
//   },
//   {
//     "initialStyle": "markdown",
//     "innerText": "descending the loss gradient",
//     "path": "https://en.wikipedia.org/wiki/Gradient_descent"
//   },
//   {
//     "initialStyle": "wiki",
//     "innerText": "How to backpropagate",
//     "path": "How to backpropagate"
//   }
// ]

Link.detectLinkStyle()

Returns the link style ('markdown' or 'wiki') of a provided string.

const markdownLink = new Link('[my markdown link](/path/to/file.md)');
const wikiLink = new Link('[[/path/to/file.md]]');

console.log(Link.detectLinkStyle(markdownLink));

// Output:
//
// 'markdown'

console.log(Link.detectLinkStyle(markdownLink));

// Output:
//
// 'wiki'

Link.prototype.composeHTML()

link.composeHTML([attributesStr])

Returns an HTML string based on the current Link instance. The optional argument attributesStr inserts custom attributes after the href attribute.

const link = new Link('[my markdown link](/path/to/file.md)');

console.log(link.composeHTML());

// Output:
//
// '<a href="/path/to/file.md">my markdown link</a>'

const externalLinkAttributes = 'target="_blank" rel="noreferrer"';
console.log(link.composeHTML(externalLinkAttributes));

// Output:
//
// '<a href="/path/to/file.md" target="_blank" rel="noreferrer">my markdown link</a>'

Link.prototype.composeMarkdown()

link.composeMarkdown()

Returns a markdown link based on the current Link instance.

const link = new Link('[my markdown link](/path/to/file.md)');

console.log(link.composeMarkdown());

// Output:
//
// '[my markdown link](/path/to/file.md)'

Link.prototype.composeWiki()

link.composeWiki()

Returns a wiki-style link based on the current Link instance.

const link = new Link('[my markdown link](/path/to/file.md)');

console.log(link.composeWiki());

// Output:
//
// '[[/path/to/file.md]]'

Regex

This library exports an object containing useful regex patterns for extracting markdown and wiki-style links from string content. To use these patterns, import regex from this package:

const { regex } = require("nonplain-md-link");

Contributing

These tools are in progress. If your use-case requires specific functionality from this library, please contact me and we'll see what we can do together. Thanks!

FAQs

Last updated on 14 Mar 2021

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc