RedCloth 4.1.9-universal-java → 4.2.0-universal-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of RedCloth might be problematic. Click here for more details.
- data/CHANGELOG +55 -0
- data/Manifest +34 -38
- data/README +17 -5
- data/Rakefile +79 -30
- data/RedCloth.gemspec +8 -9
- data/ext/redcloth_scan/redcloth.h +38 -13
- data/lib/redcloth.rb +9 -3
- data/lib/redcloth/formatters/html.rb +2 -2
- data/lib/redcloth/formatters/latex.rb +99 -54
- data/lib/redcloth/formatters/latex_entities.yml +2 -2
- data/lib/redcloth/version.rb +9 -4
- data/lib/redcloth_scan.jar +0 -0
- data/lib/tasks/pureruby.rake +12 -0
- data/spec/custom_tags_spec.rb +50 -0
- data/spec/differs/inline.rb +48 -0
- data/{test/test_erb.rb → spec/erb_spec.rb} +6 -9
- data/spec/extension_spec.rb +26 -0
- data/{test → spec/fixtures}/basic.yml +90 -4
- data/{test → spec/fixtures}/code.yml +29 -0
- data/{test → spec/fixtures}/definitions.yml +0 -0
- data/{test → spec/fixtures}/extra_whitespace.yml +0 -0
- data/{test → spec/fixtures}/filter_html.yml +0 -0
- data/{test → spec/fixtures}/filter_pba.yml +0 -0
- data/{test → spec/fixtures}/html.yml +15 -0
- data/{test → spec/fixtures}/images.yml +16 -6
- data/{test → spec/fixtures}/instiki.yml +0 -0
- data/{test → spec/fixtures}/links.yml +7 -1
- data/{test → spec/fixtures}/lists.yml +162 -1
- data/{test → spec/fixtures}/poignant.yml +0 -0
- data/{test → spec/fixtures}/sanitize_html.yml +0 -0
- data/{test → spec/fixtures}/table.yml +121 -23
- data/{test → spec/fixtures}/textism.yml +44 -15
- data/{test → spec/fixtures}/threshold.yml +6 -14
- data/spec/formatters/class_filtered_html_spec.rb +7 -0
- data/spec/formatters/filtered_html_spec.rb +7 -0
- data/spec/formatters/html_no_breaks_spec.rb +9 -0
- data/spec/formatters/html_spec.rb +13 -0
- data/spec/formatters/id_filtered_html_spec.rb +7 -0
- data/spec/formatters/latex_spec.rb +13 -0
- data/spec/formatters/lite_mode_html_spec.rb +7 -0
- data/spec/formatters/no_span_caps_html_spec.rb +7 -0
- data/spec/formatters/sanitized_html_spec.rb +7 -0
- data/spec/formatters/style_filtered_html_spec.rb +7 -0
- data/spec/parser_spec.rb +95 -0
- data/spec/spec.opts +3 -0
- data/spec/spec_helper.rb +42 -0
- metadata +46 -51
- data/ext/mingw-rbconfig.rb +0 -176
- data/ext/redcloth_scan/redcloth_attributes.c.rl +0 -55
- data/ext/redcloth_scan/redcloth_attributes.java.rl +0 -95
- data/ext/redcloth_scan/redcloth_attributes.rl +0 -33
- data/ext/redcloth_scan/redcloth_common.c.rl +0 -18
- data/ext/redcloth_scan/redcloth_common.java.rl +0 -18
- data/ext/redcloth_scan/redcloth_common.rl +0 -115
- data/ext/redcloth_scan/redcloth_inline.c.rl +0 -193
- data/ext/redcloth_scan/redcloth_inline.java.rl +0 -140
- data/ext/redcloth_scan/redcloth_inline.rl +0 -156
- data/ext/redcloth_scan/redcloth_scan.c.rl +0 -228
- data/ext/redcloth_scan/redcloth_scan.java.rl +0 -577
- data/ext/redcloth_scan/redcloth_scan.rl +0 -320
- data/extras/ragel_profiler.rb +0 -73
- data/test/helper.rb +0 -108
- data/test/test_custom_tags.rb +0 -58
- data/test/test_extensions.rb +0 -31
- data/test/test_formatters.rb +0 -24
- data/test/test_parser.rb +0 -73
- data/test/test_restrictions.rb +0 -41
- data/test/validate_fixtures.rb +0 -74
    
        data/test/test_custom_tags.rb
    DELETED
    
    | @@ -1,58 +0,0 @@ | |
