GitHub - syntax-tree/nlcst-emoticon-modifier: utility to support emoticons in nlcst (original) (raw)
nlcst-emoticon-modifier
nlcst utility to classify ASCII emoticons as EmoticonNode
s.
Contents
- What is this?
- When should I use this?
- Install
- Use
- API
- Types
- Compatibility
- Related
- Contribute
- License
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-emoji wraps this utility and others at a higher-level (easier) abstraction.
Install
This package is ESM only. In Node.js (version 16+), install with npm:
npm install nlcst-emoticon-modifier
In Deno with esm.sh:
import {emoticonModifier} from 'https://esm.sh/nlcst-emoticon-modifier@3'
In browsers with esm.sh:
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 identifieremoticonModifier. There is no default export.
emoticonModifier(node)
Merge emoticons in a SentenceNode
into EmoticonNode
s.
Parameters
node
(Sentence) — 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 Emoticon.
It also registers the Emoticon
node type with @types/nlcst
inSentenceContentMap
. 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
- nlcst-affix-emoticon-modifier— merge affix emoticons into the previous sentence in nlcst
- nlcst-emoji-modifier— support emoji
Contribute
See contributing.md in syntax-tree/.github for ways to get started. See support.md for ways to get help.
This project has a code of conduct. By interacting with this repository, organization, or community you agree to abide by its terms.