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
disco_app-0.18.4 test/dummy/node_modules/escape-html/index.js
disco_app-0.18.1 test/dummy/node_modules/escape-html/index.js
disco_app-0.12.7.pre.puma.pre.3 test/dummy/node_modules/escape-html/index.js
disco_app-0.14.0 test/dummy/node_modules/escape-html/index.js
disco_app-0.13.6.pre.puma.pre.3 test/dummy/node_modules/escape-html/index.js
sumomo-0.8.12 data/sumomo/api_modules/node_modules/escape-html/index.js
sumomo-0.8.11 data/sumomo/api_modules/node_modules/escape-html/index.js
sumomo-0.8.10 data/sumomo/api_modules/node_modules/escape-html/index.js
tang-0.2.1 spec/tang_app/node_modules/escape-html/index.js
groonga-client-model-6.0.0 test/apps/rails6.0.3.5/node_modules/escape-html/index.js
groonga-client-model-6.0.0 test/apps/rails6.1.3/node_modules/escape-html/index.js
ruby2js-4.0.4 lib/tasks/testrails/node_modules/escape-html/index.js
ruby2js-4.0.3 lib/tasks/testrails/node_modules/escape-html/index.js
tang-0.2.0 spec/tang_app/node_modules/escape-html/index.js
tang-0.1.0 spec/tang_app/node_modules/escape-html/index.js
tang-0.0.9 spec/tang_app/node_modules/escape-html/index.js
sumomo-0.8.9 data/sumomo/api_modules/node_modules/escape-html/index.js
enju_library-0.3.8 spec/dummy/node_modules/escape-html/index.js
sumomo-0.8.8 data/sumomo/api_modules/node_modules/escape-html/index.js
ilog-0.4.1 node_modules/escape-html/index.js