glance-dom
Version:
Glance DOM library
49 lines (33 loc) • 1.62 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _xpath = require('../lib/xpath');
var _xpath2 = _interopRequireDefault(_xpath);
var _log = require('../../utils/log');
var _log2 = _interopRequireDefault(_log);
var _parentElements = require('../../utils/parent-elements');
var _parentElements2 = _interopRequireDefault(_parentElements);
var _reduce = require('@arr/reduce');
var _reduce2 = _interopRequireDefault(_reduce);
var _filter = require('@arr/filter');
var _filter2 = _interopRequireDefault(_filter);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.default = {
options: {
'contains-text': {
locate: function locate(_ref) {
var label = _ref.label,
containerElements = _ref.containerElements;
_log2.default.debug('Searching for text that contains:', label);
var results = (0, _reduce2.default)(containerElements, function (result, containerElement) {
return result.concat((0, _xpath2.default)('.//*[text()]/../*[not(descendant-or-self::script) and not(descendant-or-self::noscript) and not(descendant-or-self::style) and contains(translate(normalize-space(string(.)), \'ABCDEFGHJIKLMNOPQRSTUVWXYZ\', \'abcdefghjiklmnopqrstuvwxyz\'),translate(\'' + label + '\', \'ABCDEFGHJIKLMNOPQRSTUVWXYZ\', \'abcdefghjiklmnopqrstuvwxyz\'))]', containerElement));
}, []);
var lookup = new Set([].concat.apply([], (0, _parentElements2.default)(results, containerElements, false)));
return (0, _filter2.default)(results, function (r) {
return !lookup.has(r);
});
}
}
}
};