Changeset 1156

Show
Ignore:
Timestamp:
10/09/06 07:16:43 (2 years ago)
Author:
therve@gmail.com
Message:

Apply patch from Arnar

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • mochikit/branches/selector/MochiKit/Selector.js

    r1155 r1156  
    8484 
    8585        function childElements(element) { 
    86             return "filter(function (node){ return node.nodeType == Node.ELEMENT_NODE; }, " + element + ".childNodes)"; 
     86            return "filter(function (node){ return node.nodeType == 1; }, " + element + ".childNodes)"; 
    8787        } 
    8888 
     
    125125                            b = 0; 
    126126                        } else { 
    127                             a = match[2] && parseInt(match)
     127                            a = match[2] && parseInt(match) || null
    128128                            b = parseInt(match[3]); 
    129129                        } 
     
    158158                        break; 
    159159                    case 'disabled': 
    160                         conditions.push('element.disabled === true'); 
     160                        conditions.push('element.disabled'); 
    161161                        break; 
    162162                    case 'checked': 
    163                         conditions.push('element.checked === true'); 
     163                        conditions.push('element.checked'); 
    164164                        break; 
    165165                    case 'not': 
     
    172172        if (clause = params.attributes) { 
    173173            map(function (attribute) { 
    174                 var value = 'element.getAttribute(' + repr(attribute.name) + ')'; 
     174                var value = 'getNodeAttribute(element, ' + repr(attribute.name) + ')'; 
    175175                var splitValueBy = function (delimiter) { 
    176176                    return value + ' && ' + value + '.split(' + repr(delimiter) + ')'; 
     
    221221    nthChild: function (element, a, b, reverse, sametag){ 
    222222        var siblings = filter(function (node) { 
    223             return node.nodeType == Node.ELEMENT_NODE
     223            return node.nodeType == 1
    224224            }, element.parentNode.childNodes); 
    225225        if (sametag) { 
     
    274274        function nextSiblingElement(node) { 
    275275            node = node.nextSibling; 
    276             while (node && node.nodeType != Node.ELEMENT_NODE) { 
     276            while (node && node.nodeType != 1) { 
    277277                node = node.nextSibling; 
    278278            } 
     
    287287            } 
    288288            scope = filter(function (node) { 
    289                 return node.nodeType == Node.ELEMENT_NODE
     289                return node.nodeType == 1
    290290            }, scope.childNodes); 
    291291        } else if (axis == "+") { 
     
    327327 
    328328MochiKit.Base.update(MochiKit.Selector, { 
    329     matchElements: function (elements, expression) { 
    330         var selector = new Selector(expression); 
    331         return elements.select(selector.match.bind(selector)).collect(Element.extend); 
    332     }, 
    333  
    334     findElement: function (elements, expression, index) { 
    335         if (typeof expression == 'number') { 
    336             index = expression; 
    337             expression = false; 
    338         } 
    339         return Selector.matchElements(elements, expression || '*')[index || 0]; 
    340     }, 
    341329 
    342330    findChildElements: function (element, expressions) { 
  • mochikit/branches/selector/tests/test_MochiKit-Selector.html

    r1154 r1156  
    1010    <link rel="stylesheet" type="text/css" href="SimpleTest/test.css"> 
    1111    <style type="text/css"> 
    12         p
     12        p, #sequence
    1313            display: none; 
    1414        }  
     
    2929    <p lang="en-us">Nonninn</p> 
    3030    <p lang="is-IS">Sniðugt</p> 
     31    <p> 
     32        <input type="button" name="enabled" value="enabled" id="enabled"> 
     33        <input type="button" name="disabled" value="disabled" id="disabled" disabled="1" /> 
     34        <input type="checkbox" name="checked" value="checked" id="checked" checked="1" /> 
     35    </p> 
     36    </div> 
     37 
     38    <div id="sequence"> 
     39        <a href="http://www.example.com/link1">Link 1</a> 
     40        <a href="http://www.example.com/link2">Link 2</a> 
     41        <a href="http://www.example.com/link3">Link 3</a> 
     42        <a href="http://www.example.com/link4">Link 4</a> 
     43        <p>Something else</p> 
     44        <a href="http://www.example.com/link5">Link 5</a> 
     45        <a href="http://www.example.com/link6">Link 6</a> 
     46        <a href="http://www.example.com/link7">Link 7</a> 
     47        <a href="http://www.example.com/link8">Link 8</a> 
    3148    </div> 
    3249<pre id="test"> 
     
    4764                    'http://www.example.com/outsidep', 
    4865                    'http://simon.incutio.com/', 
    49                     'http://www.example.com/insidespan']; 
     66                    'http://www.example.com/insidespan', 
     67                    'http://www.example.com/link1', 
     68                    'http://www.example.com/link2', 
     69                    'http://www.example.com/link3', 
     70                    'http://www.example.com/link4', 
     71                    'http://www.example.com/link5', 
     72                    'http://www.example.com/link6', 
     73                    'http://www.example.com/link7', 
     74                    'http://www.example.com/link8']; 
    5075    var results = $$('a'); 
    5176    testExpected(results, expected, "'a' selector"); 
     
    5883                'http://www.example.com/outsidep', 
    5984                'http://simon.incutio.com/', 
    60                 'http://www.example.com/insidespan']; 
     85                'http://www.example.com/insidespan', 
     86                'http://www.example.com/link1', 
     87                'http://www.example.com/link2', 
     88                'http://www.example.com/link3', 
     89                'http://www.example.com/link4', 
     90                'http://www.example.com/link5', 
     91                'http://www.example.com/link6', 
     92                'http://www.example.com/link7', 
     93                'http://www.example.com/link8']; 
    6194    results = $$('div a'); 
    6295    testExpected(results, expected, "'div a' selector"); 
     
    83116                'http://www.yahoo.com/', 
    84117                'http://www.example.com/outsidep', 
    85                 'http://www.example.com/insidespan']; 
     118                'http://www.example.com/insidespan', 
     119                'http://www.example.com/link1', 
     120                'http://www.example.com/link2', 
     121                'http://www.example.com/link3', 
     122                'http://www.example.com/link4', 
     123                'http://www.example.com/link5', 
     124                'http://www.example.com/link6', 
     125                'http://www.example.com/link7', 
     126                'http://www.example.com/link8']; 
    86127    results = $$('a[href^="http://www"]'); 
    87128    testExpected(results, expected, "'a[href^=http://www]' selector"); 
     
    121162    testExpected(results, expected, "'span > a' selector"); 
    122163 
    123     expected = ['http://groups.google.com/']; 
     164    expected = ['http://groups.google.com/', 
     165                'http://www.example.com/link2', 
     166                'http://www.example.com/link3', 
     167                'http://www.example.com/link4', 
     168                'http://www.example.com/link6', 
     169                'http://www.example.com/link7', 
     170                'http://www.example.com/link8']; 
    124171    results = $$('a + a'); 
    125172    testExpected(results, expected, "'a + a' selector"); 
    126173 
     174    expected = ['http://www.example.com/link1', 
     175                'http://www.example.com/link3', 
     176                'http://www.example.com/link6', 
     177                'http://www.example.com/link8']; 
     178    results = $$('#sequence a:nth-child(odd)'); 
     179    testExpected(results, expected, "'#sequence a:nth-child(odd)' selector"); 
     180 
     181    expected = ['http://www.example.com/link1', 
     182                'http://www.example.com/link3', 
     183                'http://www.example.com/link5', 
     184                'http://www.example.com/link7']; 
     185    results = $$('#sequence a:nth-of-type(odd)'); 
     186    testExpected(results, expected, "'#sequence a:nth-of-type(odd)' selector"); 
     187     
     188    expected = ['http://www.example.com/link1', 
     189                'http://www.example.com/link4', 
     190                'http://www.example.com/link7']; 
     191    results = $$('#sequence a:nth-of-type(3n+1)'); 
     192    testExpected(results, expected, "'#sequence a:nth-of-type(3n+1)' selector"); 
     193 
     194    expected = ['http://www.example.com/link5']; 
     195    results = $$('#sequence a:nth-child(6)'); 
     196    testExpected(results, expected, "'#sequence a:nth-child(6)' selector"); 
     197     
     198    expected = ['http://www.example.com/link5']; 
     199    results = $$('#sequence a:nth-of-type(5)'); 
     200    testExpected(results, expected, "'#sequence a:nth-of-type(5)' selector"); 
     201     
     202    expected =  [$('enabled'), $('checked')]; 
     203    results = $$('body :enabled'); 
     204    for (var i=0; i < results.length; i ++) { 
     205        is( results[i], expected[i], "'body :enabled" + ' (' + i + ')'); 
     206    } 
     207     
     208    expected =  [$('disabled')]; 
     209    results = $$('body :disabled'); 
     210    for (var i=0; i < results.length; i ++) { 
     211        is( results[i], expected[i], "'body :disabled" + ' (' + i + ')'); 
     212    } 
     213 
     214    expected =  [$('checked')]; 
     215    results = $$('body :checked'); 
     216    for (var i=0; i < results.length; i ++) { 
     217        is( results[i], expected[i], "'body :checked" + ' (' + i + ')'); 
     218    } 
     219     
    127220    expected = document.getElementsByTagName('p'); 
    128221    results = $$('a[href$=outsidep] ~ *');