-
-
Save josephdburdick/cc573e33f9b6d073c70e325102bd1d3e to your computer and use it in GitHub Desktop.
Replace dumb quotes with smart quotes, double dashes with an em dash, and three dots with an ellipsis.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Make punctuation smarter | |
jQuery.fn.smarten = (function() { | |
function smartenNode(node) { | |
if (node.nodeType === 3) { | |
node.data = node.data | |
.replace(/(^|[-\u2014/(\[{"\s])'/g, "$1\u2018") // Opening singles | |
.replace(/'/g, "\u2019") // Closing singles & apostrophes | |
.replace(/(^|[-\u2014/(\[{\u2018\s])"/g, "$1\u201c") // Opening doubles | |
.replace(/"/g, "\u201d") // Closing doubles | |
.replace(/--/g, "\u2014") // Em dashes | |
.replace(/\.{3}/g, "\u2026"); // Ellipsis | |
} else if (node.nodeType === 1) { | |
if (node = node.firstChild) do { | |
smartenNode(node); | |
} while (node = node.nextSibling); | |
} | |
} | |
return function() { | |
return this.each(function(){ | |
smartenNode(this); | |
}); | |
}; | |
}()); | |
// Instantiation | |
$('body').smarten(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment