From 807ef2c1642510b242d75928fa4e21281b161254 Mon Sep 17 00:00:00 2001 From: John Foerch Date: Wed, 15 Feb 2012 15:37:27 -0500 Subject: [PATCH] follow-relationship: allow relationship patterns to be functions This change allows page-modes to use tools like XPath to find "next" and "previous" links, and to support such links which are elements other than plain anchors. --- modules/follow-relationship.js | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/modules/follow-relationship.js b/modules/follow-relationship.js index 54b817b..6d3f016 100644 --- a/modules/follow-relationship.js +++ b/modules/follow-relationship.js @@ -61,15 +61,20 @@ function document_get_element_by_relationship (doc, patterns, relationship) { for (var j = 0, p = patterns.length; j < p; ++j) { var pattern = patterns[j]; - for (i = 0, n = elems.length; i < n; i++) { // loop through list of anchors again - if (pattern.test(elems[i].textContent)) - return elems[i]; - - // images with alt text being href - var children = elems[i].childNodes; - for (var k = 0, c = children.length; k < c; k++) { - if (children[k].alt && pattern.test(children[k].alt)) + if (pattern instanceof Function) { + var elem = pattern(doc); + if (elem) + return elem; + } else { + for (i = 0, n = elems.length; i < n; i++) { // loop through list of anchors again + if (pattern.test(elems[i].textContent)) return elems[i]; + // images with alt text being href + var children = elems[i].childNodes; + for (var k = 0, c = children.length; k < c; k++) { + if (children[k].alt && pattern.test(children[k].alt)) + return elems[i]; + } } } } -- 2.11.4.GIT