nlcst-emoticon-modifier

nlcst utility to support emoticons in nlcst

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
nlcst-emoticon-modifier
203.0.19 months ago9 years agoMinified + gzip package size for nlcst-emoticon-modifier in KB

Readme

nlcst-emoticon-modifier
!Buildbuild-badgebuild !Coveragecoverage-badgecoverage !Downloadsdownloads-badgedownloads !Sizesize-badgesize !Sponsorssponsors-badgecollective !Backersbackers-badgecollective !Chatchat-badgechat
nlcst utility to classify ASCII emoticonwooorm-emoticons as EmoticonNodes.

Contents

*   [`emoticonModifier(node)`](#emoticonmodifiernode)
*   [`Emoticon`](#emoticon)

What is this?

This utility searches for emoticons made with punctuation marks and symbols, and turns them into separate nodes.

When should I use this?

This package is a tiny utility that helps when dealing with plain-text emoticons 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 16+), install with npm:
npm install nlcst-emoticon-modifier

In Deno with esm.shesmsh:
import {emoticonModifier} from 'https://esm.sh/nlcst-emoticon-modifier@3'

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

Use

import {emoticonModifier} from 'nlcst-emoticon-modifier'
import {ParseEnglish} from 'parse-english'
import {inspect} from 'unist-util-inspect'

const parser = new ParseEnglish()
parser.tokenizeSentencePlugins.unshift(emoticonModifier)

const sentence = parser.parse('This makes me feel :).').children[0].children[0]

console.log(inspect(sentence))

Yields:
SentenceNode[10] (1:1-1:23, 0-22)
├─0 WordNode[1] (1:1-1:5, 0-4)
│   └─0 TextNode "This" (1:1-1:5, 0-4)
├─1 WhiteSpaceNode " " (1:5-1:6, 4-5)
├─2 WordNode[1] (1:6-1:11, 5-10)
│   └─0 TextNode "makes" (1:6-1:11, 5-10)
├─3 WhiteSpaceNode " " (1:11-1:12, 10-11)
├─4 WordNode[1] (1:12-1:14, 11-13)
│   └─0 TextNode "me" (1:12-1:14, 11-13)
├─5 WhiteSpaceNode " " (1:14-1:15, 13-14)
├─6 WordNode[1] (1:15-1:19, 14-18)
│   └─0 TextNode "feel" (1:15-1:19, 14-18)
├─7 WhiteSpaceNode " " (1:19-1:20, 18-19)
├─8 EmoticonNode ":)" (1:20-1:22, 19-21)
└─9 PunctuationNode "." (1:22-1:23, 21-22)

API

This package exports the identifier emoticonModifierapi-emoticon-modifier. There is no default export.

emoticonModifier(node)

Merge emoticons in a SentenceNode into EmoticonNodes.
Parameters
— nlcst sentence to transform
Returns
Nothing (undefined).

Emoticon

Emoticon node (TypeScript type).
Type
import type {Data, Literal} from 'nlcst'

interface Emoticon extends Literal {
  type: 'EmoticonNode'
  data?: EmoticonData | undefined
}

interface EmoticonData extends Data {}

Types

This package is fully typed with TypeScript. It exports the additional type Emoticonapi-emoticon.
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-emoticon-modifier')}
 */

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

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

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

Compatibility

Projects maintained by the unified collective are compatible with maintained versions of Node.js.
When we cut a new major release, we drop support for unmaintained versions of Node. This means we try to keep the current release line, nlcst-emoticon-modifier@^3, compatible with Node.js 16.

Related

— merge affix emoticons into the previous sentence in nlcst
— support emoji

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