Skip to content

A markdown-it plugin that parses and renders Mastodon-style #hashtags

License

Notifications You must be signed in to change notification settings

dahlia/markdown-it-hashtag

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

@fedify/markdown-it-hashtag

JSR npm GitHub Actions

This is a markdown-it plugin that parses and renders Mastodon-style #hashtags. It converts, for example, #FooBar into a link:

<a href="#FooBar"><span class="hash">#</span><span class="tag">FooBar</span></a>

The value of href attributes, other attributes (if any), and the content of the link can be customized by passing options to the plugin:

import MarkdownIt from "markdown-it";
import { hashtag, spanHashAndTag } from "@fedify/markdown-it-hashtag";

const md = new MarkdownIt();
md.use(hashtag, {
  link: (tag: string) => `https://example.com/tags/${tag.substring(1)}`,
  linkAttributes: (handle: string) => ({ class: "hashtag" }),
  label: spanHashAndTag,
});

If you want to collect all hashtags in a document, you can pass an environment object to the render() method:

const env = {};
md.render(
  "Hello, #FooBar\n\n> #BazQux",
  env,
);
console.log(env.hashtags);  // ["#FooBar", "#BazQux"]

Installation

Deno

deno add @fedify/markdown-it-hashtag

Node.js

npm add @fedify/markdown-it-hashtag

Bun

bun add @fedify/markdown-it-hashtag