

jQuery "Genealogy" plugin - spicyj
https://github.com/spicyj/jquery-genealogy

======
tzury
Nicely done aliasing

    
    
        jQuery.fn.extend({
            grandchildren: function() {return this.children().children();},
            greatGrandchildren: function() {return this.grandchildren().children();},
            grandparent: function() {return this.parent().parent();},
            greatGrandparent: function() {return this.grandparent().parent();},
            aunts: function() {return this.parent().siblings();},
            prevAunt: function() {return this.parent().prev();},
            prevAunts: function() {return this.parent().prevAll();},
            nextAunt: function() {return this.parent().next();},
            nextAunts: function() {return this.parent().nextAll();},
            cousins: function() {return this.aunts().children();},
            prevCousins: function() {return this.prevAunts().map( 
                function () {return jQuery( this ).children().get().reverse();});},
            nextCousins: function() {return this.nextAunts().children();},
            nieces: function() {return this.siblings().children();},
            prevNieces: function() {return this.prevAll().map( function () {
                    return jQuery( this ).children().get().reverse();} );},
            nextNieces: function() {return this.nextAll().children();}
        });
    
        jQuery.fn.uncles = jQuery.fn.aunts;
        jQuery.fn.prevUncle = jQuery.fn.prevAunt;
        jQuery.fn.prevUncles = jQuery.fn.prevAunts;
        jQuery.fn.nextUncle = jQuery.fn.nextAunt;
        jQuery.fn.nextUncles = jQuery.fn.nextAunts;
    
        jQuery.fn.nephews = jQuery.fn.nieces;
        jQuery.fn.prevNephews = jQuery.fn.prevNieces;
        jQuery.fn.nextNephews = jQuery.fn.nextNieces;

~~~
iaskwhy
Read this in a funny way but I really hope I never get one project done with
this, I am so bad at understanding family relations, I struggle to remember
what a niece or nephew is, what's the relation name of my brother's wife, etc.

~~~
syaz1
Same here! I usually end up describing them all as relatives.

------
jeresig
Hilarious - nice job Ben! I was bemusing in the Khan Academy chat the other
day that I always thought it'd be hilarious (although, useful) to have a
.uncle() or .aunt() method (for getting .parent().siblings()). Quite amused
that Ben put the effort into making this happen.

~~~
alnayyir
Bemused doesn't mean that, it means puzzled, bewildered, or confused.

Also, peruse means to pore over meticulously, not glance over.

~~~
lurker19
And while webare here, "cursory"?

~~~
alnayyir
Cursory is what people mean when they mistakenly use peruse.

A cursory examination is not a thorough one.

------
jarin
While this definitely does make things more concise, does it make things
clearer? I've never had to deal with overly complex hierarchies like that in
JS, so I'm not sure.

~~~
spicyj
As the opening paragraph suggests (and my _cough_ sibling _cough_ comment says
as well), I wrote this mostly just for fun but it could be used in an actual
project as well.

~~~
jarin
Oh I missed that part :)

I don't think it's ready for production anyway until it has el.creepyUncle()
and el.nieceWithInappropriateFacebookPhotos()

~~~
spicyj
Submit a pull request. ;)

------
LogicHoleFlaw
Ah yes, but how do I keep track of my firstCousinsTwiceRemoved() ?

(Maybe if I saw the code, I could actually keep straight how those more
distant relations work...)

------
BillSaysThis
Fine nerd humor!

