Skip to content
  • Sutou Kouhei's avatar
    7a6f3410
    rexml: Fix XPath bug of //#{ELEMENT_NAME}[#{POSITION}] · 7a6f3410
    Sutou Kouhei authored
    The position should be counted for each nodeset but the previous
    implementation counts position for union-ed nodeset.
    
    For example, "/a/*/*[1]" should be matched to "<c1/>" and "<c2/>" with
    the following XML.
    
        <a>
          <b>
            <c1/>
          </b>
          <b>
            <c2/>
          </b>
        </a>
    
    But the previous implementation just returns only "<c1/>".
    
    * lib/rexml/element.rb (REXML::Attributes#each_attribute):
      Support Enumerator for no block use.
    
    * lib/rexml/element.rb (REXML::Attributes#each):
      Support Enumerator for no block use.
    
    * lib/rexml/functions.rb (REXML::Functions.string):
      Support NaN again.
    
    * lib/rexml/xpath_parser.rb: Re-implement "Step" evaluator.
      It should evaluate "AxisSpecifier", "NodeTest" and "Predicate" in one
      step to respect position for each nodeset.
    
    * test/rexml/test_jaxen.rb: Enable more tests. Remained tests should
      be also enabled but it'll not be near future.
    
    * test/rexml/xpath/test_base.rb: Fix expected value.
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63237 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
    7a6f3410
    rexml: Fix XPath bug of //#{ELEMENT_NAME}[#{POSITION}]
    Sutou Kouhei authored
    The position should be counted for each nodeset but the previous
    implementation counts position for union-ed nodeset.
    
    For example, "/a/*/*[1]" should be matched to "<c1/>" and "<c2/>" with
    the following XML.
    
        <a>
          <b>
            <c1/>
          </b>
          <b>
            <c2/>
          </b>
        </a>
    
    But the previous implementation just returns only "<c1/>".
    
    * lib/rexml/element.rb (REXML::Attributes#each_attribute):
      Support Enumerator for no block use.
    
    * lib/rexml/element.rb (REXML::Attributes#each):
      Support Enumerator for no block use.
    
    * lib/rexml/functions.rb (REXML::Functions.string):
      Support NaN again.
    
    * lib/rexml/xpath_parser.rb: Re-implement "Step" evaluator.
      It should evaluate "AxisSpecifier", "NodeTest" and "Predicate" in one
      step to respect position for each nodeset.
    
    * test/rexml/test_jaxen.rb: Enable more tests. Remained tests should
      be also enabled but it'll not be near future.
    
    * test/rexml/xpath/test_base.rb: Fix expected value.
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63237 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Loading