var locatorParts = locator.split('|'); var cssAncestor = locatorParts; var linkText = locatorParts; var matchingElements = eval_css(cssAncestor, inDocument); var candidateLinks = matchingElements.collect(function(ancestor){

var links = ancestor.getElementsByTagName('a');
return $A(links).select(function(candidateLink) {
  return PatternMatcher.matches(linkText, getText(candidateLink));
});

}).flatten().compact(); if (candidateLinks.length == 0) {

return null;

} candidateLinks = candidateLinks.sortBy(function(s) { return s.length * -1; }); //reverse length sort return candidateLinks.first();