| /*! |
| * escape-html |
| * Copyright(c) 2012-2013 TJ Holowaychuk |
| * Copyright(c) 2015 Andreas Lubbe |
| * Copyright(c) 2015 Tiancheng "Timothy" Gu |
| * MIT Licensed |
| */ |
| |
| 'use strict'; |
| |
| /** |
| * Module variables. |
| * @private |
| */ |
| |
| var matchHtmlRegExp = /["'&<>]/; |
| |
| /** |
| * Module exports. |
| * @public |
| */ |
| |
| module.exports = escapeHtml; |
| |
| /** |
| * Escape special characters in the given string of html. |
| * |
| * @param {string} string The string to escape for inserting into HTML |
| * @return {string} |
| * @public |
| */ |
| |
| function escapeHtml(string) { |
| var str = '' + string; |
| var match = matchHtmlRegExp.exec(str); |
| |
| if (!match) { |
| return str; |
| } |
| |
| var escape; |
| var html = ''; |
| var index = 0; |
| var lastIndex = 0; |
| |
| for (index = match.index; index < str.length; index++) { |
| switch (str.charCodeAt(index)) { |
| case 34: // " |
| escape = '"'; |
| break; |
| case 38: // & |
| escape = '&'; |
| break; |
| case 39: // ' |
| escape = '''; |
| break; |
| case 60: // < |
| escape = '<'; |
| break; |
| case 62: // > |
| escape = '>'; |
| break; |
| default: |
| continue; |
| } |
| |
| if (lastIndex !== index) { |
| html += str.substring(lastIndex, index); |
| } |
| |
| lastIndex = index + 1; |
| html += escape; |
| } |
| |
| return lastIndex !== index |
| ? html + str.substring(lastIndex, index) |
| : html; |
| } |