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 ''+token.raw+''; + } 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 :cat:'); + done(); + }); + }); +});