|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
'use strict'; |
|
|
|
|
|
|
|
|
|
|
|
|
|
var matchHtmlRegExp = /["'&<>]/; |
|
|
|
|
|
|
|
|
|
|
|
|
|
module.exports = escapeHtml; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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; |
|
} |
|
|