Launch Week Day 2: Introducing Reports: An Extensible Reporting Framework for Socket Data.Learn More
Socket
Book a DemoSign in
Socket

tiptap-word-count-multilingual

Package Overview
Dependencies
Maintainers
0
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

tiptap-word-count-multilingual

A word count extension for Tiptap, with multilingual support.

latest
npmnpm
Version
1.0.1
Version published
Weekly downloads
621
35.29%
Maintainers
0
Weekly downloads
 
Created
Source

tiptap-word-count-multilingual

Background

When counting words, the official Tiptap CharacterCount extension uses a simple method: it splits the text using text.split(' ') and counts the resulting array's length. This approach only works for languages where words are separated by spaces.

However, this method fails to accurately count words in languages like those using CJK characters, where words are not separated by spaces.

What this extension does

This extension addresses this issue by leveraging Alfaaz. As described on its page:

Alfaaz is the fastest multilingual word counter that can count millions of words per second (up to 0.9 GB/s 100x faster than RegExp based solutions). It has built-in support for CJK texts & words in many different languages such as Urdu & Arabic.

Compared to the original extension, this extension introduces one single change:

// Original extension
this.storage.words = options => {
    const node = options?.node || this.editor.state.doc
    const text = node.textBetween(0, node.content.size, ' ', ' ')
    const words = text.split(' ').filter(word => word !== '')

    return words.length
}

// This extension
import { countWords } from 'alfaaz'

this.storage.words = options => {
    const node = options?.node || this.editor.state.doc
    const text = node.textBetween(0, node.content.size, ' ', ' ')

    return countWords(text)
}

All other aspects remain identical, allowing for a seamless replacement of the original extension without significant modifications.

Installation & Usage

Install

npm install tiptap-word-count-multilingual

Usage

import WordCount from "tiptap-word-count-multilingual";

const editor = new Editor ({
    extensions: [
        Document,
        Paragraph,
        Text,
        WordCount
    ]
})

// Get the number of words for the current document.
editor.storage.characterCount.words()

// Get the number of words for a specific node.
editor.storage.characterCount.words({ node: someCustomNode })

Since this extension only modifies the word counting mechanism, all settings and storage functionalities from the official extension should still work the same way.

If you are migrating from the official extension, simply update the import statement.

Keywords

tiptap

FAQs

Package last updated on 19 Aug 2024

Did you know?

Socket

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