| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 | 
							- /*
 
-  * EJS Embedded JavaScript templates
 
-  * Copyright 2112 Matthew Eernisse (mde@fleegix.org)
 
-  *
 
-  * Licensed under the Apache License, Version 2.0 (the "License");
 
-  * you may not use this file except in compliance with the License.
 
-  * You may obtain a copy of the License at
 
-  *
 
-  *         http://www.apache.org/licenses/LICENSE-2.0
 
-  *
 
-  * Unless required by applicable law or agreed to in writing, software
 
-  * distributed under the License is distributed on an "AS IS" BASIS,
 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
-  * See the License for the specific language governing permissions and
 
-  * limitations under the License.
 
-  *
 
- */
 
- /**
 
-  * Private utility functions
 
-  * @module utils
 
-  * @private
 
-  */
 
- 'use strict';
 
- var regExpChars = /[|\\{}()[\]^$+*?.]/g;
 
- /**
 
-  * Escape characters reserved in regular expressions.
 
-  *
 
-  * If `string` is `undefined` or `null`, the empty string is returned.
 
-  *
 
-  * @param {String} string Input string
 
-  * @return {String} Escaped string
 
-  * @static
 
-  * @private
 
-  */
 
- exports.escapeRegExpChars = function (string) {
 
-   // istanbul ignore if
 
-   if (!string) {
 
-     return '';
 
-   }
 
-   return String(string).replace(regExpChars, '\\$&');
 
- };
 
- var _ENCODE_HTML_RULES = {
 
-   '&': '&',
 
-   '<': '<',
 
-   '>': '>',
 
-   '"': '"',
 
-   "'": '''
 
- };
 
- var _MATCH_HTML = /[&<>'"]/g;
 
- function encode_char(c) {
 
-   return _ENCODE_HTML_RULES[c] || c;
 
- }
 
- /**
 
-  * Stringified version of constants used by {@link module:utils.escapeXML}.
 
-  *
 
-  * It is used in the process of generating {@link ClientFunction}s.
 
-  *
 
-  * @readonly
 
-  * @type {String}
 
-  */
 
- var escapeFuncStr =
 
-   'var _ENCODE_HTML_RULES = {\n'
 
- + '      "&": "&"\n'
 
- + '    , "<": "<"\n'
 
- + '    , ">": ">"\n'
 
- + '    , \'"\': """\n'
 
- + '    , "\'": "'"\n'
 
- + '    }\n'
 
- + '  , _MATCH_HTML = /[&<>\'"]/g;\n'
 
- + 'function encode_char(c) {\n'
 
- + '  return _ENCODE_HTML_RULES[c] || c;\n'
 
- + '};\n';
 
- /**
 
-  * Escape characters reserved in XML.
 
-  *
 
-  * If `markup` is `undefined` or `null`, the empty string is returned.
 
-  *
 
-  * @implements {EscapeCallback}
 
-  * @param {String} markup Input string
 
-  * @return {String} Escaped string
 
-  * @static
 
-  * @private
 
-  */
 
- exports.escapeXML = function (markup) {
 
-   return markup == undefined
 
-     ? ''
 
-     : String(markup)
 
-       .replace(_MATCH_HTML, encode_char);
 
- };
 
- exports.escapeXML.toString = function () {
 
-   return Function.prototype.toString.call(this) + ';\n' + escapeFuncStr;
 
- };
 
- /**
 
-  * Naive copy of properties from one object to another.
 
-  * Does not recurse into non-scalar properties
 
-  * Does not check to see if the property has a value before copying
 
-  *
 
-  * @param  {Object} to   Destination object
 
-  * @param  {Object} from Source object
 
-  * @return {Object}      Destination object
 
-  * @static
 
-  * @private
 
-  */
 
- exports.shallowCopy = function (to, from) {
 
-   from = from || {};
 
-   for (var p in from) {
 
-     to[p] = from[p];
 
-   }
 
-   return to;
 
- };
 
- /**
 
-  * Naive copy of a list of key names, from one object to another.
 
-  * Only copies property if it is actually defined
 
-  * Does not recurse into non-scalar properties
 
-  *
 
-  * @param  {Object} to   Destination object
 
-  * @param  {Object} from Source object
 
-  * @param  {Array} list List of properties to copy
 
-  * @return {Object}      Destination object
 
-  * @static
 
-  * @private
 
-  */
 
- exports.shallowCopyFromList = function (to, from, list) {
 
-   for (var i = 0; i < list.length; i++) {
 
-     var p = list[i];
 
-     if (typeof from[p] != 'undefined') {
 
-       to[p] = from[p];
 
-     }
 
-   }
 
-   return to;
 
- };
 
- /**
 
-  * Simple in-process cache implementation. Does not implement limits of any
 
-  * sort.
 
-  *
 
-  * @implements Cache
 
-  * @static
 
-  * @private
 
-  */
 
- exports.cache = {
 
-   _data: {},
 
-   set: function (key, val) {
 
-     this._data[key] = val;
 
-   },
 
-   get: function (key) {
 
-     return this._data[key];
 
-   },
 
-   remove: function (key) {
 
-     delete this._data[key];
 
-   },
 
-   reset: function () {
 
-     this._data = {};
 
-   }
 
- };
 
 
  |