From cc8dae6518bfccaa369a3ed47accf5e108d84625 Mon Sep 17 00:00:00 2001 From: Timo Tijhof Date: Wed, 1 Oct 2014 16:12:55 -0700 Subject: [PATCH] mediawiki.util: Clean up nextnode logic Change-Id: I21469a765002897f03caca97628ad36264d49c83 --- resources/src/mediawiki/mediawiki.util.js | 30 +++++++++++-------- .../mediawiki/mediawiki.util.test.js | 10 +++---- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/resources/src/mediawiki/mediawiki.util.js b/resources/src/mediawiki/mediawiki.util.js index 2662913781..fe5f2b2376 100644 --- a/resources/src/mediawiki/mediawiki.util.js +++ b/resources/src/mediawiki/mediawiki.util.js @@ -290,26 +290,30 @@ } if ( nextnode ) { + // Case: nextnode is a DOM element (was the only option before MW 1.17, in wikibits.js) + // Case: nextnode is a CSS selector for jQuery if ( nextnode.nodeType || typeof nextnode === 'string' ) { - // nextnode is a DOM element (was the only option before MW 1.17, in wikibits.js) - // or nextnode is a CSS selector for jQuery nextnode = $ul.find( nextnode ); - } else if ( !nextnode.jquery || ( nextnode.length && nextnode[0].parentNode !== $ul[0] ) ) { - // Fallback - $ul.append( $item ); - return $item[0]; + } else if ( !nextnode.jquery ) { + // Error: Invalid nextnode + nextnode = undefined; } - if ( nextnode.length === 1 ) { - // nextnode is a jQuery object that represents exactly one element - nextnode.before( $item ); - return $item[0]; + if ( nextnode && ( nextnode.length !== 1 || nextnode[0].parentNode !== $ul[0] ) ) { + // Error: nextnode must resolve to a single node + // Error: nextnode must have the associated