-
Notifications
You must be signed in to change notification settings - Fork 1
/
escape-html.js
105 lines (89 loc) · 2.03 KB
/
escape-html.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
const replaceMap = new Map([
['<', '<'],
['>', '>'],
['"', '"'],
["'", '''],
['&', '&'],
// ['`', '`'],
// [' ', ' '],
// ['\n', '<br>'],
// ['\r', ''],
// ['\t', ' '],
]);
/**
* @param {string} input
* @returns {string}
*/
function escapeHtml(input) {
let output = ''
for (let i = 0; i < input.length; i++) {
output += replaceMap.get(input[i]) || input[i];
}
return output;
}
// // Credits: https://github.com/component/escape-html/blob/master/index.js
// /*!
// * 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 text.
// *
// * @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
// }