diff --git a/lib/emojify.js b/lib/emojify.js
new file mode 100644
index 00000000..87ed372b
--- /dev/null
+++ b/lib/emojify.js
@@ -0,0 +1,24 @@
+"use strict";
+
+var parser = require('emojify-parser');
+
+var createHTML = function(token) {
+ if(token.type === 'emoji') {
+ return '
';
+ } else {
+ return token.raw;
+ }
+};
+
+var emojify = function(element) {
+
+ var nodeToReplace = element.childNodes[0];
+ var tokens = parser.parse(nodeToReplace.textContent);
+
+ var html = tokens.reduce(function(html, token) {
+ return html + createHTML(token);
+ }, '');
+ element.innerHTML = html;
+};
+
+module.exports = emojify;
diff --git a/package.json b/package.json
index c88c8201..7c0db012 100644
--- a/package.json
+++ b/package.json
@@ -21,6 +21,7 @@
"url": "https://github.com/hassankhan/emojify.js/issues"
},
"devDependencies": {
+ "jsdom": "^1.0.3",
"jstest": "~1.0.4",
"q": "^1.0.1",
"chai": "~1.9.1",
@@ -50,5 +51,7 @@
"android-browser/latest"
]
},
- "dependencies": {}
+ "dependencies": {
+ "emojify-parser": "git://github.com/trevorah/emojify-parser"
+ }
}
diff --git a/tests/emojify-test.js b/tests/emojify-test.js
new file mode 100644
index 00000000..93d34803
--- /dev/null
+++ b/tests/emojify-test.js
@@ -0,0 +1,18 @@
+var emojify = require('../lib/emojify');
+var jsdom = require('jsdom');
+var assert = require('assert');
+
+describe('emojify', function() {
+ it('emojifies an element', function(done) {
+ jsdom.env('hello :cat:', function(err, window) {
+ if(err) return done(err);
+
+ var el = window.document.getElementById('cat');
+
+ emojify(el);
+
+ assert.equal(el.outerHTML, 'hello
');
+ done();
+ });
+ });
+});