npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

markdown-it-wordless

v1.1.1

Published

A markdown-it plugin for wordless languages line-break.

Downloads

21

Readme

Markdown-it Wordless

Documentation in: English | 简体中文

A markdown-it plugin to optimize wordless multi-language line-break render.

When a paragraph is long in markdown, we usually separate them into lines, and it will finally be rendered into a single line inside HTML. But for wordless languages (such as Chinese and Japanese), they do not use spaces to separate words, that they don't need a space to be added when processing line-break.

If you are only working with a single wordless language, you can definitely use the following code, which will disable all spaces when line break (render single \n into an empty string rather than a space):

import md from "markdown-it"
md.renderer.rules.softbreak = () => "" // [!code focus]

But once working with multi-languages, especially when there's a mix of wordless and wordful languages, such as using Chinese and English in a single markdown document, such options cannot handle all cases. So here comes this "markdown-it-wordless" plugin, and you can use it like this:

import md from "markdown-it"
import {Options} from "markdown-it-wordless"
md.use(wordless) // [!code focus]

Basic rules

  1. Wordful languages (such as English and Arabic) will be rendered as usual.
  2. It won't add a space when line break between the same wordless language.
  3. It will add a space when line break between different wordless languages.
  4. Specially, Chinese and Japanese will be treated as a same language, as there are many shared characters between them, and their character styles are almost the same.
  5. Although Korean characters are like Chinese and Japanese (CJK), Korean is not a wordless language, it uses spaces to separate words.

Use it with VitePress

VitePress is an excellent static site generator, and this package is also inspired when the author using VitePress. It's strongly recommended to add such plugin to VitePress if you are using wordless languages. And here's how to config:

// <root>/.vitepress/config.ts
import {defineConfig} from "vitepress"
import {wordless} from "markdown-it-wordless"

export default defineConfig({
  markdown: {
    config(md) {
      md.use(wordless) // [!code focus]
    },
  },
  // Other configs...
})

Customize to optimize performance

The default option will enable optimization for all registered wordless languages inside this package. If you want to optimize performance, you can specify what exactly wordless language you are using. You may also specify what wordful language you are using, because there's only optimization for wordful languages which unicode is less than 0x0dff.

Here's a simple example if you will only use Chinese or Japanese as wordless languages:

import md from "markdown-it"
import {wordless, chineseAndJapanese, Options} from "markdown-it-wordless"
md.use<Options>(wordless, {supportWordless: [chineseAndJapanese]}) // [!code focus]

Such optimization is unnecessary in most cases, because this plugin will not slow down the rendering process a lot in common cases (only a few milliseconds). And if you do want to customize, please make sure you've understand the source code. Please refer to data.ts for more details, and here's documentation for each item in details.

About the supported languages

You can find all supported languages in the source code of data.ts. Each language or language series is an exported const that you can import and call.

The languages series are based on the Unicode. Most of the languages are coded manually and some of them are generated by several AI models. So that there might be mistakes, and the author cannot guarantee the accuracy of the data because it's almost impossible for a single person to learn all such languages.

If you are native speaker of one of the those wordless languages and you find there are some mistakes, or if there's even some wordless languages not included in this package, please feel free to open an issue.