src/TraceFilter.js
/**
* Defines a trace filter to apply against stack traces allowing inclusive / exclusive filtering.
*/
export default class TraceFilter
{
/**
* Instantiates the filter.
*
* @param {string} name - The name of the filter.
*
* @param {string} filterString - The raw filter string.
*/
constructor(name, filterString)
{
/**
* The filter enabled state.
* @type {boolean}
* @private
*/
this._enabled = true;
/**
* The RegExp filter.
* @type {RegExp}
* @private
*/
this._filter = new RegExp(filterString);
/**
* The raw filter string.
* @type {string}
* @private
*/
this._filterString = filterString;
/**
* The name of the filter
* @type {string}
* @private
*/
this._name = name;
}
/**
* Get enabled.
*
* @returns {boolean}
*/
get enabled() { return this._enabled; }
/**
* Set enabled.
*
* @param {boolean} enabled - New enabled state.
*/
set enabled(enabled)
{
this._enabled = enabled;
}
/**
* Get original filter string
*
* @returns {*}
*/
get filter() { return this._filter; }
/**
* Get original filter string
*
* @returns {*}
*/
get filterString() { return this._filterString; }
/**
* Get name.
*
* @returns {string}
*/
get name() { return this._name; }
/**
* Tests a value against the RegExp filter.
*
* @param {string} value - A value to test against the filter.
*
* @returns {boolean}
*/
test(value)
{
return this._enabled && this._filter.test(value);
}
}