@nxmix/emoji-seq-match
TypeScript icon, indicating that this package has built-in type declarations

1.0.0 • Public • Published

@nxmix/emoji-seq-match

Build Status Coverage Status npm

Match Emoji combinations according to unicode emoji specification

Why

Different Emoji character combinations may visually produce different widths, for examples:

👶 + 🏼 => 👶🏼  // Base emoji with skin-tone modifier
👨 + 👩 + 👧 + 👦  => 👨‍👩‍👧‍👦  // Emoji characters joined with zero-witdh joiner (\u0200d)

Emoji Sequences, v11.0 defines these combinations.

The reason for creating this module is that I need to get the visual width of a string in terminal application to calculate the cursor's movement distance. To achieve this, I have to first create a method to find out if a string insludes a specification-defined Emoji combination.

Please noe that different terminal apps have different levels of implementation of the specification, including even the latest macOS Terminal.

Usage

Install

npm i @nxmix/emoji-seq-match --save

Typescript definition file is already included.

EXAMPLES

const getMatchedLength = require('@nxmix/emoji-seq-match').default;

getMatchedLength('👶🏼');
//=> 2

getMatchedLength('🐶🏼'); // puppy does not have skin tone combination" 
//=> 0

getMatchedLength("👶🏽👩‍👩‍👦‍👦", 2); // from a 'start' postion to match
//=> 7, 'start' is counted by character not visual width

getMatchedLength(['👶', '🏼']); // also accepts an array of strings
// => 2

Using ES2015w Modules:

import getMatchedLength from '@nxmix/emoji-seq-match';

getMatchedLength('👶🏼');
//=> 2

Tool

Running npm run parse-spec will download the specification files from http://unicode.org/Public/emoji/11.0/ and place the converted json files in the ./emoji-sequences directory.

Package Sidebar

Install

npm i @nxmix/emoji-seq-match

Weekly Downloads

2,856

Version

1.0.0

License

MIT

Unpacked Size

292 kB

Total Files

8

Last publish

Collaborators

  • jacobbubu
  • nxdeploy
  • zhengle