"TheDJ" posted a comment on MediaWiki.r111829.
URL: http://www.mediawiki.org/wiki/Special:Code/MediaWiki/111829#c31226

Commit summary for MediaWiki.r111829:

Add support to tablesorter to handle IP/CIDR notation

This fixes bug 34475

TheDJ's comment:

i'm not sure how to do this. I've been tinkering with a base2 version of this 
formatter, but higher ip addresses flip the sign whenever I try to get a 
numeric or string value out of this.

<source lang=javascript>

                        var     a = s.split( '.' ),
                                r,
                                u;
                        if( a.length == 4 ) {
                                var cidr = a[3].split('/');
                                if (cidr.length > 1 ) {
                                        a[3] = cidr[0];
                                        a[4] = cidr[1];
                                } else a[4] = '32';
                        }
                        for ( var i = 0; i < a.length; i++ ) {
                                var item = parseInt(a[i]);
                                item &= 255;
                                switch(i) {
                                        case 0:
                                                r = (item << 24);
                                                break;
                                        case 1:
                                                r |= (item << 16);
                                                break;
                                        case 2:
                                                r |= (item << 8);
                                                break;
                                        case 3:
                                                r |= item;
                                                break;
                                        case 4:
                                                u = r; /* preserve unmasked 
value */
                                                if( item <= 32 ) {
                                                        item = 32 - item;
                                                        if( item > 0 ) {
                                                                r = r >> item;
                                                                r = r << item;
                                                        }
                                                }
                                                break;
                                }
                        }
</source>

This does not work for instance with "192.168.31.2" . If anyone has more 
experience with bit operations in JS, then I welcome the feedback.

_______________________________________________
MediaWiki-CodeReview mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-codereview

Reply via email to