Changeset 116

Show
Ignore:
Timestamp:
02/20/2007 16:14:38 (22 months ago)
Author:
why
Message:
  • ext/hpricot_scan/hpricot_common.rl: leave \r out of unquote attributes.
  • lib/hpricot/traverse.rb: fix insert_after.
Location:
trunk
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • trunk/ext/hpricot_scan/hpricot_common.rl

    r110 r116  
    88  # 
    99  newline = '\n' @{curline += 1;} ; 
    10 # qtext = '"' ( '\"' | [^\n"] )* '"' | "'" ( "\\'" | [^\n'] )* "'" ;  
    1110  NameChar = [\-A-Za-z0-9._:?] ; 
    1211  Name = [A-Za-z_:] NameChar* ; 
     
    2019  Q1Attr = [^']* >_aval %aval ; 
    2120  Q2Attr = [^"]* >_aval %aval ; 
    22   UnqAttr = ( space >_aval | [^ \t\n<>"'] >_aval [^ \t\n<>]* %aunq ) ; 
     21  UnqAttr = ( space >_aval | [^ \t\r\n<>"'] >_aval [^ \t\r\n<>]* %aunq ) ;  
    2322  Nmtoken = NameChar+ >_akey %akey ; 
    2423 
  • trunk/lib/hpricot/elements.rb

    r113 r116  
    195195 
    196196    ATTR_RE = %r!\[ *(?:(@)([\w\(\)-]+)|([\w\(\)-]+\(\))) *([~\!\|\*$\^=]*) *'?"?([^'"]*)'?"? *\]!i 
    197     BRACK_RE = %r!(\[) *([^\]]*) *\]!i 
     197    BRACK_RE = %r!(\[) *([^\]]*) *\]+!i 
    198198    FUNC_RE = %r!(:)?([a-zA-Z0-9\*_-]*)\( *[\"']?([^ \)]*?)['\"]? *\)! 
    199199    CATCH_RE = %r!([:\.#]*)([a-zA-Z0-9\*_-]+)! 
  • trunk/lib/hpricot/traverse.rb

    r112 r116  
    413413      case nodes 
    414414      when Array 
    415         nodes.each { |n| insert_after(n, ele) } 
     415        nodes.reverse_each { |n| insert_after(n, ele) } 
    416416      else 
    417417        reparent nodes 
  • trunk/test/test_parser.rb

    r106 r116  
    8585  end 
    8686 
     87  def test_pace 
     88    doc = Hpricot(TestFiles::PACE_APPLICATION) 
     89    assert_equal 'get', doc.at('form[@name=frmSect11]')['method'] 
     90    # assert_equal '2', doc.at('#hdnSpouse')['value'] 
     91  end 
     92 
    8793  def test_scan_boingboing 
    8894    @boingboing = Hpricot.parse(TestFiles::BOINGBOING) 
     
    168174  end 
    169175 
     176  def test_insert_after # ticket #63 
     177    doc = Hpricot('<html><body><div id="a-div"></div></body></html>') 
     178    (doc/'div').each do |element| 
     179      element.after('<p>Paragraph 1</p><p>Paragraph 2</p>') 
     180    end 
     181    assert_equal doc.to_html, '<html><body><div id="a-div"></div><p>Paragraph 1</p><p>Paragraph 2</p></body></html>' 
     182  end 
     183 
     184  def test_insert_before # ticket #61 
     185    doc = Hpricot('<html><body><div id="a-div"></div></body></html>') 
     186    (doc/'div').each do |element| 
     187      element.before('<p>Paragraph 1</p><p>Paragraph 2</p>') 
     188    end 
     189    assert_equal doc.to_html, '<html><body><p>Paragraph 1</p><p>Paragraph 2</p><div id="a-div"></div></body></html>' 
     190  end 
     191 
    170192  def test_many_paths 
    171193    @boingboing = Hpricot.parse(TestFiles::BOINGBOING)