| /*! | 
|  * 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; | 
| } |