Sha256: 42a7f91883d0c5ce9292dda4e017e1f8664d34b09276d89fb6f3859c29d1ca9b

Contents?: true

Size: 1.33 KB

Versions: 90

Compression:

Stored size: 1.33 KB

Contents

/*!
 * 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 = '&quot;';
        break;
      case 38: // &
        escape = '&amp;';
        break;
      case 39: // '
        escape = '&#39;';
        break;
      case 60: // <
        escape = '&lt;';
        break;
      case 62: // >
        escape = '&gt;';
        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;
}

Version data entries

90 entries across 89 versions & 16 rubygems

Version Path
sumomo-0.10.8 data/sumomo/api_modules/node_modules/escape-html/index.js
optimacms-0.1.61 spec/dummy/node_modules/escape-html/index.js
sumomo-0.10.4 data/sumomo/api_modules/node_modules/escape-html/index.js
sumomo-0.10.3 data/sumomo/api_modules/node_modules/escape-html/index.js
sumomo-0.10.2 data/sumomo/api_modules/node_modules/escape-html/index.js
sumomo-0.10.1 data/sumomo/api_modules/node_modules/escape-html/index.js
sumomo-0.10.0 data/sumomo/api_modules/node_modules/escape-html/index.js
sumomo-0.9.0 data/sumomo/api_modules/node_modules/escape-html/index.js
sumomo-0.8.22 data/sumomo/api_modules/node_modules/escape-html/index.js
sumomo-0.8.21 data/sumomo/api_modules/node_modules/escape-html/index.js
sumomo-0.8.20 data/sumomo/api_modules/node_modules/escape-html/index.js
sumomo-0.8.17 data/sumomo/api_modules/node_modules/escape-html/index.js
sumomo-0.8.16 data/sumomo/api_modules/node_modules/escape-html/index.js
disco_app-0.18.0 test/dummy/node_modules/escape-html/index.js
disco_app-0.18.2 test/dummy/node_modules/escape-html/index.js
sumomo-0.8.15 data/sumomo/api_modules/node_modules/escape-html/index.js
disco_app-0.16.1 test/dummy/node_modules/escape-html/index.js
sumomo-0.8.14 data/sumomo/api_modules/node_modules/escape-html/index.js
sumomo-0.8.13 data/sumomo/api_modules/node_modules/escape-html/index.js
disco_app-0.15.2 test/dummy/node_modules/escape-html/index.js