UNPKG

diffusion

Version:

Diffusion JavaScript client

61 lines (48 loc) 1.44 kB
var inherits = require('inherits'); var regex = require('util/regex'); var utils = require('topics/topic-path-utils'); var TopicSelector = require('../../selectors/topic-selector'); var DQ = utils.DescendantQualifier; function SplitPathSelector(components) { this.qualifier = components.qualifier; this.patterns = []; var parts = utils.split(components.base); parts.forEach(function (p) { this.patterns.push(regex(p)); }.bind(this)); TopicSelector.call( this, components.type, components.prefix, components.expression); } inherits(SplitPathSelector, TopicSelector); SplitPathSelector.prototype.doSelects = function (topicPath) { var length = this.patterns.length, parts = topicPath.split(utils.PATH_SEPARATOR); switch (this.qualifier) { case DQ.MATCH : if (parts.length !== length) { return false; } break; case DQ.DESCENDANTS_OF_MATCH : if (parts.length <= length) { return false; } break; case DQ.MATCH_AND_DESCENDANTS : if (parts.length < length) { return false; } break; } var i = 0; for (; i < length; ++i) { if (!this.patterns[i](parts[i])) { return false; } } return true; }; module.exports = SplitPathSelector;