Projekt

Obecné

Profil

Stáhnout (1.33 KB) Statistiky
| Větev: | Revize:
1 3a515b92 cagy
/*!
2
 * escape-html
3
 * Copyright(c) 2012-2013 TJ Holowaychuk
4
 * Copyright(c) 2015 Andreas Lubbe
5
 * Copyright(c) 2015 Tiancheng "Timothy" Gu
6
 * MIT Licensed
7
 */
8
9
'use strict';
10
11
/**
12
 * Module variables.
13
 * @private
14
 */
15
16
var matchHtmlRegExp = /["'&<>]/;
17
18
/**
19
 * Module exports.
20
 * @public
21
 */
22
23
module.exports = escapeHtml;
24
25
/**
26
 * Escape special characters in the given string of html.
27
 *
28
 * @param  {string} string The string to escape for inserting into HTML
29
 * @return {string}
30
 * @public
31
 */
32
33
function escapeHtml(string) {
34
  var str = '' + string;
35
  var match = matchHtmlRegExp.exec(str);
36
37
  if (!match) {
38
    return str;
39
  }
40
41
  var escape;
42
  var html = '';
43
  var index = 0;
44
  var lastIndex = 0;
45
46
  for (index = match.index; index < str.length; index++) {
47
    switch (str.charCodeAt(index)) {
48
      case 34: // "
49
        escape = '&quot;';
50
        break;
51
      case 38: // &
52
        escape = '&amp;';
53
        break;
54
      case 39: // '
55
        escape = '&#39;';
56
        break;
57
      case 60: // <
58
        escape = '&lt;';
59
        break;
60
      case 62: // >
61
        escape = '&gt;';
62
        break;
63
      default:
64
        continue;
65
    }
66
67
    if (lastIndex !== index) {
68
      html += str.substring(lastIndex, index);
69
    }
70
71
    lastIndex = index + 1;
72
    html += escape;
73
  }
74
75
  return lastIndex !== index
76
    ? html + str.substring(lastIndex, index)
77
    : html;
78
}