UNPKG

glance-dom

Version:
49 lines (33 loc) 1.62 kB
'use strict'; 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); }); } } } };