(function($) { $.Redactor.prototype.textexpander = function() { return { init: function() { if (!this.opts.textexpander) return; this.$editor.on('keyup.redactor-limiter', $.proxy(function(e) { var key = e.which; if (key == this.keyCode.SPACE) { var current = this.textexpander.getCurrent(); var cloned = $(current).clone(); var $div = $('
'); $div.html(cloned); var text = $div.html(); $div.remove(); var len = this.opts.textexpander.length; var replaced = 0; for (var i = 0; i < len; i++) { var re = new RegExp(this.opts.textexpander[i][0]); if (text.search(re) != -1) { replaced++; text = text.replace(re, this.opts.textexpander[i][1]); $div = $('
'); $div.html(text); $div.append(this.selection.getMarker()); var html = $div.html().replace(/ /, ''); $(current).replaceWith(html); $div.remove(); } } if (replaced !== 0) { this.selection.restore(); } } }, this)); }, getCurrent: function() { var selection if (window.getSelection) selection = window.getSelection(); else if (document.selection && document.selection.type != "Control") selection = document.selection; if (this.utils.browser('mozilla')) { return selection.anchorNode.previousSibling; } else { return selection.anchorNode; } } }; }; })(jQuery);