aamoji 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +62 -0
- package/ascii-map.js +235 -0
- package/index.js +76 -0
- package/package.json +25 -0
package/README.md
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# aamoji
|
|
2
|
+
|
|
3
|
+
Return an ASCII representation for each emoji.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```sh
|
|
8
|
+
npm install aamoji
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
```js
|
|
14
|
+
const aamoji = require('aamoji');
|
|
15
|
+
|
|
16
|
+
aamoji('๐'); // ':D'
|
|
17
|
+
aamoji('โค๏ธ'); // '<3'
|
|
18
|
+
aamoji('๐'); // '(b)'
|
|
19
|
+
aamoji('๐ฆ'); // '(unicorn)'
|
|
20
|
+
|
|
21
|
+
// Unknown emoji returns itself by default.
|
|
22
|
+
aamoji('๐ซฅ'); // '๐ซฅ'
|
|
23
|
+
aamoji('๐ซฅ', '?'); // '?' (with fallback)
|
|
24
|
+
|
|
25
|
+
// Replace every known emoji inside a string.
|
|
26
|
+
aamoji.replace('hello ๐ world โค๏ธ');
|
|
27
|
+
// 'hello :D world <3'
|
|
28
|
+
|
|
29
|
+
// Check whether a mapping exists.
|
|
30
|
+
aamoji.has('๐'); // true
|
|
31
|
+
|
|
32
|
+
// Get the full map.
|
|
33
|
+
aamoji.all(); // { '๐': ':D', ... }
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## API
|
|
37
|
+
|
|
38
|
+
### `aamoji(emoji, fallback?)`
|
|
39
|
+
|
|
40
|
+
Returns the ASCII string for `emoji`. If the emoji is not in the map, returns
|
|
41
|
+
`fallback` when provided, otherwise the original emoji.
|
|
42
|
+
|
|
43
|
+
### `aamoji.replace(str)`
|
|
44
|
+
|
|
45
|
+
Replaces every known emoji in `str` with its ASCII equivalent. Unknown
|
|
46
|
+
characters are left untouched.
|
|
47
|
+
|
|
48
|
+
### `aamoji.has(emoji)`
|
|
49
|
+
|
|
50
|
+
Returns `true` if the emoji has a mapping.
|
|
51
|
+
|
|
52
|
+
### `aamoji.all()`
|
|
53
|
+
|
|
54
|
+
Returns a shallow copy of the full emoji-to-ASCII map.
|
|
55
|
+
|
|
56
|
+
### `aamoji.map`
|
|
57
|
+
|
|
58
|
+
The underlying map object (do not mutate).
|
|
59
|
+
|
|
60
|
+
## License
|
|
61
|
+
|
|
62
|
+
MIT
|
package/ascii-map.js
ADDED
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// Mapping of common emojis to ASCII representations.
|
|
4
|
+
const asciiMap = {
|
|
5
|
+
'๐': ':D',
|
|
6
|
+
'๐': ':D',
|
|
7
|
+
'๐': ':D',
|
|
8
|
+
'๐': '=D',
|
|
9
|
+
'๐': 'XD',
|
|
10
|
+
'๐
': '^_^;',
|
|
11
|
+
'๐คฃ': 'XDD',
|
|
12
|
+
'๐': ":')",
|
|
13
|
+
'๐': ':)',
|
|
14
|
+
'๐': '(:',
|
|
15
|
+
'๐': ';)',
|
|
16
|
+
'๐': ':)',
|
|
17
|
+
'๐': 'O:)',
|
|
18
|
+
'๐ฅฐ': '<3',
|
|
19
|
+
'๐': ':*)',
|
|
20
|
+
'๐คฉ': '*_*',
|
|
21
|
+
'๐': ':-*',
|
|
22
|
+
'๐': ':*',
|
|
23
|
+
'๐': ':*',
|
|
24
|
+
'๐': ':*',
|
|
25
|
+
'๐': ':P',
|
|
26
|
+
'๐': ':P',
|
|
27
|
+
'๐': ';P',
|
|
28
|
+
'๐คช': 'xP',
|
|
29
|
+
'๐': 'xP',
|
|
30
|
+
'๐ค': '$_$',
|
|
31
|
+
'๐ค': '>:)',
|
|
32
|
+
'๐ค': ':?',
|
|
33
|
+
'๐ค': ':X',
|
|
34
|
+
'๐คจ': ':/',
|
|
35
|
+
'๐': ':|',
|
|
36
|
+
'๐': '-_-',
|
|
37
|
+
'๐ถ': ':x',
|
|
38
|
+
'๐': ';)',
|
|
39
|
+
'๐': ':/',
|
|
40
|
+
'๐': '-_-',
|
|
41
|
+
'๐ฌ': ':E',
|
|
42
|
+
'๐คฅ': ':-)',
|
|
43
|
+
'๐': 'u_u',
|
|
44
|
+
'๐': ':(',
|
|
45
|
+
'๐ช': '-.-',
|
|
46
|
+
'๐คค': ":'P",
|
|
47
|
+
'๐ด': 'Zzz',
|
|
48
|
+
'๐ท': ':-#',
|
|
49
|
+
'๐ค': ':-S',
|
|
50
|
+
'๐ค': ':-S',
|
|
51
|
+
'๐คข': ':-&',
|
|
52
|
+
'๐คฎ': ':-X',
|
|
53
|
+
'๐คง': ':-{',
|
|
54
|
+
'๐ฅต': '>_<',
|
|
55
|
+
'๐ฅถ': '*_*',
|
|
56
|
+
'๐ฅด': '@_@',
|
|
57
|
+
'๐ต': 'X_X',
|
|
58
|
+
'๐คฏ': 'O_O!',
|
|
59
|
+
'๐ค ': ':-D',
|
|
60
|
+
'๐ฅณ': ':D*',
|
|
61
|
+
'๐': 'B)',
|
|
62
|
+
'๐ค': '8)',
|
|
63
|
+
'๐ง': ':-?',
|
|
64
|
+
'๐': ':/',
|
|
65
|
+
'๐': ':(',
|
|
66
|
+
'๐': ':(',
|
|
67
|
+
'โน๏ธ': ':(',
|
|
68
|
+
'๐ฎ': ':o',
|
|
69
|
+
'๐ฏ': ':o',
|
|
70
|
+
'๐ฒ': ':O',
|
|
71
|
+
'๐ณ': ':$',
|
|
72
|
+
'๐ฅบ': ":'(",
|
|
73
|
+
'๐ฆ': 'D:',
|
|
74
|
+
'๐ง': 'D:',
|
|
75
|
+
'๐จ': 'D:',
|
|
76
|
+
'๐ฐ': "D':",
|
|
77
|
+
'๐ฅ': ":'(",
|
|
78
|
+
'๐ข': ":'(",
|
|
79
|
+
'๐ญ': ":'((",
|
|
80
|
+
'๐ฑ': 'D:<',
|
|
81
|
+
'๐': '>_<',
|
|
82
|
+
'๐ฃ': '>_<',
|
|
83
|
+
'๐': ':(',
|
|
84
|
+
'๐': ":'|",
|
|
85
|
+
'๐ฉ': 'X(',
|
|
86
|
+
'๐ซ': 'X(',
|
|
87
|
+
'๐ฅฑ': '(=_=)',
|
|
88
|
+
'๐ค': '>:|',
|
|
89
|
+
'๐ก': '>:(',
|
|
90
|
+
'๐ ': '>:(',
|
|
91
|
+
'๐คฌ': '#@!',
|
|
92
|
+
'๐': '}:)',
|
|
93
|
+
'๐ฟ': '}:(',
|
|
94
|
+
'๐': 'X_X',
|
|
95
|
+
'โ ๏ธ': 'X_X',
|
|
96
|
+
'๐ฉ': '~~',
|
|
97
|
+
'๐คก': ':o)',
|
|
98
|
+
'๐น': '>:E',
|
|
99
|
+
'๐บ': '>:(',
|
|
100
|
+
'๐ป': 'Boo!',
|
|
101
|
+
'๐ฝ': '(o.o)',
|
|
102
|
+
'๐พ': '[o_o]',
|
|
103
|
+
'๐ค': '[:|]',
|
|
104
|
+
'โค๏ธ': '<3',
|
|
105
|
+
'๐งก': '<3',
|
|
106
|
+
'๐': '<3',
|
|
107
|
+
'๐': '<3',
|
|
108
|
+
'๐': '<3',
|
|
109
|
+
'๐': '<3',
|
|
110
|
+
'๐ค': '</3',
|
|
111
|
+
'๐ค': '<3',
|
|
112
|
+
'๐ค': '<3',
|
|
113
|
+
'๐': '</3',
|
|
114
|
+
'โฃ๏ธ': '<3!',
|
|
115
|
+
'๐': '<3<3',
|
|
116
|
+
'๐': '<3~',
|
|
117
|
+
'๐': '<3*',
|
|
118
|
+
'๐': '<3+',
|
|
119
|
+
'๐': '*<3*',
|
|
120
|
+
'๐': '<-3',
|
|
121
|
+
'๐': '[<3]',
|
|
122
|
+
'๐': '(b)',
|
|
123
|
+
'๐': '(n)',
|
|
124
|
+
'๐': '(ok)',
|
|
125
|
+
'โ๏ธ': '(v)',
|
|
126
|
+
'๐ค': '(x)',
|
|
127
|
+
'๐ค': '(call)',
|
|
128
|
+
'๐': '(wave)',
|
|
129
|
+
'๐': '\\o/',
|
|
130
|
+
'๐': '*clap*',
|
|
131
|
+
'๐': '_/\\_',
|
|
132
|
+
'๐ช': '(flex)',
|
|
133
|
+
'๐ค': '(shake)',
|
|
134
|
+
'โ': '(fist)',
|
|
135
|
+
'๐': '(punch)',
|
|
136
|
+
'โ๏ธ': '(*)',
|
|
137
|
+
'๐': '(C',
|
|
138
|
+
'โญ': '*',
|
|
139
|
+
'๐': '*+*',
|
|
140
|
+
'โจ': '*~*',
|
|
141
|
+
'โก': '/\\/',
|
|
142
|
+
'๐ฅ': '(fire)',
|
|
143
|
+
'๐ง': "o'",
|
|
144
|
+
'๐': '(rainbow)',
|
|
145
|
+
'โ๏ธ': '(cloud)',
|
|
146
|
+
'โ': '(rain)',
|
|
147
|
+
'โ๏ธ': '*snow*',
|
|
148
|
+
'โ': '(snowman)',
|
|
149
|
+
'๐': '(O)',
|
|
150
|
+
'๐': '(O)',
|
|
151
|
+
'๐': '(O)',
|
|
152
|
+
'๐': '(apple)',
|
|
153
|
+
'๐': '(orange)',
|
|
154
|
+
'๐': '(banana)',
|
|
155
|
+
'๐': '(strawberry)',
|
|
156
|
+
'๐': '(watermelon)',
|
|
157
|
+
'๐': '(grapes)',
|
|
158
|
+
'๐': '(pizza)',
|
|
159
|
+
'๐': '(burger)',
|
|
160
|
+
'๐': '(fries)',
|
|
161
|
+
'๐ฎ': '(taco)',
|
|
162
|
+
'๐ฃ': '(sushi)',
|
|
163
|
+
'๐ฉ': '(donut)',
|
|
164
|
+
'๐ช': '(cookie)',
|
|
165
|
+
'๐': '(cake)',
|
|
166
|
+
'โ': '(coffee)',
|
|
167
|
+
'๐บ': '(beer)',
|
|
168
|
+
'๐ท': '(wine)',
|
|
169
|
+
'๐ถ': '(dog)',
|
|
170
|
+
'๐ฑ': '(cat)',
|
|
171
|
+
'๐ญ': '(mouse)',
|
|
172
|
+
'๐ฐ': '(bunny)',
|
|
173
|
+
'๐ฆ': '(fox)',
|
|
174
|
+
'๐ป': '(bear)',
|
|
175
|
+
'๐ผ': '(panda)',
|
|
176
|
+
'๐จ': '(koala)',
|
|
177
|
+
'๐ฏ': '(tiger)',
|
|
178
|
+
'๐ฆ': '(lion)',
|
|
179
|
+
'๐ฎ': '(cow)',
|
|
180
|
+
'๐ท': '(pig)',
|
|
181
|
+
'๐ธ': '(frog)',
|
|
182
|
+
'๐ต': '(monkey)',
|
|
183
|
+
'๐': 'see-no',
|
|
184
|
+
'๐': 'hear-no',
|
|
185
|
+
'๐': 'speak-no',
|
|
186
|
+
'๐ฆ': '(unicorn)',
|
|
187
|
+
'๐': '(chicken)',
|
|
188
|
+
'๐ง': '(penguin)',
|
|
189
|
+
'๐ฆ': '(bird)',
|
|
190
|
+
'๐': '(bee)',
|
|
191
|
+
'๐ฆ': '(butterfly)',
|
|
192
|
+
'๐ข': '(turtle)',
|
|
193
|
+
'๐': '~S~',
|
|
194
|
+
'๐': '(octopus)',
|
|
195
|
+
'๐ณ': '(whale)',
|
|
196
|
+
'๐ฌ': '(dolphin)',
|
|
197
|
+
'๐': '><(((>',
|
|
198
|
+
'๐': '(car)',
|
|
199
|
+
'๐': '(taxi)',
|
|
200
|
+
'๐': '(bus)',
|
|
201
|
+
'๐': '(ambulance)',
|
|
202
|
+
'๐': '(firetruck)',
|
|
203
|
+
'๐ฒ': '(bike)',
|
|
204
|
+
'โ๏ธ': '(plane)',
|
|
205
|
+
'๐': '(rocket)',
|
|
206
|
+
'๐ธ': '(ufo)',
|
|
207
|
+
'โฝ': '(o)',
|
|
208
|
+
'๐': '(O)',
|
|
209
|
+
'๐ฎ': '(gamepad)',
|
|
210
|
+
'๐ฒ': '[::]',
|
|
211
|
+
'๐ต': '(note)',
|
|
212
|
+
'๐ถ': '(notes)',
|
|
213
|
+
'๐ธ': '(guitar)',
|
|
214
|
+
'๐ค': '(mic)',
|
|
215
|
+
'๐ฑ': '[phone]',
|
|
216
|
+
'๐ป': '[laptop]',
|
|
217
|
+
'โจ๏ธ': '[keyboard]',
|
|
218
|
+
'๐ฅ๏ธ': '[pc]',
|
|
219
|
+
'๐ท': '[camera]',
|
|
220
|
+
'๐ก': '(idea)',
|
|
221
|
+
'๐': '-o<',
|
|
222
|
+
'๐': '[lock]',
|
|
223
|
+
'โ๏ธ': '[mail]',
|
|
224
|
+
'๐ฆ': '[box]',
|
|
225
|
+
'โ
': '[x]',
|
|
226
|
+
'โ': '[X]',
|
|
227
|
+
'โ ๏ธ': '(!)',
|
|
228
|
+
'โ': '(?)',
|
|
229
|
+
'โ': '(!)',
|
|
230
|
+
'๐ฏ': '100',
|
|
231
|
+
'๐': '*party*',
|
|
232
|
+
'๐': '[gift]'
|
|
233
|
+
};
|
|
234
|
+
|
|
235
|
+
module.exports = asciiMap;
|
package/index.js
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const asciiMap = require('./ascii-map.js');
|
|
4
|
+
|
|
5
|
+
function escapeRegex(str) {
|
|
6
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
// Build a single regex matching any mapped emoji. Sort by length descending so
|
|
10
|
+
// multi-codepoint emojis (e.g. 'โค๏ธ' = U+2764 + U+FE0F) match before shorter
|
|
11
|
+
// variants ('โค').
|
|
12
|
+
const replaceRegex = new RegExp(
|
|
13
|
+
Object.keys(asciiMap)
|
|
14
|
+
.sort((a, b) => b.length - a.length)
|
|
15
|
+
.map(escapeRegex)
|
|
16
|
+
.join('|'),
|
|
17
|
+
'g'
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Convert a single emoji to its ASCII representation.
|
|
22
|
+
*
|
|
23
|
+
* @param {string} emoji - The emoji character.
|
|
24
|
+
* @param {string} [fallback] - Optional fallback when the emoji is unknown.
|
|
25
|
+
* Defaults to the original emoji string.
|
|
26
|
+
* @returns {string} ASCII representation, or the fallback if not mapped.
|
|
27
|
+
*/
|
|
28
|
+
function aamoji(emoji, fallback) {
|
|
29
|
+
if (typeof emoji !== 'string') {
|
|
30
|
+
throw new TypeError('aamoji: expected a string');
|
|
31
|
+
}
|
|
32
|
+
if (Object.prototype.hasOwnProperty.call(asciiMap, emoji)) {
|
|
33
|
+
return asciiMap[emoji];
|
|
34
|
+
}
|
|
35
|
+
return fallback === undefined ? emoji : fallback;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Replace every known emoji in a string with its ASCII equivalent.
|
|
40
|
+
*
|
|
41
|
+
* @param {string} input - Source string that may contain emojis.
|
|
42
|
+
* @returns {string} String with mapped emojis replaced by ASCII.
|
|
43
|
+
*/
|
|
44
|
+
function replace(input) {
|
|
45
|
+
if (typeof input !== 'string') {
|
|
46
|
+
throw new TypeError('aamoji.replace: expected a string');
|
|
47
|
+
}
|
|
48
|
+
return input.replace(replaceRegex, (match) => asciiMap[match]);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Check whether an emoji has an ASCII mapping.
|
|
53
|
+
*
|
|
54
|
+
* @param {string} emoji
|
|
55
|
+
* @returns {boolean}
|
|
56
|
+
*/
|
|
57
|
+
function has(emoji) {
|
|
58
|
+
return Object.prototype.hasOwnProperty.call(asciiMap, emoji);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Get a shallow copy of the full emoji-to-ASCII map.
|
|
63
|
+
*
|
|
64
|
+
* @returns {Record<string, string>}
|
|
65
|
+
*/
|
|
66
|
+
function all() {
|
|
67
|
+
return { ...asciiMap };
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
aamoji.replace = replace;
|
|
71
|
+
aamoji.has = has;
|
|
72
|
+
aamoji.all = all;
|
|
73
|
+
aamoji.map = asciiMap;
|
|
74
|
+
|
|
75
|
+
module.exports = aamoji;
|
|
76
|
+
module.exports.default = aamoji;
|
package/package.json
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "aamoji",
|
|
3
|
+
"version": "0.0.0",
|
|
4
|
+
"description": "Returns an ASCII representation for each emoji.",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"exports": {
|
|
7
|
+
".": "./index.js"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"index.js",
|
|
11
|
+
"ascii-map.js",
|
|
12
|
+
"README.md"
|
|
13
|
+
],
|
|
14
|
+
"keywords": [
|
|
15
|
+
"emoji",
|
|
16
|
+
"ascii",
|
|
17
|
+
"aamoji",
|
|
18
|
+
"ascii-art",
|
|
19
|
+
"emoticon"
|
|
20
|
+
],
|
|
21
|
+
"license": "MIT",
|
|
22
|
+
"scripts": {
|
|
23
|
+
"test": "node test.js"
|
|
24
|
+
}
|
|
25
|
+
}
|