nlcst-emoji-modifier

nlcst utility to support emoji

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
nlcst-emoji-modifier
205.2.02 months ago8 years agoMinified + gzip package size for nlcst-emoji-modifier in KB

Readme

nlcst-emoji-modifier
!Buildbuild-badgebuild !Coveragecoverage-badgecoverage !Downloadsdownloads-badgedownloads !Sizesize-badgesize !Sponsorssponsors-badgecollective !Backersbackers-badgecollective !Chatchat-badgechat
nlcst utility to classify emoji and gemoji shortcodes as EmoticonNodes.

Contents

*   [`emojiModifier(node)`](#emojimodifiernode)
*   [`Emoticon`](#emoticon)

What is this?

This utility searches for emoji (πŸ‘) and gemoji shortcodes (:+1:) and turns them into separate nodes.

When should I use this?

This package is a tiny utility that helps when dealing with emoji and gemoji in natural language. The plugin retext-emojiretext-emoji wraps this utility and others at a higher-level (easier) abstraction.

Install

This package is ESM onlyesm. In Node.js (version 14.14+ and 16.0+), install with npm:
npm install nlcst-emoji-modifier

In Deno with esm.shesmsh:
import {emojiModifier} from 'https://esm.sh/nlcst-emoji-modifier@5'

In browsers with esm.shesmsh:
<script type="module">
  import {emojiModifier} from 'https://esm.sh/nlcst-emoji-modifier@5?bundle'
</script>

Use

import {emojiModifier} from 'nlcst-emoji-modifier'
import {inspect} from 'unist-util-inspect'
import {ParseEnglish} from 'parse-english'

const english = new ParseEnglish()
english.tokenizeSentencePlugins.unshift(emojiModifier)

console.log(inspect(english.parse('It’s raining :cat:s and :dog:s.')))

Yields:
RootNode[1] (1:1-1:32, 0-31)
└─ ParagraphNode[1] (1:1-1:32, 0-31)
   └─ SentenceNode[11] (1:1-1:32, 0-31)
      β”œβ”€ WordNode[3] (1:1-1:5, 0-4)
      β”‚  β”œβ”€ TextNode: "It" (1:1-1:3, 0-2)
      β”‚  β”œβ”€ PunctuationNode: "’" (1:3-1:4, 2-3)
      β”‚  └─ TextNode: "s" (1:4-1:5, 3-4)
      β”œβ”€ WhiteSpaceNode: " " (1:5-1:6, 4-5)
      β”œβ”€ WordNode[1] (1:6-1:13, 5-12)
      β”‚  └─ TextNode: "raining" (1:6-1:13, 5-12)
      β”œβ”€ WhiteSpaceNode: " " (1:13-1:14, 12-13)
      β”œβ”€ EmoticonNode: ":cat:" (1:14-1:19, 13-18)
      β”œβ”€ WordNode[1] (1:19-1:20, 18-19)
      β”‚  └─ TextNode: "s" (1:19-1:20, 18-19)
      β”œβ”€ WhiteSpaceNode: " " (1:20-1:21, 19-20)
      β”œβ”€ WordNode[1] (1:21-1:24, 20-23)
      β”‚  └─ TextNode: "and" (1:21-1:24, 20-23)
      β”œβ”€ WhiteSpaceNode: " " (1:24-1:25, 23-24)
      β”œβ”€ EmoticonNode: ":dog:" (1:25-1:30, 24-29)
      └─ WordNode[2] (1:30-1:32, 29-31)
         β”œβ”€ TextNode: "s" (1:30-1:31, 29-30)
         └─ PunctuationNode: "." (1:31-1:32, 30-31)

API

This package exports the identifier emojiModifieremojimodifier. There is no default export.

emojiModifier(node)

Classify emoji (πŸ‘) and Gemoji (GitHub emoji, :+1:) in node as Emoticons.
Parameters
β€” sentence to transform
Returns
Given, transformed, node (Sentencesentence).

Emoticon

Emoticon node (TypeScript type).
See Emoticon in nlcst-emoticon-modifieremoticon-mofifier-emoticon.

Types

This package is fully typed with TypeScript. It exports the additional type Emoticonemoticon.
It also registers the Emoticon node type with @types/nlcst in SentenceContentMap. If you’re working with the syntax tree, make sure to import this utility somewhere in your types, as that registers the new node types in the tree.
/**
 * @typedef {import('nlcst-emoji-modifier')}
 */

import {visit} from 'unist-util-visit'

/** @type {import('nlcst').Root} */
const tree = getNodeSomeHow()

visit(tree, (node) => {
  // `node` can now be a `Emoticon` node.
})

Compatibility

Projects maintained by the unified collective are compatible with all maintained versions of Node.js. As of now, that is Node.js 14.14+ and 16.0+. Our projects sometimes work with older versions, but this is not guaranteed.

Related

β€” merge affix emoticons into the previous sentence in nlcst
β€” support emoticons

Contribute

See contributing.mdcontributing in syntax-tree/.githubhealth for ways to get started. See support.mdsupport for ways to get help.
This project has a code of conductcoc. By interacting with this repository, organization, or community you agree to abide by its terms.

License

MITlicense Β© Titus Wormerauthor