I am trying to execute that really nice deentityify example in Douglas Crockfords J-TBP book using jsfiddle
String.method('deentityify', function() {
// The entity table. It maps entity names to
// characters.
var entity = {
quot: '"',
lt: '<',
gt: '>'
};
// Return the deentityify method.
return function() {
// This is the deentityify method. It calls the string
// replace method, looking for substrings that start
// with '&' and end with ';'. If the characters in
// between are in the entity table, then replace the
// entity with the character from the table. It uses
// a regular expression (Chapter 7).
return this.replace(/&([^&;]+);/g, function(a, b) {
var r = entity[b];
return typeof r === 'string' ? r : a;
});
};
}());
document.writeln('<">'.deentityify()); // <">
- see http://jsfiddle.net/cspeter8/7Pjzs/2/ – and it does not work! I would expect the results pane to display ‘<“>’ but nothing shows up. Would someone like to solve the mystery?
This code-snippet depends on a bit of sugar, namely the
methodmethod, that you have to define beforehand. (It’s described early on in the book.) An online copy and explanation of it are in the “Sugar” section of Crockford’s article “Classical Inheritance in JavaScript”. It looks like this:A corrected version of your Fiddle, incorporating the above, is at http://jsfiddle.net/W9Ncd/.