Ohm-Management - Projektarbeit B-ME
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

or_filter.js 1.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. // Copyright 2014 Mark Cavage, Inc. All rights reserved.
  2. // Copyright 2014 Patrick Mooney. All rights reserved.
  3. var util = require('util');
  4. var assert = require('assert-plus');
  5. var helpers = require('./helpers');
  6. ///--- API
  7. function OrFilter(options) {
  8. if (typeof (options) === 'object') {
  9. assert.arrayOfObject(options.filters, 'options.filters');
  10. } else {
  11. options = {};
  12. }
  13. this.filters = options.filters ? options.filters.slice() : [];
  14. var self = this;
  15. this.__defineGetter__('type', function () { return 'or'; });
  16. this.__defineGetter__('json', function () {
  17. return {
  18. type: 'Or',
  19. filters: self.filters
  20. };
  21. });
  22. }
  23. util.inherits(OrFilter, helpers.Filter);
  24. OrFilter.prototype.toString = function () {
  25. var str = '(|';
  26. this.filters.forEach(function (f) {
  27. str += f.toString();
  28. });
  29. str += ')';
  30. return str;
  31. };
  32. OrFilter.prototype.matches = function (target, strictAttrCase) {
  33. assert.object(target, 'target');
  34. for (var i = 0; i < this.filters.length; i++) {
  35. if (this.filters[i].matches(target, strictAttrCase))
  36. return true;
  37. }
  38. return false;
  39. };
  40. OrFilter.prototype.addFilter = function (filter) {
  41. assert.object(filter, 'filter');
  42. this.filters.push(filter);
  43. };
  44. ///--- Exports
  45. module.exports = OrFilter;