Defect #31695 » fixed-31695.patch
| lib/redmine/wiki_formatting/html_parser.rb | ||
|---|---|---|
| 36 | 36 | 
    doc.scrub!(WikiTags.new(tags))  | 
| 37 | 37 | 
    doc.scrub!(:newline_block_elements)  | 
| 38 | 38 | |
| 39 | 
            Loofah.remove_extraneous_whitespace(doc.text).strip.squeeze(' ').gsub(/^ +/, '')
   | 
|
| 39 | 
            Loofah.remove_extraneous_whitespace(doc.text(:encode_special_chars => false)).strip.squeeze(' ').gsub(/^ +/, '')
   | 
|
| 40 | 40 | 
    end  | 
| 41 | 41 | |
| 42 | 42 | 
    class WikiTags < ::Loofah::Scrubber  | 
| ... | ... | |
| 54 | 54 | 
    when String  | 
| 55 | 55 | 
    node.add_next_sibling Nokogiri::XML::Text.new(formatting, node.document)  | 
| 56 | 56 | 
    node.remove  | 
| 57 | 
    when Proc  | 
|
| 58 | 
    node.add_next_sibling formatting.call(node)  | 
|
| 59 | 
    node.remove  | 
|
| 57 | 60 | 
    else  | 
| 58 | 61 | 
    CONTINUE  | 
| 59 | 62 | 
    end  | 
| lib/redmine/wiki_formatting/markdown/html_parser.rb | ||
|---|---|---|
| 34 | 34 | 
              'h3' => {:pre => "\n\n### ", :post => "\n\n"},
   | 
| 35 | 35 | 
              'h4' => {:pre => "\n\n#### ", :post => "\n\n"},
   | 
| 36 | 36 | 
              'h5' => {:pre => "\n\n##### ", :post => "\n\n"},
   | 
| 37 | 
              'h6' => {:pre => "\n\n###### ", :post => "\n\n"}
   | 
|
| 37 | 
              'h6' => {:pre => "\n\n###### ", :post => "\n\n"},
   | 
|
| 38 | 
              'a' => lambda {|node| node.content.present? ? %Q| [#{node.content}](#{node.attributes['href'].value}) | : %Q| #{node.attributes['href'].value} |}
   | 
|
| 38 | 39 | 
    )  | 
| 39 | 40 | 
    end  | 
| 40 | 41 | 
    end  | 
| lib/redmine/wiki_formatting/textile/html_parser.rb | ||
|---|---|---|
| 34 | 34 | 
              'h3' => {:pre => "\n\nh3. ", :post => "\n\n"},
   | 
| 35 | 35 | 
              'h4' => {:pre => "\n\nh4. ", :post => "\n\n"},
   | 
| 36 | 36 | 
              'h5' => {:pre => "\n\nh5. ", :post => "\n\n"},
   | 
| 37 | 
              'h6' => {:pre => "\n\nh6. ", :post => "\n\n"}
   | 
|
| 37 | 
              'h6' => {:pre => "\n\nh6. ", :post => "\n\n"},
   | 
|
| 38 | 
              'a' => lambda {|node| node.content.present? ? %Q| "#{node.content}":#{node.attributes['href'].value} | : %Q| #{node.attributes['href'].value} |}
   | 
|
| 38 | 39 | 
    )  | 
| 39 | 40 | 
    end  | 
| 40 | 41 | 
    end  | 
| test/unit/lib/redmine/wiki_formatting/markdown_html_parser_test.rb | ||
|---|---|---|
| 28 | 28 | 
    def test_should_convert_tags  | 
| 29 | 29 | 
    assert_equal 'A **simple** html snippet.',  | 
| 30 | 30 | 
          @parser.to_text('<p>A <b>simple</b> html snippet.</p>')
   | 
| 31 | ||
| 32 | 
    assert_equal 'foo [bar](http://example.com/) baz',  | 
|
| 33 | 
          @parser.to_text('foo<a href="http://example.com/">bar</a>baz')
   | 
|
| 34 | 
    assert_equal 'foo http://example.com/ baz',  | 
|
| 35 | 
          @parser.to_text('foo<a href="http://example.com/"></a>baz')
   | 
|
| 31 | 36 | 
    end  | 
| 32 | 37 | 
    end  | 
| test/unit/lib/redmine/wiki_formatting/textile_html_parser_test.rb | ||
|---|---|---|
| 28 | 28 | 
    def test_should_convert_tags  | 
| 29 | 29 | 
    assert_equal 'A *simple* html snippet.',  | 
| 30 | 30 | 
          @parser.to_text('<p>A <b>simple</b> html snippet.</p>')
   | 
| 31 | ||
| 32 | 
    assert_equal 'foo "bar":http://example.com/ baz',  | 
|
| 33 | 
          @parser.to_text('foo<a href="http://example.com/">bar</a>baz')
   | 
|
| 34 | 
    assert_equal 'foo http://example.com/ baz',  | 
|
| 35 | 
          @parser.to_text('foo<a href="http://example.com/"></a>baz')
   | 
|
| 31 | 36 | 
    end  | 
| 32 | 37 | 
    end  |