Skip to content

Commit

Permalink
remove discore-children dependency
Browse files Browse the repository at this point in the history
Added getChildren function to replace it.
  • Loading branch information
April Barrett committed Aug 13, 2014
1 parent a84ee65 commit a08eaaa
Showing 1 changed file with 38 additions and 29 deletions.
67 changes: 38 additions & 29 deletions index.js
@@ -1,43 +1,52 @@
var matches = require('matches-selector')
var getChildren = require('children')
var matches = require("matches-selector")

module.exports = Siblings

function Siblings(el, selector) {
return getChildren(el.parentNode, selector)
.filter(function (sib) {
return sib !== el
})
return getChildren(el.parentNode, selector).filter(function(sibling) {
return sibling !== el;
})
}

Siblings.next = traverse('next')
Siblings.prev = traverse('previous')
function getChildren(el, selector) {
var selection;

if (selector) {
selection = Array.prototype.slice.call(el.querySelectorAll(selector), 0);
} else {
selection = Array.prototype.slice.call(el.children, 0);
}
return selection;
}

Siblings.next = traverse("next")
Siblings.prev = traverse("previous")

function traverse(dir) {
var prop = dir + 'ElementSibling'
var prop = dir + "ElementSibling"

return function (el, selector, limit) {
if (typeof selector === 'number') {
limit = selector
selector = null
}
return function(el, selector, limit) {
if (typeof selector === "number") {
limit = selector
selector = null
}

var siblings = []
var sibling = el
var siblings = []
var sibling = el

while (true) {
if (!(sibling = sibling[prop]))
break
while (true) {
if (!(sibling = sibling[prop]))
break

if (selector && !matches(sibling, selector))
continue
if (selector && !matches(sibling, selector))
continue

siblings.push(sibling)
if (limit && siblings.length >= limit)
break
}
siblings.push(sibling)

if (limit && siblings.length >= limit)
break
}

return limit === 1 ? siblings.shift() : siblings
}
}
return limit === 1 ? siblings.shift() : siblings
}
}

0 comments on commit a08eaaa

Please sign in to comment.