| 1 | 
            -
            #!/usr/bin/env ruby
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            require File.join(File.dirname(__FILE__), 'helper')
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            class TestCustomTags < Test::Unit::TestCase
         | 
| 6 | 
            -
             | 
| 7 | 
            -
              module FigureTag
         | 
| 8 | 
            -
                def fig( opts )
         | 
| 9 | 
            -
                  label, img = opts[:text].split('|').map! {|str| str.strip}
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                  html  = %Q{<div class="img" id="figure-#{label.tr('.', '-')}">\n}
         | 
| 12 | 
            -
                  html << %Q{  <a class="fig" href="/images/#{img}">\n}
         | 
| 13 | 
            -
                  html << %Q{    <img src="/images/thumbs/#{img}" alt="Figure #{label}" />\n}
         | 
| 14 | 
            -
                  html << %Q{  </a>\n}
         | 
| 15 | 
            -
                  html << %Q{  <p>Figure #{label}</p>\n}
         | 
| 16 | 
            -
                  html << %Q{<div>\n}
         | 
| 17 | 
            -
                end
         | 
| 18 | 
            -
              end
         | 
| 19 | 
            -
             | 
| 20 | 
            -
              def test_fig_tag
         | 
| 21 | 
            -
                input  = %Q{The first line of text.\n\n}
         | 
| 22 | 
            -
                input << %Q{fig. 1.1 | img.jpg\n\n}
         | 
| 23 | 
            -
                input << %Q{The last line of text.\n}
         | 
| 24 | 
            -
                r = RedCloth.new input
         | 
| 25 | 
            -
                r.extend FigureTag
         | 
| 26 | 
            -
                str = r.to_html
         | 
| 27 | 
            -
             | 
| 28 | 
            -
                html  = %Q{<p>The first line of text.</p>\n}
         | 
| 29 | 
            -
                html << %Q{<div class="img" id="figure-1-1">\n}
         | 
| 30 | 
            -
                html << %Q{  <a class="fig" href="/images/img.jpg">\n}
         | 
| 31 | 
            -
                html << %Q{    <img src="/images/thumbs/img.jpg" alt="Figure 1.1" />\n}
         | 
| 32 | 
            -
                html << %Q{  </a>\n}
         | 
| 33 | 
            -
                html << %Q{  <p>Figure 1.1</p>\n}
         | 
| 34 | 
            -
                html << %Q{<div>\n}
         | 
| 35 | 
            -
                html << %Q{<p>The last line of text.</p>}
         | 
| 36 | 
            -
             | 
| 37 | 
            -
                assert_equal(html, str)
         | 
| 38 | 
            -
              end
         | 
| 39 | 
            -
             | 
| 40 | 
            -
              def test_fallback
         | 
| 41 | 
            -
                r = RedCloth.new %Q/fig()>[no]{color:red}. 1.1 | img.jpg/
         | 
| 42 | 
            -
                str = r.to_html
         | 
| 43 | 
            -
             | 
| 44 | 
            -
                assert_equal "<p>fig()>[no]{color:red}. 1.1 | img.jpg</p>", str
         | 
| 45 | 
            -
              end
         | 
| 46 | 
            -
              
         | 
| 47 | 
            -
              # We don't want to call just any String method!
         | 
| 48 | 
            -
              def test_does_not_call_standard_methods
         | 
| 49 | 
            -
                r = RedCloth.new "next. "
         | 
| 50 | 
            -
                r.extend FigureTag
         | 
| 51 | 
            -
                str = r.to_html
         | 
| 52 | 
            -
             | 
| 53 | 
            -
                html  = "<p>next. </p>"
         | 
| 54 | 
            -
             | 
| 55 | 
            -
                assert_equal(html, str)
         | 
| 56 | 
            -
              end
         | 
| 57 | 
            -
              
         | 
| 58 | 
            -
            end
         | 
    
        data/test/test_extensions.rb
    DELETED
    
    | @@ -1,31 +0,0 @@ | |
| 1 | 
            -
            #!/usr/bin/env ruby
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            require File.join(File.dirname(__FILE__), 'helper')
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            class TestExtensions < Test::Unit::TestCase
         | 
| 6 | 
            -
              
         | 
| 7 | 
            -
              require 'redcloth'
         | 
| 8 | 
            -
              
         | 
| 9 | 
            -
              # http://www.ralree.info/2006/9/13/extending-redcloth
         | 
| 10 | 
            -
              module RedClothSmileyExtension
         | 
| 11 | 
            -
                def refs_smiley(text)
         | 
| 12 | 
            -
                  text.gsub!(/(\s)~(:P|:D|:O|:o|:S|:\||;\)|:'\(|:\)|:\()/) do |m|
         | 
| 13 | 
            -
                    bef,ma = $~[1..2]
         | 
| 14 | 
            -
                    filename = "/images/emoticons/"+(ma.unpack("c*").join('_'))+".png"
         | 
| 15 | 
            -
                    "#{bef}<img src='#{filename}' title='#{ma}' class='smiley' />"
         | 
| 16 | 
            -
                  end
         | 
| 17 | 
            -
                end
         | 
| 18 | 
            -
              end
         | 
| 19 | 
            -
              
         | 
| 20 | 
            -
              RedCloth.send(:include, RedClothSmileyExtension)
         | 
| 21 | 
            -
             | 
| 22 | 
            -
              def test_smiley
         | 
| 23 | 
            -
                input  = %Q{You're so silly! ~:P}
         | 
| 24 | 
            -
                
         | 
| 25 | 
            -
                str = RedCloth.new(input).to_html(:textile, :refs_smiley)
         | 
| 26 | 
            -
             | 
| 27 | 
            -
                html  = %Q{<p>You’re so silly! <img src='/images/emoticons/58_80.png' title=':P' class='smiley' /></p>}
         | 
| 28 | 
            -
             | 
| 29 | 
            -
                assert_equal(html, str)
         | 
| 30 | 
            -
              end
         | 
| 31 | 
            -
            end
         | 
    
        data/test/test_formatters.rb
    DELETED
    
    | @@ -1,24 +0,0 @@ | |
| 1 | 
            -
            #!/usr/bin/env ruby
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            require File.join(File.dirname(__FILE__), 'helper')
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            class TestFormatters < Test::Unit::TestCase
         | 
| 6 | 
            -
              
         | 
| 7 | 
            -
              generate_formatter_tests('html') do |doc|
         | 
| 8 | 
            -
                RedCloth.new(doc['in']).to_html
         | 
| 9 | 
            -
              end
         | 
| 10 | 
            -
              
         | 
| 11 | 
            -
              def test_html_orphan_parenthesis_in_link_can_be_followed_by_punctuation_and_words
         | 
| 12 | 
            -
                assert_nothing_raised { RedCloth.new(%Q{Test "(read this":http://test.host), ok}).to_html }
         | 
| 13 | 
            -
              end
         | 
| 14 | 
            -
              
         | 
| 15 | 
            -
              generate_formatter_tests('latex') do |doc|
         | 
| 16 | 
            -
                RedCloth.new(doc['in']).to_latex
         | 
| 17 | 
            -
              end
         | 
| 18 | 
            -
             | 
| 19 | 
            -
              def test_latex_orphan_parenthesis_in_link_can_be_followed_by_punctuation_and_words
         | 
| 20 | 
            -
                assert_nothing_raised { RedCloth.new(%Q{Test "(read this":http://test.host), ok}).to_latex }
         | 
| 21 | 
            -
              end
         | 
| 22 | 
            -
              
         | 
| 23 | 
            -
             | 
| 24 | 
            -
            end
         | 
    
        data/test/test_parser.rb
    DELETED
    
    | @@ -1,73 +0,0 @@ | |
| 1 | 
            -
            #!/usr/bin/env ruby
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            require File.join(File.dirname(__FILE__), 'helper')
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            class TestParser < Test::Unit::TestCase
         | 
| 6 | 
            -
             | 
| 7 | 
            -
              def test_parser_accepts_options
         | 
| 8 | 
            -
                assert_nothing_raised(ArgumentError) do
         | 
| 9 | 
            -
                  RedCloth.new("test", [:hard_breaks])
         | 
| 10 | 
            -
                end
         | 
| 11 | 
            -
              end
         | 
| 12 | 
            -
              
         | 
| 13 | 
            -
              def test_redcloth_has_version
         | 
| 14 | 
            -
                assert RedCloth.const_defined?("VERSION")
         | 
| 15 | 
            -
                assert RedCloth::VERSION.const_defined?("STRING")
         | 
| 16 | 
            -
              end
         | 
| 17 | 
            -
              
         | 
| 18 | 
            -
              def test_redcloth_version_to_s
         | 
| 19 | 
            -
                assert_equal RedCloth::VERSION::STRING, RedCloth::VERSION.to_s
         | 
| 20 | 
            -
                assert RedCloth::VERSION == RedCloth::VERSION::STRING
         | 
| 21 | 
            -
              end
         | 
| 22 | 
            -
              
         | 
| 23 | 
            -
              def test_badly_formatted_table_does_not_segfault
         | 
| 24 | 
            -
                assert_match(/td/, RedCloth.new(%Q{| one | two |\nthree | four |}).to_html)
         | 
| 25 | 
            -
              end
         | 
| 26 | 
            -
              
         | 
| 27 | 
            -
              def test_table_without_block_end_does_not_segfault
         | 
| 28 | 
            -
                assert_match(/h3/, RedCloth.new("| a | b |\n| c | d |\nh3. foo").to_html)
         | 
| 29 | 
            -
              end
         | 
| 30 | 
            -
              
         | 
| 31 | 
            -
              def test_table_with_empty_cells_does_not_segfault
         | 
| 32 | 
            -
                assert_match(/td/, RedCloth.new(%Q{|one || |\nthree | four |}).to_html)
         | 
| 33 | 
            -
              end
         | 
| 34 | 
            -
              
         | 
| 35 | 
            -
              def test_unfinished_html_block_does_not_segfault_with_filter_html
         | 
| 36 | 
            -
                assert_nothing_raised { RedCloth.new(%Q{<hr> Some text}, [:filter_html]).to_html }
         | 
| 37 | 
            -
              end
         | 
| 38 | 
            -
              
         | 
| 39 | 
            -
              def test_redcloth_version_in_output
         | 
| 40 | 
            -
                assert_equal "<p>#{RedCloth::VERSION::STRING}</p>", RedCloth.new("RedCloth::VERSION").to_html
         | 
| 41 | 
            -
              end
         | 
| 42 | 
            -
              
         | 
| 43 | 
            -
              def test_redcloth_version_only_on_line_by_itself
         | 
| 44 | 
            -
                input = "RedCloth::VERSION won't output the RedCloth::VERSION unless it's on a line all by itself.\n\nRedCloth::VERSION"
         | 
| 45 | 
            -
                html = "<p>RedCloth::<span class=\"caps\">VERSION</span> won’t output the RedCloth::<span class=\"caps\">VERSION</span> unless it’s on a line all by itself.</p>\n<p>#{RedCloth::VERSION::STRING}</p>"
         | 
| 46 | 
            -
                assert_equal html, RedCloth.new(input).to_html
         | 
| 47 | 
            -
              end
         | 
| 48 | 
            -
             | 
| 49 | 
            -
              def test_redcloth_version_with_label
         | 
| 50 | 
            -
                input = "RedCloth::VERSION: RedCloth::VERSION"
         | 
| 51 | 
            -
                html = "<p>RedCloth::VERSION: #{RedCloth::VERSION::STRING}</p>"
         | 
| 52 | 
            -
                assert_equal html, RedCloth.new(input).to_html
         | 
| 53 | 
            -
              end
         | 
| 54 | 
            -
              
         | 
| 55 | 
            -
              def test_redcloth_version_with_label_2
         | 
| 56 | 
            -
                input = "RedCloth version RedCloth::VERSION"
         | 
| 57 | 
            -
                html = "<p>RedCloth version #{RedCloth::VERSION::STRING}</p>"
         | 
| 58 | 
            -
                assert_equal html, RedCloth.new(input).to_html
         | 
| 59 | 
            -
              end
         | 
| 60 | 
            -
              
         | 
| 61 | 
            -
              def test_inline_redcloth_version
         | 
| 62 | 
            -
                input = "The current RedCloth version is [RedCloth::VERSION]"
         | 
| 63 | 
            -
                html = "<p>The current RedCloth version is #{RedCloth::VERSION::STRING}</p>"
         | 
| 64 | 
            -
                assert_equal html, RedCloth.new(input).to_html
         | 
| 65 | 
            -
              end
         | 
| 66 | 
            -
              
         | 
| 67 | 
            -
              def test_parser_strips_carriage_returns
         | 
| 68 | 
            -
                input = "This is a paragraph\r\n\r\nThis is a\r\nline break.\r\n\r\n<div>\r\ntest\r\n\r\n</div>"
         | 
| 69 | 
            -
                html = "<p>This is a paragraph</p>\n<p>This is a<br />\nline break.</p>\n<div>\n<p>test</p>\n</div>"
         | 
| 70 | 
            -
                assert_equal html, RedCloth.new(input).to_html
         | 
| 71 | 
            -
              end
         | 
| 72 | 
            -
             | 
| 73 | 
            -
            end
         | 
    
        data/test/test_restrictions.rb
    DELETED
    
    | @@ -1,41 +0,0 @@ | |
| 1 | 
            -
            #!/usr/bin/env ruby
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            require File.join(File.dirname(__FILE__), 'helper')
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            class TestRestrictions < Test::Unit::TestCase
         | 
| 6 | 
            -
              
         | 
| 7 | 
            -
              # security restrictions
         | 
| 8 | 
            -
              generate_formatter_tests('filtered_html') do |doc|
         | 
| 9 | 
            -
                RedCloth.new(doc['in'], [:filter_html]).to_html
         | 
| 10 | 
            -
              end
         | 
| 11 | 
            -
              generate_formatter_tests('sanitized_html') do |doc|
         | 
| 12 | 
            -
                RedCloth.new(doc['in'], [:sanitize_html]).to_html
         | 
| 13 | 
            -
              end
         | 
| 14 | 
            -
              
         | 
| 15 | 
            -
              # pba filters (style, class, id)
         | 
| 16 | 
            -
              generate_formatter_tests('style_filtered_html') do |doc|
         | 
| 17 | 
            -
                RedCloth.new(doc['in'], [:filter_styles]).to_html
         | 
| 18 | 
            -
              end
         | 
| 19 | 
            -
              generate_formatter_tests('class_filtered_html') do |doc|
         | 
| 20 | 
            -
                RedCloth.new(doc['in'], [:filter_classes]).to_html
         | 
| 21 | 
            -
              end
         | 
| 22 | 
            -
              generate_formatter_tests('id_filtered_html') do |doc|
         | 
| 23 | 
            -
                RedCloth.new(doc['in'], [:filter_ids]).to_html
         | 
| 24 | 
            -
              end
         | 
| 25 | 
            -
              
         | 
| 26 | 
            -
              # hard breaks - has been deprecated and will be removed in a future version
         | 
| 27 | 
            -
              generate_formatter_tests('html_no_breaks') do |doc|
         | 
| 28 | 
            -
                red = RedCloth.new(doc['in'])
         | 
| 29 | 
            -
                red.hard_breaks = false
         | 
| 30 | 
            -
                red.to_html
         | 
| 31 | 
            -
              end
         | 
| 32 | 
            -
              
         | 
| 33 | 
            -
              generate_formatter_tests('lite_mode_html') do |doc|
         | 
| 34 | 
            -
                RedCloth.new(doc['in'], [:lite_mode]).to_html
         | 
| 35 | 
            -
              end
         | 
| 36 | 
            -
              
         | 
| 37 | 
            -
              generate_formatter_tests('no_span_caps_html') do |doc|
         | 
| 38 | 
            -
                RedCloth.new(doc['in'], [:no_span_caps]).to_html
         | 
| 39 | 
            -
              end
         | 
| 40 | 
            -
              
         | 
| 41 | 
            -
            end
         | 
    
        data/test/validate_fixtures.rb
    DELETED
    
    | @@ -1,74 +0,0 @@ | |
| 1 | 
            -
            #!/usr/bin/env ruby
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            require File.join(File.dirname(__FILE__), 'helper')
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            require 'erb'
         | 
| 6 | 
            -
            require 'w3c_validators'
         | 
| 7 | 
            -
             | 
| 8 | 
            -
            class ValidateFixtures < Test::Unit::TestCase
         | 
| 9 | 
            -
              include W3CValidators
         | 
| 10 | 
            -
             | 
| 11 | 
            -
              def setup
         | 
| 12 | 
            -
                @v = MarkupValidator.new
         | 
| 13 | 
            -
                sleep 1 # delay per WC3 request
         | 
| 14 | 
            -
              end
         | 
| 15 | 
            -
             | 
| 16 | 
            -
              HTML_4_0_TEMPLATE = <<EOD
         | 
| 17 | 
            -
            <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
         | 
| 18 | 
            -
            <html>
         | 
| 19 | 
            -
            <head>
         | 
| 20 | 
            -
            	<title><%= test_name %></title>
         | 
| 21 | 
            -
            </head>
         | 
| 22 | 
            -
            <body>
         | 
| 23 | 
            -
            <%= content %>
         | 
| 24 | 
            -
            </body>
         | 
| 25 | 
            -
            </html>
         | 
| 26 | 
            -
            EOD
         | 
| 27 | 
            -
              XHTML_1_0_TEMPLATE = <<EOD
         | 
| 28 | 
            -
            <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
         | 
| 29 | 
            -
            	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
         | 
| 30 | 
            -
            <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
         | 
| 31 | 
            -
            <head>
         | 
| 32 | 
            -
            <title><%= test_name %></title>
         | 
| 33 | 
            -
            </head>
         | 
| 34 | 
            -
            <body>
         | 
| 35 | 
            -
            <%= content %>
         | 
| 36 | 
            -
            </body>
         | 
| 37 | 
            -
            </html>
         | 
| 38 | 
            -
            EOD
         | 
| 39 | 
            -
              
         | 
| 40 | 
            -
              fixtures.each do |name, doc|
         | 
| 41 | 
            -
               if doc['html'] && (doc['valid_html'].nil? || doc['valid_html'])
         | 
| 42 | 
            -
                 define_method("test_html_output_validity_of_#{name}") do
         | 
| 43 | 
            -
                   assert_produces_valid_html(name, doc['html'])
         | 
| 44 | 
            -
                 end
         | 
| 45 | 
            -
                 define_method("test_xhtml_output_validity_of_#{name}") do
         | 
| 46 | 
            -
                   assert_produces_valid_xhtml(name, doc['html'])
         | 
| 47 | 
            -
                 end
         | 
| 48 | 
            -
               end
         | 
| 49 | 
            -
              end
         | 
| 50 | 
            -
              
         | 
| 51 | 
            -
              private
         | 
| 52 | 
            -
              def assert_produces_valid_html(test_name, content)
         | 
| 53 | 
            -
                body = ERB.new(HTML_4_0_TEMPLATE, nil,'-%').result(binding)    
         | 
| 54 | 
            -
                assert_validates(body)
         | 
| 55 | 
            -
              end
         | 
| 56 | 
            -
             | 
| 57 | 
            -
              def assert_produces_valid_xhtml(test_name, content)
         | 
| 58 | 
            -
                body = ERB.new(XHTML_1_0_TEMPLATE, nil,'-%').result(binding)    
         | 
| 59 | 
            -
                assert_validates(body)
         | 
| 60 | 
            -
              end
         | 
| 61 | 
            -
              
         | 
| 62 | 
            -
              def assert_validates(body)
         | 
| 63 | 
            -
                results = @v.validate_text(body)
         | 
| 64 | 
            -
                errors = results.errors
         | 
| 65 | 
            -
                warnings = results.warnings.reject {|w| w.message_id == "247" } # NET-enabling start-tag requires SHORTTAG YES.
         | 
| 66 | 
            -
                
         | 
| 67 | 
            -
                assert(errors.empty?, "Validator errors: \n" +
         | 
| 68 | 
            -
                  errors.collect {|e| "'#{e.to_s}'"}.join("\n"))
         | 
| 69 | 
            -
                
         | 
| 70 | 
            -
                assert(warnings.empty?, "Validator warnings: \n" +
         | 
| 71 | 
            -
                  warnings.collect {|w| "'#{w.to_s}'"}.join("\n"))
         | 
| 72 | 
            -
              end
         | 
| 73 | 
            -
              
         | 
| 74 | 
            -
            end
         |